OpenCV中对于对数极坐标转换的函数为cvLogPolar( ),由笛卡尔坐标系x-y转换到极坐标系ρ-θ坐标系下。
前向变换:Forward: dst(ρ,θ)=src(x,y); 反向变换:Inverse: dst(x,y)=src(ρ,θ)。其中ρ=M*,θ=arctan(y/x)。M是缩放比例。
以下图为例,先进行前向变换,从笛卡尔坐标系转换到极坐标系,然后再从极坐标系转换到笛卡尔坐标系。
#include"cv.h"#include"highgui.h"using%20namespace%20cv;void%20main(){ iplImage*%20srcImg=cvLoadImage("img.jpg", 1); IplImage* dstImg=cvCreateImage(cvGetSize(srcImg), 8, 3); IplImage* srcImg2=cvCreateImage(cvGetSize(srcImg), 8, 3); double m=80; cvLogPolar(srcImg, dstImg, cvPoint2D32f(srcImg->width/8, srcImg->height/2), m, CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS ); cvLogPolar(dstImg, srcImg2, cvPoint2D32f(srcImg->width/8, srcImg->height/2), m, CV_INTER_LINEAR | CV_WARP_INVERSE_MAP); cvNamedWindow("log-polar", 1); cvShowImage("log-polar", dstImg); cvNamedWindow("inverse log-polar", 1); cvShowImage("inverse log-polar", srcImg2); cvWaitKey(-1); cvReleaseImage(&srcImg); cvReleaseImage(&srcImg2); cvReleaseImage(&dstImg); cvDestroyAllWindows();}![]()
![]()
新闻热点
疑难解答