利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 20:20:59
利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行

利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行
利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行

利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行
根据矩阵计算:





平移旋转以后,还需要插值,才能显示完整的图像
clear all; close all; clc;
img=imread('lena.bmp');       
[h w]=size(img); 

%平移旋转参数
a = 10; b = 20;
theta = 30 /180*pi; 

% 旋转矩阵
rot=[cos(theta) -sin(theta) 0;
     sin(theta) cos(theta)  0;
     0          0           1];
% 平移矩阵
move = [ 1 0 a;
         0 1 b;
         0 0 1];
%平移加旋转
rot = rot * move;
     
pix1=[a b 1]*rot;\x09% 左上点的坐标 
pix2=[a w+b 1]*rot;      % 右上点的坐标 
pix3=[h+a b 1]*rot;\x09% 左下点的坐标 
pix4=[h+a w+b 1]*rot;\x09% 右下点的坐标 

height = round(max([abs(pix1(1)-pix4(1)) abs(pix2(1)-pix3(1))]));     %变换后图像的高度 
width = round( max([abs(pix1(2)-pix4(2)) abs(pix2(2)-pix3(2))]));      %变换后图像的宽度 

imgn=zeros(height,width); 
delta_y = abs(min([pix1(1) pix2(1) pix3(1) pix4(1)])); 
delta_x = abs(min([pix1(2) pix2(2) pix3(2) pix4(2)])); 

for i=1-delta_y:height
  for j=1-delta_x:width
        pix=[i j 1]/rot; %用变换后图像的点的坐标去寻找原图像点的坐标,
        float_Y=pix(1)-floor(pix(1));
        float_X=pix(2)-floor(pix(2));    
        if pix(1)>=1 && pix(2)>=1 && pix(1) <= h && pix(2) <= w  
            pix_up_left=[floor(pix(1)) floor(pix(2))];     %四个相邻的点
            pix_up_right=[floor(pix(1)) ceil(pix(2))];  
            pix_down_left=[ceil(pix(1)) floor(pix(2))];
            pix_down_right=[ceil(pix(1)) ceil(pix(2))]; 
            value_up_left=(1-float_X)*(1-float_Y);\x09\x09
        value_up_right=float_X*(1-float_Y);             
        value_down_left=(1-float_X)*float_Y;             
        value_down_right=float_X*float_Y; 
            
\x09imgn(i+delta_y,j+delta_x) = value_up_left*img(pix_up_left(1),pix_up_left(2))+...
\x09value_up_right*img(pix_up_right(1),pix_up_right(2))+...
\x09value_down_left*img(pix_down_left(1),pix_down_left(2))+...
\x09value_down_right*img(pix_down_right(1),pix_down_right(2)); 
        end            
    end 
end 
imshow(uint8(imgn));title('平移旋转并插值');


利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行 matlab如何实现矩阵图像的直方图均衡化 matlab 如何实现用图像显示矩阵我有一个339*600的一个矩阵,矩阵中元素的值是1-2112之间的整数.为了更直观的显示矩阵内数据的变化,我想用彩色图像显示出矩阵内的数据变化. matlab中pinv函数是如何利用svd分解出的U、S、V来求取奇异矩阵的广义逆矩阵的想通过svd函数分解出的U、S、V自己编程实现求取奇异矩阵的广义逆矩阵,请帮忙说说实现的原理 利用MATLAB实现二维图像傅立叶变换算法 这个图像用matlab怎么实现啊?色调随角度变化的,有什么命令可以实现这圆形的 matlab可以通过输入一个矩阵画有向图吗?如何实现?矩阵为一个各个区域相互到达的时间矩阵 matlab中,利用 plot做出了二维图像,并且知道图像上某点的纵坐标,怎么求出其横坐标?利用那些命令可以实现呢 数字图像处理问题,请问图像怎么变成像素矩阵,像素矩阵怎么变回图像?MATLAB怎么实现? Matlab实现雅各比矩阵 数字图像处理 图像缩放以及旋转的算法代码MATLAB环境分别实现利用最近邻方法实现图像的缩放利用双线性插值算法实现图像的缩放利用双线性插值算法实现图像的旋转以 lena.bmp为例, 图像 灰度共生矩阵怎么在matlab中实现,要具体源程序 CANNY算子边缘检测matlab实现过程有点小白了,matlab只会算矩阵,图像处理一点不懂, 如何将avi格式的视频文件利用matlab提取成一帧一帧的序列图像?不用matlab,用vc++也可以.最好几秒取一帧图像,然后形成一个图像的序列.用其他的软件实现也可以. 图形的变化可通过什么实现 如何用MATLAB实现对图像的随机采样 如何用matlab实现对图像的梅花形采样 MATLAB哪个函数把图像以矩阵的形式显示