Matlab图像处理系列——图像几何变换之平移、镜像、转置、缩放、旋转

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、图像平移
1、图像平移概念
2、图像平移仿真
二、图像镜像
1、图像镜像概念
2、图像镜像仿真
三、图像转置
1、图像转置概念
2、图像转置仿真
四、图像缩放
1、图像缩放概念
2、图像缩放仿真
五、图像旋转
1、图像旋转概念
2、图像旋转仿真
六、Matlab仿真源码
1、图像平移仿真源码
2、图像镜像仿真源码
3、图像转置仿真源码
4、图像缩放仿真源码
5、图像旋转仿真源码

本节内容
图像几何变换,又称为图像空间变换,将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。关键是确定这种图像映射关系,以及映射过程中的变换参数。
几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。一个几何变换需要两部分运算:首先使空间变换所需要的运算,比如平移、选择和镜像等。用来表示输入图像与输出图像之间的像素映射关系;同时还需要使用灰度插值算法,按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。
一、图像平移
1、图像平移概念

图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。
在这里插入图片描述

原图像上一点(x0,y0),图像水平平移量为Tx,垂直平移量为Ty,平移之后的坐标点(x1,y1),满足x1=x0-Tx;y1=y0-Ty。
2、图像平移仿真
Matlab提供了tranlate用于元素的平移。
translate(polyin,x,y)
第一个元素指定x方向上的平移距离,第二个元素指定y方向上的平移距离。
在这里插入图片描述

二、图像镜像
1、图像镜像概念

镜像变换,分为水平镜像和竖直镜像。
水平镜像,将图像左半部分和右半部分以图像竖直中轴线为中心,进行轴对称。
在这里插入图片描述

竖直镜像,将图像上半部分和下半部分以图像水平中轴线为中心,进行轴对称。
在这里插入图片描述

2、图像镜像仿真
Matlab提供imwarp函数完成二维空间变换。
affine2d,对象存储有关二维仿射几何变换的信息,并支持正向变换和逆变换。
imwarp,根据几何变换tform来变换数值、逻辑或分类图像。
在这里插入图片描述

三、图像转置
1、图像转置概念

图像转置,将图像像素的x坐标和y坐标互换。图像的大小也会随之改变,高度和宽度互换。
在这里插入图片描述

2、图像转置仿真
在这里插入图片描述

四、图像缩放
1、图像缩放概念

图像缩放是指图像大小按照指定的比率放大或缩小。
在这里插入图片描述

图像x轴方向的缩放比为Sx,y轴方向的缩放比为Sy,则
在这里插入图片描述

直接根据缩放公式计算得到的目标图像中,某些映射原坐标可能不是整数,无法找到对应的像素位置,因此将它最邻近的整数坐标位置(0,0)或(0,1)处的像素灰度赋值给它,也就是所谓的最近邻插值。
2、图像缩放仿真
Matlab提供了imresize函数进行调整图像大小。
imresize,将图像的长宽大小缩放scale倍之后的图像。输入图像可以是灰度、RGB 或二值图像。如果输入图像有两个以上维度,则 imresize 只调整前两个维度的大小。如果scale在 [0, 1] 范围内,则输出图像比输入图像小。如果scale大于1,则输出图像比输入图像大。默认情况下,imresize使用双三次插值。
在这里插入图片描述
在这里插入图片描述

五、图像旋转
1、图像旋转概念

图像旋转,将图像围绕某一指定点旋转一定的角度,旋转通常也会改变图像的大小。
以原点为中心的图像旋转,点P0(x0,y0)绕原点逆时针旋转角度θ到达点P1(x1,y1)。
在这里插入图片描述

L=|OP|,x0=Lcosα,y0=Lsinα
x1=Lcos(α+θ)=cosθcosα-sinθsinα
y1=Lsin(α+θ)=sinθcosα+cosθsinα
若令L=1,则
在这里插入图片描述

以任意点为中心的图像旋转,将平移和选择操作结合。
先进行坐标系平移,在以新的坐标原点为中心旋转,之后将新原点平移回原坐标系的原点。
①将坐标系I变成II;
②将改点顺时针旋转θ角;
③将坐标系II变回I。
在这里插入图片描述

2、图像旋转仿真
Matlab提供了函数imrotate来实现图像中心的旋转变换函数。
imrotate,将图像围绕其中心点逆时针方向旋转angle度。要顺时针旋转图像,请为angle指定负值。imrotate使输出图像足够大,可以包含整个旋转图像。默认情况下,imrotate使用最近邻点插值,将输出图像中位于旋转后的图像外的像素的值设置为 0。
在这里插入图片描述
在这里插入图片描述

六、Matlab仿真源码
1、图像平移仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
%translate对x,y方向偏移
se1=translate(strel(1),[50 80]);
se2=translate(strel(1),[-50 -80]);
se3=translate(strel(1),[-50 80]);
%imdilate形态学膨胀
B1=imdilate(I,se1);
B2=imdilate(I,se2);
B3=imdilate(I,se3);
figure;
subplot(2,2,1);
imshow(I);
title('原图');
subplot(2,2,2);
imshow(B1);
title('图像平移B1');
subplot(2,2,3);
imshow(B2);
title('图像平移B2');
subplot(2,2,4);
imshow(B3);
title('图像平移B3');

2、图像镜像仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
%获取图像大小
[h,w,d]=size(I);
%定义水平镜像变换矩阵
tform1=affine2d([-1 0 0;0 1 0;w 0 1]);
B=imwarp(I,tform1);
%定义竖直镜像变换矩阵
tform2=affine2d([1 0 0;0 -1 0;0 h 1]);
C=imwarp(I,tform2);
figure;
subplot(2,2,1);
imshow(I);
title('原图');
subplot(2,2,2);
imshow(I);
title('原图');
subplot(2,2,3);
imshow(B);
title('水平镜像B');
subplot(2,2,4);
imshow(C);
title('竖直镜像C');

3、图像转置仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
%获取图像大小
[h,w,d]=size(I);
%定义图像转置变换矩阵
tform1=affine2d([0 1 0;1 0 0;0 0 1]);
B=imwarp(I,tform1);
figure;
subplot(2,1,1);
imshow(I);
title('原图');
subplot(2,1,2);
imshow(B);
title('图像转置');

4、图像缩放仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
B1=imresize(I,1.5,'nearest');
B2=imresize(I,0.5,'nearest');
figure;
imshow(I);
title('原图');
figure;
imshow(B1);
title('图像放大');
figure;
imshow(B2);
title('图像缩小');

5、图像旋转仿真源码

clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
%最近邻插值逆时针旋转30°,并剪切图像
B1=imrotate(I,30,'nearest','crop');
%最近邻插值顺时针旋转30°,并剪切图像
B2=imrotate(I,-30,'nearest','crop');
figure;
subplot(1,2,1);
imshow(I);
title('原图');
subplot(1,2,2);
imshow(B1);
title('逆时针旋转30°');
figure;
subplot(1,2,1);
imshow(I);
title('原图');
subplot(1,2,2);
imshow(B2);
title('顺时针旋转30°');
  • 24
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小灰灰的FPGA

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

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

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

打赏作者

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

抵扣说明:

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

余额充值