FC2カウンター FPGAの部屋 Vivado HLS を使用した車の白線検出4(ヒストグラム均一化)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS を使用した車の白線検出4(ヒストグラム均一化)

Vivado HLS を使用した車の白線検出3(暗い画像での白線検出)”の続き。

前回は、cannyフィルタでエッジ検出した後でHough 変換を行って、直線検出したが、最後の暗い画像では、道路の白線を検出することはできなかった。今回は、canny フィルタの前に equalizeHist() を行うことで、ヒストグラムの均一化を図ってみよう。

Line Detection by Hough Line Transform”のC ソースコードを多少修正した。貼っておく。

// Line Detection by Hough Line TransformのC++コードを使用させて頂いて、変更を加えています
// http://opencvexamples.blogspot.com/2013/10/line-detection-by-hough-line-transform.html

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>

#define HIST

using namespace cv;
using namespace std;

int main()
{
    Mat src = imread("test_1080p_rb3.bmp"0);

    Mat dst, cdst;
#ifdef HIST
    Mat eqst;
    equalizeHist(src, eqst); // ヒストグラム平均化
    imshow("equalizeHist", eqst);
    Canny(eqst, dst, 1502503); // for equalizeHist
#else
    Canny(src, dst, 502003); // Normal
#endif
    imshow("Canny", dst);

    cvtColor(dst, cdst, CV_GRAY2BGR);

    vector<Vec2f> lines;
    // detect lines
    HoughLines(dst, lines, 1, CV_PI/18015000);

    // draw lines
    for( size_t i = 0; i < lines.size(); i++ )
    {
        float rho = lines[i][0], theta = lines[i][1];
        Point pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a*rho, y0 = b*rho;
        pt1.x = cvRound(x0 + 1000*(-b));
        pt1.y = cvRound(y0 + 1000*(a));
        pt2.x = cvRound(x0 - 1000*(-b));
        pt2.y = cvRound(y0 - 1000*(a));
        line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
    }

    imshow("source", src);
    imshow("detected lines", cdst);

    waitKey();
    return 0;
}


equalizeHist() を行うとエッジが鮮明になるので、canny フィルタのパラメータを多少修正した。

最初に”test_1080p.bmp”の結果を示す。
Lane-Detecting_22_160516.jpg

次に、GIMP で明るさを -74 に設定した”test_1080p_rb1.bmp” の結果を示す。
Lane-Detecting_23_160516.jpg

GIMP で明るさを -127 に設定した”test_1080p_rb2.bmp” の結果を示す。
Lane-Detecting_24_160516.jpg

GIMP で明るさを -127に設定した画像を更に -100 に設定した”test_1080p_rb3 .bmp” の結果を示す。
Lane-Detecting_25_160516.jpg

すべての画像で白線検出ができているようだ。
  1. 2016年05月16日 04:37 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3469-87a6c9eb
この記事にトラックバックする(FC2ブログユーザー)