图像增强及运算篇之图像点运算和图像灰度化处理
一。图像点运算概念
图像点运算(PointOperation)指对于一幅输入图像,将产生一幅输出图像,输出图像的每个像素点的灰度值由输入像素点决定。点运算实际上是灰度到灰度的映射过程,通过映射变换来达到增强或者减弱图像的灰度。还可以对图像进行求灰度直方图、线性变换、非线性变换以及图像骨架的提取。它与相邻的像素之间没有运算关系,是一种简单和有效的图像处理方法〔1〕。
图像的灰度变换可以通过有选择的突出图像感兴趣的特征或者抑制图像中不需要的特征,从而改善图像的质量,凸显图像的细节,提高图像的对比度。它也能有效地改变图像的直方图分布,使图像的像素值分布更为均匀〔23〕。它在实际中有很多的应用:光度学标定对比度增强对比度扩展显示标定轮廓线确定
设输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:
图像点运算与几何运算存在差别,不会改变图像内像素点之间的空间位置关系。同时与局部(领域)运算也存在差别,输入像素和输出像素一一对应。二。图像灰度化处理
图像灰度化是将一幅彩色图像转换为灰度化图像的过程。彩色图像通常包括R、G、B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色图像的R、G、B三个分量相等的过程。灰度图像中每个像素仅具有一种样本颜色,其灰度是位于黑色与白色之间的多级色彩深度,灰度值大的像素点比较亮,反之比较暗,像素值最大为255(表示白色),像素值最小为0(表示黑色)。
假设某点的颜色由RGB(R,G,B)组成,常见灰度处理算法如表111所示:
表111中Gray表示灰度处理之后的颜色,然后将原始RGB(R,G,B)颜色均匀地替换成新颜色RGB(Gray,Gray,Gray),从而将彩色图片转化为灰度图像。一种常见的方法是将RGB三个分量求和再取平均值,但更为准确的方法是设置不同的权重,将RGB分量按不同的比例进行灰度划分。比如人类的眼睛感官蓝色的敏感度最低,敏感最高的是绿色,因此将RGB按照0。299、0。587、0。144比例加权平均能得到较合理的灰度图像,如公式112所示〔46〕。
在日常生活中,我们看到的大多数彩色图像都是RGB类型,但是在图像处理过程中,常常需要用到灰度图像、二值图像、HSV、HSI等颜色,OpenCV提供了cvtColor()函数实现这些功能。其函数原型如下所示:dstcv2。cvtColor(src,code〔,dst〔,dstCn〕〕)
src表示输入图像,需要进行颜色空间变换的原图像
dst表示输出图像,其大小和深度与src一致
code表示转换的代码或标识
dstCn表示目标图像通道数,其值为0时,则有src和code决定
该函数的作用是将一个图像从一个颜色空间转换到另一个颜色空间,其中,RGB是指Red、Green和Blue,一副图像由这三个通道(channel)构成;Gray表示只有灰度值一个通道;HSV包含Hue(色调)、Saturation(饱和度)和Value(亮度)三个通道。
在OpenCV中,常见的颜色空间转换标识包括CVBGR2BGRA、CVRGB2GRAY、CVGRAY2RGB、CVBGR2HSV、CVBGR2XYZ、CVBGR2HLS等。下面是调用cvtColor()函数将图像进行灰度化处理的代码。coding:utf8By:Eastmountimportcv2importnumpyasnp读取原始图片srccv2。imread(luo。png)图像灰度化处理grayImagecv2。cvtColor(src,cv2。COLORBGR2GRAY)显示图像cv2。imshow(src,src)cv2。imshow(result,grayImage)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
输出结果如图111所示,左边是彩色的小珞珞原图,右边是将彩色图像进行灰度化处理之后的灰度图。其中,灰度图将一个像素点的三个颜色变量设置为相等(RGB),此时该值称为灰度值。
同样,可以调用如下核心代码将彩色图像转换为HSV颜色空间,其输出结果如图112所示。grayImagecv2。cvtColor(src,cv2。COLORBGR2HSV)
下面代码对比了九种常见的颜色空间,包括BGR、RGB、GRAY、HSV、YCrCb、HLS、XYZ、LAB和YUV,并循环显示处理后的图像。coding:utf8By:Eastmountimportcv2importnumpyasnpimportmatplotlib。pyplotasplt读取原始图像imgBGRcv2。imread(luo。png)imgRGBcv2。cvtColor(imgBGR,cv2。COLORBGR2RGB)BGR转换为RGBimgGRAYcv2。cvtColor(imgBGR,cv2。COLORBGR2GRAY)灰度化处理imgHSVcv2。cvtColor(imgBGR,cv2。COLORBGR2HSV)BGR转HSVimgYCrCbcv2。cvtColor(imgBGR,cv2。COLORBGR2YCrCb)BGR转YCrCbimgHLScv2。cvtColor(imgBGR,cv2。COLORBGR2HLS)BGR转HLSimgXYZcv2。cvtColor(imgBGR,cv2。COLORBGR2XYZ)BGR转XYZimgLABcv2。cvtColor(imgBGR,cv2。COLORBGR2LAB)BGR转LABimgYUVcv2。cvtColor(imgBGR,cv2。COLORBGR2YUV)BGR转YUV调用matplotlib显示处理结果titles〔BGR,RGB,GRAY,HSV,YCrCb,HLS,XYZ,LAB,YUV〕images〔imgBGR,imgRGB,imgGRAY,imgHSV,imgYCrCb,imgHLS,imgXYZ,imgLAB,imgYUV〕foriinrange(9):plt。subplot(3,3,i1),plt。imshow(images〔i〕,gray)plt。title(titles〔i〕)plt。xticks(〔〕),plt。yticks(〔〕)plt。show()
其运行结果如图113所示:
三。基于像素操作的图像灰度化处理
前面讲述了调用OpenCV中cvtColor()函数实现图像灰度化的处理,接下来讲解基于像素操作的图像灰度化处理方法,主要是最大值灰度处理、平均灰度处理和加权平均灰度处理方法。1。最大值灰度处理方法
该方法的灰度值等于彩色图像R、G、B三个分量中的最大值,公式如下:
其方法灰度化处理后的灰度图亮度很高,实现代码如下。coding:utf8By:Eastmountimportcv2importnumpyasnpimportmatplotlib。pyplotasplt读取原始图像imgcv2。imread(luo。png)获取图像高度和宽度heightimg。shape〔0〕widthimg。shape〔1〕创建一幅图像grayimgnp。zeros((height,width,3),np。uint8)图像最大值灰度处理foriinrange(height):forjinrange(width):获取图像RGB最大值graymax(img〔i,j〕〔0〕,img〔i,j〕〔1〕,img〔i,j〕〔2〕)灰度图像素赋值graymax(R,G,B)grayimg〔i,j〕np。uint8(gray)显示图像cv2。imshow(src,img)cv2。imshow(gray,grayimg)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
其输出结果如图114所示,其处理效果的灰度偏亮。
2。平均灰度处理方法
该方法的灰度值等于彩色图像R、G、B三个分量灰度值的求和平均值,其计算公式如公式(114)所示:
平均灰度处理方法实现代码如下。coding:utf8By:Eastmountimportcv2importnumpyasnpimportmatplotlib。pyplotasplt读取原始图像imgcv2。imread(luo。png)获取图像高度和宽度heightimg。shape〔0〕widthimg。shape〔1〕创建一幅图像grayimgnp。zeros((height,width,3),np。uint8)图像平均灰度处理方法foriinrange(height):forjinrange(width):灰度值为RGB三个分量的平均值gray(int(img〔i,j〕〔0〕)int(img〔i,j〕〔1〕)int(img〔i,j〕〔2〕))3grayimg〔i,j〕np。uint8(gray)显示图像cv2。imshow(src,img)cv2。imshow(gray,grayimg)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
其输出结果如图115所示:
3。加权平均灰度处理方法
该方法根据色彩重要性,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。
加权平均灰度处理方法实现代码如下所示:coding:utf8By:Eastmountimportcv2importnumpyasnpimportmatplotlib。pyplotasplt读取原始图像imgcv2。imread(luo。png)获取图像高度和宽度heightimg。shape〔0〕widthimg。shape〔1〕创建一幅图像grayimgnp。zeros((height,width,3),np。uint8)图像平均灰度处理方法foriinrange(height):forjinrange(width):灰度加权平均法gray0。30img〔i,j〕〔0〕0。59img〔i,j〕〔1〕0。11img〔i,j〕〔2〕grayimg〔i,j〕np。uint8(gray)显示图像cv2。imshow(src,img)cv2。imshow(gray,grayimg)等待显示cv2。waitKey(0)cv2。destroyAllWindows()
其输出结果如图116所示:
四。总结
本文主要讲解图像点运算的灰度化处理,详细介绍常用的灰度化处理方法,并分享了图像颜色空间相互转换,以及三种灰度转换算法的实现。通过灰度处理,我们能有效将彩色图像转换为灰度图,为后续的边缘提取等处理提供支撑,也可能实现图像处理软件最简单的彩色图转黑白的效果,希望对您有所帮助。
陈雪凝怎么不火了2021继19年之后,拥有两首神曲傍身的陈雪凝,本是一副好牌,无论是上音乐综艺节目或者说稳扎稳打继续推出一张旋律足够洗脑的新专辑,随意爆一首歌曲,热度都能继续维持。而如今的陈雪凝……
歌手陈雪凝家世哪里人其实,网上关于歌手陈雪凝家庭背景感情状况方面的资料太少了,只知道陈雪凝是内蒙古人,微博名就是其名字陈雪凝,而关于家世爸妈是谁做什么的?母亲并未曝光。所以大家还是多关注关注陈雪凝……
岱银集团被认定为山东省本土跨国公司重点培育企业近日,山东省商务厅公布山东省本土跨国公司重点培育企业认定名单,全省共有25家企业入选,岱银集团成功入选,是此次评选我市唯一一家入选企业。此次评选是落实山东省委、省政府《关……
春和景明年在三明2023年全国首场国风盛宴在泰宁盛大开幕!2023hr181月8日,泰宁县第二届汉服文化旅游节在泰宁状元文化广场举办。本次活动以福见泰宁九州同欢为主题,将中华民族传统汉服文化与泰宁地域特色文化相结合,为市民和游客……
刘恺威结过几次婚(刘恺威杨幂什么时候离的婚)1。结过一次婚,且只有一段婚姻(2012年结婚),就是跟前妻杨幂,两人是因戏生情,在一起多次合作。而刘恺威杨幂离婚是在2018年。2。2012年,刘恺威杨幂在巴厘岛举行了……
我国人造太阳发现新的高能量约束模式来源:人民网人民日报null工作人员对全超导托卡马克核聚变实验装置(EAST)进行升级改造。新华社记者刘军喜摄记者从中国科学院合肥物质科学研究院等离子体物理研……
杨幂魏大勋疑似同居的真相关于网曝杨幂魏大勋疑似同居是不是真的,目前2人没有官宣恋情,不过,两人恋爱的物料被爆出了一波一波又一波,按照名侦探吃瓜群的答案真爱无疑了呀!另外,像杨幂魏大勋不断释出的蛛丝马迹……
素媛案件真实女孩怎么样了20221、素媛案件原型女孩名字叫做娜英,2022年的受害者娜英22岁了,在经过多年的精神治疗的娜英也已经从这段黑暗的阴影当中走了出来,且还在2017年的时候还参加了韩国的高考,如今身……
素媛原型更惨是真的吗?1、素媛原型更惨是真的。影片《素媛》的情节令人触目惊心,而实际情况则更为严重,光是听公众报道中的一句ldquo;咬掉了她的脸rdquo;,就让人毛骨悚然。这起案件的负责人也表示……
鞠婧祎备忘录内容说明了什么鞠婧祎公开自己的备忘录后也是引来了一番热议啊,网友们也都众说纷纭,有的人心疼鞠婧祎的一路走到现在,而有的人则说鞠婧祎是在卖惨,想洗白自己的人设。讲真,鞠婧祎备忘录里的内容……
鞠婧祎公开备忘录怎么回事鞠婧祎公开备忘录就是鞠婧祎小号发的内容,备忘录也是见证了她一路的成长经历记录了下来,大家看了让人感触很多。这两天的热点事件之一肯定包括鞠婧祎公开备忘录了吧,相信很多人也都……
四千年美女鞠婧祎小号叫什么1、四千年美女鞠婧祎小号叫Hahhhnxsm。其实,据网上的消息称,鞠婧祎有好多小号,但不知道是不是一直都在用,如果细心网友深扒还是可以了解到的,不过,就是不知道她还有没有其他……