用MATLAB进行图像处理

图像处理概念、算法和MATLAB

POLY2MASK和ROIPOLY -第2部分

我熟悉两种判断点是否在多边形内的基本方法。第一个是计算圈数,这是一条闭合曲线绕该点运行的次数。这种技术是用MATLAB函数实现的inpolygon

在为像素网格上的所有点计算多边形内的点时,交叉测试更常用。从图像的一侧到另一侧跟踪光线,计算光线穿过多边形边缘的次数。

X1 = [30 80 60 30];Y1 = [30 50 90 30];Ray_x = [20 90];Ray_y = [70 70];Points_x = [30 60 80];Points_y = [70 70 70];情节(x1, y1)在…上情节(ray_x ray_y,“r”)情节(points_x points_y,“标记”“哦”“MarkerSize”4.“颜色”“k”...“MarkerFaceColor”“k”“线条样式”“没有”70年)文本(30日,“一个”“垂直排列”“底”)案文(60,70,“B”“垂直排列”“底”)文本(80、70、“C”“垂直排列”“底”)轴持有标题(“多边形1”

在点A,射线没有穿过多边形的边;A在多边形外面。在点B,射线穿过多边形边一次;B在里面。在点C,射线两次穿过多边形边缘;C是外面。

当然,多边形可以比三角形复杂得多。这里有一些凸的,非简单的多边形。

子地块(2,1,1)地块([30 70 70 30 30],[30 70 30 70 30])持有在…上绘图([20 80],[60 60],“r”)持有标题(“多边形2”)副地块(2,1,2)地块([30 70 70 40 40 60 60 30 30],...[30 30 55 55 35 35 60 60 30])保持在…上情节([80],[45]45,“r”45岁的)阴谋(50“标记”“哦”“MarkerSize”4.“MarkerFaceColor”“k”45岁的)文本(50' D '“垂直排列”“底”)ylim([25 75])持有标题(“多边形3”

在多边形2中,光线穿过多边形两次。多边形3更有趣。点D在多边形内部还是外部?答案是一个惯例问题。一个常用的约定是奇偶规则。如果有偶数条边相交,则点在多边形外。一个点是里面有一个奇数。根据这个规则,点D在多边形的外面。

交叉检验和奇偶规则很容易理解。挑战在于避免在特殊情况下出错。麻烦的情况包括射线与顶点相交、边的相交和重合边。另一种情况是光线与边重合。这里有一些图表来说明。(注意,在多边形7中,在多边形的左侧有两条重合的边。)

子地块(2,2,1)地块([20 30 40 30 20],[30 20 30 40 30]);持有在…上Plot ([10 50], [30 30],“r”)持有标题(“多边形4”),ylim([10 50])子地块(2,2,2)图([20 30 40 50 60 20],[30 10 20 10 30]);持有在…上绘图([10 70],[10 10 10],“r”)持有标题(“多边形5”)、ylim([0 40])子地块(2,2,3)地块([20 50 20 50 20],[20 20 60 60 20]);持有在…上Plot ([10 60], [40 40],“r”)持有标题(“多边形6”),ylim([10 70])子地块(2,2,4)图([20 60 60 20 50 20 20],...[20 20 50 50 20 35 50 20]);持有在…上绘图([10 70],[35 35],“r”)持有标题(“多边形7”),ylim([10 60])

在下一篇文章中,我将介绍图像处理工具箱函数使用的具体算法塑料罩roipoly

这是第一部分这是本专题的重点。




MATLAB®7.3发布

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。