【图像处理】图像的极坐标变换

来源:互联网 发布:北京seo推广推荐 编辑:程序博客网 时间:2024/05/19 02:01

之前碰到了一个问题,是如何将图像变换到极坐标下。查了一些资料,这里作一总结。

首先,正常的图像都是在直角坐标系下的,可以看做一个二维平面。我们要对图像进行坐标变换,首先要把位置转换到新的坐标系,然后将值赋过去。下面是百度到的一个MATLAB代码,实现了这个转换。


close all; clear all;A=imread('1.jpg');   %读取图像(已经存到当前文件夹) A1=double(A(:,:,1));A2=double(A(:,:,2));A3=double(A(:,:,3));  %rgb3通道转为double类型[m n]=size(A1);[t r]=meshgrid(linspace(-pi,pi,n),1:m); %原图坐标 M=2*m;N=2*n;[NN MM]=meshgrid((1:N)-n-0.5,(1:M)-m-0.5);T=atan2(NN,MM);R=sqrt(MM.^2+NN.^2);                  %变换图坐标 B1=interp2(t,r,A1,T,R,'linear',0);B2=interp2(t,r,A2,T,R,'linear',0);B3=interp2(t,r,A3,T,R,'linear',0); %rgb3通道插值B=uint8(cat(3,B1,B2,B3));        %合拼转换回uint8类型 subplot(121),imshow(A);  %画原图subplot(122),imshow(B);  %画变换图


可以看到其思路是先构建极坐标系,然后将直角坐标通过公式转换到极坐标下,再利用interp2函数插值,将像素值赋值过去。重点在于坐标的对应。

但是我在尝试将极坐标的图像转换到直角坐标的时候,位置变换总是不对,不知道问题出在哪,等以后解决了再更新这部分。

另外,在PS中极坐标用来生成具有艺术风格的图。可以看一个例子:PS极坐标滤镜将楼宇照片变为超现实地心世界

借用两张图



                                                

                                                                       

0 0
原创粉丝点击