【问题标题】:matlab aggregate bounding box area in an imagematlab聚合图像中的边界框区域
【发布时间】:2015-01-08 12:13:06
【问题描述】:

我有一个图像 I,以及矩阵 A 中的一组边界框位置,A=[x10 y10 x11 y11; x20 y20 x21 y21...xn0 yn0 xn1 yn1]。这些框可以在下面的图像上可视化。

                  imshow(I);
                  numparts = floor(size(A, 2)/4);
                  for i = 1:numparts
                    x1 = A(1,1+(i-1)*4);
                    y1 = A(1,2+(i-1)*4);
                    x2 = A(1,3+(i-1)*4);
                    y2 = A(1,4+(i-1)*4);
                    line([x1 x1 x2 x2 x1]',[y1 y2 y2 y1 y1]','color',colorset{i},'linewidth',2);
                  end

如何聚合这些边界框区域,以便将这些框内的像素标记为 1,否则标记为 0?我不想要一个包含 A 中所有边界框的包罗万象的边界框。我需要一个更精确的区域图来聚合 A 中的边界框。

【问题讨论】:

    标签: matlab bounding-box


    【解决方案1】:

    如果我理解正确,您希望将发现的每个边界框的内部都设置为 1,而其余元素设置为 0。我还将假设您的数组的结构使得每一行,前两个坐标是左上角,后两个坐标是特定边界框的右下角。

    您可以做的是创建一个二进制图像并将每个填充边界框绘制到这个二进制图像中。然后,您将获得一个包含所有边界框以及整个内部设置为 1 的形状。因此,请执行以下操作:

    %// Declare mask
    mask = false(size(I,1), size(I,2));
    
    %// Go through each bounding box pair of co-ordinates and draw a bounding box
    %// inside the mask
    %// Directly using your code... though you can do this more efficiently
    numparts = floor(size(A, 2)/4);
    for i = 1:numparts
        x1 = floor(A(1,1+(i-1)*4));
        y1 = floor(A(1,2+(i-1)*4));
        x2 = floor(A(1,3+(i-1)*4));
        y2 = floor(A(1,4+(i-1)*4));
    
        %// Draw bounding box here
        mask(y1:y2,x1:x2) = true;
    end
    
    %// Show the original image as well as the mask beside it
    figure;
    subplot(1,2,1);
    imshow(I);
    subplot(1,2,2);
    imshow(final_mask);
    

    final_mask 现在应该包含您要查找的内容。我在这里假设x 是水平的,而y 是垂直的。如果不是这种情况,则只需在 for 循环的最后语句中交换第一维和第二维索引以适应您的目的。

    请特别注意,我采用了每个(x,y) 坐标的floor,因为我不确定您是否将这些位置作为浮点数或整数。为了能够使用我所做的,您必须确保坐标是整数,以便能够索引到我正在尝试制作的掩码中。

    此外,此代码不提供任何错误检查。如果您的任何边界框超出图像边界,MATLAB 将生成错误通知您这一事实。我将留给您在图像边界之外的蒙版中绘制边界框时进行额外的错误检查。如果您不担心这一点,那么您不必编写此步骤。

    我还编写了代码以在一个窗口中显示原始图像及其旁边的聚合掩码。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 2019-01-31
      相关资源
      最近更新 更多