gpt4 book ai didi

matlab - 在 matlab 中实现 IMFILTER

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:53 25 4
gpt4 key购买 nike

我试图在不使用 imfilter 的情况下过滤图像。我应该得到与 imfilter 相同的结果,但我一直得到不同的结果。谁能告诉我哪里出错了?

orignal=imread('obj6__17.png');
filter=1/9*[-1 -1 -1 ; -1 17 -1 ; -1 -1 -1];
s=size(orignal);
r=zeros(s(1));
temp = zeros(3);

for i= 2: s(1)-1
for j = 2: s(2)-1

for n= 1: 3
for m= 1:3
temp(n,m)=orignal(i+2-n,j+2-m)*filter(n,m);
end
end
r(i,j)=sum(single(sum(temp)));
end
end

最佳答案

r的大小我觉得应该和原来的一样。而且我不明白为什么要使用 single 转换为单精度。不管怎样,我想你想做以下事情:

%# Let's first create a small test image from the built-in peppers image
original = im2double(imread('peppers.png'));
original = original(1:5,1:8,1);

filter = 1/9 * [-1 -1 -1 ; -1 17 -1 ; -1 -1 -1];
s = size(original);
r = zeros(s);

for i = 2:s(1)-1
for j = 2:s(2)-1
temp = original(i-1:i+1,j-1:j+1) .* filter;
r(i,j) = sum(temp(:));
end
end

结果如下:

r =

0 0 0 0 0 0 0 0
0 0.2336 0.2157 0.2514 0.2436 0.2257 0.2344 0
0 0.2453 0.2444 0.2671 0.2693 0.2418 0.2240 0
0 0.2741 0.2728 0.2397 0.2505 0.2375 0.2436 0
0 0 0 0 0 0 0 0

使用imfilter,它是:

r2 = imfilter(original, filter)

r2 =

0.3778 0.3325 0.3307 0.3442 0.3516 0.3312 0.3163 0.3856
0.3298 0.2336 0.2157 0.2514 0.2436 0.2257 0.2344 0.3386
0.3434 0.2453 0.2444 0.2671 0.2693 0.2418 0.2240 0.3512
0.3272 0.2741 0.2728 0.2397 0.2505 0.2375 0.2436 0.3643
0.3830 0.3181 0.3329 0.3403 0.3508 0.3272 0.3412 0.4035

如您所见,结果是相同的,除了边框上的那些。有一些策略可以计算边界上的那些,如将图像镜像到边界外,保持它们相同等。请阅读 imfilter 的文档。并选择一种策略。

请注意,我没有在此处翻转 filter,因为过滤器在两个方向上都是对称的。我建议你避免循环!您的代码中有深度为 4 的嵌套循环!

最后,您可以使用二维卷积来执行与 imfilter 相同的操作:

r3 = conv2(original, filter, 'same');

r3 =

0.3778 0.3325 0.3307 0.3442 0.3516 0.3312 0.3163 0.3856
0.3298 0.2336 0.2157 0.2514 0.2436 0.2257 0.2344 0.3386
0.3434 0.2453 0.2444 0.2671 0.2693 0.2418 0.2240 0.3512
0.3272 0.2741 0.2728 0.2397 0.2505 0.2375 0.2436 0.3643
0.3830 0.3181 0.3329 0.3403 0.3508 0.3272 0.3412 0.4035

关于matlab - 在 matlab 中实现 IMFILTER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10672184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com