2012-03-21 12 views
0

私は、Rakeと呼ばれる方法を使用してLabViewで分析するために使用した画像を持っています。基本的には、その方法は画像上の平行な線に沿ってすべての有意な辺を見つけることです。 http://zone.ni.com/reference/en-XX/help/370281P-01/imaqvision/imaq_rake_3/(リンクの最後の最後の画像に表示されています)。 この機能は、あるエッジ強度より大きいすべてのエッジポイントを与え、各エッジが1つのエッジポイント(エッジラインの太さは1ピクセルです)を生成するという点で優れています。OpenCVは、線に沿ってすべての有意なエッジを見つける

OpenCVを使って同様のことをする。私がこれを行うことで想像できるのは、 です。選択したフィルタでCanny演算子を分解します。 - 2つのしきい値でエッジ値をヒステリシスにします。 - 非線形抑制に続きます。 - 私のしきい値よりも大きいピクセル

問題は、cannyがバンドルとして来て、私自身が非最大抑制関数を見つけることができないということです。 誰かが私が記述した操作に似た何かをする方法を知っていますか?

おかげ

答えて

0

ない私は完全にこの質問を理解してください、しかし、アンバンドル非最大抑制の一部について:2D非最大抑制のための

一つの簡単な方法はこれです: イメージを拡張。 OpenCVのDilationは、各ピクセルの値をローカル近傍のmax()に設定します。数回繰り返したり、より大きなカーネルを使用して希望の半径を取得します。

次に、拡大した画像と元の画像を比較して、異なる値を持つすべてのピクセルをゼロに設定します。

残りのピクセルは極大値です。

# some code I once used in OpenCV/Python 
# given an image, sets all pixels to zero, unless they are local maxima 
def supressNonMaxima(img): 
    localMax = cvCreateImage (cvGetSize(img), IPL_DEPTH_16U, 1) 
    cvDilate(img, localMax, null, 3) # max() with radius of 3 

    mask = cvCreateImage(cvGetSize(img), 8, 1) 
    cvCmp(img, localMax, mask, CV_CMP_LT) 

    cvSet(img,0,mask) 
関連する問題