使用蒙版卷积图像会显示全白图像

时间:2018-01-31 22:44:07

标签: matlab image-processing

对MatLab来说很新,只是搞清楚一些问题并提出问题。我基本上尝试使用conv2()来过滤/模糊图像,但是当我使用imshow()

时,我得到的是全白图像

我正在用

阅读图片
testImage = imread('test.bmp');

这是灰度的uint8图像。

我试图用4 x 4矩阵对图像进行卷积。

fourByFour = ones(4);

当我实际执行时,我将使用imshow()

获得全部白色
convolvedImage = conv2(testImage, fourByFour);

我应该期望在图像上放置一个过滤器,而不是完全白色的过滤器。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我没有你的测试图像所以我在图像上解释。作为conv2的定义,它返回二维卷积。 所以请看一下这个小代码:

clc;% clear the screen
clear all;% clear everything
close all;% close all figures

test = imread('test.bmp');
% read test image that is  .bmp format and size :294x294x3 and uint8.

fourByFour = ones(4); % define 4 * 4 matrix all ones

convolvedImage = conv2(test(:,:,1), fourByFour);
%apply the ones matrix on image but to use conv2 on this image we apply on one of channels

figure, imshow(convolvedImage,[])

这是我的命令窗口,输出: enter image description here

我正在使用MAtlab 2017a,如果我使用conv2(test, fourByFour);代替conv2(test(:,:,1), fourByFour);,则错误为:

Error using conv2
N-D arrays are not supported.

所以我们应该注意班级类型和维度。还有一件事,在你的命令窗口中输入edit conv2你可以阅读这个功能的细节以及如何使用它,但永远不要编辑它:)。感谢

答案 1 :(得分:-1)

test = imread('test.bmp');
% read test image that is  .bmp format and size :294x294x3 and uint8.

fourByFour = ones(4); 
% define 4 * 4 matrix all ones
test=rgb2gray(test);
% convert colorimage into gray
convolvedImage = conv2(double(test), double(fourByFour));
%perform the convolution
figure, imshow(convolvedImage,[])
% display the image