Matlab数字图像处理——图像的空间变换

Matlab空间变换函数 imtransform

Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移、旋转、剪切、缩放)、投影变换, 该函数可与 maketform 配合使用。不过官网目前更推荐使用 imwarp

用法说明:

  • B = imtransform(A,tform)
    根据 tform 定义的二维空间变换来变换图像 A,并返回变换后的图像 B。如果 A 是彩色图像,则 imtransform 会对每个颜色通道应用相同的二维变换。类似地,如果 A 是三维体或具有三个或更多维度的图像序列,则 imtransform 将相同的二维变换应用于沿更高维度的所有二维平面。对于任意维度的数组变换,请使用 tformarray。
  • B = imtransform(A,tform,interp)
    指定要使用的插值形式。
  • B = imtransform(___,Name,Value)
    使用名称-值对组来控制空间变换的各个方面。
  • [B,xdata,ydata] = imtransform(___)
    还返回输出图像 B 在输出 X-Y 空间中的范围。默认情况下,imtransform 会自动计算 xdata 和 ydata,使得 B 包含整个变换后的图像 A。但是,您可以通过为 XData 和 YData 名称-值对组输入参数指定值来覆盖此自动计算。

变换的原理:

(x’, y’) = T(x, y)

x' = a 0x + a 1y + a 2
y' = b 0x + b 1y + b 2

矩阵形式:
在这里插入图片描述
我们通过控制 a0, a1, a2, b0, b1, b0 来达到图像变换的目的

以下表格为具体变换数值:

放射性变换类型a0a1a2b0b1b0
平移Δx, Δy10Δx01Δy
缩放[Sx, Sy]Sx000Sy0
逆时针旋转角度cosθsinθ0-sinθcosθ0
水平切变shx100shx10
垂直切变shy1shy0010
整体切变[shx, shy]1shy0shx10

以下代码演示图像旋转、缩放、平移、整体切变:

I = imread('火影2.jpg');

%实现图像旋转
Ia = maketform('affine', [cosd(30) -sind(30) 0; sind(30) cosd(30) 0; 0 0 1]); 
Ia = imtransform(I, Ia);

%实现图像缩放
Ib = maketform('affine', [5 0 0; 0 10.5 0; 0 0 1]); 
Ib = imtransform(I, Ib);

%实现图像平移
xform = [1 0 55; 0 1 115; 0 0 1]';
Ic = maketform('affine', xform); 
Ic = imtransform(I, Ic, 'XData', ...
    [1 (size(I, 2) + xform(3, 1))], 'YData', ...
    [1 (size(I, 1) + xform(3, 2))], 'FillValues', 255);

%实现图像整体切变
Id = maketform('affine', [1 4 0; 2 1 0; 0 0 1]); 
Id = imtransform(I, Id, 'FillValues', 255);

figure;
subplot(231);imshow(I);	 %显示原图像
subplot(232);imshow(Ia); %旋转
subplot(233);imshow(Ib); %缩放
subplot(234);imshow(Ic); %平移
subplot(235);imshow(Id); %整体切变

结果演示:
在这里插入图片描述

完整目录

Matlab数字图像处理——图像处理工具箱Image Processing Toolbox
Matlab数字图像处理——图像类型的转换
Matlab数字图像处理——图像文件的读取
Matlab数字图像处理——图像文件的显示
Matlab数字图像处理——视频文件的读写
Matlab数字图像处理——图像的像素运算(灰度变换)
Matlab数字图像处理——图像的空间变换
Matlab数字图像处理——图像的平移、邻域操作、区域选取
Matlab数字图像处理——图像增强
Matlab数字图像处理——图像复原

  • 5
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是土豆大叔啊!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值