matlab实现 图像的仿射变换 平移变换 彩色 灰度 图像平移 代码

题目:自定义一个图像的平移变换函数myImageTranslation,用于平移给定的输入图像,要求该函数的输入参数包括处理前的图像img1、垂直方向的平移步长delta_v和水平方向的平移步长delta_h,输出参数为处理后的图像img2。

说明:函数模板为img2 = myImageTranslation(img1, delta_v, delta_h),其中,平移后的图像img2必须和输入图像img1的大小相同,若平移后新坐标溢出img1的坐标范围,则用值0来填充该坐标处的灰度值,否则用img1中相应像素点的灰度值进行赋值,delta_v和delta_h必须是整数(可以是正或负整数);要求能处理灰度图像EXP2A.tif和彩色图像EXP2B.bmp。

 

实现思路:

1.首先使用abs()函数将分别取水平v和垂直位移h的绝对值,使用size()函数获取图像的宽和高以及层数,即图像数据的行数r和列数c以及维数l;

2.判断水平位移和垂直位移的大小:若水平位移或垂直位移大于图片的宽度或长度,则构造一个与原图像相同行数、列数、层数的零矩阵,输出矩阵,即直接输出与原图像相同大小的黑色图像;若水平位移和垂直位移都为0,则直接输出原图像;否则,继续下面的步骤;

3. 构造矩阵:①构造行数为h、列数为c、层数为l的零矩阵,用于插入图片的上方或下方,其中当垂直位移小于0时插入图像的下方,当垂直位移大于0时插入图像的上方;②构造行数为(r + h)、列数为v、层数为l的零矩阵,用于插入图片的左方或右方,其中当水平位移小于0时插入图像的右方,当水平位移大于0时插入图像的左方;

4.插入两个零矩阵:分别判断水平位移和垂直位移的大小,将步骤3中构造的矩阵按规则分别插入图像的上方或下方以及图像的左方或右方;

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值