0

既に前処理された画像にライン検出用のハフ変換を実装しようとしています。したがって、私の入力画像は白黒のエッジ画像で、背景は 0、前景は 255 です。OpenCV で組み込みの HoughLines ライブラリを使用したくありません。私は実際にアキュムレータを作成し、その値を適切に増やすことに固執しています。どこが間違っていたのかわからないので、ここに私のコードブロックがあります:

int diagonal = sqrt(height * height + width * width);

IplImage *acc = cvCreateImage (cvSize(180, 2 * diagonal),IPL_DEPTH_8U, 1);
unsigned char* accData = (unsigned char *)acc->imageData;

for (int i=0; i<height; i++)
{
    for (int j=0; j<step; j++)
    {
        if (data[i*step + j] > 200)
        {
            for (int theta=0; theta<180; theta++)
            {
                int p = j * cos(theta) + i * sin(theta);
                if (p > 0)
                    accData[theta*180 + p] += 1;
            }
        }
    }
}

acc で取得した出力画像は、本来あるべき姿ではありません。正弦波は得られません。代わりに、あちこちに白いパッチしかありません。どこが間違っていたのか、誰でもフィードバックを提供できますか?

4

1 に答える 1

1

私が見ているのは、ラジアン値で sinus を使用しないことですが、次のように値を変更できるということです。

int p = j * cos((double)theta*PI/180) + i * sin((double)theta*PI/180);
于 2013-04-25T08:55:23.970 に答える