【发布时间】:2014-11-10 17:35:56
【问题描述】:
我正在编写一个用于在 MATLAB 中检测基本形状的程序。 当我检测到形状时,我会评估它的方向,然后我旋转形状以使其方向为零,然后我可以评估它的投影并指定它是什么。
问题在于 MATLAB 函数:regionprops() 没有正确评估三角形的方向。
I = zeros(256,256);
pos_triangle = [64 64 128 192 128 128];
Is = insertShape(I, 'FilledPolygon', pos_triangle);
imshow(Is)
original = Is;
originalBW = im2bw(original);
figure; imshow(originalBW);
S = regionprops(originalBW,'All');
bwr=imrotate(originalBW,S.Orientation);
S2 = regionprops(bwr,'Centroid','Orientation');
figure;imshow(bwr);
我使用 imrotate fnc 来旋转图像,旋转没有问题,imrotate 运行良好。问题在于计算图像的方向[使用'regionprps()'fnc]!例如:我想把三角形从这个位置转过来
http://postimg.org/image/4un4sc7pn/
方向值:-28.9621 所以我将它旋转了 28.9621 度以改变它的位置
http://postimg.org/image/x68opdrm3/
但输出是这样的:
http://postimg.org/image/yf15or8y3/
使用它们的方向(或图像的其他可能属性)
另一个例子:将位置从左上第二三角形更改为左上第一三角形
【问题讨论】:
-
您是否尝试过确定三角形的中心并使用二维旋转矩阵?
-
您的示例的输出是什么?为什么你认为它是错误的?
-
CroCo & Breaker,我编辑了这个问题,希望它变得更清楚。
标签: matlab image-processing shape matlab-cvst