MATLAB实现RGB图像的平移缩放和旋转.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MATLAB实现RGB图像的平移缩放和旋转

Func的1 2 3分别对应平移、旋转、缩放功能function []=transition(func,I)iffunc==1delta_x=str2double(inputdlg(请输入向右平移量, INPUT scale factor, 1, {-60})); %负数为向左delta_y=str2double(inputdlg(请输入向下平移量, INPUT scale factor, 1, {-89})); %负数为向上img=imread(I);%读入图像B=size(img); %获取原始图像的高和宽imgn(:,:,:)=zeros(B(1)+abs(delta_y),B(2)+abs(delta_x));%创建平移图像输出矩阵rot=[1 0 0;0 1 0;delta_y delta_x 1]; %寻求新坐标用到的平移矩阵pix1=[1 1 1]*rot; %pix1(1),pix1(2)分别为变换后图像的左上角的y,x,分别为1+delta_y,1+delta_x,这种三维空间坐标被称为齐次坐标表示法pix4=[B(1) B(2) 1]*rot; %pix4(1),pix4(2)分别为变换后图像的右下角的y,x,分别为v+delta_y,u+delta_xfor q=1:3 %为每个通道做相同处理 %%向右下方移动if delta_x=0 delta_y=0 %如果两个平移量都为正 for y=pix1(1):pix4(1) %新图像纵坐标从最开始到结束处 for x=pix1(2):pix4(2) %新图像横坐标从最开始到结束处 pix=[y x 1]/rot; %pix矩阵经计算后为[y-delta_y,x-delta_x,1] if pix(1)=0.5 pix(2)=0.5 pix(1)=B(1) pix(2)=B(2)%这里是判断是否有像素可进行平移,例如:若y-delta_y0.5,则说明没有找到可平移的像素坐标imgn(y,x,q)=img(round(pix(1)),round(pix(2)),q); %新的图像(x,y)点的像素值选取(x-delta_x,y-delta_y)处的像素值,则实现了平移endendendend%%向左下方移动ifdelta_x0 delta_y=0for y=pix1(1):pix4(1)for x=pix1(2):pix4(2)pix=[y x 1]/rot; if pix(1)=0.5 pix(2)=0.5 pix(1)=B(1) pix(2)=B(2)imgn(y,x-delta_x,q)=img(round(pix(1)),round(pix(2)),q); endendendend%%向左上方移动ifdelta_x0 delta_y0for y=pix1(1):pix4(1)for x=pix1(2):pix4(2)pix=[y x 1]/rot; if pix(1)=0.5 pix(2)=0.5 pix(1)=B(1) pix(2)=B(2)imgn(y-delta_y,x-delta_x,q)=img(round(pix(1)),round(pix(2)),q); endendendend%%向右上方移动ifdelta_x=0 delta_y0for y=pix1(1):pix4(1)for x=pix1(2):pix4(2)pix=[y x 1]/rot; if pix(1)=0.5 pix(2)=0.5 pix(1)=B(1) pix(2)=B(2) imgn(y-delta_y,x,q)=img(round(pix(1)),round(pix(2)),q); endendendendendimshow(uint8(imgn)); title(平移);endiffunc==2img=imread(I); %读入原图像B=size(img);%获取图像的高度和宽度K1 =str2double(inputdlg(请输入列缩放倍数, INPUT scale factor, 1, {0.5}));%行默认变为原来的0.5倍K2 =str2double(inputdlg(请输入行缩放倍数, INPUT scale factor, 1, {0.5}));%列默认变为原来的0.5倍width = K1 * B(1); %缩放后的图像宽度height = K2 * B(2); %缩放后的图像高度for p=1:3imgn(:,:,p

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档