No BSD License  

Highlights from
GeoML

image thumbnail

GeoML

by

 

28 Aug 2008 (Updated )

A general morphable template tool for image segmentation.

ATE_GradientNorm(varargin)
function varargout = ATE_GradientNorm(varargin)
% ATE_GRADIENTNORM  Computes the energy using the norm of gradient.
%
%  This function computes the gradient and uses the sum of the gadient norm
% as energy.
%
%  INITIALIZATION:
% 
%  Params
%  ------
% IN:
%  img      = The image.
%  fedge    = The edge function.
% OUT:
%  ngrad    = The norms of the gradients.

% At least one argument is required:
if nargin<1
    error('At least one argument is required!');
end

% Check the type of call:
if numel(varargin{1})==1 && varargin{1}==0
    % Call the init function:
    varargout{:} = InitEnvironment(varargin{2:end});
else
    % Call the evaluate function:
    varargout{:} = ComputeEnergy(varargin{:});
end

% ------------------------ LOCAL FUNCTIONS ------------------------

% The init function:
function ngrad = InitEnvironment(img)

% Check params:
if nargin<1
    error('An image is requred for the initialization!');
end

% Get a gray double image:
img = imtype(img,'gF');

% Computing the gradient:
[gradx,grady] = gradient(img);

% Computing the norm of the gradient:
ngrad = gradx.^2 + grady.^2;

% Computing the final energy map:
ngrad = -imscale(ngrad);

% -----------------------------------------------------------------

% The evaluation function:
function E = ComputeEnergy(pts,ngrad)

% The energy is the sum of the gradient's norm:
E = sum(impixels(ngrad,pts))/size(pts,2);

Contact us