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

本文解决在Matlab中使用filter2函数进行图像处理时遇到的错误,详细介绍了错误原因及三种解决方法,包括将图像转换为灰度、使用n维卷积convn以及分别对RGB通道进行2D过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载请注明出处:

https://blog.youkuaiyun.com/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

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值