OpenCV中的极坐标变换

分类: OpenCV笔记 |
今天去面试,面试官问到一个极坐标变换的问题,我跟他讲opencv中集成这个函数,但我只是在看文档的时候偶然翻了翻,也没有具体的去看,回来就具体的看了下。发现opencv中确实已经集成了这个函数,那就是cvLinearPolar。(在网上看到的大部分blog中写的都是cvLogPolar这个函数,其实cvLogPolar这个函数是对数极坐标变换,在计算过程中对半径做了log变换,来模拟人眼看到中间分辨率高,边缘分辨率低的效果,而在机器视觉应用中,线性极坐标变换更为常用。我所使用的opencv2.4.8版本已经提供了cvLinearPolar这一函数,但在pdf的离线文档中确没有找个这个函数的说明,后在网上2.4.12的online说明文档中找到了这个函数的说明,只能说opencv的文档同步实在是有些不给力啊。)
函数原型如下(C接口,opencv没有对这个函数提供C++的接口):
void cvLinearPolar( const CvArr* srcarr, CvArr*
dstarr, CvPoint2D32f
center, double maxRadius, int flags )
srcarr:原图像
dstarr:目标图像
center:图像在直角坐标系中的圆心坐标
maxRadius:逆向变换中的最大变径
flags:一些标志,具体参考cvLinearPolar 2.4.12说明文档
测试效果图像如下,可以看出,变径对应极坐标图像宽,周长对应极坐标图像的高,圆心自图像的左侧。
后一篇:尝鲜Emgu