码迷,mamicode.com
首页 > 其他好文 > 详细

笛卡尔(x,y)空间和数极坐标(log r,角度phi)的互相转换

时间:2014-08-14 17:05:09      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:opencv 笛卡尔 坐标转换

原理:

数极坐标是对物体视场的一种不变表示,比如所有的正方形都是一样的,产生了一类二维旋转和尺度的不变性

rho=M*log(sqrt(x2+y2))

phi=atan(y/x)

核心函数:

cvLogPolar

效果:

bubuko.com,布布扣

bubuko.com,布布扣

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int LogPolar(int argc,char** argv)  //polar:两级的,极地的
{
IplImage* src=cvLoadImage("e:\\picture\\zenfanxin.JPG");
IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
IplImage* src2=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
double M=80;  //貌似在一定范围M越大复原后的图像越清晰
cvLogPolar(src,dst,cvPoint2D32f(src->width/2,src->height/4),M,CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS); //CV_INTER_LINEAR:双线性插值,默认使用  OUTLIERS:局外,笛卡尔坐标转换为数极坐标
cvLogPolar(dst,src2,cvPoint2D32f(src->width/2,src->height/4),M,CV_INTER_LINEAR | CV_WARP_INVERSE_MAP);  //数极坐标转换为笛卡尔坐标
cvNamedWindow("src");
cvNamedWindow("dst");
cvNamedWindow("src2");
cvShowImage("src",src);
cvShowImage("dst",dst);
cvShowImage("src2",src2);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("dst");
cvDestroyWindow("src2");
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvReleaseImage(&src2);
return 0;
}


本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1539816

笛卡尔(x,y)空间和数极坐标(log r,角度phi)的互相转换,布布扣,bubuko.com

笛卡尔(x,y)空间和数极坐标(log r,角度phi)的互相转换

标签:opencv 笛卡尔 坐标转换

原文地址:http://flyclc.blog.51cto.com/1385758/1539816

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!