在OpenCV里实现极坐标变换4
2019-09-02 08:35
4738 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caimouse/article/details/100191034
前面使用自己定义插值算法来实现极坐标变换,现在来使用OpenCV里面函数来实现极坐标变换,主要有两个函数:线性极坐标函数linearPolar和对数极坐标函数logPolar。这两个函数分别定义如下:
dst = cv.linearPolar(src, center, maxRadius, flags[, dst])
其中参数src表示输入图像数组;
参数center表示极坐标的变换中心;
参数maxRadius表示中心到边界最大的半径;
参数flags表示插值算法的标志。
dst=cv.logPolar(src, center, M, flags[, dst])
其参数src表示输入图像数组;
参数center表示极坐标的变换中心;
参数M是尺度缩放系数,M决定输出图像x轴(\rho)的尺度;
参数flags表示不同的变换。
对数极坐标(logpolar)是仿真生物视网膜中央凹陷的特性,具有数据压缩的能力,可用于目标跟踪中快速尺度和旋转变换不变的模板匹配。对数极坐标其实就是将图像像素坐标转换成极坐标,然后对r求取对数,获得的坐标。它的变换公式如下:
这两个公式的差别,就是这两个函数的差别。logPolar函数变换也实现了聚焦效果,或者中心点采样高,边界采样低,实现一种圆形滤波的效果。下面这个例子演示了线性极坐标变换、对数极坐标变换,以及对数极坐标反变换:
[code]#python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import cv2 import numpy as np #图片的路径 imgname = "img3.jpg" #读取图片 image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE) #图片的高度和宽度 h,w = image.shape[:2] print(w,h) #极坐标变换的中心 cx,cy = w/2.0,h/2.0 print(cx,cy) #在中心点画一个圆 cv2.circle(image,(int(cx),int(cy)),10,(255.0,0,0),3) #线性极坐标变换 out = cv2.linearPolar(image,(cx,cy),cy,cv2.INTER_LINEAR) print(out.shape) #对数极坐标变换 outlog = cv2.logPolar(image, (cx,cy), 50, cv2.WARP_FILL_OUTLIERS) #对数极坐标反变换 rlog = cv2.logPolar(outlog, (cx,cy), 50, cv2.WARP_INVERSE_MAP) #显示原图和输出图像 cv2.imshow("Image",image) cv2.imshow("out",out) cv2.imshow("outlog", outlog) cv2.imshow("rlog", rlog) cv2.waitKey(0) cv2.destroyAllWindows()
输出结果如下:
输入图片
线性极坐标变换输出图片
对数极坐标变换输出
对数极坐标反变换输出
从前面的结果来看,经过极坐标变换之后,再转回原图,离圆心越远的像素丢失越大,这样也可以作为图像压缩的一种,也可以作为仿生学的一种方式,还可以从方图转换圆图的一种方式。
相关文章推荐
- 【算法+OpenCV】图像极坐标变换及基于OpenCV的实现
- Python在OpenCV里实现极坐标变换功能
- Python 在OpenCV里实现仿射变换―坐标变换效果
- 【算法+OpenCV】图像极坐标变换及基于OpenCV的实现
- opencv实现对数log灰度变换
- opencv 仿射变换 根据眼睛坐标进行人脸对齐 计算变换后对应坐标
- OpenCV——PS 滤镜算法之平面坐标到极坐标的变换
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- 安卓转屏实现4个方向+变换坐标原点位置
- 霍夫变换直线检测houghlines及opencv的实现分析
- opencv 仿射变换 根据眼睛坐标进行人脸对齐 计算变换后对应坐标
- OpenCV——PS 滤镜算法之极坐标变换到平面坐标
- 【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换
- OpenCV实现Hough变换检测圆形
- 用OpenCV实现图像的水平镜像(翻转)变换和竖直镜像(翻转)变换(垂直镜像变换)的源码
- OpenCV2马拉松第22圈——Hough变换直线检测原理与实现
- OpenCV实现仿射变换--通过三个点进行变换
- opencv的灰度变换使用及与自己实现的效果比较
- CUDA和OpenCV实现的图像GAMMA变换
- python-opencv实现切变换,不裁减图片