Matlab实验齐次坐标与二维几何变换

二维变换

在Matlab中,构造一简单二维图形(房屋、飞机、家具等)的顶点表齐次矩阵,使用齐次矩阵变换方法对分别该图形做以下二维变换:

  1. 宽度缩小为1/2,高度放大为2倍,设为T1
  2. 顺时针旋转30度,设为T2
  3. 沿x轴做错切,错切系数d为1/2,设为T3

结果用一个图窗显示,分成四个子窗,分别显示变换前和各种变换效果图。
设T为原图,三种图形变换为:
在这里插入图片描述
OK,挑了张一笔画的鸟,开工。
在这里插入图片描述
I=imread(‘bird.jpg’);
imshow(I);
I=flipud(I);
figure(1);imshow(I);
%输入50个点
[x,y] = ginput(50);
figure(2);plot(x,y,‘linewidth’,3);
在这里插入图片描述
%建立50行3列的全1矩阵
T=ones(50,3)
%把x、y赋值给T的第1、2列
T(:,1)=x;T(:,2)=y;

%调整下图片位置
T(:,1)=T(:,1)-100;
T(:,2)=T(:,2)-100;

%三种图形变换
T1=T*[0.5 0 0;0 2 0;0 0 1];
%cos()默认是弧度制,角度用cosd()
T2=T*[cosd(30) -sind(30) 0;sind(30) cosd(30) 0;0 0 1];
T3=T*[1 0 0;0.5 1 0;0 0 1];
%保存临时文件
save birdTest x y T T1 T2 T3;

%绘制2*2的图窗显示
figure(3);
%画子窗第一个,T(:,1)表示T的第1列
subplot(2,2,1);plot(T(:,1),T(:,2),‘linewidth’,2);
%axis()设置显示范围,再加上网格。
axis([0 750 -150 1000]);grid on;
%图片标题和轴标签
title(‘原图’);xlabel(‘x’);ylabel(‘y’);

subplot(2,2,2);plot(T1(:,1),T1(:,2),‘linewidth’,2);
axis([0 750 -150 1000]);grid on;
title(‘T1’);xlabel(‘x’);ylabel(‘y’);

subplot(2,2,3);plot(T2(:,1),T2(:,2),‘linewidth’,2);
axis([0 750 -150 1000]);grid on;
title(‘T2’);xlabel(‘x’);ylabel(‘y’);

subplot(2,2,4);plot(T3(:,1),T3(:,2),‘linewidth’,2);
axis([0 750 -150 1000]);grid on;
title(‘T3’);xlabel(‘x’);ylabel(‘y’);

看下效果,达到要求,完工。

在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值