如何利用MATLAB进行简单图像二维变换

1、在Matlab中,构造一简单二维图形的顶点表齐次矩阵,使用齐次矩阵变换方法对分别该图形做以下二维变换:

  1. 宽度缩小为1/2,高度放大为2倍,设为T1
  2. 顺时针旋转45度,设为T2
  3. 沿x轴做错切,错切系数b为1/2,设为T3
>> A=[2 3 1;
  3.75 3 1;
  3.75 3.5 1;
  4.75 3.5 1;
  4.75 4 1
  5.25 4 1
  5.25 6 1;
  6.25 5.5 1;
  5.5 5.5 1;
  5.5 4 1;
  6 4 1;
  6 3.5 1;
  7 3.5 1;
  7 3 1;
  9 3 1;
  8 2 1;
7 2 1;
  6 2 1;
  5 2 1;
  3 2 1;
  2 3 1;]

A =

    2.0000    3.0000    1.0000
    3.7500    3.0000    1.0000
    3.7500    3.5000    1.0000
    4.7500    3.5000    1.0000
    4.7500    4.0000    1.0000
    5.2500    4.0000    1.0000
    5.2500    6.0000    1.0000
    6.2500    5.5000    1.0000
    5.5000    5.5000    1.0000
    5.5000    4.0000    1.0000
    6.0000    4.0000    1.0000
    6.0000    3.5000    1.0000
    7.0000    3.5000    1.0000
    7.0000    3.0000    1.0000
    9.0000    3.0000    1.0000
    8.0000    2.0000    1.0000
    7.0000    2.0000    1.0000
    6.0000    2.0000    1.0000
    5.0000    2.0000    1.0000
    3.0000    2.0000    1.0000
    2.0000    3.0000    1.0000
>> x1 = A(:,1);
>> y1 =A(:,2);
>> subplot(2,2,1); 
plot(x1,y1,'linewidth',3);
axis([0 10 0 8]);
>>A1 = [0.5 0 0;
0 2 0;
0 0 1;]

A 1=

    0.5000         0         0
         0    2.0000         0
         0         0    1.0000

>>T1 = A*A1;
>> x2 = T1(:,1);
>> y2 = T1(:,2);
>> subplot(2,2,2); 
>> plot(x2,y2,'linewidth',3);
>> axis([0 15 0 15]);
>> B=[cosd(45) (-sind(45)) 0;
sind(45) cosd(45) 0;
0 0 1;]

B =

    0.7071   -0.7071         0
    0.7071    0.7071         0
         0         0    1.0000

>> T2 = A*B;
>> x3 = T2(:,1);
>> y3 = T2(:,2);
>> subplot(2,2,3); 
>> plot(x3,y3,'linewidth',3);
>> C = [1 0 0;
1/2 1 0;
0 0 1;]

C =

    1.0000         0         0
    0.5000    1.0000         0
         0         0    1.0000

>> T3 = A*C;
>> x4 = T3(:,1);
>> y4 = T3(:,2);
>> subplot(2,2,4); 
>> plot(x4,y4,'linewidth',3);

运行结果图:
如何利用MATLAB进行简单图像二维变换_第1张图片

你可能感兴趣的:(MATLAB简单图像处理,matlab)