ps: 如果有任何问题可以评论留言,我看到后会及时解答,评论或关注,您的鼓励是我分享的最大动力
转载请注明出处:
https://blog.csdn.net/qq_40938301/article/details/105886039
一、问题
做图像处理时,用到 Matlab 的 filter2 这个函数
本以为是照着书上写的,但还是报错,很奇怪
matlab代码:
X = imread('img.bmp');
X = im2double(X);
figure; imshow(X);
报错信息:
二、原因
im2double 是有3维阵列(x, y, 颜色)
而 filter2 属于 conv2 针对 的是 二维定义,不能直接使用
三、解决办法
1、使用 rgb2gray( ) 转换为灰度图像,并在2D中过滤:
X = imread('img.bmp');
X = rgb2gray(X);
X = im2double(X);
figure; imshow(X);
2、使用 n 维卷积 convn( )
filter_g =
3、在 2D 中过滤每种颜色 (RGB)
filter_g = zeros(size(im_double));
for i = 1:3
filter_g(:,:,i) = conv2(gauss, im_double(:,:,i);
end