使用detectMSERFeatures时出错

用户1234

我试图进行一些形态学操作,然后尝试detectMSERFeatures。我遇到错误。您能建议代码中的任何替代/更正吗?我在matlab中遇到的错误也被引用了

Img= imread('sub.png');
figure,imshow(Img);title('Original Image')
Img=double(Img);
m1=Img>40;
sd = stdfilt(Img, ones(3,3));
Img = Img.*m1;
figure,imshow(Img);
Img = bwareaopen(Img,50);
figure,imshow(Img);
% Detect and extract regions
mserRegions = detectMSERFeatures(Img);
mserRegionsPixels = vertcat(cell2mat(mserRegions.PixelList));  % extract regions
% Visualize the MSER regions overlaid on the original image
figure; imshow(Img); hold on;
plot(mserRegions, 'showPixelList', true,'showEllipses',false);
title('MSER regions');
% Convert MSER pixel lists to a binary mask
mserMask = false(size(Img));
ind = sub2ind(size(mserMask), mserRegionsPixels(:,2),mserRegionsPixels(:,1));
mserMask(ind) = true;

hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(Img), hy, 'replicate');
Ix = imfilter(double(Img), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
edgeMask=gradmag;
figure, imshow(gradmag,[]), title('gradmag')
edgeAndMSERIntersection = edgeMask & mserMask;
figure; imshowpair(edgeMask, edgeAndMSERIntersection, 'montage');
title('Gradient and intersection of Gradient with MSER regions')
[label n]=bwlabel(edgeAndMSERIntersection);
figure,imshow(label2rgb(label,'jet','k','shuffle'));

我收到如下错误

    Error using images.internal.imageDisplayValidateParams>validateCData (line 119)
If input is logical (binary), it must be two-dimensional.

Error in images.internal.imageDisplayValidateParams (line 27)
common_args.CData = validateCData(common_args.CData,image_type);

Error in images.internal.imageDisplayParseInputs (line 78)
common_args = images.internal.imageDisplayValidateParams(common_args);

Error in imshow (line 223)
  [common_args,specific_args] = ...

Error in ex7 (line 11)
figure,imshow(m3);
异兽破

可以从底部用一行代码读取错误输出,而当您向上阅读这些代码时,它会深入调用堆栈。因此,最上面一行给出了实际抱怨的功能及其给出的原因。

这句话说,对于逻辑输入,图像必须是二维的。如果为它提供3维数据,则假定它是彩色的,但是它不能接受逻辑值-逻辑值是二进制值,只能为true / false(可以用0和1表示,有时很难区分正常的uint或float)。

原因是错误报告的另一端,在最底行:

figure,imshow(m3);

这通常是代码中的一行。现在,此行未出现在您提供的代码示例中,因此我从这里开始猜测,但是要做的第一件事是检查m3变量的属性您可以通过以下方式找到其尺寸

size(m3)

两种最可能的方案是a)。m3具有两个以上的维度。也许是彩色图像已针对标量进行了阈值处理。或者b)。m3具有少于两个维度。也许您已经对其进行了一些操作,以降低其维数,例如总和或均值。

如果这不能帮助您找到错误的根源,建议您粘贴ex7脚本/函数的其他行该错误发生在第11行,因此至少前11行会很有用。如果它是一个函数,那么查看生成该函数输入的代码将很有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章