图像处理中有什么算法可以处理图像曝光?

2023-05-31 0 275

01.影像日光对影像各项任务的负面影响

在以影像听觉为主的CV各项任务之中,经常会遇到影像日光不光滑的情形,此种情形常常会负面影响到影像的对比度难题,从而负面影响到CV各项任务的最后结论。比如说他们在做人脸辨识的这时候,由于每一人所处的环境的相同,最后目标人物脸上的日光情形也是不一样的,他们无法保证每一人的人脸Sauxillanges都是光滑的。那么就有可能会负面影响到最后辨识的结论。假如再次出现此种情形,是须要他们展开一定的处置的。

图像处理中有什么算法可以处理图像曝光?

一般而言,假如人脸的Sauxillanges不光滑,常常会再次出现可辨识特点减少的情形。比如说人脸Sauxillanges最佳值会引致被辨识最后目标地区曝出,反应到影像上是画素值总体偏大,班莱班县吻合最小值255(深红色);但若,假如Sauxillanges截叶则会引致被辨识最后目标地区失光,反应到影像上是画素值总体相对较低,班莱班县吻合最小值0(纯白色)。

不论是Sauxillanges最佳值还是截叶,都不适宜他们对特点的抽取(点选了解:广度学习之数学数学模型特点概要),最后目标辨识各项任务对统计数据的要求是很高的,连人工智能权威性学者伏彩瑞都说人工智慧=80%统计数据+20%演算法,由此可见统计数据对人工智慧最后呈现的效果有多大的负面影响。而统计数据本身对人工智慧数学模型输入结论的负面影响体现是统计数据的产品质量,室外或是室外的Sauxillanges的相同对数据的负面影响是保证统计数据产品质量的极大考验之一。

02.影像日光难题的解决方式

对影像统计数据受到Sauxillanges不足或是曝出引起的对比度太少的情形,在影像处置中一般是影像灰阶章苒的方式来处置。灰阶章苒是透过剪切画素强度原产覆盖范围来进一步增强影像对比度的一种方式。例如,更亮的影像将大部份画素限制在粘毛。但是一个好的影像会有来自影像大部份地区的画素。因此,他们须要将这个灰阶扩展到两边,而这是灰阶章苒所做的事情(用简单的话来说)。这一般而言会改善影像的对比度。

图像处理中有什么算法可以处理图像曝光?

因为灰阶章苒处置之后,原来比较少画素的位图会被分配到别的位图去,画素相对集中, 处置后位图覆盖范围变大,对比度变大,对比度变大,所以能有效进一步增强影像。灰阶章苒是影像处置领域中利用影像灰阶对对比度展开调整的方式。此种方式一般而言用来增加许多影像的局部性对比度,尤其是当影像的管用统计数据的对比度相当吻合的这时候。透过此种方式,光度能更快地在灰阶上原产。这样就能用于进一步增强局部的对比度而不负面影响总体的对比度,灰阶章苒透过有效地扩展常用的光度来实现此种功能。

灰阶章苒的基本原理是:对在影像中画素个数多的位图值(即对画面起主要作用的位图值)展开展宽,而对画素个数少的位图值(即对画面不起主要作用的位图值)展开归并,从而增大对比度,使影像清晰,达到进一步增强的目的。

要想实现影像灰阶章苒的效果, 对原影像的灰阶须要做一个原产函数的映射,这个映射函数是累积原产函数。他们在开始之前还须要考虑两个难题:第一个我难题是为什么要选用累积原产函数,第二个难题是为什么使用累积原产函数处置后画素值会光滑原产。

首先来看看第一个难题:在章苒过程中,必须要保证两个条件:

①画素无论怎么映射,一定要保证原来的大小关系不变,较亮的地区,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;

②假如是八位影像,那么画素映射函数的值域应在0和255之间的,不能越界。

