未定义与 'double' 类型且具有 'full 3d real' 属性的输入参数相对应的函数 'conv2'。 出错 filter2

ps: 如果有任何问题可以评论留言,我看到后会及时解答,评论或关注,您的鼓励是我分享的最大动力

转载请注明出处:

https://blog.csdn.net/qq_40938301/article/details/105886039

一、问题

做图像处理时,用到 Matlab 的 filter2 这个函数

本以为是照着书上写的,但还是报错,很奇怪

matlab代码:

X = imread('img.bmp');
X = im2double(X);
figure; imshow(X);

报错信息:

未定义与 'double' 类型且具有 'full 3d real' 属性的输入参数相对应的函数 'conv2'。 出错 filter2_第1张图片

 

二、原因

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

 

你可能感兴趣的:(matlab,图像处理)