概述
本文主要讲述的是数字图像处理中对图像背景的处理以及图片噪点的去除,运用到的方法有高斯模糊、灰度二值化、连通域检检测
1.算法原理
高斯模糊
引用Wikipedia的两句话:
Mathematically, applying a Gaussian blur to an image is the same as convolving the image with a Gaussian function.
数学上讲,对图像做高斯模糊等同于将图像与高斯函数卷积。
Since the Fourier transform of a Gaussian is another Gaussian, applying a Gaussian blur has the effect of reducing the image’s high-frequency components; a Gaussian blur is thus a low pass filter.
由于高斯分布的傅里叶变换仍然是高斯分布,使用高斯模糊就减少了图像的高频分量,因此高斯模糊是低通滤波器。
关于高斯模糊的原理可以参考:高斯模糊原理
使用openCV只需要一行代码即可以实现高斯模糊:
blur = cv2.GaussianBlur(img,(5,5),0)
这里(5, 5)表示高斯矩阵的长与宽都是5,标准差取0时OpenCV会根据高斯矩阵的尺寸自己计算。概括地讲,高斯矩阵的尺寸越大,标准差越大,处理过的图像模糊程度越大。
灰度二值化
先解释一下灰度:
灰度是指只含亮度信息,不含色彩信息的图像。黑白照片就是灰度图,特点是亮度由暗到明,变化是连续的
用个例子来说明吧:一个256级灰度的图象,如果RGB三个量相同时,如:RGB(100,100,100)就代表灰度为100,RGB(50,50,50)代表灰度为50。
原理参考:图像灰度化
在OpenCV中的用法:
gray = cv2.cvtColor(pic,cv2.COLOR_BGR2GRAY)
再解释一下二值化:
图像的二值化是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。
原理说起来很简单,就是灰度大于 阈值(Threshold) 的时候将灰度值设为255,小于则设为0,当然还有很多其他的二值化方法,参考博客:几种不同的Threshold类型
在O