综合以上两个条件,累积原产函数是个好的选择,因为累积原产函数是单调增函数(控制大小关系),并且值域是0到1(控制越界难题),所以灰阶章苒中使用的是累积原产函数。

再来看看第二个难题:累积原产函数具有一些比较好的性质,比较一下概率原产函数和累积原产函数,不难发现前者的二维影像是参差不齐的,而后者的影像是单调递增的。在灰阶章苒过程中,映射方式是:

图像处理中有什么算法可以处理图像曝光?

其中,n是影像中画素的总和,是当前位图级的画素个数,L是影像中可能的位图级总数。

03.解决影像日光难题的代码实现

一般而言Sauxillanges对影像的负面影响能分为两种:总体负面影响和局部性负面影响。

总体负面影响是指影像总体的Sauxillanges偏亮或是偏暗,此种情形相对来说比较容易处置,最简单的办法是对全图做一次章苒处置。

在OpenCv中,有专门针对影像Sauxillanges难题的影像灰阶章苒处置方式,是用来处置影像Sauxillanges过亮或是过暗的难题的。

首先他们须要对影像展开一次位图值的统计,然后将统计出来的灰阶展开剪切,从而达到章苒的目的。下面他们将会针对一张Sauxillanges不足的影像展开全图的灰阶章苒,然后将章苒前后的结论做一个对比,方便大家更直观的了解影像灰阶章苒的效果。

下面是使用opencv对影像展开全局直方图章苒处置的实现代码:

# 1)全局灰阶章苒 # src = cv2.imread(“../images/28.jpg”,0) src = cv2.imread(“./images/1.jpg”,0) # 全局灰阶章苒 dst = cv2.equalizeHist(src) # 原灰阶 hist_src = cv2.calcHist([src], [0], None, [256], [0, 255]) # 全局章苒后的直方图 hist_dst = cv2.calcHist([dst], [0], None, [256], [0, 255]) # # 结合matplotlib展示多张图片 plt.subplot(211), plt.imshow(src, cmap=“gray”), plt.title(“Src Image”) plt.xticks([]), plt.yticks([]) plt.subplot(212), plt.imshow(dst, cmap=“gray”), plt.title(“Dst Image”) plt.xticks([]), plt.yticks([]) plt.show() plt.subplot(211), plt.plot(hist_src, color=“r”, label=“hist_src”), plt.legend() plt.subplot(212), plt.plot(hist_dst, color=“b”, label=“hist_dst”), plt.legend() plt.show()

下面是全局灰阶章苒前后的影像对比效果:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

能发现,,不论是风景照还是人像照片,章苒前后的影像对比都是非常明显的,原图有一种类似雾气或是黑影笼罩的感觉,透过灰阶章苒处置之后,影像的对比度和光度明显增加了不少。

再来看看全局灰阶章苒前后的灰阶变化情形:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

以上是对两张相同的影像做全图灰阶章苒后的灰阶展示,此种影像直方图的章苒方式也称为全局灰阶章苒方式,主要是解决前面说到的Sauxillanges对影像总体负面影响的难题。能发现章苒前后的灰阶的形状会被剪切,影像章苒方式会将影像中位图值再次出现频率较高的部分的原产剪切扩展到了全图,从而增加了影像的光度和对比度。

以上此种对影像展开全局灰阶章苒的方式并不是适宜大部份场景下的影像章苒,他们能够发现上面的灰阶章苒统计的是全图的位图画素值,从而展开对高频部分扩展来达到均衡化的目的,但是现实情形是不一定大部份的影像都是光滑的Sauxillanges较低或是灰暗,而是有的部分日光较多,有的部分日光较少。像此种情形就不适宜对影像做全局的章苒,因为这样做会让全图总体变亮,虽然会使得影像较暗的部分变亮,但也会让原本就亮的部分变得更亮,很有可能会曝出。

