我试图在ROI围绕它移动时跟踪一个静止点。附件是ROI外观和可能发生的不同配置的示例。
使用以下代码定义ROI区域,红点是基本的X,Y位置。
exlook = 1;
OrtD = [-101 175 124];
Xdat = [303 261 152];
Ydat = [274 314 287];
Observedpoint = [280,270]; % X,Y
Xloc = 50*cosd(-OrtD(exlook)-16.5+[0:170])+Xdat(exlook);
Yloc = 50*sind(-OrtD(exlook)-16.5+[0:170])+Ydat(exlook);
Xloc = horzcat(Xloc,Xdat(exlook));
Yloc = horzcat(Yloc,Ydat(exlook));
PolymaskXYloc = poly2mask(Xloc,Yloc,450,560);
imshow(PolymaskXYloc,[0 2]); hold on;
scatter(Observedpoint(1),Observedpoint(2),'r','filled')
我考虑使用 inpolygon ,因为matlab显示它可以根据点或点系列在该区域的位置构建逻辑矩阵。
[polin polon] = inpolygon(Xloc,Yloc,Observedpoint(1),Observedpoint(2));
问题在于我想在ROI中定义观察点的位置。应该可以使用 inpolygon ,因为程序将生成线性逻辑矩阵并标记点所在的位置。然而,由于输出是线性的,我不知道如何将线性矩阵转换回奇怪设计的ROI。
我想忘记重塑,但是从我的理解中解脱出来; Matlab总是从左边开始,然后按列生成线性数组。随着ROI的移动,这意味着每个阵列都会有效地改变。
有关如何解决此问题的任何建议?
编辑:想到它,会编制索引工作吗?