我正在做一些与眼睛图像有关的工作。 我做了边缘检测。边缘就像一条曲线而不是连续的。我必须假设它是连续的并找到该曲线的法线。如何使用MATLAB找到它的法线?
你可以看到下面的图片。
我想找到上曲线的法线。 我希望我足够清楚。
答案 0 :(得分:2)
即使看起来不直观,每个像素的边缘方向也是对法线的非常好的估计。这将是最简单的解决方案,因为它不涉及任何曲线拟合。
在MATLAB中,您可以使用Sobel滤波器找到逐像素的边缘方向:
[BW,thresh,gv,gh] = edge(I,'sobel');
edgeDir = atan2(gv, gh);
这为您提供了以弧度为单位的边缘方向。
答案 1 :(得分:1)
您可能需要考虑对数据进行曲线拟合(基于MSE或其他一些标准)。我相信第二个订单对上面的曲线有好处,一旦你有一个模型,你就可以计算每个点的正切和法线。
答案 2 :(得分:0)
正如Zaphod所建议的那样,法线垂直于边缘。您不需要进行曲线拟合,可以使用反投影来识别曲线的焦点。
从沿曲线的每个边缘点开始,并沿法线方向从曲线绘制一条直线。通过递增线穿过的每个像素的值来绘制线条。对所有边缘执行此操作后,您希望找到两个像素值高于其余值的像素,其中一个像素用于每条曲线。然后你应该知道哪个位置是每条曲线的焦点。