首页 > 编程知识 正文

中值滤波matlab代码,python图像滤波

时间:2023-05-06 11:36:32 阅读:156753 作者:1114

本文实例供大家分享python手写平均滤波器的具体代码,以供参考,具体内容如下

原理和卷积一样,设置n*n的过滤模板,将过滤模板内的值除以模板大小的累计值进行平均,作为过滤后的值。

代码如下所示。

import cv2 as cv

导入编号为NP

#平均滤波

defmeansblur(src,ksize ) :

“”'

: param src :输入图像

:param ksize:kernel size

:返回dst :输出图像

“”'

dst=NP.copy(src ) #创建输出映像

kernel=NP.ones () ksize,ksize ) ) #卷积核

padding_num=int () ksize-1 )/2 ) #0需要补充

DST=NP.pad(dst,(padding_num,padding_num ),mode='constant ',constant_values=0) ) )。

w,h=dst.shape

dst=np.copy(dst )

forIinrange(padding_num,w - padding_num ) :

forjinrange(padding_num,h - padding_num ) :

dst[i,j ]=NP.sum (kernel * dst [ I-padding _ num 3360 I padding _ num 1,j-padding _ num 3360 j padding _ num1]

//(ksize**2) ) )。

dst=dst [ padding _ num : w-padding _ num,padding _ num : h-padding _ num ] #去除已完成操作的多余0,确保大小相同

return dst

img_path=r'F: 3.png '

img=cv.imread(img_path,0 ) ) )。

DST=meansblur(img,5 ) )。

cv.imshow(src )、img ) )。

cv.imshow(dst )、dst ) )。

是打印(dst )

cv.waitkey(0) ) ) ) ) ) ) ) ) ) cv.waitkey(0) ) ) ) ) ) ) )。

注释:红框表示两个for循环的范围,I-padding_num : I padding_num 1表示第I行向上移动padding _ num行,向下移动padding _ num行。 1是因为list列表是左闭右开区间,右边的要素不能取值。 padding表示填充周围一圈。

以上是本文的全部内容,希望对大家的学习有帮助。 另外,希望你能多多支持招聘站长站。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。