📄 imlogpolar.m
字号:
function [rout,g,b] = imlogpolar(varargin)
%IMLOGPOLAR Compute logarithmic polar transformation of image.
% B = IMLOGPOLAR(A,NRHO,NTHETA,METHOD) computes the logarithmic
% polar transformation of image A, generating a log polar image
% of size NRHO by NTHETA. METHOD describes the interpolation
% method. METHOD is a string that can have one of these values:
%
% 'nearest' (default) nearest neighbor interpolation
%
% 'bilinear' bilinear interpolation
%
% 'bicubic' bicubic interpolation
%
% If you omit the METHOD argument, IMLOGPOLAR uses the default
% method of 'nearest'.
%
% B = IMLOGPOLAR(A,NRHO,NTHETA,METHOD,CTR) assumes that the 2x1
% vector CTR contains the coordinates of the origin in image A.
% If CTR is not supplied, the default is CTR = [(m+1)/2,(n+1)/2],
% where A has n rows and m columns.
%
% B = IMLOGPOLAR(A,NRHO,NTHETA,METHOD,CTR,SHAPE) where SHAPE is a
% string that can have one of these values:
%
% 'full' - returns log polar transformation containing ALL
% pixels from image A (the circumscribed circle
% centered at CTR)
%
% 'valid' - returns log polar transformation containing only
% pixels from the largest inscribed circle in image A
% centered at CTR.
%
% If you omit the SHAPE argument, IMLOGPOLAR uses the default shape
% of 'valid'. If you specify the shape 'full', invalid values on the
% periphery of B are set to NaN.
%
% Class Support
% -------------
% The input image can be of class uint8 or double. The output
% image is of the same class as the input image.
%
% Example
% -------
% I = imread('ic.tif');
% J = imlogpolar(I,64,64,'bilinear');
% imshow(I), figure, imshow(J)
%
% See also IMCROP, IMRESIZE, IMROTATE.
% Nathan D. Cahill 8-16-01, modified from:
% Clay M. Thompson 8-4-92
% Copyright 1993-1998 The MathWorks, Inc. All Rights Reserved.
% $Revision: 5.10 $ $Date: 1997/11/24 15:35:33 $
% Grandfathered:
% Without output arguments, IMLOGPOLAR(...) displays the transformed
% image in the current axis.
[Image,rows,cols,Nrho,Ntheta,Method,Center,Shape,ClassIn] = parse_inputs(varargin{:});
threeD = (ndims(Image)==3); % Determine if input includes a 3-D array
if threeD,
[r,g,b] = transformImage(Image,rows,cols,Nrho,Ntheta,Method,Center,Shape);
if nargout==0,
imshow(r,g,b);%如果不要求输出参数,就直接显示图像
return;
elseif nargout==1,
if strcmp(ClassIn,'uint8');
rout = repmat(uint8(0),[size(r),3]);
rout(:,:,1) = uint8(round(r*255));
rout(:,:,2) = uint8(round(g*255));
rout(:,:,3) = uint8(round(b*255));
else
rout = zeros([size(r),3]);
rout(:,:,1) = r;
rout(:,:,2) = g;
rout(:,:,3) = b;
end
else % nargout==3
if strcmp(ClassIn,'uint8')
rout = uint8(round(r*255));
g = uint8(round(g*255));
b = uint8(round(b*255));
else
rout = r; % g,b are already defined correctly above
end
end
else
r = transformImage(Image,rows,cols,Nrho,Ntheta,Method,Center,Shape);
if nargout==0,
imshow(r);
return;
end
if strcmp(ClassIn,'uint8')
if islogical(Image)
r = im2uint8(logical(round(r)));
else
r = im2uint8(r);
end
end
rout = r;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -