主要内容

imtranslate

平移图像

说明

B = imtranslate(A,translation) 按在 translation 中指定的二维或三维平移向量平移图像 A

如果 A 具有两个以上维度且 translation 是二元素向量,则 imtranslate 将二维平移应用于 A 的每个平面。

示例

[B,RB] = imtranslate(A,RA,translation) 平移空间参照图像 A 及其关联的空间参照对象 RA。平移向量 translation 是基于世界坐标系的。该函数返回平移后的空间参照图像 B 及其关联的空间参照对象 RB

___ = imtranslate(___,method) 使用 method 指定的插值方法平移图像 A

___ = imtranslate(___,Name=Value) 平移输入图像,并使用名称-值参量来控制平移的各个方面。

示例

示例

全部折叠

将图像读入工作区。

I = imread('pout.tif');

平移图像。

J = imtranslate(I,[25.3, -10.1],'FillValues',255);

显示原始图像和平移后的图像。

figure
imshow(I);
title('Original Image');
set(gca,'Visible','on');

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

figure
imshow(J);
title('Translated Image');
set(gca,'Visible','on');

Figure contains an axes object. The axes object with title Translated Image contains an object of type image.

将图像读入工作区。

I = imread('pout.tif');

平移图像。使用 OutputView 参数指定您要使平移后的整个图像可见。

J = imtranslate(I,[25.3, -10.1],'FillValues',255,'OutputView','full');

显示原始图像和平移后的图像。

figure
imshow(I);
title('Original Image');
set(gca,'Visible','on');

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

figure
imshow(J);
title('Full Translated Image');
set(gca,'Visible','on');

Figure contains an axes object. The axes object with title Full Translated Image contains an object of type image.

将 MRI 数据加载到工作区中并显示它。

s = load('mri');
mriVolume = squeeze(s.D);
sizeIn = size(mriVolume);
hFigOriginal = figure;
hAxOriginal  = axes;
slice(double(mriVolume),sizeIn(2)/2,sizeIn(1)/2,sizeIn(3)/2);
grid on, shading interp, colormap gray

Figure contains an axes object. The axes object contains 3 objects of type surface.

在 X,Y 方向应用平移。

mriVolumeTranslated = imtranslate(mriVolume,[40,30,0],'OutputView','full');

通过查看穿过三维体中心的轴向切片平面来可视化平移。注意在 X 和 Y 方向上的移动。

sliceIndex = round(sizeIn(3)/2);
axialSliceOriginal   = mriVolume(:,:,sliceIndex);
axialSliceTranslated = mriVolumeTranslated(:,:,sliceIndex);

imshow(axialSliceOriginal);

Figure contains an axes object. The hidden axes object contains an object of type image.

imshow(axialSliceTranslated);

Figure contains an axes object. The hidden axes object contains an object of type image.

输入参数

全部折叠

要平移的图像,指定为数值数组、逻辑数组或分类数组。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | categorical

与输入图像 A 关联的空间参照信息,指定为 imref2dimref3d 空间参照对象。

平移向量,指定为二元素数值向量 [Tx Ty] 或三元素数值向量 [Tx Ty Tz]。值可以是小数。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

插值方法,指定为下列值之一。

描述

"nearest"

最近邻点插值。赋给输出像素的值就是输入点所在像素的值。不考虑其他像素。

最近邻点插值是分类图像支持的唯一方法,也是此类型的图像的默认方法。

"bilinear"

线性插值。

线性插值是数值和逻辑图像的默认方法。

"bicubic"

三次插值。

注意

三次插值可能生成在原始范围之外的像素值。

数据类型: char | string

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: mriVolumeTranslated = imtranslate(mriVolume,[40,30,0],OutputView="full") 将输出世界坐标系范围指定为 "full"

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: mriVolumeTranslated = imtranslate(mriVolume,[40,30,0],"OutputView","full");

输出世界坐标系范围,指定为以下值之一。

描述
"same"输出世界坐标系范围与输入图像相同。
"full"输出世界坐标系范围是包含输入图像和平移后输出图像的边界矩形。

数据类型: char | string

当输出图像落在输入图像之外时的填充值,指定为表中的值之一。如果输出像素对应的位置经逆变换后完全处于输入图像边界之外,imtranslate 将对该输出像素使用填充值。

数值和逻辑图像的默认填充值为 0。分类图像的默认填充值为 missing,对应于 <undefined> 类别。

图像类型

平移维度

填充值的格式

二维灰度或逻辑图像二维
  • 数值标量

二维彩色图像或二维多光谱图像二维
  • 数值标量

  • 包含 c 个元素的数值向量,为 c 个通道中的每个通道指定一个填充值。对于彩色图像,通道数 c 为 3。

包含 p 个二维图像的序列二维

  • 数值标量

  • c×p 数值矩阵。对于灰度图像,通道数 c 为 1,对于彩色图像为 3。

N 维图像二维
  • 数值标量

  • 数值数组,其大小与输入图像 A 的维度 3 至 N 相匹配。例如,如果 A 是 200×200×10×3,则 FillValues 可以是 10×3 数组。

三维灰度或逻辑图像二维
  • 数值标量

分类图像二维或三维
  • 图像中的有效类别,指定为字符串标量或字符向量。

  • missing,对应于 <undefined> 类别。有关详细信息,请参阅 missing

示例: 255 表示用白色像素填充 uint8 图像

示例: 1 表示用白色像素填充 double 图像

示例: [0 1 0] 表示用绿色像素填充 double 彩色图像

示例: 对于一个包含两个 double 彩色图像的序列,[0 1 0; 0 1 1]' 表示用绿色像素填充第一个图像,用青色像素填充第二个图像

示例: "vehicle" 表示用 "vehicle" 类别填充分类图像

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | char

输出参量

全部折叠

平移后的图像,以与输入图像 A 具有相同数据类型的数值、逻辑或分类数组形式返回。

与输出图像关联的空间参照信息,以 imref2dimref3d 空间参照对象形式返回。

提示

  • imtranslate 针对整数值 translation 向量进行了优化。

  • 如果 OutputView"full"translation 像素数为小数时,则 imtranslate 将输出空间参照对象的世界坐标系范围扩展到最接近的整数像素增量。imtranslate 这样做是为了使其包含的原始图像和平移后的图像具有与输入图像相同的分辨率。每个方向上的额外图像范围会添加到图像的一侧,即平移向量所指的方向。例如,如果 translationXY 上都是小数且为正值,则 imtranslate 扩展 XWorldLimitsYWorldLimits 的最大值以在输入图像的分辨率下包围 "full" 边界矩形。

扩展功能

全部展开

版本历史记录

在 R2014a 中推出

全部展开