坐标变换

首先,正常的图像都是在直角坐标系下的,可以看做一个二维平面。我们要对图像进行坐标变换,首先要把位置转换到新的坐标系,然后将值赋过去。下面是百度到的一个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函数插值,将像素值赋值过去。重点在于坐标的对应。

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

 

 

 

版权声明:本文为CSDN博主「dzkd1768」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dzkd1768/article/details/64122635

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值