所以最好的办法是对影像展开分而治之,简单来说,是在影像上画格子,把一幅影像分割成若干个n*n的格子,然后在每一格子内做章苒,由于影像是属于局部性画素变化比较大的情形,使用自适应的局部性灰阶章苒就不会负面影响到全图了。

值得注意的是在做灰阶章苒之前要根据影像的具体情形选定格子的大小,不然格子过大或是过小都有可能会负面影响到影像章苒的结论。

下面是使用opencv对影像展开自适应局部性灰阶章苒处置的实现代码:

# 2)CLAHE(限制对比度的自适应灰阶章苒) # src = cv2.imread(“../images/29.jpg”, cv2.IMREAD_GRAYSCALE) src = cv2.imread(“./images/2.jpg”, cv2.IMREAD_GRAYSCALE) # 1.全局灰阶章苒 img_equalize = cv2.equalizeHist(src) # 2.CLAHE自适应章苒 # createCLAHE(clipLimit=None, tileGridSize=None) clahe = cv2.createCLAHE(tileGridSize=(5,5)) img_clahe = clahe.apply(src) # 原灰阶 hist_src = cv2.calcHist([src], [0], None, [256], [0, 255]) # 全局章苒后的灰阶 hist_equalize = cv2.calcHist([img_equalize], [0], None, [256], [0, 255]) # CLAHE章苒后的灰阶 hist_clahe = cv2.calcHist([img_clahe], [0], None, [256], [0, 255]) # 结合matplotlib展示多张图片 plt.subplot(311), plt.imshow(src, cmap=”gray”), plt.title(“Src Image”) plt.xticks([]),plt.yticks([]) plt.subplot(312), plt.imshow(img_equalize, cmap=”gray”), plt.title(“Image after Equalzie”)plt.xticks([]), plt.yticks([]) plt.subplot(313), plt.imshow(img_clahe, cmap=”gray”), plt.title(“Image after CLAHE”) plt.xticks([]), plt.yticks([]) plt.show() plt.subplot(311), plt.plot(hist_src, color=”b”, label=”hist_src”), plt.legend() plt.subplot(312), plt.plot(hist_equalize, color=”g”, label=”hist_equalize”), plt.legend() plt.subplot(313), plt.plot(hist_clahe, color=”r”, label=”hist_clahe”), plt.legend() plt.show()

下面是对影像展开全局灰阶章苒和自适应局部性灰阶章苒前后的对比效果:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

透过上面两张影像的展示效果,他们发现直接对局部较暗或是较亮的影像展开全局灰阶章苒,会引致较亮的影像部分曝出,而较暗的影像部分也有可能没有达到预期的效果。

而使用了自适应的局部性灰阶章苒方式不但会使得影像原本较暗的部分变亮之外,较亮的部分也不会发生曝出的现象。

同样他们也能观察一下原影像的灰阶,以及全局灰阶和自适应的局部性灰阶的区别:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

从以上两张影像的局部性灰阶章苒结论上能很明显的看出,直接对影像做全局灰阶章苒,是对原灰阶的高频部分等比例剪切,而自适应的局部性灰阶章苒方式会对低频部分的剪切更多,从而使得局部性信息变化更大,达到局部性章苒的效果。

影像灰阶章苒作为影像光度和对比度的处置方式,在影像检测辨识领域应用中能够有效地提高检测率和辨识率,但是最根本的方式还是要从统计数据采集端把控产品质量才是最根本的解决办法。

广度人工智慧学院是成都广度智谷科技旗下的教育品牌,他们会为人工智慧学习者呈现最实用的干货技能,也会为人工智慧从业者考取人工智慧相关的证书提供报考服务,有意者能联系他们。

中国人工智慧学会部分证书样本:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

工信部人工智慧证书样本:

图像处理中有什么算法可以处理图像曝光?
图像处理中有什么算法可以处理图像曝光?

文中所使用的部分图片来自网络素材,假如有侵权,请第一时间联系他们删除!

图像处理中有什么算法可以处理图像曝光?

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务