我有一组点,我想将它们传播到由二进制图像定义的形状边界的边缘。形状边界由 1px 宽的白色边缘定义。
我将这些点的坐标存储在 2 行乘 n 列的矩阵中。该形状形成一个凹形边界,其内部没有孔,由大约 2500 个点组成。我希望在形状边界上传播大约 80 到 150 个点。
我想从一组点中的每个点在正交方向上投射一条射线,并检测它在哪个点与形状边界相交。正交方向已经确定。出于所需的目的,它是使用为点计算的轮廓的法线计算的,使用点-1 和点+1。
最好的方法是什么?是否有某种可以使用的光线追踪算法?
非常感谢您的帮助!
编辑:我试图让问题更清楚,并添加了描述问题的图像。在图像中,灰线代表形状轮廓,红点代表我想要传播的点,绿线代表假想的正交投射光线。
替代文字 http://img504.imageshack.us/img504/3107/orth.png
另一个编辑:为澄清起见,我发布了用于计算每个点的法线的代码。其中 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];