对MatLab来说很新,只是搞清楚一些问题并提出问题。我基本上尝试使用conv2()来过滤/模糊图像,但是当我使用imshow()
时,我得到的是全白图像我正在用
阅读图片testImage = imread('test.bmp');
这是灰度的uint8图像。
我试图用4 x 4矩阵对图像进行卷积。
fourByFour = ones(4);
当我实际执行时,我将使用imshow()
获得全部白色convolvedImage = conv2(testImage, fourByFour);
我应该期望在图像上放置一个过滤器,而不是完全白色的过滤器。 任何帮助将不胜感激。
答案 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,[])
我正在使用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