Image 如何用matlab求图像中矩形的长度和宽度

Image 如何用matlab求图像中矩形的长度和宽度,image,matlab,matlab-figure,Image,Matlab,Matlab Figure,我已经从我记录的值生成了以下图像。我将这些值转换成缩放图像,然后将其大小调整为36 x 52图像 此图显示了我使用的值的放大版本。我需要做的是计算填充绿色的形状的长度和宽度。下图显示了我想要的 我已经将图像转换为二进制,然后使用以下代码尝试使用regionprops计算长度和宽度 B = im2bw(A); B1 = double(A); Props = regionprops(B1,'MajorAxisLength','MinorAxisLength');

我已经从我记录的值生成了以下图像。我将这些值转换成缩放图像,然后将其大小调整为36 x 52图像

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

我已经将图像转换为二进制,然后使用以下代码尝试使用regionprops计算长度和宽度

     B = im2bw(A);
     B1 = double(A);
     Props = regionprops(B1,'MajorAxisLength','MinorAxisLength');
我没有获得高亮显示区域的尺寸,而是获得了所有具有二进制值1的区域

我已经获得了绿色区域以及黄色/橙色区域的长度和宽度。如果我将rgb转换成二值图像,我会得到下面的图像,而我想要的只是中心矩形的尺寸

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

我猜您的图像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

你应该得到你想要的

多谢各位。但我并不仅仅得到矩形的尺寸。它包括左边和右边的白色区域。你是对的。黄色部分为绿色,因此也会被拾取。请尝试我更新的答案,您可能需要设置级别(如果需要,第二个输入到im2bw。你的矩形总是图像中最中心的对象吗?它总是最小的对象吗?你可以查看
regionprops
返回的其他属性,比如
Area
BoundingBox
质心
@Biker谢谢,我会尝试它!!是的,它是最小的对象d也将大多数对象居中!!!