空域滤波图示

来源:互联网 发布:破解软件密码公司 编辑:程序博客网 时间:2024/05/17 09:38
空域滤波就是二维卷积,计算步骤:
(1)    卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)
(2)    移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3)    在旋转后的卷积核中,将输入图像的像素值作为权重相乘

(4)    第三步各结果的和做为该输入像素对应的输出像素


卷积核就是滤波器系数


这是原始图像和卷积核:


这是3种情况下的卷积计算图示:




a计算扩充的某点,即第一个像素左上角的那一点,注意并不是计算第一个像素点的滤波值;b是计算中间某点的滤波值;c是计算扩充的某点,即第一行最后一个像素右上角的那一点,注意并不是计算第一行最后一点的滤波值;6*6的图像卷积3*3的核得到8*8的输出


设原始图像M*M,卷积核N*N,先把原始图像右边和下边扩充 N-1 个像素(卷积结果边长=M+N-1),不断平移卷积核,直到没有重叠区域为止;每次只考虑重叠的区域,对应位置相乘,把乘积相加就是当前像素点处的滤波输出,当前像素点永远位于卷积核的正中间。


相关MATALB代码

a=[2 1 3 1;1 2 1 2;2 1 3 2;1 3 1 2];b=[1 1 1;1 1 1;1 1 1];c=conv2(a,b,'same');d=conv2(a,b,'full');fprintf('\na = \n');disp(a);fprintf('\nb = \n');disp(b);fprintf('\nc = \n');disp(c);fprintf('\nd = \n');disp(d);

MATALB仿真结果
a = 
     2     1     3     1
     1     2     1     2
     2     1     3     2
     1     3     1     2


b = 
     1     1     1
     1     1     1
     1     1     1


c = 
     6    10    10     7
     9    16    16    12
    10    15    17    11
     7    11    12     8


d = 
     2     3     6     5     4     1
     3     6    10    10     7     3
     5     9    16    16    12     5
     4    10    15    17    11     6
     3     7    11    12     8     4

     1     4     5     6     3     2


matlab中的 imfilter 和 conv2 都能够实现,后者得到的结果直接是卷积结果,长度为M+N-1;但前者默认保持输入输出大小一致,将卷积结果的边界上的(N-1)/2 行(列)的元素舍弃

0 0
原创粉丝点击