我正在尝试使用" 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');
答案 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,[])。