首页 > 编程知识 正文

数字图像处理循环卷积,图像处理中卷积的定义

时间:2023-05-03 17:42:53 阅读:107080 作者:416

实现问题说明函数g=Twodconv(f,w )。 其中f是灰度源图像,w是矩形卷积内核。 输出图像g需要与源图像f的尺寸、即像素的行数和列数一致。 请注意,为了满足此要求,必须对源图像f进行边界像素填充。 在这里请实现两个方案。 第一种情况是像素拷贝,相应的选项被定义为“replicate”,即填充的像素拷贝和最接近的图像边界的像素色调。 第二种情况是填充零,相应的选项被定义为“zero”,填充的像素的灰度为0。 将第二个方案设置为默认选择。

问题分析卷积公式

w(x,y ) f(x,y )=s=as=at=bt=bf ) xs,yt ) w ) x,y ) ) starf ) x,y ) ) sum _ { s=sum { t-b-t-b

注:与相关操作相比,卷积会反转一个或多个过滤器核心

代码实现导库

importnumpyasnpimportcv 2http://www.Sina.com /

defTwodconv(f,w,method='zero ' ) : w=np.array(w ) w ) #过滤器核心反转w=NP.fliplr ) NP.flipud ) ) pring fw=f.shape NH=fhx-1nw=fwy-1 add _ h=int (x )/2add_w=int(y )/2#零填充边界n=NP.zeros ) ) NH、NW ) add_w:NW-add_w )=fifmethod=='Replicate':#边界填充n ) 0:add 3360 ) n[NH-add_h:add _ w 33333: I nw-1-add_w] #卷积运算forIinrange(FH ) :forjinrange ) fw ) : g[i,j )=NP.sum(n ) I3360Ix, j3360jy ) w 255 ) return g if method=='zero': #卷积运算forIinrange(FH ) :forjinrange ) fw ) 3360 g [ I ] I,j )=nn 255 ) return g else: raise Exception (“输入格式有误”)卷积函数

if _ name _=' _ _ main _ ' : f=cv2.im read (' cameraman.TIF ',cv2.IMREAD_GRAYSCALE ) w=[ method ' w ) G3=NP.ABS ) G1-G2 ) cv2.imshow ) f ) cv2.imshow ) ' replicate ),f ) cv2.imshow ) replicate g3 ) cv2.waitkey(0

通过绘制坏图,也可以发现两张图像的边缘部分不同。

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