欢迎关注公众号:七只的Coding日志,更多链接
图像基础:
图像包含三个元素:图像的大小; 图像的深度; 图像的通道;
1、图像的位深度及其取值范围: src.depth()
Mat类型:
– CV_<bit_depth>(S|U|F)C<number_of_channels>
S = 符号整型 U = 无符号整型 F = 浮点型
E.g.:
CV_8UC1 是指一个8位无符号整型单通道矩阵,
CV_32FC2是指一个32位浮点型双通道矩阵。
CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4
CV_32SC1 CV_32FC1 CV_64FC1
CV_32SC2 CV_32FC2 CV_64FC2
CV_32SC3 CV_32FC3 CV_64FC3
CV_32SC4 CV_32FC4 CV_64FC4
2、图像的大小:Size()
size包含两个参数:就是图像的宽度和高。 取图像的大小:src.size()
Size (宽,高)
3、图像的通道
Mat类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 中C就代表通道,后面的数字代表通道数。
问题:很多图片识别为什么将彩色图像灰度化?
知乎上的回答:
(1)我们识别物体,最关键的因素是梯度(现在很多的特征提取,SIFT,HOG等等本质都是梯度的统计信息),梯度意味着边缘,这是最本质的部分,而计算梯度,自然就用到灰度图像了。颜色本身,非常容易受到光照等因素的影响,同类的物体颜色有很多变化。所以颜色本身难以提供关⬚("在此处键入公式。" ) 键信息。
(2)包含色彩的话,特征量,计算量成指数倍数增加。比如一个点,灰度的话,就256个维度而已,但是如果算上RGB色彩的话,那就是1600万以上维度。然后再相互组合,或者说找梯度,可以想象看看~~计算量太大,但是好在就算是全色盲也可以分辨物体,于是就x先降维(灰度)来计算。
作者:zhegekankan
链接:https://www.zhihu.com/question/24453478/answer/478934400
来源:知乎
灰度图像能以较少的数据表征图像的大部分特征,因此在某些算法的预处理阶段需要进行彩色图像灰度化,以提高后续算法的效率。将彩色图像转换为灰度图像的过程称为彩色图像灰度化。在RGB模型中,位于空间位置(x,y)的像素点的颜色用该像素点的R分量R(x,y)、G分量G(x,y)和B分量B(x,y)3个数值表示。灰度图像每个像素用一个灰度值(又称强度值、亮度值)表示即可。
设f(x,y)表示位于空间位置(x,y)处的像素(该像素的R分量、G分量、B分量值分别为R(x,y)、G(x,y)、B(x,y))的灰度化:
-
最大值灰度化:
算法:最大值灰度化方法将彩色图像中像素的R分量、G分量和B分量3个数值的最大值作为灰度图的灰度值。
公式:f(x, y)=max(R(x,y), G(x,y), B(x,y))
-
平均灰度化:
算法:平均值灰度化方法将彩色图像中像素的R分量、G分量和B分量3个数值的平均值作为灰度图的灰度值。
公式:f(x, y)=(R(x,y)+G(x,y)+ B(x,y))/3
-
加权平均值灰度化:
由于人眼对绿色最为敏感,红色次之,对蓝色的敏感性最低,因此使W_G>W_R>W_B 将得到较易识别的灰度图像。一般时,W_R=0.299,W_b=0.587,W_G=0.114得到的灰度图像效果最好
Gray= 0.072169B+ 0.715160G+ 0.212671*R
Gray= 0.11B+ 0.59G+ 0.3*R
前一种是OpenCV开放库所采用的灰度权值,后一种为从人体生理学角度所提出的一种权值(人眼对绿色的敏感最高,对蓝色敏感最低)
算法:加权平均值灰度化方法将彩色图像中像素的R分量、G分量和B分量3个数值的加权平均值作为灰度图的灰度值。
公式:f(x, y)=W_R∗R(x,y)+W_G∗G(x,y)+ W_B∗B(x,y) -
gamma校正加权均值进行图像灰度化:
注意这里的2.2次方和2.2次方根, RGB颜色值不能简单直接相加,而是必须用2.2次方换算成物理光功率。因为RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2,而这个换算过程,称为Gamma校正。
公式:Gray=√(2.2&(R^2.2 〖+(1.5G)〗^2.2 〖+(0.6B)〗2.2)/(1+〖1.5〗2.2+〖0.6〗^2.2 ))
总结:
由上图进行各个灰度化结果比较可以清晰的看出:
1、最大值法灰度化后图像过于亮,丢失的图像细节较多,常用于对原本色调较暗的图像进行处理
2、加权平均值法灰度化后过于暗,不易于进行目标对象与背景区域的区分,常用于对原本色调较亮的图像进行处理
3、直接调用函数进行灰度化颜色依旧偏暗
4、gamma修正灰度化的效果很好,但是gamma修正法的系数太多,而且设计到了指数以及开方运算,运算时间长,对于大量图片的处理更是不适用,对设备的要求非常高
5、均值的效果跟gamma修正法差不多,可能不及gamma修正法,但是其方法计算便捷,且结果较佳
因此一般使用均值法进行图片的灰度处理
网友评论