私は目の画像に関連するいくつかの仕事をしています。エッジ検出を行いました。エッジは曲線のようなもので、連続していません。私はそれが連続的であると仮定し、その曲線の法線を見つけなければなりません。MATLAB を使用して法線を見つけるにはどうすればよいですか?
下の画像をご覧ください。
上の曲線の法線を見つけたいです。私が十分に明確だったことを願っています。
私は目の画像に関連するいくつかの仕事をしています。エッジ検出を行いました。エッジは曲線のようなもので、連続していません。私はそれが連続的であると仮定し、その曲線の法線を見つけなければなりません。MATLAB を使用して法線を見つけるにはどうすればよいですか?
下の画像をご覧ください。
上の曲線の法線を見つけたいです。私が十分に明確だったことを願っています。
直感的ではないように見えますが、各ピクセルのエッジ方向は法線のかなり良い推定値です。これは、カーブ フィッティングを含まないため、最も単純なソリューションです。
MATLAB では、ソーベル フィルターを使用してピクセル単位のエッジ方向を見つけることができます。
[BW,thresh,gv,gh] = edge(I,'sobel');
edgeDir = atan2(gv, gh);
これにより、ラジアン単位の角度としてエッジの方向が得られます。
データへのカーブ フィッティング (MSE ベースまたはその他の基準) を検討することをお勧めします。上部の曲線には 2 次が適していると思います。モデルができたら、各ポイントで接線と法線を計算できます。
Zaphod が推奨するように、法線はエッジに対して垂直です。カーブ フィッティングを行う必要はありません。バック プロジェクションを使用して、カーブの焦点を特定できます。
カーブに沿った各エッジ ポイントから開始し、法線の方向にカーブから線を引きます。線が通過する各ピクセルの値を増やして線を描画します。すべてのエッジに対してこれを行うと、カーブごとに 1 つずつ、残りの値よりも高い値を持つ 2 つのピクセルを見つけることができます。次に、各曲線の焦点である場所を知る必要があります。