Полярная выборка изображения сетчатки с использованием opencv

Для части моего проекта мне нужно применить логарифмическое преобразование к изображению. Я узнал, что в OpenCV есть класс, который называется:

cv::LogPolar_Interp и cv::LogPolar_Adjacent() для этой цели.

Проблема в том, что я не знаю, как их использовать для создания преобразованного изображения, такого как этот

Я играл с его параметрами, но не смог добиться желаемого результата.

это моя попытка:

    cv::LogPolar_Interp *LogPolar=new cv::LogPolar_Interp(inputFrame.cols,inputFrame.rows,cv::Point2i(inputFrame.cols/2,inputFrame.rows/2),120,20,CV_INTER_LINEAR, 1,117,1);

    logPolar_out=LogPolar->to_cartesian(inputFrame);

Кто-нибудь знает, как я могу получить это. Спасибо


person batista cori    schedule 09.03.2013    source источник


Ответы (1)


Сначала вы должны сопоставить входное изображение с кортикальными координатами, а затем переназначить его на декартово. Вам также необходимо преобразовать изображение в оттенки серого, если вы хотите воспользоваться преимуществами смежного сопоставления.

Изменив свой код на следующий, вы можете получить то, что ищете.

    cv::cvtColor(inputFrame,inputFrame,CV_BGR2GRAY);

    cv::LogPolar_Adjacent *logP=new cv::LogPolar_Adjacent(inputFrame.cols,inputFrame.rows,cv::Point2i(inputFrame.cols/2,inputFrame.rows/2));

    logPolar_out=logP->to_cortical(inputFrame);
    logPolar_out=logP->to_cartesian(logPolar_out);
    cv::imshow("Log Polar output",logPolar_out);
    cv::imshow("Log Polar input",inputFrame);
person Hamid Bazargani    schedule 09.03.2013