www.gusucode.com > images 案例代码 matlab源码程序 > images/SpecifyFillValuesInGeometricTransformationOutputExample.m

    %% Specify Fill Values in Geometric Transformation Output
% This example shows how to specify the fill values used by |imwarp| when
% it performs a geometric transformation. When you perform a
% transformation, there are often pixels in the output image that are not
% part of the original input image. These pixels must be assigned some
% value, called a _fill value_ . By default, |imwarp| sets these pixels to
% zero and they display as black. Using the |FillValues| parameter, you can
% specify a different color. If the image being transformed is a grayscale
% image, specify a scalar value that specifies a shade of gray. If the
% image being transformed is an RGB image, you can use either a scalar
% value or a 1-by-3 vector. If you specify a scalar, |imwarp| uses that
% shade of gray for each plane of the RGB image. If you specify a 1-by-3
% vector, |imwarp| interprets the values as an RGB color value.
%%
% Read image into workspace. This example uses a color image.

% Copyright 2015 The MathWorks, Inc.

rgb = imread('onion.png'); 
%%
% Create the transformation matrix. This matrix defines a translation
% transformation.
xform = [ 1 0 0 
          0 1 0 
          40 40 1 ];
%%
% Create the geometric transformation object. This example creates an
% affine2d object.
tform_translate = affine2d(xform)
%%
% Create a 2D referencing object. This object specifies aspects of the
% coordinate system of the output space so that the area needing fill
% values is visible. By default, |imwarp| sizes the output image to be just
% large enough to contain the entire transformed image but not the entire
% output coordinate space.
Rout = imref2d(size(rgb)); 
Rout.XWorldLimits(2) = Rout.XWorldLimits(2)+40; 
Rout.YWorldLimits(2) = Rout.YWorldLimits(2)+40; 
Rout.ImageSize = Rout.ImageSize+[40 40]; 
%%
% Perform the transformation with the |imwarp| function. 
cb_rgb = imwarp(rgb,tform_translate,'OutputView',Rout);
figure, imshow(cb_rgb) 
%%
% Now perform the transformation, this time specifying a fill value.
cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],...
    'OutputView',Rout);

figure, imshow(cb_fill)