本示例说明如何指定imwarp
执行几何变换时使用的填充值。执行转换时,输出图像中通常会有一些像素不属于原始输入图像。必须为这些像素分配一些值,称为填充值。默认情况下,imwarp
将这些像素设置为零,并显示为黑色。使用FillValues
参数,可以指定其他颜色。如果要转换的图像是灰度图像,请指定标量值,该标量值指定灰度。如果要变换的图像是RGB图像,则可以使用标量值或1×3向量。如果指定标量,则imwarp
对RGB图像的每个平面使用该灰色阴影。如果您指定1 x 3向量,imwarp
将该值解释为RGB颜色值。
将图像读入工作区。本示例使用彩色图像。
rgb = imread('onion.png');
创建变换矩阵。该矩阵定义平移变换。
xform = [ 1 0 0 0 1 0 40 40 1 ];
创建几何变换对象。本示例创建一个affine2d对象。
tform_translate = affine2d(xform)tform_translate = affine2d with properties:T: [3x3 double]Dimensionality: 2
创建一个2D参考对象。该对象指定输出空间的坐标系的各个方面,以便需要填充值的区域可见。默认情况下,imwarp
将输出图像的大小调整为刚好足以容纳整个变换的图像,而不是整个输出坐标空间。
Rout = imref2d(size(rgb)); Rout.XWorldLimits(2) = Rout.XWorldLimits(2)+40; Rout.YWorldLimits(2) = Rout.YWorldLimits(2)+40; Rout.ImageSize = Rout.ImageSize+[40 40];
使用imwarp
函数执行转换。
cb_rgb = imwarp(rgb,tform_translate,'OutputView',Rout);figure, imshow(cb_rgb)
现在执行变换,这次指定填充值。
cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],...'OutputView',Rout);figure, imshow(cb_fill)
注:本文根据MATLAB官网内容修改而成。
欢迎您进一步了解以下MATLAB系列文章:
吃小羊:MATLAB作图实例:00:索引zhuanlan.zhihu.com吃小羊:MATLAB金融工具箱:00:索引zhuanlan.zhihu.com