3

私は円形のオブジェクトを見つけたいです(目の虹彩、私はヴィオラジョーンズアルゴリズムでHaar Cascaseを使用しました)。そのため、ハフサークルが正しい方法であることがわかりました。JavaでHough circleを実装する方法、またはJavaで虹彩を見つけるためのその他の簡単な実装を誰かに説明してもらえますか。

ありがとう、

4

3 に答える 3

5

Duda and Hart(1971)には、ハフ変換のかなり明確な説明と実際の例があります。その論文から直接実装を作成することは難しくないので、始めるのに適した場所です。

于 2012-01-29T18:16:07.880 に答える
2

ImageJ は、ハフ サークル プラグインを提供します。過去に何度か遊んでいました。ソースコードを変更したい場合、または変更する必要がある場合は、ソースコードを確認できます。

于 2012-10-17T18:52:49.110 に答える
1

虹彩を見つけたい場合は、これについて簡単にする必要があります。あなたが求めている虹彩の部分は、実際には輪部と呼ばれています。また、輪部のコントラストは瞳孔のコントラストよりもはるかに低いため、画像の解像度が許せば瞳孔がより良いターゲットになることに注意してください。Java は、ここではプログラミング言語として適切なオプションではありません。1. 処理が集中している間は低速です。2. 古典的なハフ サークルには 3D アキュムレータが必要であり、Java はおそらく携帯電話を使用することを意味するため、メモリ要件は厳しくなります。

あなたができることは、おそらく画像に 1 つ (または数個) の角膜輪部があるという事実を利用することです。最初に行うことは、方向付けられたエッジを使用して問題の次元を 3 から 2 に減らすことです。エッジの方向を表す水平方向と垂直方向のエッジを抽出します (エッジ ベクトルの水平方向と垂直方向のコンポーネントと見なすことができます)。簡単な考え方は、エッジ ベクトルの主要な交点が縁の中心であるということです。交点を見つけるには、円を定義する 3 つのポイントではなく、2 つの方向付けられたエッジのみが必要です。したがって、次元数が 3 から 2 に削減されます。

また、この交点を見つけるために、巨大なアキュムレータと多数の計算を伴う古典的なハフ円変換を使用する必要もありません。ランダム化されたハフははるかに高速になります。これがどのように機能するかです(〜RANSACへ):最小数の方向付けられたエッジをランダムに選択し(この場合は2)、交差点を見つけてから、ほぼ同じ場所で交差するすべてのエッジを見つけます。これらはインライアです。2 つのエッジの別のランダム サンプルを選択して 10 ~ 30 回反復し、最大数のインライアを持つセットに落ち着きます。願わくば、これらのインライアが輪部にあることを願っています。インライア光線の交点の中央値は円の中心を示し、中心からインライアまでの距離の中央値は半径です。

下の図では、明るい色がインライアに対応し、向きが小さな線分で示されています。元のエッジのセットが中央に表示されます (水平のみ)。元のエッジは楕円に沿っていますが、ハフ エッジはアフィン変換によって縁に属するエッジが円上にあるように変換されています。また、エッジの向きはかなりノイズが多いことに注意してください。

ここに画像の説明を入力

于 2015-02-21T00:24:49.210 に答える