打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多视角几何1-投影变换及其层次关系[Code]

1、通过简单例子-点进行演示;

clc;clear;%%%1-等距变换示例-3自由度:旋转fai0、平移tx0/ty0% 4个平面上的点的齐次坐标,列向量形式;a=[1 2 2 1 1;   1 1 2 2 1;   1 1 1 1 1];%旋转角度fai;fai0=3.14/4;%平移向量[tx,tx]tx0=0;ty0=0;%m表示方向,m=1:保留方向并且是欧式变换,m=-1:方向m=1;Trans_Euc=[m*cos(fai0) -sin(fai0)   tx0;           m*sin(fai0) cos(fai0)    ty0;           0          0             1];%等距变换,变换后点集,a_trans_euca_trans_euc=Trans_Euc*a;%作图plot(a(1,:),a(2,:))xlim([-6 6.00]);ylim([-6 6.0]);hold on;plot(a_trans_euc(1,:),a_trans_euc(2,:));legend('Original','Eucli');

%%%2-相似变换示例-四自由度:缩放系数s、旋转fai、平移tx/ty% 4个平面上的点的齐次坐标,列向量形式;%旋转角度fai;fai=3.14/4;%平移向量[tx,tx]tx=0;ty=0;%各向均匀缩放系数s=1;Trans_sim=[s*cos(fai) -1*s*sin(fai) tx;           s*sin(fai) s*cos(fai)    ty;           0          0             1];      %相似变换,变换后点集,a_trans_sima_trans_sim=Trans_sim*a;%作图hold on;plot(a_trans_sim(1,:),a_trans_sim(2,:));legend('Original','Eucli','Similar');

%%%3-仿射变换示例-六自由度:各向异性缩放系数lamda1和lamda2、旋转fai1和theta1、平移tx/tyfai1   =  3.14/3;theta1 =  3.14/6;lamda1 =  3;lamda2 =  3;tx1    =  0;ty1    =  0;nul=[0,0];% 3x3平面仿射变换矩阵=[A  t;%                     0' 1 ];% A是2x2矩阵,t是2x1列向量,0'是1x2零向量(nul);% A=R(theta1)R(-fai1)DR(fai1);表示先旋转fai1角度、然后缩放lamda1和lamda2、然后往回旋转fai1角度、最后旋转theta1% D是以lamda1和lamda2为对角元素的矩阵;R_theta1 =  [ cos(theta1) sin(theta1);             sin(theta1) cos(theta1)];R_fai1   =  [ cos(fai1) sin(fai1);             sin(fai1) cos(fai1)];R__fai1  =  [ cos(-1*fai1) sin(-1*fai1);             sin(-1*fai1) cos(-1*fai1)];D        =  [ lamda1    0;             0   lamda2];A        =  R_theta1*R__fai1*D*R_fai1;t=[tx1;ty1];Trans_Aff=  [ A   t;              nul 1];         %仿射变换,变换后点集,a_trans_affa_trans_aff=Trans_Aff*a;%作图hold onplot(a_trans_aff(1,:),a_trans_aff(2,:));legend('Original','Eucli','Similar','Affine');

%%%4-投影变换示例-8自由度:% 3x3平面仿射变换矩阵=[A  t;%                     v' v ];% A是2x2矩阵,t是2x1列向量,v'是1x2向量(vv);A=[2 3;   1 3]/3;t=[0;0];vv=[1 0];v=3;Trans_Pro=[A  t;           vv v];      %投影变换,变换后点集,a_trans_proa_trans_pro=Trans_Pro*a;%作图hold onplot(a_trans_pro(1,:),a_trans_pro(2,:));legend('Original','Eucli','Similar','Affine','Projection');

2、通过复杂例子-图片进行演示;

clc;clear;%%%1-等距变换示例-3自由度:旋转fai0、平移tx0/ty0% 图像路径:pathpath='D:\Program Files\Polyspace\R2019b\bin\ab.jpg';img=imread(path);   %读取图像imshow(img)         %显示图像

%旋转角度fai;fai0=3.14/4;%平移向量[tx,tx]tx0=0;ty0=0;%m表示方向,m=1:保留方向并且是欧式变换,m=-1:方向m=1;Trans_Euc=[m*cos(fai0) -sin(fai0)   tx0;           m*sin(fai0) cos(fai0)    ty0;           0          0             1];%等距变换tform=projective2d(Trans_Euc);  %生成投影变换矩阵out=imwarp(img(:,:,2),tform);   %投影变换矩阵作用于图像imshow(out)                     %显示变换后图像

%%%2-相似变换示例-四自由度:缩放系数s、旋转fai、平移tx/ty% 4个平面上的点的齐次坐标,列向量形式;%旋转角度fai;fai=3.14/4;%平移向量[tx,tx]tx=0;ty=0;%各向均匀缩放系数s=2;Trans_sim=[s*cos(fai) -1*s*sin(fai) tx;           s*sin(fai) s*cos(fai)    ty;           0          0             1];       %相似变换tform=projective2d(Trans_sim);out=imwarp(img(:,:,2),tform);imshow(out)

%%%3-仿射变换示例-六自由度:各向异性缩放系数lamda1和lamda2、旋转fai1和theta1、平移tx/tyfai1   =  3.14/3;theta1 =  3.14/6;lamda1 =  3;lamda2 =  3;tx1    =  0;ty1    =  0;nul=[0,0];% 3x3平面仿射变换矩阵=[A  t;%                     0' 1 ];% A是2x2矩阵,t是2x1列向量,0'是1x2零向量(nul);% A=R(theta1)R(-fai1)DR(fai1);表示先旋转fai1角度、然后缩放lamda1和lamda2、然后往回旋转fai1角度、最后旋转theta1% D是以lamda1和lamda2为对角元素的矩阵;R_theta1 =  [ cos(theta1) sin(theta1);              sin(theta1) cos(theta1)];R_fai1   =  [ cos(fai1) sin(fai1);              sin(fai1) cos(fai1)];R__fai1  =  [ cos(-1*fai1) sin(-1*fai1);              sin(-1*fai1) cos(-1*fai1)];D        =  [ lamda1    0;             0   lamda2];A        =  R_theta1*R__fai1*D*R_fai1;t=[tx1;ty1];Trans_Aff=  [ A   t;              nul 1];          %仿射变换tform=projective2d(Trans_Aff);out=imwarp(img(:,:,2),tform);imshow(out)

%%%4-投影变换示例-8自由度:% 3x3平面仿射变换矩阵=[A  t;%                     v' v ];% A是2x2矩阵,t是2x1列向量,v'是1x2向量(vv);A=[2 3;   1 3]/3;t=[0;0];vv=[1 0];v=3;Trans_Pro=[A  t;           vv v];       %投影变换tform=projective2d(Trans_Pro);out=imwarp(img(:,:,2),tform);imshow(out)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Matlab图形绘制经典案例
[转]关于向量或节点绕三维向量旋转的计算讨论
matlab实用函数及技巧整理
Matlab中plot函数的使用
Matlab绘图-很详细,很全面
图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服