首页 文章

Matlab中的边界框(regionprops)

提问于
浏览
2

我正在编写一个Matlab程序来分割图像,然后在分割的图像周围放置一个边界框 . 我的代码以前工作,但我现在收到错误:

使用矩形时出错值必须是4个元素向量

有问题的数组是由regionprops创建的BoundingBox,它应该只包含四个元素,但由于某种原因包含更多元素 . 这是我的代码(defaultSegment函数返回二进制图像):

function [ boundImage ] = boundSegment( input_image )
image = defaultSegment(input_image);
clear s;
s = regionprops(image, 'Area', 'BoundingBox');
numObj = numel(s);
index = 1;
for k = 1: numObj-1
    if s(k+1).Area > s(index).Area
        index = k+1;
    else
        index = index;
    end
end
figure, imshow(input_image);
rectangle('Position',s(index).BoundingBox);
boundImage = null;

(我真的更喜欢,如果我的代码可以直接将边界框放在图像上而不是对其进行分图,但是如果没有视觉工具箱,我还没有找到办法做到这一点)

谢谢!

2 回答

  • 2

    我怀疑 image 有两个以上的维度 . 使用 size(image) 检查 . 仅当 image 具有两个维度时, BoundingBox 才会有四个元素 . 从Matlab's regionprops help

    'BoundingBox' - 包含区域的最小矩形,1乘Q * 2向量,其中Q是图像维数:ndims(L),ndims(BW)或numel(CC.ImageSize) .

    图像具有第三维的原因是多个颜色通道 . 如果要转换为灰度进行处理,请使用rgb2gray .

  • 0

    继续@ shoelzer关于 image 的三个通道的答案,我怀疑你得到彩色图像,因为你的分割算法( defaultSegment )用不同的颜色描绘每个片段 . 尝试rgb2indimage 转换为分段标签2D矩阵

相关问题