数字图像处理第二次作业——图像仿射变换

题目: 要求根据已给的两幅图像,在各幅图像中随机找出7个点,计算出两幅图像之间的转换矩阵H,并且输出转换之后的图像。

一、原理

​ 通过手动选取两幅图像中若干组相同的点,读取其位置,得到图像变换的仿射矩阵,再通过仿射矩阵将图片转化成相同位置关系。

二、具体实现过程

​ 1.通过MATLAB将Image A 和 Image B 分别读入

​ 2.运用 cpselect() 函数,可实现动态交互式地选取点,并将坐标存入工作区

​ 3.运用cp2tform(movingPoints,fixedPoints,transformtype)fitgeotrans(movingPoints,fixedPoints,transformtype)函数,得到从 Image B 还原的仿射矩阵,因为本题需要,其中前两个参量实际上需要调换位置,transformtype选择affine

​ 4.通过imtransform()imwarp()函数,将Image B转换,并通过 imshow输出即可

三、代码如下
clear;
clc;
ImageA=imread('Image A.jpg');
ImageB=imread('Image B.jpg');
subplot(1,2,1);imshow(ImageA);title('Image A');
subplot(1,2,2);imshow(ImageB);title('Image B');
cpselect(ImageA,ImageB);

T=cp2tform(fixedPoints,movingPoints,'affine');
ImageT=imtransform(ImageB,T);
figure(2);
subplot(1,2,1);imshow(ImageA);title('Image A');
subplot(1,2,2);imshow(ImageT);title('Image T');

(实际运行时,先运行上半部分,选取完点后单独运行下半部分)

四、选取点

​ Image A:
在这里插入图片描述
​ Image B:
在这里插入图片描述

五、结果

​ 仿射矩阵为:
T = [ 0.9641 − 0.2536 0 0.2574 0.9647 0 2.3547 714.4102 1 ] T=\begin{bmatrix} 0.9641 & -0.2536 & 0 \\ 0.2574 & 0.9647 & 0 \\ 2.3547 & 714.4102 & 1 \end{bmatrix} T=0.96410.25742.35470.25360.9647714.4102001

​ 转换后图片为:
在这里插入图片描述
可以看出,通过变换,Image T 与Image A 相同部分大小和位置基本上一样。



数字图像处理作业链接:
数字图像处理第一次作业——Bmp格式与基本变换
数字图像处理第二次作业——图像仿射变换
数字图像处理第三次作业——基于直方图的图像空域操作
数字图像处理第四次作业——空域滤波与边缘检测
数字图像处理第五次作业——频域滤波器
数字图像处理第六次作业——图像噪声和恢复
数字图像处理第七次作业——图像直线检测

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚宇宸轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值