精华内容
下载资源
问答
  • 此程序对于增强水下模糊图像有帮助,首先将RGB空间转换到HSV空间,然后增强饱和度S的值,整体提高了图像饱和度
  • OpenCV-图像饱和度

    万次阅读 多人点赞 2021-09-04 10:15:24
    OpenCV&C++代码实现图像饱和度调整

    作者:翟天保Steven
    版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

    实现原理

           图像饱和度是指图像色彩的纯洁性,色彩的鲜艳程度,它是影响色彩最终效果的重要属性之一。饱和度也被称为图片色彩纯度,即色彩中彩色成分和消色成分的占比,这个比例决定了色彩的饱和度及鲜艳程度。当色彩中彩色成分多时,其色彩就呈现饱和(色觉强)、鲜明效果,给人的视觉印象会更强烈;反之,若消色成分多,色彩会显得暗淡,视觉效果也随之减弱。

           饱和度调整算法的实现流程如下:

           1.设置调整参数percent,取值为-100到100,类似PS中设置,归一化后为-1到1。

           2.针对图像所有像素点单个处理。计算RGB三通道的最大值最小值,可进一步得到delta和value:

    \\delta=(Max-Min)/255 \\value=(Max+Min)/255

           3.若最大最小一致,即delta=0,则表明为灰点,不需继续操作,直接处理下个像素。

           4.通过value计算出HSL中的L值:

    L=(Max-Min)/(2*255)

           5.S值为:

    \left\{\begin{matrix} S=delta/value,L<0.5\\ S=delta/(2-value),L\geqslant 0.5 \end{matrix}\right.

           6.当percent大于等于0时,即提高色彩饱和度,那么alpha值为:

    \left\{\begin{matrix} alpha=S,percent+S\geqslant 1\\ alpha=1-percent,else \end{matrix}\right.

           此时,调整后的图像RGB三通道值为:

    RGB=RGB+(RGB-L*255)*alpha

           7.若percent小于0时,即降低色彩饱和度,则alpha=percent,此时调整后的图像RGB三通道值为:

    RGB=L*255+(RGB-L*255)*(1+alpha)

           至此,图像实现了饱和度的调整,算法逻辑参考xingyanxiao。C++实现代码如下。

    功能函数代码

    // 饱和度
    cv::Mat Saturation(cv::Mat src, int percent)
    {
    	float Increment = percent* 1.0f / 100;
    	cv::Mat temp = src.clone();
    	int row = src.rows;
    	int col = src.cols;
    	for (int i = 0; i < row; ++i)
    	{
    		uchar *t = temp.ptr<uchar>(i);
    		uchar *s = src.ptr<uchar>(i);
    		for (int j = 0; j < col; ++j)
    		{
    			uchar b = s[3 * j];
    			uchar g = s[3 * j + 1];
    			uchar r = s[3 * j + 2];
    			float max = max3(r, g, b);
    			float min = min3(r, g, b);
    			float delta, value;
    			float L, S, alpha;
    			delta = (max - min) / 255;
    			if (delta == 0)
    				continue;
    			value = (max + min) / 255;
    			L = value / 2;
    			if (L < 0.5)
    				S = delta / value;
    			else
    				S = delta / (2 - value);
    			if (Increment >= 0)
    			{
    				if ((Increment + S) >= 1)
    					alpha = S;
    				else
    					alpha = 1 - Increment;
    				alpha = 1 / alpha - 1;
    				t[3 * j + 2] =static_cast<uchar>( r + (r - L * 255) * alpha);
    				t[3 * j + 1] = static_cast<uchar>(g + (g - L * 255) * alpha);
    				t[3 * j] = static_cast<uchar>(b + (b - L * 255) * alpha);
    			}
    			else
    			{
    				alpha = Increment;
    				t[3 * j + 2] = static_cast<uchar>(L * 255 + (r - L * 255) * (1 + alpha));
    				t[3 * j + 1] = static_cast<uchar>(L * 255 + (g - L * 255) * (1 + alpha));
    				t[3 * j] = static_cast<uchar>(L * 255 + (b - L * 255) * (1 + alpha));
    			}
    		}
    	}
    	return temp;
    }
    
    

    C++测试代码

    #include <opencv2/opencv.hpp>
    using namespace cv;
    using namespace std;
    
    #define max2(a,b) (a>b?a:b)
    #define max3(a,b,c) (a>b?max2(a,c):max2(b,c))
    #define min2(a,b) (a<b?a:b)
    #define min3(a,b,c) (a<b?min2(a,c):min2(b,c))
    
    cv::Mat Saturation(cv::Mat src, int value);
    
    int main()
    {
    	cv::Mat src = imread("House.jpg");
    	cv::Mat result = Saturation(src, 100);
    	imshow("original", src);
    	imshow("result", result);
    	waitKey(0);
    	return 0;
    }
    
    // 饱和度
    cv::Mat Saturation(cv::Mat src, int percent)
    {
    	float Increment = percent* 1.0f / 100;
    	cv::Mat temp = src.clone();
    	int row = src.rows;
    	int col = src.cols;
    	for (int i = 0; i < row; ++i)
    	{
    		uchar *t = temp.ptr<uchar>(i);
    		uchar *s = src.ptr<uchar>(i);
    		for (int j = 0; j < col; ++j)
    		{
    			uchar b = s[3 * j];
    			uchar g = s[3 * j + 1];
    			uchar r = s[3 * j + 2];
    			float max = max3(r, g, b);
    			float min = min3(r, g, b);
    			float delta, value;
    			float L, S, alpha;
    			delta = (max - min) / 255;
    			if (delta == 0)
    				continue;
    			value = (max + min) / 255;
    			L = value / 2;
    			if (L < 0.5)
    				S = delta / value;
    			else
    				S = delta / (2 - value);
    			if (Increment >= 0)
    			{
    				if ((Increment + S) >= 1)
    					alpha = S;
    				else
    					alpha = 1 - Increment;
    				alpha = 1 / alpha - 1;
    				t[3 * j + 2] =static_cast<uchar>( r + (r - L * 255) * alpha);
    				t[3 * j + 1] = static_cast<uchar>(g + (g - L * 255) * alpha);
    				t[3 * j] = static_cast<uchar>(b + (b - L * 255) * alpha);
    			}
    			else
    			{
    				alpha = Increment;
    				t[3 * j + 2] = static_cast<uchar>(L * 255 + (r - L * 255) * (1 + alpha));
    				t[3 * j + 1] = static_cast<uchar>(L * 255 + (g - L * 255) * (1 + alpha));
    				t[3 * j] = static_cast<uchar>(L * 255 + (b - L * 255) * (1 + alpha));
    			}
    		}
    	}
    	return temp;
    }
    
    

    测试效果

    图1 原图
    图2 percent为50时的效果图
    图3 percent为-50时的效果图

           通过调整percent可以实现图像饱和度的调整。

           如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~

           如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

    展开全文
  • matlab增强图像饱和度

    2021-04-22 05:58:44
    关键词 遥感 MATLAB 彩色增强 直方图 色调 饱和度 II 图像色彩增强技术毕业论文 Abstract Satellite remote sensing technology has a wide application and plays an......缺省值 0.05 给图像增加高斯白噪声: B = ...

    关键词 遥感 MATLAB 彩色增强 直方图 色调 饱和度 II 图像色彩增强技术毕业论文 Abstract Satellite remote sensing technology has a wide application and plays an......

    缺省值 0.05 给图像增加高斯白噪声: B = imnoise(A, ‘gaussian’ , m, v); m 为白色密度,默认 0,v 是噪声密度,默认 0.01 e) matlab 编程实现 A ......

    度图 格式 2灰 度图 50 100 150 200 250 100 200 300 50 100 150 200 250 100 200 300 6 、灰度图像→索引图像 【格式 1 】 1 、 [ X, m a p......

    基于彩色图像包含丰富的信息,介绍了如何利用图像处理工具 MATLAB 来进行彩色图像增强来是有用信息加强,获得更用价值的图片和更 好的视觉效果。分别从伪彩色图像增强......

    Matlab数字图像处理-02_幼儿读物_幼儿教育_教育专区。/5、频率域图像增强 一、傅里叶变换 I=fft2(x);%快速傅里叶变换 I=fft2(x,m,n); x为输入图像;m和......

    ? HSI色彩模型将强度成分与色调和饱和度等描述彩色的属 性分离开来,是根据人对色彩的自然描述处理彩色图像的 理想模型。 ? 从RGB模型到HSI模型: 16 HSI色彩模型......

    Matlab 数字图像处理函数 图像增强 1.直方图均衡化的 Matlab 实现 直方图均衡化的 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n),imhist(......

    Matlab 的实现: I=imread('C:\\Users\\fanjinfei\\Desktop\\baby.bmp');%读入图像 I=im2double(I); %对比度变大的图像 I1=2*I-55/255; subplot(4,4,1)......

    基于matlab图像识别_数学_自然科学_专业资料。基于matlab的语音图像特征分析第7讲 图像模式识别引言 水果的识别 指纹识别技术 基于matlab的语音图像特征分析引言 ? ...

    Matlab 的实现: I=imread('C:\\Users\\fanjinfei\\Desktop\\baby.bmp');%读入图像 I=im2double(I); %对比度变大的图像 I1=2*I-55/255; subplot(4,4,1)......

    ? 对彩色图像信息的感知觉就是人类的彩色视觉, 彩色视觉是一种明视觉,常用亮度、色调、饱和 度三个基本特性量来描述,称为彩色三要素。 . ? 亮度是指彩色光所......

    自 2019 年 12 月 9 日至 2019 年 12 月 13 日共 1 周 设计依据、要求及主要内容: 一、课程设计依据在掌握数字图像处理基本算法的基础上,利用 MATLAB、VC......

    (Hue)、饱和度 S(Saturation)、强度 I(Intensity)分量合 并成 hsi 色彩空间矩阵 subplot(121),imshow(hsi),title('rgb 转 hsi');%显示结果图像 H=hsi(:,......

    17 基于matlab的语音图像特征分析 边缘提取 ? 使用索贝尔算子得到的边缘图像 取反后的边缘图像 18 基于matlab的语音图像特征分析 4.数学形态学处理 ? 上图的二值......

    第3章 MATLAB图像处 理基础 ? 本章主要介绍利用MATLAB来实现数字图像处理的基本操作,主 要包括以下几个方面的内容:MATLAB图像处理工具箱,图像类 型的转换,图像......

    龙源期刊网 基于 Matlab 的图像自动标注 作者:张轩 臧淼 李金泉 来源:《现代电子技术》2014 年第 03 期摘要: 图像自动标注在检索......

    基于matlab图像识别_数学_自然科学_专业资料。第7讲 图像模式识别 引言 水果的识别 指纹识别技术 引言 ? 模式识别就是分析图像内容,找出图像中有 哪些东西。 ? ...

    本章中主要介绍 MATLAB图象工具箱中的一些基本函数的应用 和图象格式基本知识,并结合具体实践进行不 同格式图象的打开和各种图象格式之间的转 换,为进一步开展图象......

    数字图像处理及MATLAB实现7_数学_自然科学_专业资料。7.1 概述(Introduction) 7.2 无失真图像压缩编码(Lossless image compression) 7.3 有限失真图像压缩编码(......

    12 基于 MATLAB 的图像处理的课程设计一、课程设计目的 1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。 2、熟悉掌握一门计算机......

    展开全文
  • Matlab实现图像色度饱和度变换,含GUI界面 代码仅供参考、交流
  • 结合视觉注意机制特性,定量研究饱和度因素对立体图像视觉舒适度的影响。首先,得到立体显著度图,利用模糊隶属度原理和掩膜对其进行优化获得最终的显著立体图像,并用眼动仪对所得立体图像显著区域的正确性进行验证...
  • C++ 调节图像饱和度

    千次阅读 2019-07-14 06:18:58
    BYTE bySaturationMap[256*256]; //滚动条0-255 //...... CreateSaturationMap(m_saturationctl.GetPos()); //...... void CreateSaturationMap(BYTE value) { int nTmp; for (int g=0; g&...

     

     

    BYTE bySaturationMap[256*256];
    
    //滚动条0-255
    //......
    CreateSaturationMap(m_saturationctl.GetPos());
    //......
    
    void CreateSaturationMap(BYTE value)
    {
        int nTmp;
        for (int g=0; g<256; ++g)
        {
            for (int i=0; i<256; ++i)
            {
                nTmp = g+ value*(i-g)/128;
                nTmp = min(255, max(0, nTmp));
                bySaturationMap[g*256+i] = nTmp;
            }
        }
    }
    void Img_ISP(BYTE* pData, int wid, int hei)
    {
                    int g, r, b;
         BYTE *pNode = NULL;
        
        pNode = pData;
        for (int j=0; j<hei; j++)
        {
            for (int i=0; i<wid; i++)
            {
                r = *pNode;
                g = *(pNode+1);
                b = *(pNode+2);    
                *pNode       = bySaturationMap[g*256+r];
                *(pNode+2) = bySaturationMap[g*256+b];
                pNode = pNode+3;
            }
        }
    }

     

     

    转载于:https://www.cnblogs.com/youfal/p/3833483.html

    展开全文
  • 图像亮度饱和度

    2013-10-30 16:20:16
    图像的亮度饱和度算法,能出力图片的亮度和饱和度,相对大家有帮助
  • 色彩的饱和度(saturation)指色彩的鲜艳程度,也称作纯度。在hue-saturation-value(HSV)色彩模型下,饱和度是色彩的3个属性之一,另外两个属性为色相(hue)和明度(value);在此模型下色相的取值范围为0°到360°,饱和...

    色彩的饱和度(saturation)指色彩的鲜艳程度,也称作纯度。在hue-saturation-value(HSV)色彩模型下,饱和度是色彩的3个属性之一,另外两个属性为色相(hue)和明度(value);在此模型下色相的取值范围为0°到360°,饱和度和明度取值范围为0到100%。在色彩学中,原色饱和度最高,随着饱和度降低,色彩变得暗淡直至成为无彩色,即失去色相的色彩。作为信息的载体,色彩不仅依附于设计形式,还作为一个主体来完成信息传达的过程。

    对于艺术设计来说,色彩的运用与设计是其重要的部分,在实际应用中,依据饱和度高低值将色彩分为低饱和度对比、中饱和度对比和高饱和度对比3个基本种类以及饱和度组合对比一个衍伸种类。

    在这里插入图片描述
    如图,Hue代表色相,Saturation代表饱和度,Value(Brightness)代表明度:
    在这里插入图片描述

    参考文章1:饱和度 (色彩概念)

    参考文章2:如何通俗地解释色彩三要素:色相、明度、纯度? - Benjamin的回答 - 知乎

    展开全文
  • 结构光法中图像饱和度的误差
  • 由于一个项目需要,调节图片的亮度,开始使用遍历图片每一个像素,并修改图像的RGB值,发现修改后无法恢复到原来图像。在网上查了一些资料,发现了强大的MagickImage,给大家分享一下,希望对大家有所帮助。
  • 图像饱和度调整 参考

    千次阅读 2014-07-03 10:19:10
    图像饱和度调整有很多方法,最简单的就是判断每个象素的R、G、B值是否大于或小于128,大于加上调整值,小于则减去调整值;也可将象素RGB转换为HSV或者HSL,然后调整其S部分,从而达到线性调整图象饱和度的目的。这...
  • 图像的颜色信息存在于其色度中。 这种色度由色相和饱和度组成。 此代码将色调和饱和度调整为“正确”级别,从而“纠正”颜色级别。
  • 实现思路 图像饱和度是指图像色彩的纯洁性,色彩的鲜艳程度,它是影响色彩最终效果的重要属性之一。饱和度也被称为图片色彩纯度,即色彩中彩色成分和消色成分的占比,这个比例决定了色彩的饱和度及鲜艳程度。当色彩...
  • 小型框架和辅助工具,可用于创建图并尝试使用不同的模型来操纵图像饱和度。 已经创建了此助手来为我的硕士论文创建图和图像,在该论文中,我彼此评估了不同的饱和度模型。 依存关系 需要以下Python模块: 麻木 大...
  • 图像饱和度

    千次阅读 2019-05-05 08:54:16
    饱和度即原色的纯净度。是色彩远离中性色的距离。 因为一旦不够饱和,则必定存在补色,而补色则会让最小值不为零。 因为,饱和度降低意味着趋向黑白灰,那么RGB三值就趋向于相等。 RGB饱和度的上限就是最低值变为0时...
  • 饱和度调整算法说明(完整python代码在文末):本算法主要是利用HSL颜色空间进行饱和度S的上下限控制,对RGB空间进行补丁式调整。调整过程在RGB空间进行,其原理简单地说就是判断每个像素的R、G、B值是否大于或小于...
  • 主要介绍了python中PS 图像调整算法原理之亮度调整,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 调整饱和度的方法,代码如下: void AdjustSatuation(cv::Mat &image, float percent) { int width = image.cols, height = image.rows; for (int i = 0; i < height; ++i) { auto data = image.ptr<...
  • 饱和度调整的算法很多,基本上是越复杂的算法,调整后的图像视觉效果越好。 由于FPGA 不善长复杂的浮点运算,另一方面由于本文定位于基本的图像处理算法,此处只选择一种比较简单的饱和度算法。 设当前输入像素值...
  • 代码: import cv2 import imutils import numpy as np def l_s_b(arg): # 图像归一化,且转换为浮点型, 颜色空间... # HLS空间,三个通道分别是: Hue色相、lightness明度、saturation饱和度 # 通道0是色相、通道
  • OpenCV——饱和度调整

    2021-01-17 18:39:06
    // define head function#ifndef PS_ALGORITHM_H_INCLUDED#define PS_ALGORITHM_H_INCLUDED#include #include #include "cv.h"#include "highgui.h"#include "cxmat.hpp"#include "cxcore.hpp"using namespace std;...
  • Python: PS 图像调整--饱和度调整

    千次阅读 2017-10-25 19:31:46
    本文用 Python 实现 PS 图像调整中的饱和度调整算法,具体的算法原理和效果可以参考之前的博客:http://blog.csdn.net/matrix_space/article/details/22992961import matplotlib.pyplot as plt from skimage import ...
  • Photoshop 的色相/饱和度调整,可以对全图、红、黄、绿、青、蓝、洋红六个通道进行设置。每个通道可设置: 色相(hue), 饱和度(satuation), 明度(Lightness)三个调整值。 另包含 多个颜色空间转换函数
  • 通过RGB或YUV改变图像的色度和饱和度 自己曾经尝试过BGR先转成HSV,再改变S分量,但是效果非常差,这里是我是在别人论文上查到的,给大家参考一下 1. 通过YUV改变图像饱和度,这里的...
  • 饱和度 色调 对比度   转自这里   图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备...
  • matlab实现调整图片的饱和度

    千次阅读 2020-04-27 10:07:54
    %src为rgb图像,saturation为调节的饱和度值,调节范围为【-100,100】 function Image_new = SaturationAdjustment(src,saturation) Image=src; Image=double(Image); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:...
  • OpenCV调整彩色图像饱和度和亮度

    千次阅读 2019-09-27 15:21:41
    如何调整彩色图像饱和度和亮度 解决思路 详细步骤: 将RGB图像值归一化到[0, 1] 然后使用函数cvtColor进行色彩空间的转换 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换调整饱和度和亮度分量 最后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,716
精华内容 12,686
关键字:

图像饱和度

友情链接: Bouc_Wen01.rar