Halcom 发表于 2017-2-12 16:29:25

图像平移、旋转、缩放、镜像

在Matlab中,图像是按照二维矩阵的形式表示的。所以对图像的操作就是对矩阵的操作。
对图像进行缩放、平移、旋转,都可以转化为矩阵的运算。
关于变换矩阵的构造,请参考:
《 矩阵快速幂求解点旋转平移N次之后的位置》

图像的平移
init = imread('Fig3.tif'); % 读取图像
= size(init); % 获取图像大小
res = zeros(R, C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)
delX = 50; % 平移量X
delY = 50; % 平移量Y
tras = ; % 平移的变换矩阵

for i = 1 : R
    for j = 1 : C
      temp = ;
      temp = tras * temp; % 矩阵乘法
      x = temp(1, 1);
      y = temp(2, 1);
      % 变换后的位置判断是否越界
      if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
            res(x, y) = init(i, j);
      end
    end
end;

imshow(uint8(res)); % 显示图像图像的旋转:init = imread('Fig3.tif'); % 读取图像
= size(init); % 获取图像大小
res = zeros( R,C); % 构造结果矩阵。每个像素点默认初始化为0(黑色)

alfa = -15 * 3.1415926 / 180.0; % 旋转角度
tras = ; % 旋转的变换矩阵

for i = 1 : R
    for j = 1 : C
      temp = ;
      temp = tras * temp;% 矩阵乘法
      x = uint16(temp(1, 1));
      y = uint16(temp(2, 1));
      % 变换后的位置判断是否越界
      if (x <= R) & (y <= C) & (x >= 1) & (y >= 1)
            res(i, j) = init(x, y);
      end
    end
end;

imshow(uint8(res));% 显示图像图像的镜像:
init = imread('Fig3.tif');
= size(init);
res = zeros(R, C);

for i = 1 : R
    for j = 1 : C
      x = i;
      y = C - j + 1;
      res(x, y) = init(i, j);
    end
end

imshow(uint8(res));

具体参考链接:
**** Hidden Message *****

页: [1]
查看完整版本: 图像平移、旋转、缩放、镜像