signature.m ( File view )

  • By yueqiaohuayuan 2014-11-17
  • View(s):3508
  • Download(s):7
  • Point(s): 3
			function [st, angle, x0, y0] = signature(b, varargin)
%SIGNATURE Computes the signature of a boundary. 
%   [ST, ANGLE, X0, Y0] = SIGNATURE(B) computes the signature of a
%   given boundary, B, where B is an np-by-2 array (np > 2)
%   containing the (x, y) coordinates of the boundary ordered in a
%   clockwise or counterclockwise direction. The amplitude of the
%   signature as a function of increasing ANGLE is output in
%   ST. (X0,Y0) are the coordinates of the centroid of the
%   boundary. The maximum size of arrays ST and ANGLE is 360-by-1,
%   indicating a maximum resolution of one degree. The input must be
%   a one-pixel-thick boundary obtained, for example, by using the
%   function boundaries. By definition, a boundary is a closed
%   curve. 
% 
%   [ST, ANGLE, X0, Y0] = SIGNATURE(B) computes the signature, using
%   the centroid as the origin of the signature vector. 
%   
%   [ST, ANGLE, X0, Y0] = SIGNATURE(B, X0, Y0) computes the boundary
%   using the specified (X0, Y0) as the origin of the signature
%   vector.   

%   Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
%   Digital Image Processing Using MATLAB, Prentice-Hall, 2004
%   $Revision: 1.6 $  $Date: 2003/11/21 14:46:47 $

% Check dimensions of b.
[np, nc] = size(b);
if (np < nc | nc ~= 2) 
   error('B must be of size np-by-2.'); 
end

% Some boundary tracing programs, such as boundaries.m, end where 
% they started, resulting in a sequence in which the coordinates
% of the first and last points are the same. If this is the case, 
% in b, eliminate the last point.
if isequal(b(1, :), b(np, :)) 
   b = b(1:np - 1, :); 
   np = np - 1;
end
    
% Compute parameters.
if nargin == 1
   x0 = round(sum(b(:, 1))/np); % Coordinates of the centroid.
   y0 = round(sum(b(:, 2))/np); 
elseif nargin == 3 
   x0 = varargin{
1
};
   y0 = varargin{
2
};
else 
   error('Incorrect number of inputs.'); 
end
    
% Shift origin of coord system to (x0, y0)).
b(:, 1) = b(:, 1) - x0;
b(:, 2) = b(:, 2) - y0;

% Convert the coordinates to polar.  But first have to convert the
% given image coordinates, (x, y), to the coordinate system used by
% MATLAB for conversion between Cartesian and polar cordinates.
% Designate these coordinates by (xc, yc). The two coordinate systems
% are related as follows:  xc = y and yc = -x.
xc = b(:, 2);
yc = -b(:, 1);
[theta, rho] = cart2pol(xc, yc);

% Convert angles to degrees.
theta = theta.*(180/pi);

% Convert to all nonnegative angles.
j = theta == 0; % Store the indices of theta = 0 for use below.
theta = theta.*(0.5*abs(1 + sign(theta)))...
        - 0.5*(-1 + sign(theta)).*(360 + theta);
theta(j) = 0; % To preserve the 0 values.

temp = theta;
% Order temp so that sequence starts with the smallest angle.
% This will be used below in a check for monotonicity.
I = find(temp == min(temp));

