Matlab图像裁剪与空间变换 裁剪图像 对图像进行空间变换 裁剪图像 使用裁剪图像工具(Crop Image Tool) I = imread('moon.tif'); imtool(I) I = imread('moon.tif'); imtool(I) 裁剪图像 使用裁剪图像工具(Crop Image Tool) 使用imcrop函数 I = imread('circuit.tif'); J = imcrop(I); I = imread('circuit.tif'); J = imcrop(I,[60 40 100 90]); imshow(J); (60,40) X Y O 100 90 二维空间变换 定义空间变换参数 创建变换结构体TFORM,定义变换类型 执行变换 输入图像 空间变换结构体(TFORM),使用maketform或cp2tform创建 imtransform 变换后的 图像 第1步:导入要变换的图像 cb = checkerboard; imshow(cb); 第2步:定义空间变换 cb = checkerboard; imshow(cb); xform = [ 1 0 0 0 1 0 40 40 1]; xform(3,1)=40为x方向平移距离 xform(3,2)=40为y方向平移距离 A b OUT[x,y] = IN[x,y]*A + b 变换矩阵 仿射变换 示例 变换矩阵 平移 tx指定沿x轴方向的位移 ty指定沿y轴方向的位移 比例 sx指定沿x轴方向的比例系数 sy指定沿y轴方向的比例系数 错切 shx指定沿x轴方向的错切系数 shy指定沿y轴方向的错切系数 旋转 q指定旋转的角度 第3步:创建TFORM结构体 cb = checkerboard; imshow(cb); xform = [ 1 0 0 0 1 0 40 40 1]; tform_translate = maketform('affine',xform); 第3步:创建TFORM结构体 cb = checkerboard; imshow(cb); inpts = [11 11; 21 11; 21 21]; outpts = [51 51; 61 51; 61 61]; tform_translate = maketform('affine', inpts, outpts); 变换类型 描述 ‘affine’ 仿射变换 包括平移、旋转、比例和错切。变换后,直线仍是直线,平行线保持平行,但矩形有可能变为平行四边形。 ‘projective’ 透视变换 变换后,直线仍是直线,但平行线变成汇聚指向灭点。(灭点可以在图像内或图像外——甚至在无穷远点。) ‘box’ 仿射变换的特例,每一维独立进行平移和比例操作。 ‘custom’ 用户自定义变换,提供被imtransform调用的正映射和反映射函数。 ‘composite’ 两种或更多种变换的合成。 maketform变换类型 第4步:执行变换 cb = checkerboard; imshow(cb); xform = [ 1 0 0 0 1 0 40 40 1]; tform_translate = maketform('affine',xform); [cb_trans xdata ydata] = imtransform(cb, tform_translate); 第5步:查看输出图像 cb = checkerboard; imshow(cb); xform = [ 1 0 0 0 1 0 40 40 1]; tform_translate = maketform('affine',xform); [cb_trans xdata ydata] = imtransform(cb, tform_translate); figure, imshow(cb_trans); imtransform调整了输出图像使其正好包含整个变换后的图像 cb_trans2 = imtransform(cb, tform_translate, ... 'XData', [1 (size(cb, 2) + xform(3, 1))], ... 'YData', [1 (size(cb, 1) + xform(3, 2))]); figure, imshow(cb_trans2); cb_fill = imtransform(cb, tform_translate, ... 'XDa