Как сделать так, чтобы LSD: линейный детектор не использовал гаусс (а не образец изображения)? - PullRequest
2 голосов
/ 02 февраля 2011

Я хочу искать строки на действительно маленьких (10х10 или меньше) изображениях. Я хочу использовать детектор линии LSD , потому что он очень быстрый. Я скачал там код C и получил образец того, как его использовать. Но я не понимаю, как заставить его не выполнять Гаусс и тому подобное, чтобы снизить качество данных.

Кстати, я использую функцию suc для выполнения LSD на открытом CV-изображении:

#include <iostream>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include "LSD.h"

using namespace std;
int linesFoundOnPicture;
    void ProcessLSD(IplImage* source)
    {
        int w = source->width;
        int h = source->height;
        image_double lsdImage;
        ntuple_list lsdOut;
        unsigned int x,y,i,j;
        lsdImage = new_image_double(w,h);


        for(x=0;x<w;x++){
            for(y=0;y<h;y++){
                double RealColor = cvGetReal2D(source, y, x);
                lsdImage->data[ x + y * lsdImage->xsize ] = RealColor;/* image(x,y) */
            cout << RealColor << " ";
            }
            cout << endl;
        }cout << endl;

        lsdOut = lsd(lsdImage);

    if (lsdOut->size == 0)
    {
        cout << "0 0 0 0";

    }
    else
    {
        cout << lsdOut->values[ 0 * lsdOut->dim + 0 ] << " " <<  lsdOut->values[ 0 * lsdOut->dim + 1] << " ";
        cout << lsdOut->values[ 0 * lsdOut->dim + 2 ] << " " << lsdOut->values[ 0 * lsdOut->dim + 3 ] << " ";
        linesFoundOnPicture = linesFoundOnPicture +1;
    }
    cout << endl;
    cout << endl;
    //  cvReleaseImage(&source);
        free_image_double(lsdImage);
        free_ntuple_list(lsdOut);
    }

Так может ли кто-нибудь помочь мне освоить ЛСД?)

Похоже, есть что-то вроде трех функций, которые предоставляют списки со строками в LSD.h ...

ntuple_list LineSegmentDetection( image_double image, double scale,
    double sigma_scale, double quant,
    double ang_th, double eps, double density_th,
    int n_bins, double max_grad,
    image_int * region );

ntuple_list lsd_scale(image_double image, double scale);

ntuple_list lsd(image_double image);

Похоже, лучший вариант для понимания параметров LSD - это этот флэш-порт lsd, где вы можете играть со значениями (мне кажется, первой из этих 3 функций lsd)

...