MATLAB 图像处理工具箱中提供了函数imresize( )进行图像的缩放操作,其具体的调用格式如下:
Parameter | 说明 | Value |
'Antialiasing' | 对缩放图像进行边缘柔和,取值为布尔型 | 取值依赖于插值方法,如果插值方法采用'nearest'。默认取值false,对于其他插值方法,默认取值true。 |
'Colormap' | 颜色映射,取值为字符串 | 取'original',输出图像颜色映射与原图像相同;取'optimized',输出图像颜色映射为最优 |
'Dither' | 颜色抖动,取值为布尔型 | 是否执行颜色抖动处理,仅对索引图像,默认取值'true' |
'Method' | 插值方法 | 同[..]=imresize( ..., method)中的method取值 |
'OutputSize' | 输出图像尺寸 | 是一个两元素数组[mrows ncols],如mrows或ncols中有取值为 NaN,则根据原输入图像纵横比计算其取值 |
'Scale' | 缩放比例 | 可以是数值也可以是两元素数组[mrows ncols] |
编写图像转置函数 transp.m
%I表示输入的原始图像
%J表示经过转置以后的图像
function J=transp(I)
[M,N,G]=size(I); %获取输入图像I的大小
I=im2double(I); %将图像数据类型转换成双精度
J=ones (N, M,G); %初始化新图像矩阵全为1,大小与输入图像相同
for i=1:M
for j=1:N
J(j,i,:)=I(i,j,:) ; %进行图像转置
end
end
注:不是简单的旋转
图像的旋转变换属于图像的位置变换,通常是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。旋转后,图像的大小一般会改变。
在 MATLAB图像处理工具箱中提供了函数 imrotate( )进行图像的旋转操作,其具体的调用格式如下:
在MATLAB图像处理工具箱中提供了函数imcrop( )进行图像的剪切操作,其具体的调用格式如下。
在4.2.5节和4.2.6节介绍的图像变换都可归结为图像的空间变换,在 MATLAB 的图像处理工具箱中提供了一个专门的函数intransform( ),可以定义参数实现多种类型的空间变换,包括放射变换(如平移、缩放、旋转、剪切)、投影变换等
Parameter | 取值说明Value |
'UData' | 说明图像A在UV坐标的空间位置。UData是两元素向量,相应给出图像A从第一列和最后一列在水平轴(U轴)的坐标,默认值 [1 size(A,2)] |
'VData’ | 说明图像A在UV坐标的空间位置。VData是两元素向量,相应给出图像A从第一行和最后一行的在垂直轴(V轴)的坐标,默认值 [1 size(A,1)] |
‘XData' | 说明变换后图像B在XY坐标的空间位置。XData是两元素向量,相应给出变换后的图像B从第一列和最后一列在水平轴(X轴)的坐标 |
'YData' | 说明变换后图像B在XY坐标的空间位置。YData是两元素向量,相应给出变换后图像B从第一行和最后一行在垂直轴(Y轴)的坐标 |
'XYScale" | XYScale是一个实数或两元素向量。如果是向量,那么第一个元素说明在XY空间里每个像素的宽度,第二个元素说明在XY空间中每个像素的高度;如果是一个实数,则说明在XY空间中每个像素的高度和宽度相等 |
'Size' | 两元素非负整数向量。说明输出图像B的行和列,如果输入图像A是RGB图像即维数k大于2,则输出图像B的高维与输入相等,即 size(B,k)=size(A,k) |
'Fill Values' | 对一个矩阵填充1个或几个值。如果输入图像A是二维图像,'FillValues'的取值为实数,如果输入图像A是RGB图像,则'FillValues'的取值应该是三元素向量 |
在MATLAB中利用函数intransform( )实现图像的空间变换时,都需要先定义空间变换的参数。对于空间变换参数的定义,MATLAB也提供了相应的函数 maketform( ),它的作用是创建进行空间变换的参数结构体。
《MATLAB图像处理实例详解》P155——例4-26,利用函数imtransform( ),实现图像的平移、缩放、旋转和剪切,代码如下
close all; clear all; clc;
[I, map] =imread ('R.jpg'); %读入图像
Ta = maketform ( 'affine', ...
[cosd(30) sind(30) 0; -sind(30) cosd(30) 0;0 0 1]); %创建旋转参数结构体
Ia=imtransform(I,Ta) ; % 实现图像旋转
Tb = maketform ( 'affine', [5 0 0;0 10.5 0;0 0 1]'); %创建缩放参数结构体工
Ib =imtransform(I,Tb); % 实现图像缩放
xform= [1 0 55; 0 1 115;0 0 1]'; % 创建图像平移参数结构体
Tc=maketform('affine',xform);
Ic= imtransform (I,Tc,'XData', ...
[1 (size(I,2)+xform(3,1))], 'YData', ...
[1 (size(I,1)+xform (3,2))],'FillValues',255 ); %进行图像平移
Td=maketform('affine',[1 4 0;2 1 0;0 0 1]'); % 创建图像整体切变的参数结构体
Id =imtransform(I, Td, 'Fillvalues',255); %实现图像整体切变
figure,
subplot (121) ,imshow(Ia) ,axis on;
subplot(122),imshow (Ib) ,axis on;
figure,
subplot(121),imshow(Ic) ,axis on;
subplot(122) ,imshow (Id) ,axis on;
放射性变换参数结构体T的矩阵形式为
详情看书《MATLAB图像处理实例详解》P155