imfilter和conv2的关系

本文通过具体实例对比了使用不同方法(imfilter与conv2)进行卷积运算的结果,并探讨了归一化对结果的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义两个矩阵

>> a = [1 2 3 5 ; 4 7 9 5;1 4 6 7;5 4 3 7;8 7 5 1] %a矩阵取5*4
b = [1 5 4; 3 6 8; 1 5 7]   %b矩阵如多数模板一样取3*3

然后定义一个高斯模板

>> gaussian=fspecial('gaussian',3,1.8)
gaussian =
    0.0997    0.1163    0.0997
    0.1163    0.1358    0.1163
    0.0997    0.1163    0.0997

之后我们看看利用imfilter计算结果

>> g=imfilter(a,gaussian)
g =
    1.5318    2.8476    3.4654    2.5070
    2.1885    4.2578    5.4600    4.0195
    2.7451    4.7312    5.7839    4.2411
    3.2882    4.7479    4.8615    3.3270
    2.8811    3.7260    3.0555    1.8311

然后我们看看用卷积的结果

>> cc=conv2(a,gaussian,'same')
cc =
    1.5318    2.8476    3.4654    2.5070
    2.1885    4.2578    5.4600    4.0195
    2.7451    4.7312    5.7839    4.2411
    3.2882    4.7479    4.8615    3.3270
    2.8811    3.7260    3.0555    1.8311

这里cc和g的结果是一样的

然而 如果我们把高斯矩阵换成b矩阵又会有什么结果呢?

先对b归一化 

>> bb=b/sum(sum(b))
bb =
    0.0250    0.1250    0.1000
    0.0750    0.1500    0.2000
    0.0250    0.1250    0.1750

>> gg=imfilter(a,bb)  %滤波
gg =
    2.2750    3.5250    3.7750    1.8250
    3.1500    5.3000    5.8750    3.1500
    3.4750    4.9000    6.1000    3.3000
    4.3000    4.6500    4.6750    2.5500
    3.6250    3.5750    2.6500    1.4750

>> ccc=conv2(a,bb,'same')  %执行卷积操作的结果
ccc =
    0.9750    2.2250    3.1750    2.8750
    1.5250    3.7750    5.3000    5.1750
    1.8500    4.1250    5.6500    5.6250
    2.4500    4.4500    4.7500    4.2000
    2.4500    4.4750    3.4750    2.5500

这里执行的结果却不相等~ 无法理解

然而 若执行

>> ggg=imfilter(a,bb,'conv')  %表示a与bb矩阵执行的是卷积操作 这个时候的结果与直接ccc=conv2(a,bb,'same')  %执行卷积操作的结果是一样的
ggg =
    0.9750    2.2250    3.1750    2.8750
    1.5250    3.7750    5.3000    5.1750
    1.8500    4.1250    5.6500    5.6250
    2.4500    4.4500    4.7500    4.2000
    2.4500    4.4750    3.4750    2.5500

事实证明不进行归一化conv2的结果与imfilter的结果是一样的

>> ggg=imfilter(a,b,'conv')
ggg =
    39    89   127   115
    61   151   212   207
    74   165   226   225
    98   178   190   168
    98   179   139   102
>> ccc=conv2(a,b,'same')
ccc =
    39    89   127   115
    61   151   212   207
    74   165   226   225
    98   178   190   168
    98   179   139   102

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值