图像平滑处理总结
均值滤波
均值滤波就是用平均值代替原来的值
cv2.blur(src,ksize,anchor,borderType)
src:待处理图像
ksize:滤波核大小
anchor:锚点,默认中心位置
boradType:边界样式,决定以何种方式处理边界
方框滤波
方框滤波和均值滤波类似,不过方框滤波多了一个参数可以选择取不取均值,不取就是将滤波核大小内的像素求和,取了就和均值滤波一样了
cv2.boxFilter(src,ddepth,ksize,anchor,normlize,bordeType)
normlize = 1,归一化处理,即求平均值
normlize = 0,求和
高斯滤波
根据权重滤波,中心点权重大,远离中心的点权重小
核的宽度和高度可以不同,但必须是奇数
cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,bordeType)
sigmaX,卷积核在水平方向的标准差,sigmaY,卷积核在垂直方向的标准差。
中值滤波
中值滤波先排序,然后取序列中排中间的那个值代替锚点值
cv2.medianBlur(src,ksize)
双边滤波
双边滤波不仅考虑距离信息还考虑色彩信息,当处在边缘时,与当前像素点色彩相近的点会给予较高的权重值,而与当前色彩差别较大的像素点会被给予较小的权重值,这样就保护了边缘信息。双边滤波的优势在对边缘信息的处理上
cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)
d是在滤波时选取的空间距离参数,表示以当前像素点为中心的直径,一般为5
sigmaColor是滤波时选取的颜色差范围,小于这个值就能参与运算
sigmaSpace是坐标空间中的sigma值,越大就有越多的点能参与到运算中来,d大于0,d指定邻域大小,d非0,d与sigmaSpace的值成比例
2D卷积
2D卷积可以自定义卷积核,自主性更大。使用自主性卷积核实现卷积核操作的函数是
cv2.filter2D()
dst = cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)
src是原始图像
ddepth是处理结果的图像深度,一般使用-1表示使用和原始图像一样的图像深度
kernel,是卷积核,是一个单通道的数组
anchor 锚点
delta 是修正值,它是可选项。如果该值存在,则会在基础的滤波结果加上该值作为最终的滤波结果
borderType是边界样式,该值决定了以何种情况处理边界,通常使用默认值即可