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