2017-07-24 635 views
0

我从记录的值中生成以下图像。我已将这些值转换为缩放图像,然后将其重新调整为36 x 52图像。如何使用matlab在图像中查找矩形的长度和宽度

enter image description here

此图片显示,我已经使用的值的比例放大版本。我需要做的是计算充满绿色的形状的长度和宽度。下图显示了我想要的。

enter image description here

我已转换的图像为二进制,然后使用regionprops用于计算长度和使用以下代码广度试过。

 B = im2bw(A); 
    B1 = double(A); 
    Props = regionprops(B1,'MajorAxisLength','MinorAxisLength'); 

非但没有我所得到的所有领域的突出区域的尺寸与二进制值1

enter image description here

我已经获得了绿地的长宽高为好作为黄色/橙色区域。如果我将rgb转换为二进制图像,我得到以下图像,而我想要的只是中心矩形的尺寸。

enter image description here

,我已获得的尺寸包括在所述两侧的两个其他的白色区域。我应该消除它们或只计算矩形的尺寸如何继续找到它的面积。或者还有其他的方法吗?提前致谢!!!

+0

你的矩形总是图像中最中心的物体吗?它总是最小的对象吗?你可以看看由'regionprops'返回的其他属性,如'Area','BoundingBox'和'Centroid'。 – beaker

+0

@beaker谢谢,我会试试看!是的,它是最小的对象和最中心的对象! –

回答

0

我想你的图片A的大小为36x52x3,其中3是红色,绿色和蓝色。 所以,如果你用下面的代码替换

B = im2bw(A); 

a = double(A); % in case it is integer type 
a = a(:,:,2) - a(:,:,1) - a(:,:,3); % try to find green only 
B = im2bw(a); % you may need to set level based on image data type 

你应该得到你想要的。

+0

谢谢。但我没有单独获取矩形的尺寸。它也包括左侧和右侧的白色区域。 –

+0

你说得对。黄色部分是绿色的,所以它也被拿起来了。尝试我的更新答案,并且您可能需要设置* level *(如果需要,将第二个输入设置为* im2bw *)。 –

相关问题