% Scroll up so that sequence starts with the smallest angle.
% Use I(1) in case the min is not unique (in this case the
% seq
...
...
(Please download the complete source code to view)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 3

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
01.97 kB
0_Read_Me_First.txt5.00 kB2012-02-29|09:51
Contents.m5.98 kB2012-02-29|09:51
Readme.m5.30 kB2012-02-29|09:51
adpmedian.m1.54 kB2012-02-29|09:51
average.m651.00 B2012-02-29|09:51
bayesgauss.m2.96 kB2012-02-29|09:51
bound2eight.m2.99 kB2012-02-29|09:51
bound2four.m2.42 kB2012-02-29|09:51
bound2im.m2.17 kB2012-02-29|09:51
boundaries.m5.64 kB2012-02-29|09:51
bsubsamp.m3.87 kB2012-02-29|09:51
changeclass.m592.00 B2012-02-29|09:51
colorgrad.m2.30 kB2012-02-29|09:51
colorseg.m2.37 kB2012-02-29|09:51
compare.m1.15 kB2012-02-29|09:51
connectpoly.m1.02 kB2012-02-29|09:51
conwaylaws.m799.00 B2012-02-29|09:51
covmatrix.m977.00 B2012-02-29|09:51
dftcorr.m687.00 B2012-02-29|09:51
dftfilt.m882.00 B2012-02-29|09:51
dftuv.m736.00 B2012-02-29|09:51
diameter.m6.47 kB2012-02-29|09:51
endpoints.m874.00 B2012-02-29|09:51
entropy.m1.00 kB2012-02-29|09:51
fchcode.m8.55 kB2012-02-29|09:51
frdescp.m1.42 kB2012-02-29|09:51
fwtcompare.m992.00 B2012-02-29|09:51
gmean.m447.00 B2012-02-29|09:51
gscale.m2.04 kB2012-02-29|09:51
histroi.m920.00 B2012-02-29|09:51
hough.m2.64 kB2012-02-29|09:51
houghlines.m2.82 kB2012-02-29|09:51
houghpeaks.m2.65 kB2012-02-29|09:51
houghpixels.m1.02 kB2012-02-29|09:51
hpfilter.m1.23 kB2012-02-29|09:51
hsi2rgb.m1.94 kB2012-02-29|09:51
huff2mat.m2.46 kB2012-02-29|09:51
huffman.m2.82 kB2012-02-29|09:51
ice.fig45.71 kB2012-02-29|09:51
ice.m26.30 kB2012-02-29|09:51
ice_stand_alone.m46.55 kB2012-02-29|09:51
ifrdescp.m1.38 kB2012-02-29|09:51
ifwtcompare.m1.12 kB2012-02-29|09:51
im2jpeg.m2.90 kB2012-02-29|09:51
im2jpeg2k.m3.97 kB2012-02-29|09:51
imnoise2.m4.20 kB2012-02-29|09:51
imnoise3.m2.12 kB2012-02-29|09:51
improd.m791.00 B2012-02-29|09:51
imratio.m1.30 kB2012-02-29|09:51
imstack2vectors.m1.83 kB2012-02-29|09:51
intline.m1.20 kB2012-02-29|09:51
intrans.m3.25 kB2012-02-29|09:51
invmoments.m3.24 kB2012-02-29|09:51
jpeg2im.m2.41 kB2012-02-29|09:51
jpeg2k2im.m1.90 kB2012-02-29|09:51
lpc2mat.m1.42 kB2012-02-29|09:51
lpfilter.m1.44 kB2012-02-29|09:51
mahalanobis.m1.97 kB2012-02-29|09:51
manualhist.m1.75 kB2012-02-29|09:51
mat2huff.m2.75 kB2012-02-29|09:51
mat2lpc.m1.28 kB2012-02-29|09:51
minperpoly.m7.15 kB2012-02-29|09:51
paddedsize.m1.29 kB2012-02-29|09:51
pixeldup.m950.00 B2012-02-29|09:51
polyangles.m6.14 kB2012-02-29|09:51
princomp.m2.88 kB2012-02-29|09:51
quantize.m1.33 kB2012-02-29|09:51
randvertex.m1.15 kB2012-02-29|09:51
regiongrow.m1.66 kB2012-02-29|09:51
rgb2hsi.m1.46 kB2012-02-29|09:51
rgbcube.m1.98 kB2012-02-29|09:51
signature.m4.45 kB2012-02-29|09:51
specxture.m2.57 kB2012-02-29|09:51
spfilt.m3.78 kB2012-02-29|09:51
splitmerge.m4.13 kB2012-02-29|09:51
statmoments.m1.72 kB2012-02-29|09:51
statxture.m1.55 kB2012-02-29|09:51
strsimilarity.m1.78 kB2012-02-29|09:51
subim.m713.00 B2012-02-29|09:51
twodsin.m1.04 kB2012-02-29|09:51
twomodegauss.m1.16 kB2012-02-29|09:51
unravel.dll7.00 kB2012-02-29|09:51
unravel.m967.00 B2012-02-29|09:51
unravel.mexaxp24.00 kB2012-02-29|09:51
unravel.mexglx18.97 kB2012-02-29|09:51
unravel.mexhpux12.00 kB2012-02-29|09:51
unravel.mexmac8.68 kB2012-02-29|09:51
unravel.mexrs62.71 kB2012-02-29|09:51
unravel.mexsg24.44 kB2012-02-29|09:51
unravel.mexsol8.54 kB2012-02-29|09:51
vistformfwd.m1.66 kB2012-02-29|09:51
wave2gray.m4.67 kB2012-02-29|09:51
waveback.m4.52 kB2012-02-29|09:51
wavecopy.m940.00 B2012-02-29|09:51
wavecut.m1.06 kB2012-02-29|09:51
wavefast.m4.14 kB2012-02-29|09:51
wavefilter.m4.77 kB2012-02-29|09:51
wavepaste.m1.04 kB2012-02-29|09:51
wavework.m3.45 kB2012-02-29|09:51
wavezero.m696.00 B2012-02-29|09:51
x2majoraxis.m3.59 kB2012-02-29|09:51
...
Sponsored links

signature.m (160.12 kB)

Need 3 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D