MATLAB:对图像应用低通滤镜

时间:2016-12-27 22:00:34

标签: matlab filter lowpass-filter

我正在尝试使用" ones"来实现一个简单的低通滤波器。作为过滤器和" conv2"计算两个矩阵(原始图像和滤镜)的卷积,这是我想要得到的滤镜图像,但imshow(filteredImage)的结果只是一个空的白色图像而不是过滤后的图像。

我检查了过滤后的图像的矩阵,它是256x256的双倍,但我不知道它没有正确显示的原因。

I = imread('cameraman.tif');

filteredImage = conv2(double(I), double(ones(3,3)), 'same');

figure; subplot(1,2,1); imshow(filteredImage);title('filtered');
    subplot(1,2,2); imshow(I); title('original');

编辑: 在计算卷积时,我还尝试将其转换为双倍,因为它超过1,但它没有给出低通滤镜效果,但图像的对比度却增加了。

I = imread('cameraman.tif');
I1 = im2double(I);
filteredImage = conv2(I1, ones(2,2), 'same');

figure; subplot(1,2,1); imshow(filteredImage);title('filtered');
    subplot(1,2,2); imshow(I1); title('original');

1 个答案:

答案 0 :(得分:0)

以下解决方案已修复范围问题,其他解决方案是关于特定类型的低通滤波器,这是一个平均滤波器:

Img1 = imread('cameraman.tif');
Im=im2double(Img1);
filteredImage = conv2(Im, ones(3,3));
figure; subplot(1,2,1); imshow(filteredImage, []);title('filtered');
subplot(1,2,2); imshow(Im); title('original');

我没有使用内核进行划分,而是使用 imshow(filteredImage,[])