我的输出有问题。我正在使用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);
因此,这是输出:
答案 0 :(得分:3)
您不了解自己在做什么!
这显然是家庭作业,因此我没有提供完整的代码。您正在做图像卷积,可以使用更好的代码(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
上的索引。