如何这形象广场的形状进行分类,长方形,三角形和圆?
198(30天)
显示旧的评论
接受的答案
马特Kindig
2014年2月21日
编辑:马特Kindig
2014年2月21日
另一种方法是计算每个对象的最佳边界矩形的边界矩形可以在任意的角。我把下面的方法:
1)确定每个对象的边界(即周长),使用bwboundaries ()
2)计算的最小矩形边界框,其中包含这个周长。为此,我使用了minboundrect函数可用
//www.tatmou.com/matlabcentral/fileexchange/34767-a-suite-of-minimal-bounding-objects/content/MinBoundSuite/minboundrect.m
。
3)我计算宽度、高度和每个边界矩形的面积。纵横比(宽度和高度)之间的比例可以用来确定是否它是一个正方形(纵横比~ = 1.0)或矩形。
4)长方形或正方形,对象的填充区域(从regionprops())应该几乎和它的边界矩形的面积一样,而对于一个三角形应该会少得多。
5)的循环条件,我用周长的比值和区域图像分析师建议。
享受吧!
我= imread (“//www.tatmou.com/matlabcentral/answers/uploaded_files/8372/abc.jpg”);
%转换为二维黑白颜色倒
BW = im (:: 1) < 10;
%获得每个对象的轮廓
[B, L, N] = bwboundaries (BW);
%得到数据
统计= regionprops (L,“重心”,“区域”,“周长”);
质心=猫(1、stats.Centroid);
周长=猫(1、stats.Perimeter);
面积=猫(1、stats.Area);
CircleMetric =(周长。^ 2)。/(4 *π*区域);%循环指标
SquareMetric =南(N, 1);
TriangleMetric =南(N, 1);
%为每个边界,适合边界框,计算一些参数
为k = 1: N,
边界= B {k};
[rx, ry, boxArea] = minboundrect(边界(:,2),边界(:1));% x和y是在图像翻转
%得到边界框的宽度和高度
宽度=√sum (rx (2) rx (1))。(2)^ 2 +(变化变化(1))^ 2));
身高=√sum (rx (2) rx (3))。(2)^ 2 +(变化变化(3))^ 2));
aspectRatio =宽/高;
如果aspectRatio > 1,
aspectRatio =高度/宽度;%纵横比小于团结
结束
SquareMetric (k) = aspectRatio;%纵横比的盒子
TriangleMetric (k) =区域(k) / boxArea;% vs框区域
结束
%定义一些每个指标的阈值
%的顺序循环,三角形,正方形,长方形,以避免分配
%相同形状到多个对象
isCircle = (CircleMetric < 1.1);
isTriangle = ~ isCircle & (TriangleMetric < 0.6);
isSquare = ~ isCircle & ~ isTriangle & (SquareMetric > 0.9);
isRectangle = ~ isCircle & ~ isTriangle & ~ isSquare;%矩形并不是这些
%为每个对象分配形状
whichShape =细胞(N, 1);
whichShape (isCircle) = {“圆”};
whichShape (isTriangle) = {“三角形”};
whichShape (isSquare) = {“广场”};
whichShape (isRectangle) = {“矩形”};
%现在标签的结果
RGB = label2rgb (L);
imshow (RGB);持有在;
结合= [CircleMetric、SquareMetric TriangleMetric];
为k = 1: N,
%显示度量值和形状的物体旁边
Txt = sprintf (“C = % 0.3 f S = % 0.3 f T = % 0.3 f ',结合(k,:));
文本(质心(k, 1) -20年,重心(k, 2), Txt);
文本(质心(k, 1) -20年,重心(k, 2) + 20, whichShape {k});
结束
更多的答案(10)
图像分析
2014年2月19日
编辑:图像分析
2016年3月19日
看看周长面积比的平方。在图像分割中使用regionprops如图所示教程:
//www.tatmou.com/matlabcentral/fileexchange/?term=authorid%3A31862
(编辑)
请看附呈的演示。
(AKHIL RAJAGOPAL
2016年4月23日
我得到一个错误isTriangle = ~ isCircle & (TriangleMetric < 0.6);:错误使用&矩阵维度必须一致。
请帮我解决这个问题。
拉胡尔Chauhan
2017年10月23日
泰先生非常代码但我得到错误的“未定义的函数或变量minboundract”所以请帮我尽快得到这个错误纠正....爵士再次提前泰先生
4评论
拉胡尔Chauhan
2017年10月25日
先生我纠正功能但是代码不工作我在这里附加的代码和图像文件知道帮我....这是代码:(1)test.m附加文件
(2)minboundrect.m
在这里形象:abc.jpg吗
泰提前先生对我的帮助…. .
Michelle de烈性黑啤酒
2018年12月28日
你好先生,
它还可能对三角形的方向进行分类。如左指向三角形或指向三角形吗?也分类的纤维/第四对象照片吗?这不是一个矩形,但如何单独从真正的矩形吗?
亲切的问候,
米歇尔
1评论
图像分析
2018年12月28日
是的,我相信你可以的。只是修改我的附加形状识别演示。一旦你有斑点,找到其边界框和regionprops重心。如果重心是左边的边界框的中心线,指着左边。如果是下面,它是指向上。
对于其他对象,你也要找多少个顶点它然后也许规模模板大小和是否足够的像素匹配对象。你也可以做三角形的模板匹配方法,如果你想要的。不,我没有代码,但是,聪明的工程师,我相信你会发现很容易做。