天天看點

matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

本示例說明如何指定

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)
           
matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

現在執行變換,這次指定填充值。

cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],...
     'OutputView',Rout);
 ​
 figure, imshow(cb_fill)
           
matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

注:本文根據MATLAB官網内容修改而成。

歡迎您進一步了解以下MATLAB系列文章:

吃小羊:MATLAB作圖執行個體:00:索引​zhuanlan.zhihu.com

matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

吃小羊:MATLAB金融工具箱:00:索引​zhuanlan.zhihu.com

matlab imread_MATLAB圖像處理:29:在幾何變換輸出中指定填充值

繼續閱讀