n * n个块和多边形
这实际上是为了在matlab中用于称为roipoly的函数,但可以将其视为一般情况下的问题。
Roipoly是一项功能,可让您在图像上选择一个多边形,然后返回一个二进制掩码,您可以在其中使用该掩码获取所需多边形的索引。 (毕竟这只是一个普通的多边形)。
我的应用程序(K近邻)要求我从所拥有的数据(多边形)中提取 n 个块,即如果我拥有一个多边形(道路或一块土地),我希望在其上移动一个 n平方同时避免与边缘相交并将这些n * n像素放入某个变量中。
如果我所有的形状都为矩形,这个问题会容易得多,但不幸的是事实并非如此。我可能会遇到对角线,圆形或不规则的东西。
我可以执行已知的算法吗?或已经做到这一点或可以使它在matlab中变得更容易的东西?
我已经在研究它,但是它很棘手,我想确保我没有浪费时间在某个地方重新发明轮子。
有任何想法吗?
回答:
我不确定您想要什么,但可以假设是这样的:您有一个二进制蒙版,并且希望所有(可能重叠的)n * n个正方形都适合。
您可以通过生成所有可能的n * n个正方形,然后丢弃所有不适合多边形内部的正方形来进行尝试。
例如
%# create a circle - this is the binary mask bw = false(101); [xx,yy] = ndgrid(-50:50,-50:50); bw((xx.^2+yy.^2)
|