本文的实例与大家共享了opencv python实现均值滤波的具体代码,可供参考,具体内容如下
原理
平均值滤波实际上是通过将关注像素和周边像素平均,然后使其填埋于关注像素来实现滤波目的的方法,在滤波器芯的大小为33 (在times 333的情况下,代替当前的像素值,使用自身和周围的8个像素
平均滤波也可以视为滤波器核的所有值都为1的滤波。
优点:算法简单,计算速度快
缺点:减少噪声的同时,使图像产生模糊,特别是场景的边缘和细节。
代码
import cv2 as cv
导入编号为NP
导入匹配
导入副本
defspilt(a ) :
if a/2==0:
x1=x2=a/2
else:
x1=math.floor(a/2 ) )。
x2=a - x1
1个返回,2个返回
eforiginal(I,j,k,a,b,img ) :
x1,x2=spilt(a ) ) )
y1,Y2=精神(b ) ) ) ) ) ) ) ) ) ) ) ) y1,Y2=精神(b ) ) )
TEMP=NP.Zeros(a*b ) )
count=0
1,x2格式范围:
forninrange(y1,y2 ) :
ifim0orimimg.shape [0]-1 orjn0orjnimg.shape [1]-1:
temp[count]=img[i,j,k]
else:
temp[count]=img[i m,j n,k]
count =1
返回时间
efaverage_function(a,b,img ) :
img0=copy.copy(img ) )。
forIinrange(0,img.shape(0) ) :
forjinrange(2,img.shape(1) ) :
forkinrange(img.shape[2] ) :
TEMP=original(I,j,k,a,b,img0) )。
img[i,j,k]=int(NP.mean ) temp ) )
return img
戴尔主(:
img0=cv.imread(r'noise.jpg ) )。
ave _ img=average _ function (3,3,copy.copy ) img0) ) # ) 3,3 )过滤器大小
cv.imshow(ave_img ),ave_img ) )。
cv.imshow('original ',img0) )。
cv.waitkey(0) ) ) ) ) ) ) ) ) ) cv.waitkey(0) ) ) ) ) ) ) )。
cv.destroyAllWindows (
if __name__=='__main__':
main () )
样品
原图:
滤波器核为33(times333平均滤波后:
以上就是本文的全部内容。 希望对大家的学习有帮助。 另外,请支持python博客。