Сравните два изображения на основе их моментов Ху - PullRequest
0 голосов
/ 20 декабря 2018

Я написал функцию, которая вычисляет моменты Ху изображения на основе детектора краев Канни:

void HuMoments(Mat gray_image, QString j)
{
    //image en gris et détecteur de Canny et contours et moments de Hu (forme)qui sont en pratique utilisés

    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;



    Mat detected_edges;


    int lowThreshold=80;
    //int const max_lowThreshold = 100;
    int ratio = 3;
    int kernel_size = 3;
    RNG rng(12345);

    blur( gray_image, detected_edges, Size(3,3) );

    // Canny detector
    Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
    findContours( detected_edges, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );

      /// Draw contours
//    Mat drawing = Mat::zeros( detected_edges.size(), CV_8UC3 );
//    for( int i = 0; i< contours.size(); i++ )
//     {
//       Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
//       drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );
//     }

    vector<Moments> mu(contours.size());
        for (int i = 0; i < contours.size(); i++)
        {
            mu[i] = moments(contours[i], false);
        }
    double hu[contours.size()][7];
    for (int i = 0; i < contours.size(); i++)
        {
            // cout << "Contour: " << i << " Area: " << contourArea(contours[i]) << " Length: " << arcLength(contours[i], true) << "\n";
            HuMoments(mu[i], hu[i]);

//            for (int j = 0; j < 7; j++)
//            {

//                cout << "Contour: " << i << " Hu: " << j << " Result: " << hu[i][j] << "\n";
//            }
//            cout << "\n";
        }

}

Я хочу выполнить поиск в базе данных изображений на основе этих моментов Ху.Однако я не знаю, как сравнить моменты Ху, поскольку они имеют размер contours.size() * 7, и я думаю, contours.size() может варьироваться от одного изображения к другому, не так ли?

Так что я быХотелось бы узнать, как я могу сравнивать "довольно" Ху Моменты изображений, которые потенциально совершенно разные ...

Заранее спасибо

...