Contents
- CVL Monogenic signal toolbox
- monogenic
- monogenic/amplit
- monogenic/conj
- monogenic/disp
- monogenic/end
- monogenic/log
- monogenic/orient
- monogenic/phase
- monogenic/recon
- monogenic/size
- monogenic/subsasgn
- monogenic/subsref
- example to use
- load image and compute
- DCT image
- DCT flux
- SQF image
- SQG flux
- GET image
- GET flux
- compute monogenic signal
- compute conjugate log
- reconstruct from amplitude
- reconstruct from phase
- phase II
- DPC edge detection
- local frequency estimation
CVL Monogenic signal toolbox
File revision $Id: Contents.html 7502 2007-05-15 09:33:00Z mfe $
This toolbox contains the monogenic signal class and some misc. functions. Most of the functions are based on stuff that Michael has been doing in his PhD and at the CVL lab.
The basic functionalities have been collected in a monogenic class, such that most functions can be accessed in the usual way, e.g., array indexing, field selection, orientation, amplitude, phase, etc. In the constructor different methods and parameters for generating monogenic objects can be selected.
Note that the classes are written using the new, unofficial Matlab OO system (MCOS), and requires Matlab 7.3. The classes will be maintained to work with the latest matlab version until MCOS is officially released.
% Copyright (c) 2007 Michael Felsberg, mfe@isy.liu.se % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 2 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
monogenic
help monogenic
MONOGENIC monogenic class constructor obj=monogenic(signal,method,params) computes the monogenic scale-space signal: can be a scalar array (int, single, double) or a complex array (interpreted as the Riesz transform of some signal) method: method to compute the monogenic signal; possible choices (def: 'get'): 'dct' for a finite domain eigenfunction solution; parameters params.scales: a vector of scales in Poisson scale space params.coeffs: a vector of linear coefficients to compose e.g. a bandpass filter; default: allpass 'sqf', 'sqfs', 'sqfx', 'sqfy' for a convolution solution (spherical quadrature filter); parameters params.scales: a 2-vector of scales in Poisson scale space (default [1 2]) params.trunce: truncation error in percentage (default 5%) 'get', 'gets' for implementation based on gradient energy tensor; parameters params.scales: a scalar with standard deviation for Gaussian derivative; default: Sobel filter member functions: disp size subsref subsasgn end log amplit orient phase recon conj
monogenic/amplit
help monogenic/amplit
A = AMPLIT(M) returns the local amplitude of monogenic object M
monogenic/conj
help monogenic/conj
M = CONJ(M) computes the conjugate of monogenic object M
monogenic/disp
help monogenic/disp
DISP(M) displays monogenic object
monogenic/end
help monogenic/end
L = END(M,K,N) returns last index of N-dimensional monogenic array M in dimension K
monogenic/log
help monogenic/log
N = LOG(M) returns new monogenic object N which is the quaternionic logarithm of M
monogenic/orient
help monogenic/orient
O = ORIENT(M) returns the local orientation (modulo pi) of monogenic object M
monogenic/phase
help monogenic/phase
P = PHASE(M) returns the scalar phase of monogenic object M
monogenic/recon
help monogenic/recon
R = RECON(M) reconstructs signal / image from attenuation / phase representation M (quaternionic exponential function)
monogenic/size
help monogenic/size
D = SIZE(M) Size of monogenic object.
monogenic/subsasgn
help monogenic/subsasgn
M = subsasgn(M,S,m) assigns values or objects to fields or elements of a monogenic object (array) possible fields are EVEN = IMAGE = ATTEN = SIGNAL and ODD = FLUX = PHASE = RIESZ
monogenic/subsref
help monogenic/subsref
m = subsref(M,S) returns -elements of a monogenic object array or -field (array) of a monogenic object (array); possible fields are EVEN = IMAGE = ATTEN = SIGNAL and ODD = FLUX = PHASE = RIESZ
example to use
cvlUseToolbox('testimages');
load image and compute
bild=imread('house.png'); params.scales=[1 2 3]; params.coeffs=[1 -2 1]; Md=monogenic(bild,'dct',params); Ms=monogenic(bild,'sqf'); params.scales=1.3; Mg=monogenic(bild,'get',params);
DCT image
imshow(Md.image,[]);

DCT flux
compimshow(Md.flux);

SQF image
imshow(Ms.image,[]);

SQG flux
compimshow(Ms.flux);

GET image
imshow(Mg.image,[]);

GET flux
compimshow(Mg.flux);

compute monogenic signal
m=monogenic(bild,'dct');
compute conjugate log
l=log(m);
reconstruct from amplitude
imshow(recon(monogenic(l.even,'dct')),[0 255]-mean(bild(:)));

reconstruct from phase
imshow(recon(conj(monogenic(conj(l.odd),'dct'))),[]);

phase II
phi=phase(m);
ori=orient(monogenic(phi));
imshow(recon(conj(monogenic(exp(-i*ori).*phi,'dct'))),[]);

DPC edge detection
M=monogenic(bild,'dct'); Ms=monogenic(bild,'dcts'); PC=M.image.*Ms.flux-Ms.image.*M.flux; [z,s,o]=zero_lin_2(real(PC),imag(PC),3); t=100; disp(['Slope threshold: ' num2str(t)]); imshow(z.*(s>t));
Slope threshold: 100

local frequency estimation
M=monogenic(bild,'sqf'); Ms=monogenic(bild,'sqfs'); omega=(M.image.*Ms.image+real(M.flux).*real(Ms.flux)+imag(M.flux).*... imag(Ms.flux))./amplit(M).^2; imshow(omega,[]),colorbar;
