首页 > 其他 > 详细

Matlab 图像处理中卷积的几种实现

时间:2021-05-14 10:12:06      阅读:27      评论:0      收藏:0      [点我收藏+]

代码

clear;close all;clc

img1 = rand(5,5); % 输入图像
img2 = rand(3,3); % 核

% 卷积的几种实现方式
c = conv2(img1,img2,‘same‘);
f = imfilter(img1,rot90(img2,2));
g = filter2(rot90(img2,2),img1);

% 对比
cmp = [c(:),f(:),g(:)];

总结

观察 cmp 矩阵后发现三者数值一样,但通过计算误差发现,仍然存在极小的误差,这与函数的实现原理有关,因此可以近似地认为以上三种方法能够获得一样的卷积效果。

  • 使用 conv2(A,B) 实现卷积,A 为图像,B 为核。
  • 使用 imfilter(A,rot90(B)) 实现卷积,A 为图像,B 为核。因为该函数主要功能是实现滤波的,即直接对应位置元素加权求和,但卷积需要翻转 180 度,故使用 rot90(),逆时针翻转 2 个 90 度,再滤波即为卷积。
  • 使用 filter2(rot90(B),A) 实现卷积,A 为图像,B 为核。filter2 是 imfilter2 的单通道形式,即只能处理单通道滤波,故同样先翻转 180 度再做滤波,这里核的位置在前面,需要尤其注意。

Matlab 图像处理中卷积的几种实现

原文:https://www.cnblogs.com/gshang/p/14766740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!