图像平滑处理
Posted djrcomeon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像平滑处理相关的知识,希望对你有一定的参考价值。
1,均值滤波:
任意一个点的像素都是周围N*N个像素值的均值,将N*N的大小称为核的大小核大小一般用元组表示:(行,列)
#图像平滑:均值滤波
#函数blur
#dst=cv2.blur(src,核):核的格式=(行,列)
import cv2
a=cv2.imread("imagelenaNoise.png")
r=cv2.blur(a,(5,5))
cv2.imshow("original",a)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
2方块滤波:
#图像平滑处理——方块滤波
#函数boxFilter
#dst=cv2.boxFiliter(src,目标图像深度,核大小,normalize属性)
#参数含义:目标图像深度:int类型的目标图像深度。通常设定为“-1”,表示与原始图像一致;
# normalize属性——是否对图像进行归一化处理;true(1):和均值滤波相同;
# false(0):一个点的像素值等于周围核大小区域内像素值的和,很容易发生溢出;
# 如果不指定,则默认为true
import cv2
o=cv2.imread("imagelenaNoise.png")
f=cv2.boxFilter(o,-1,(2,2),normalize=0)
t=cv2.boxFilter(o,-1,(5,5),normalize=1)
cv2.imshow("original",o)
cv2.imshow("false",f)
cv2.imshow("true",t)
cv2.waitKey()
cv2.destroyAllWindows()
3,高斯滤波
让临近的像素有更高的重要度,对周围的像素计算加权平均,较近的像素具有较大的平均值;核包含的元素权重不在相同,离这个点越近则权重越大。
#图像平滑处理——高斯滤波;
# GaussianBlur函数
#dst=cv2.GaussianBlur(src,ksize,sigmax);
# ksize——核大小,(N,N)N必须是奇数
# sigmax——x方向的方差,控制权重;y方向与x保持一致,一般情况设成0
#高斯按权重平滑处理图像就比均值滤波更精确一点
import cv2
o=cv2.imread("imagelenaNoise.png")
r=cv2.GaussianBlur(o,(3,3),0)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
4.中值滤波
让临近的像素按大小顺序排列,取排序像素集中位于中间位置的值作为滤波后的像素值
#图像平滑处理——中值滤波
#medianBlur函数
#dst=cv2.medianBlur(src,ksize);
# ksize必须是比1大的奇数,格式就是int,不是元组了
#中值滤波的滤波效果比之前的都要好一点,不是平均值也不是加权平均值,由于取值还是点周围临近的像素,所以他能将一些奇异的点给过滤掉。
import cv2
o=cv2.imread("imagelenaNoise.png")
r=cv2.medianBlur(o,3)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
以上是关于图像平滑处理的主要内容,如果未能解决你的问题,请参考以下文章
如何对matlab plot生成的fig曲线图像进行去噪,平滑处理。