卷积的Matlab代码实现

本文通过实验介绍了如何使用Matlab实现拉普拉斯算子增强图像,并自行编码完成了卷积运算的过程。展示了利用Matlab内置函数与自定义函数实现卷积变换的一致性。

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

《数字图像处理》实验课上老师让尽量给出自己的源码,查阅资料初步了解了卷积的基本原理,所以针对实验课上的例子给出了自己的卷积变换代码。总之,卷积变换代码并不复杂,前提是了解了卷积的基本原理,这里有一个参考链接感觉讲的很棒,请查阅过后再阅读我的代码。

博客链接:https://blog.youkuaiyun.com/jinv5/article/details/52874880

%%拉普拉斯算子增强(卷积在下面)
clear all
load imdemos circuit%在图像处理工具箱中加载'circuit'图像
I = circuit;
I = double(I);
imshow(I, []);
h = [0 1 0;1 -4 1; 0 1 0];
J = conv2(I, h, 'same');%以h为卷积核对I进行卷积,返回与I相同大小的中心部分
K = I - J;
figure, imshow(J, []);
figure, imshow(K, []);
%%自己编码实现卷积运算
%先补0
myF = zeros(2, 4 + size(I, 2));
myF(3:(size(I, 1) + 2), 1:2) = 0;
myF(3:(size(I, 1) + 2),3:(size(I, 1) + 2)) = I;
myF(3:(size(I, 1) + 2),size(I, 1) + 3:size(I, 1) + 4) = 0;
myF(size(I, 1) + 3:size(I, 1) + 4, 1:size(I, 1) + 4) = 0;
%进行卷积 卷积顺序改变不会影响卷积的结果
P = ones(4 + size(I, 1), 4 + size(I, 2));
for i = 3:(2 + size(I, 1))
    for j = 3:(2 + size(I, 2))
        for m = 1:3
            for n = 1:3
                P(i, j) = P(i, j) + myF(i + m-2, j + n-2)*h(m, n);
            end
        end
    end
end
P = P(3:size(I, 1) + 2, 3:size(I, 2));

figure, imshow(P, []);

效果展示:

原图I:                                   利用matlab卷积函数conv2(I, h, 'same')求得的结果:      自己编码求得的卷积变换结果:

                                                           

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值