2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab坐标旋转平移缩放 MATLAB实现RGB图像的平移 缩放和旋转

matlab坐标旋转平移缩放 MATLAB实现RGB图像的平移 缩放和旋转

时间:2019-12-27 08:32:39

相关推荐

matlab坐标旋转平移缩放 MATLAB实现RGB图像的平移 缩放和旋转

Func的1 2 3分别对应平移、旋转、缩放功能

function []=transition(func,I)

if func==1

delta_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_x

for 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_y<0.5,则说明没有找到可平移的像素坐标

imgn(y,x,q)=img(round(pix(1)),round(pix(2)),q); %新的图像(x,y)点的像素值选取(x-delta_x,y-delta_y)处的像素值,则实现了平移

end

end

end

end

%%向左下方移动

if delta_x<0 && delta_y>=0

for 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);

end

end

end

end

%%向左上方移动

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。