这篇文章给大家介绍opencv实践中图像增强的基本操作是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。上面这幅黑乎乎的图就是我们今天要处理的图片,这是书的一页,但特别特别黑,对于这种因为阴影而导致的细节缺失,我们就可以尝试对其进行图像增强了。
图像增强真的有不少内容,范围也很广泛,今天就只针对这个例子进行实践了。代码都是成块儿的,大家可以复制自行组合 整体框架搭建首先就先写个框架啦,读取图片显示图片啥的:
我们以灰度图将原书页照片读进来,显示如下:
可以看到整个以黑乎乎的,看着太难受了,不过虽然我们人眼看着那些字是无法识别的,但其实在像素层面上,字的轮廓还是依然在的,而我们要做的就是将图片增强到文字可以为人眼所见的程度。手机相机处理在我们开始自己处理之前呢,先看下用手机相机随便处理一下的结果:
我们自己处理,怎么也得达到这种效果吧。
直方图均衡化直方图均衡化是常见的一种图像增强技术,直方图均衡可以让像素值由狭小区域扩大到整个像素区域,如下图,横轴为像素灰度值,竖轴为该像素值在图片中的比例:左图在直方图均衡化之后,像素值有明显的扩散分布,进而提高了图片的对比度。而本例中就是因为图像太黑,也就是像素值集中分布在黑色部分,均衡化可以提高对比度,我们可以看下均衡化的效果:
可以看到效果并不是很好,但这还只是初步处理,也许再进行直方图局部均衡化就会更好一些了。
阈值化操作我们可以知道图片很黑是因为有很多灰度级很低的像素聚集,我们只要将这些像素过滤掉就可以了,过滤我们可以采用阈值化操作或者二值化操作,我们看看阈值化操作:
可以看到结果也并不十分理想。但opencv还有一个自适应阈值函数,这个函数要更为巧妙一些可以看到虽然我们可以看清楚上面的字,但并不美观,而且因为阈值化操作的原因,书页颜色非黑即白,非常失真。调整亮度和对比度我们可以遍历图片中(i , j)处的像素,并对其进行如下操作:f(i,j)代表原图像像素g(i,j)代表处理后的图像像素a 称为增益,用来调节图像对比度b 称为偏置,用来调整图像亮度可以看到,通过调节亮度和对比度的方法,已经可以达到不错的效果。对像素进行log变换和伽马变换我们还可以尝试对图像进行变换,比如log函数变换和伽马变换。以伽马变换为例:
先看一下伽马变换的公式:输入r就是图片某点像素值,输出s为变换后的像素值。下图为该公式c取1,取不同值时的函数图形:
我们可以看到:
当小于1时,以=0.10为例,该变换会将窄范围的低级灰度转变为灰度级较高的值,直观上体现为图片变亮。当大于1时,以=5.0所示,该变换会将较宽范围的灰度转变为低级灰度,直观上体现为变暗。简单代码实现:
伽马变换只是方式之一,可以用来像素映射的函数多种多样,一般都视实际情况而定。关于opencv实践中图像增强的基本操作是什么就分享到这里了,希望以上内容可以对大家有一定 香港云主机的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
相关推荐: Google的Objectron怎样使用AI跟踪2D视频中的3D对象
今天就跟大家聊聊有关Google的Objectron怎样使用AI跟踪2D视频中的3D对象,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。伴随着2020年TensorFlow开发者峰会的拉开序幕,Googl…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。