Перейти к содержимому
Compvision.ru
magrif

Поле направлений отпечатка пальца

Recommended Posts

Пытаюсь рассчитать поле направлений отпечатка пальца по этой статье, часть 2.2. Делаю для блока W=1x1, т.е. для каждого пикселя. По идее должно получиться что-то похожее на то, что изображено слева. Справа то, что выходит у меня. Где я что не учёл? Спасибо.

void pix_orient(Mat &image)
{
    int width = image.cols;
    int height = image.rows;
    float Gsy = 0.0, Gsx = 0.0;
 
    Mat grad_x, grad_y;
    Sobel(image, grad_x, CV_32F, 1, , 3, 1, , BORDER_DEFAULT);
    Sobel(image, grad_y, CV_32F, , 1, 3, 1, , BORDER_DEFAULT);
 
    for(int i = ; i < height; i++)
    {
        for(int j =  ; j < width; j++)
        {
            Gsx = (grad_x.at<float>(i,j)*grad_x.at<float>(i,j)) - (grad_y.at<float>(i,j)*grad_y.at<float>(i,j));
            Gsy = 2*grad_x.at<float>(i,j) * grad_y.at<float>(i,j);
 
            float fi = 0.0;               
            fi = 0.5 * fastAtan2(Gsy, Gsx)*CV_PI/180;  //[0;pi]
              
            //[-0.5*pi ; 0.5*pi]
            if(fi<=0)
                fi = fi + CV_PI/2;
            else
                fi = fi - CV_PI/2;
 
            image.at<float>(i,j) = fi;
        }
    }//for
}
 

 

Безымянный.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

    Оставил просто 

fi =  0.5 * fastAtan2(Gsy, Gsx)*CV_PI/180;

затем всё полученное поле ориентации нормировал, разделив на CV_PI, чтобы значения получились в диапазоне [0; 1], ибо иначе при меньших значениях нуля будет чёрный, при больших значениях единицы соответственно белый. В приложении то, что получилось. Всё равно не то, что на рисунке слева.
    Ещё вопрос возник: при обработке изображений получается, что многие значения выходят за диапазон [0;1] и поэтому некорректно отображаются. Например, при применении оператора Собеля к нормированному полю направлений (тому, что в приложении) на выходе получились значения в диапазоне [-3.93 ; 3.94]. Как в таких случаях поступать?

 

 

ormap_screenshot_19.04.2016.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×