2

Pour une partie de mon projet, j'ai besoin d'appliquer une transformation log-polaire sur une image. J'ai découvert qu'il existe une classe dans OpenCV appelée:Image retina log échantillonnage polaire en utilisant opencv

cv :: LogPolar_Interp et cv :: LogPolar_Adjacent() à cet effet.

Le problème est que je ne sais pas comment les utiliser pour produire une image transformée comme this one

j'ai joué avec ses paramètres, mais je ne pouvais pas obtenir le résultat désiré.

ce qu'il est de mon essai:

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); 

Est-ce que quelqu'un sait comment puis-je obtenir cela. Merci

Répondre

3

Vous devez d'abord mapper votre image d'entrée aux coordonnées corticales, puis la remapper en cartésien. Vous devez également convertir votre image en niveaux de gris si vous souhaitez profiter de la cartographie adjacente.

En changeant votre code pour le suivant, vous pourriez obtenir ce que vous cherchez.

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); 
Questions connexes