Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
这实际上是为了在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) |
![]() |
![]() |