图像与视频处理——图像的模糊、去噪和增强及其OpenCV操作

引言

《图像与视频处理》第三章的内容,前半段是直方图讲解,后半段则是对图像一些简单滤波和增强处理的讲解,主要包括均值滤波、非局部均值滤波、中值滤波以及图像的增强。

从效果上来看,这些处理对图像的影响就是三方面:模糊去噪增强。由于这些概念理解起来相对简单,并没有涉及到比较复杂的滤波器,所以我这里就合在一起说明。

以下为上面三种的滤波器简单对比

处理方法 作用
均值滤波 主要对图像进行平滑操作,去噪的同时容易引起图像模糊
非局部均值滤波 有很好的去噪效果,但是查找的过程运算量大
中值滤波 对椒盐噪声的过滤具有非常好的效果

均值滤波

均值滤波非常简单,其操作为:在需要操作的像素点上选择其邻域部分,如下图为3x3的矩形区域,对这些点求均值,结果代替原始像素点的值。

均值滤波

当然选择区域的大小、形状是可以根据实际需求修改的,不同位置的像素的加权权重也是可以修改的。

在openCV中提供均值滤波 blur函数,由于它是去除变化剧烈的高频部分,所以也可以算是低通滤波了。

python+openCV代码实现均值滤波如下:

1
img2 = cv2.blur(img, (3,3))

上面的代码是在3x3的矩形框了求取的均值,如果需要设置权重,可以使用filter2D()函数。

均值处理后的图像如下:

原图像
均值滤波图像

非局部均值滤波

非局部均值滤波的原理是很简单的,即:选择处理的图像的小区,在整个图像上查找与区域相似度高的区域,对这些相似的区域对应点相加求平均,替换掉原来的值。

在这个过程中相似区域的查找是很关键的一部分,不同设计者的判断标准不一样,可能会导致最终的效果有好有坏;另外由于需要在整个查找相似的区域,计算量也相对会大一些。

中值滤波

中值滤波与均值滤波类似,也十分简单,只是将求平均值的操作变成了找中间数的操作。正是由于这样,中值滤波不会产生新的值,知识用其他pixel的值代替处理的pxiel值,所以对图像的影响会比均值的影响小。

中值滤波是非常简单且常用的滤波方法,它对椒盐噪声具有很强的滤波效果(椒盐噪声就是在图像上随机出现黑色白色的像素)。

openCV中提供 medianBlur函数来处理中值滤波,medianBlur函数要求它的参数中的矩形框为正奇数,python+openCV代码如下:

1
img2 = cv2.medianBlur(img, 3)

经过中值滤波后,图像如下:

原图像

边沿查找和图像增强

通过对离散二维图像的数据求二阶导数,可以找到图像中变化较大的像素点。通过对原图像中的这些像素点的值进行增强,可以达到增强图像的效果。

Compartir