我有一组点,我想传播到由二值图像定义的形状边界边缘。形状边界由1px宽的白色边缘定义。Matlab - 将点正交传播到形状边界的边缘
我有这些点的坐标存储在一个2行n列矩阵。该形状形成一个凹面边界,其内部没有任何孔,由大约2500点组成。我有大约80到150点,我希望在形状边界上传播。
我想从正交方向上的点集合中的每个点投射射线,并检测它在哪个点与形状边界相交。正交方向已经确定。对于所需目的,使用点1和点1计算点的等高线的法线。
什么是最好的方法来做到这一点? 是否有某种可以使用的光线追踪算法?
非常感谢您的帮助!
编辑:我试图让问题更清晰,并添加了描述问题的图像。在图像中,灰线代表形状轮廓,红点代表我要传播的点,绿线代表假想的正投射线。
alt text http://img504.imageshack.us/img504/3107/orth.png
ANOTHER编辑:为了澄清我已经发布了用于计算每个点的法线的代码。 xt和yt是存储每个点坐标的向量。计算出正常值后,可以使用linspace函数和正交线的请求长度来传播它。
%#derivaties of contour
dx=[xt(2)-xt(1) (xt(3:end)-xt(1:end-2))/2 xt(end)-xt(end-1)];
dy=[yt(2)-yt(1) (yt(3:end)-yt(1:end-2))/2 yt(end)-yt(end-1)];
%#normals of contourpoints
l=sqrt(dx.^2+dy.^2);
nx = -dy./l;
ny = dx./l;
normals = [nx,ny];
什么是绿线正交?通过“正交方向已经确定”,你的意思是我们可以把它看作一个给定的部分数据吗? – AVB 2010-04-20 14:05:27