Sep*_*our 5 matlab image-processing filter
基于这个问题,并且这一个我认为"imfilter"和"CONV 2"应该有相同的结果.但试试这段代码,你会看到差异.问题是什么?
I = imread('tire.tif');
fil=[1 2 3;4 5 6;7 8 9];
out1=conv2(double(I),fil,'same');
out2=uint8(out1);
out3=imfilter(I,fil,'same');
Run Code Online (Sandbox Code Playgroud)
Hug*_*lan 10
如果你使用imfilter(I,fil,'same','conv')
那么它们是相同的.
不同之处在于,imfilter默认使用相关性来过滤图像,这有一些小差异 - 基本上,卷积从图像的一侧开始,而相关性从另一侧开始,因此滤波器输出存在一些小的差异.如果先翻转图像,则会得到相同的输出:
out4=fliplr(flipud(imfilter(fliplr(flipud(I)),fil,'same')));
Run Code Online (Sandbox Code Playgroud)
这完全等于out2.