我的输出有问题。我使用5*5过滤器使图像平滑。作为平均滤波器,我们的图像平滑,但这一次使图像更加黯淡。有人能帮我解决这个问题吗?
输入图像是:

img_2 = imread('White-Bars.png');
filter = ones(5 , 5)/25;
working_img = img_2(:,:,1);
img_4 = img_2(:,:,1);
[rows,cols] = size(working_img); sum=0;
for row=4:(rows-3)
for col=4:(cols-3)
for rowindex=(-2): (3)
for colindex=(-2): (3)
img_4(row,col) = mean2(double(working_img(row+rowindex,col+colindex)) * filter(1:5,1:5));
end
end
end
end
subplot(1,2,1);
imshow(working_img);
subplot(1,2,2);
imshow(img_4);因此,这是输出:

发布于 2018-11-01 10:34:24
你不明白你在做什么!
这显然是家庭作业,所以我没有提供完整的代码。您正在进行图像卷积,这可以用更好的代码(fft、conv2、imfilter等)来完成,但我认为您这样做是为了学习。
首先,坐下来看看你的讲稿,了解过滤是什么。当您在像素上应用过滤器时(前两个循环是选择图像中的每个像素),您要做的是将所选的滤波器乘以该像素和周围的所有像素,并在输出图像中累积结果。
一旦您在一个特定的像素(row,col),然后您迭代周围的所有相邻像素,(抵消rowindex,colindex)。对于其中的每一个,您都希望将当前像素乘以该特定位置的(即1值)上的过滤器,并将其添加到结果中。取决于过滤器是什么,它会做一些不同的事情。在您的示例中,具有所有相同值的筛选器将执行平均值。您不需要使用mean2 函数,您正在应用的数学做过滤。
简而言之,这句话是错误的:
img_4(row,col) = mean2(double(working_img(row+rowindex,col+colindex)) * filter(1:5,1:5));mean2的使用和变量filter上的索引。
视频解释卷积:zFhWdM4ic
https://stackoverflow.com/questions/53098631
复制相似问题