本示例說明如何指定
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