You are on page 1of 15

Peter's Functions for Computer Vision http://www.csse.uwa.edu.

au/~pk/research/matlabfns/

MATLAB and Octave Functions


for Computer Vision and Image
Processing

Peter Kovesi
Centre for Exploration Targeting
School of Earth and Environment
The University of Western Australia

This site was developed while I was with the

School of Computer Science &


Software Engineering
The University of Western Australia
I continue to collaborate with the school and I thank
them for continuing to host this site.

Index to Code Sections The complete set of these functions is


available as a zip file MatlabFns.zip
Feature Detection via Phase
How to cite this site
Congruency
MIT License
Spatial Feature Detection
Notes on using Octave -
Integral Images
almost all of these functions run
Non-Maxima Suppression
under Octave. With the release
and Hysteresis Thresholding
of Octave 3 you have a very
Edge Linking and Line
viable alternative to MATLAB.
Segment Fitting
Can't find what you want here?
Test Grating for Edge
Have a look at
Detection
Other highly recommended
Image Denoising
Computer Vision software
Surface Normals to Surfaces
sites
Scalogram Calculation
Anisotropic diffusion MATLAB/Octave compatibility of
Grey Scale Transformation individual function is indicated as
follows
and Enhancement
Frequency Domain Runs under MATLAB and
Transformations

1 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Octave.
Only runs under MATLAB.
Functions Supporting Not tested under Octave (yet).
Projective Geometry
Feature Matching I receive so many mail messages
Model Fitting and Robust regarding this site that I have difficulty
Estimation responding to them all. I will endeavor
to respond to mail that directly
Fingerprint Enhancement
concerns the use of individual
Interesting Synthetic Images functions. However, please note I do
ASCII Image Generation not have the time to provide an on-line
Rotation Transforms vision problem solving service!
Image Display, Image Writing Please report any bugs and/or suggest
and Miscellaneous enhancements to

Cheers,
Peter Kovesi

Feature Detection via Phase Congruency

Phase congruency is an illumination and contrast invariant measure of feature


significance. Unlike gradient based feature detectors, which can only detect step
features, phase congruency correctly detects features at all kind of phase angle,
and not just step features having a phase angle of 0 or 180 degrees.

phasecongmono.m This function computes phase congruency via monogenic


filters. It has excellent speed and much reduced memory requirements compared to
the other phase congruency functions below. However you may prefer the output
from phasecong3's oriented filters.
phasecong3.m This function supersedes phasecong2.m and phasecong.m being
faster and requiring less memory.

Deprecated: phasecong.m Original code for calculating phase congruency


in an image. This function also returns a feature type image. Note this
function is superseded by phasecong2.m and phasecong3.m and is only here
for reference.
Deprecated: phasecong2.m Phase congruency code that combines edge
and corner detection, and provides better localization. Note this function is

2 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

superseded by phasecong3.m and phasecongmono.m and is only here for


reference.

dispfeat.m This function provides visualisation and statistics of the different


feature types found in an image by phasecong. Typically you will find a broad
distribution of all feature types between step edges and lines. This function needs
edgelink.m (see below).
odot.m Demonstrates the actions of the 'Odot' and 'Oslash' operators on a 1D
signal. These operators allow one to decompose and combine signals in a way that
is consistent with the Local Energy model of feature perception.
spatialgabor.m applies a single oriented Gabor filter to an image.

phase symmetry
image
phasesym.m Code for calculating phase symmetry. This can be used as a line and
blob detector. Phase symmetry is an illumination and contrast invariant measure of
symmetry in an image. (A bright circle is not more 'symmetric' than a grey circle as
can be the case with some other measures!). (Updated May 2009)
phasesymmono.m This function computes phase symmetry via monogenic filters.
Has excellent speed and much reduced memory requirements compared to
phasesym.m However you may prefer the output from phasesym's oriented filters.
gaborconvolve.m Code for convolving an image with a bank of log-Gabor filters. A
pre-processing step for texture analysis, feature detection and classification, etc.
plotgaborfilters.m A function for plotting log-Gabor filters. This function is useful for
seeing what effect the various parameter settings have on the formation of a
log-Gabor filter bank used in the functions above.
monofilt.m An implementation of Felsberg's monogenic filters. This function applies
a bank of monogenic filters to an image to obtain the 2D analytic signal over a
number of scales. As in gaborconvolve this can be used as a pre-processing step
for texture analysis, feature detection and classification, etc.
An explanation of the implementation of convolution with log-Gabor filters used in
the functions above.

References:

Peter Kovesi, "Symmetry and Asymmetry From Local Phase". AI'97, Tenth
Australian Joint Conference on Artificial Intelligence. 2 - 4 December 1997.
Proceedings - Poster Papers. pp 185-190.
Peter Kovesi, "Image Features From Phase Congruency". Videre: A Journal of
Computer Vision Research. MIT Press. Volume 1, Number 3, Summer 1999.
Peter Kovesi, "Edges Are Not Just Steps". Proceedings of ACCV2002 The Fifth

3 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Asian Conference on Computer Vision, Melbourne Jan 22-25, 2002. pp 822-827.


Peter Kovesi, "Phase Congruency Detects Corners and Edges". The Australian
Pattern Recognition Society Conference: DICTA 2003. December 2003. Sydney.
pp 309-318.

Spatial Feature Detection

canny.m Canny edge detector.


harris.m Harris corner detector.
fastradial.m An implementation of Loy and Zelinski's fast radial feature detector.
gaussfilt.m Wrapper function for convenient Gaussian filtering.
derivative5.m computes 1st and 2nd derivatives of an image using the 5-tap
coefficients given by Farid and Simoncelli. Use this function instead of MATLAB's
GRADIENT function for much more accurate results.
derivative7.m computes derivatives using the 7-tap coefficients given by Farid and
Simoncelli.
regionadjacency.m Computes adjacency matrix for an image of labeled regions,
as might be produced by a graph cut algorithm.
cleanupregions.m Cleans up small regions in a segmented image.
renumberregions.m Renumbers regions in a labeled image so that they range
from 1:maxRegions.

Reference:

Scanned images of my photocopy of Harris and Stephens' paper 'A Combined


Corner and Edge Detector'.

Integral Images

integralimage.m computes integral image of an image.


integralfilter.m performs filtering using an integral image.
intfilttranspose.m transposes an integral image filter specification.
integaverage.m performs averaging filtering using an integral image. Computation
cost is independent of averaging filter size.
integgaussfilt.m This function approximates Gaussian filtering by repeatedly
applying integaverag.m . This allows smoothing at a very low computational cost
that is independent of the Gaussian size.
solveinteg.m This function is used by integgausfilt.m to solve for the multiple
averaging filter widths needed to approximate a Gaussian of desired standard
deviation.

Reference:

Tech report describing high speed approximate Gaussian filtering via integral
images.

4 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Non-Maxima Suppression and Hysteresis Thresholding

nonmaxsup.m Code for performing non-maxima suppression for edge images.


nonmaxsuppts.m Code for performing non-maxima suppression and thresholding
of points generated by a feature/corner detector. It optionally returns sub-pixel
feature locations.
subpix2d.m Sub-pixel locations in a 2D image.
subpix3d.m Sub-pixel locations in a 3D volume or in 2D + scale space data.
hysthresh.m code for performing hysteresis thresholding.
smoothorient.m applies smoothing to an orientation field which can be useful
before applying nonmaximal suppression.
adaptivethresh.m an implementation of Wellner's adaptive thresholding method.

Edge Linking and Line Segment Fitting

image edges labeled edges fitted line segments

edgelink.m edge linking function that forms lists of connected edge points from a
binary edge image. (Needs findendsjunctions and cleanedgelist below).
drawedgelist.m plots out a set of edge lists generated by edgelink or lineseg.
edgelist2image.m transfers edgelist data back into a 2D image array.
lineseg.m forms straight line segments fitted with a specified tolerance to the lists
of connected edge points.
maxlinedev.m is also used by lineseg.m to calculate deviations of the edge lists
from the fitted segments.
findendsjunctions.m finds line junctions and endings in a line/edge image.
cleanedgelist.m cleans up a set of edge lists generated by edgelink or lineseg so
that isolated edges and spurs that are shorter than a minimum length are removed.
Example of using these functions above.

Test Grating for Edge Detection

5 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Colour coded for feature


Test image Canny edge image Phase congruency
type

step2line.m Generates a test image where the feature type changes from a step
edge to a line feature from top to bottom, while retaining perfect phase congruency.
This test image indicates the importance of phase congruency irrespective of the
angle at which congruency occurs at and, up to a point, irrespective of the rate at
which the amplitude spectrum decays with frequency. A gradient based edge
detector produces a double response for all features that have congruence of
phase at angles other than zero (towards the bottom of the test image). The phase
congruency detector marks features with a single response. The colour coded
image was generated by dispfeat.m
circsine.m Generates a test image consisting of a circular sine wave grating. Can
also be used to construct circular phase congruent patterns.
starsine.m Generates a test image consisting of a star like sine wave grating
radiating out from the centre. As with circsine this function can be used to construct
star like phase congruent patterns.

Image Denoising

noisecomp.m Code for denoising images. This code differs from standard wavelet
denoising techniques in that it uses non-orthogonal wavelets, and unlike existing
techniques, ensures that phase information is preserved in the image. Phase
information is of crucial importance to human visual perception. Also, this code
does have an effective way of determining threshold levels automatically.

See the example below, under grey scale transformation and enhancement, for an
example of the use of this function.

Reference:

Peter Kovesi, "Phase Preserving Denoising of Images". The Australian Pattern

6 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Recognition Society Conference: DICTA'99. December 1999. Perth WA. pp


212-217.

Surface Normals to Surfaces

Surface Normals Surface Reconstruction

shapeletsurf.m Function reconstructs an estimate of a surface from its surface


normals by correlating the surface normals with that those of a bank of shapelet
basis functions. The correlation results are summed to produce the reconstruction.
The sumation of shapelet basis functions results in an implicit integration of the
surface while enforcing surface continuity.

Note that the reconstruction is only valid up to a scale factor (which can be
corrected for). However the reconstruction process is very robust to noise and to
missing data values. Reconstructions (up to positive/negative shape ambiguity) are
possible where there is an ambiguity of pi in tilt values. Low quality reconstructions
are also possible with just slant, or just tilt data alone. However, if you have full
gradient information you are better off with the Frankot Chellappa algorithm below.

frankotchellappa.m An implementation of Frankot and Chellappa's algorithm for


constructing an integrable surface from gradient information. If you have full gradient
information in x and y this is probably the best algorithm to use. It is very simple,
very fast and highly robust to noise. If you have surface normal information in the
form of slant and tilt, and you have an ambiguity of pi in your tilt data, or only have
slant, then try using shapeltsurf.m above.
grad2slanttilt.m Converts gradient values over a surface to slant and tilt angles.
slanttilt2grad.m Converts slant and tilt angles over a surface to gradients.
needleplotgrad.m Generates a needle plot given surface gradients over a surface.
needleplotst.m Generates a needle plot given slant and tilt values over a surface.
testp.m Generates a synthetic test surface along with its surface normals for
testing shapeletsurf.

Reference:

Peter Kovesi, "Shapelets Correlated with Surface Normals Produce Surfaces".


10th IEEE International Conference on Computer Vision. Beijing. pp 994-1001.
2005
PowerPoint Slides
An example of how much 3D shape you can get from very minimal surface normal
information.

7 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Scalogram Calculation

scalogram.m Function to calculate the phase and amplitude scalograms of a 1D


signal. The analysis is done using quadrature pairs of log Gabor wavelets.

Anisotropic diffusion

anisodiff.m Function to perform anisotropic diffusion of an image following Perona


and Malik's algorithm. This process smoothes regions while preserving, and
enhancing, the contrast at sharp intensity gradients.

Grey Scale Transformation and Enhancement

extractfields.m separates fields from a video frame, and optionally interpolates


intermediate lines.
interpfields.m interpolates lines on a field extracted from a video frame.
normalise.m rescales image values to 0-1.
adjcontrast.m adjusts image contrast using sigmoid function.
adjgamma.m adjusts image gamma.
greytrans.m allows you to interactively remap intensity values in a colour or
greyscale image via a mapping function defined by a series of spline points. A
feeble attempt at replicating xv's intensity mapping tool. It is not as fast but it does
operate on floating point images allowing you to better preserve image fidelity.
(Needs remapim.m).
remapim.m is a non-interactive version of greytrans that allows you to apply an
intensity mapping to a colour or greyscale image using a mapping function
determined experimentally with greytrans. Useful if you want to apply the same
mapping function to a sequence of images.
histtruncate.m truncates ends of an image histogram. Useful for enhancing images
with outlying values.

Example of using some of these functions above to enhance a video surveillance

8 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

image. However you should note that many surveillance systems are close to being
legally blind.
See Video Surveillance: Legally Blind? DICTA 2009 Melbourne.

Frequency Domain Transformations

lowpassfilter.m constructs low-pass Butterworth filter.


highpassfilter.m constructs high-pass Butterworth filter.
highboostfilter.m constructs high-boost Butterworth filter.
bandpassfilter.m constructs band-pass Butterworth filter.
homomorphic.m performs homomorphic filtering on an image. One of my favourite
image enhancement techniques. (needs histtruncate.m and normalise.m)
psf.m generates a variety of point-spread functions. This function can be useful
when manually specifying point-spread functions for Wiener filtering or with
deconvolution functions such as the Richardson-Lucy algorithm (see the MATLAB
image toolbox function deconvlucy.m).
psf2.m is identical to psf, it just has a different way of specifying the function shape
which may be more convenient for some applications.
imspect.m plots image amplitude spectrum averaged over all orientations.
freqcomp.m demonstrates image reconstruction from its Fourier components.

Functions Supporting Projective Geometry

image of beach rectified beach

homography1d.m computes the 2x2 1D homography of 3 or more points along a


line.
homography2d.m computes the 3x3 2D homography of 4 or more points in a
plane. This code follows the normalised direct linear transformation algorithm given
by Hartley and Zisserman.
fundmatrix.m computes the fundamental matrix from 8 or more matching points in a
stereo pair of images using the normalised 8 point algorithm.
affinefundmatrix.m computes the affine fundamental matrix from 4 or more
matching points in a stereo pair of images.
fundfromcameras.m computes fundamental matrix given two camera projection
matrices.
decomposecamera.m decomposes camera projection matrix into intrinsic and
extrinsic parameters.
rq3.m RQ decomposition of 3 x 3 matrix.

9 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

normalise2dpts.m translates and normalises a set of 2D homogeneous points so


that their centroid is at the origin and their mean distance from the origin is sqrt(2).
This is used to improve the conditioning of any equations used to solve
homographies, fundamental matrices etc.
hnormalise.m normalises an array of homogeneous coordinates so that their scale
parameter is 1. Points at infinity are unchanged.
makehomogeneous.m converts an N x npts array of inhomogeneous points to
homogeneous points with scale 1.
makeinhomogeneous.m normalises an N x npts array of homogeneous points to
a scale of 1 and returns the inhomogeneous coordinates.
imTrans.m applies a homogeneous transform to an image. The output image origin
and size is adjusted to contain the transformed image. (Note I wrote this code
before version 3 of the Image Processing toolbox was released with the function
IMTRANSFORM. You are probably better off using MATLAB's IMTRANSFORM)
imTransD.m applies a homogeneous transform to an image. No origin shift is
applied to the transformed image. I use this function for registering images etc.
digiplane.m allows you to digitise and transform points within a planar region in an
image.
equalAngleConstraint.m Affine transform constraints given two equal angles.
knownAngleConstraint.m Affine transform constraints given a known angle.
lengthRatioConstraint Affine transform constraints given a length ratio.
circleintersect.m Finds intersection of two circles. Use this function to solve for
affine transformation constraints.
circle.m Draws a circle.
hcross.m Homogeneous cross product, result normalised to s = 1.
hline.m Plot 2D lines defined in homogeneous coordinates.
homoTrans 2D homogeneous transformation of points/lines.
plotPoint.m Plots point with specified mark and optional text label.

If you are using these functions above you should look at Andrew Zisserman's
MATLAB Functions for Multiple View Geometry
Also, you must listen to The Fundamental Matrix Song by Daniel Wedge.

Feature Matching

matchbycorrelation.m generates putative matches between previously detected


feature points in two images by looking for points that are maximally correlated with
each other within windows surrounding each point. Only points that correlate most
strongly with each other in both directions are returned. This is a simple-minded N2
comparison.
matchbymonogenicphase.m is similar to matchbycorrelation, but instead
matches on oriented phase values rather than greyscale values. This matcher
performs rather well relative to normalised greyscale correlation. Typically there are
more putative matches found and fewer outliers. There is a greater computational
cost in the pre-filtering stage but potentially the matching stage is much faster as

10 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

each pixel is effectively encoded with only 3 bits. (Though this potential speed is not
realized in this implementation). See testfund below to see an example of the use
of this function.

Model Fitting and Robust Estimation

Putative matches obtained Inlying matches consistent


by matchbycorrelation.m with fundamental matrix

ransac.m a general purpose implementation of the RANSAC algorithm.


ransacfithomography.m robustly fits a homography to a set of putatively matched
image points.
ransacfitfundmatrix.m robustly fits a fundamental matrix to a set of putatively
matched image points. This function uses an 8 point fundamental matrix solution.
ransacfitfundmatrix7.m robustly fits a fundamental matrix to a set of putatively
matched image points. This function requires Andrew Zisserman's 7 point
fundamental matrix code available from: MATLAB Functions for Multiple View
Geometry
ransacfitaffinefund.m robustly fits an affine fundamental matrix to a set of
putatively matched image points.
ransacfitplane.m robustly fits a plane to 3D data points.
ransacfitline.m robustly fits a line to 3D data points.
iscolinear.m tests if 3 points are colinear, used by ransacfitplane and
ransacfithomography.
fitline.m least squares fit of a line to 2D data points.
fitline3d.m least squares fit of a line to 3D data points. Contributed by Felix
Duvallet.
fitplane.m least squares fit of a plane to 3D data points.
testfitplane example of using ransacfitplane.m
testfitline example of using ransacfitline.m
testfund example of using ransacfitfundmatrix.m
testhomog example of using ransacfithoography.m
randomsample a basic replacement for randsample to be used with ransac.m
should you not have the statistics toolbox, or are using Octave.
Example of using these functions above to find the fundamental matrix.

Fingerprint Enhancement

11 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

ridgesegment.m identifies ridge-like regions of a fingerprint image. It also


normalises the intensity values of the image.
ridgeorient.m estimates the local orientation of ridges in a fingerprint.
plotridgeorient.m plots ridge orientations calculated by ridgeorient.
ridgefreq.m estimates the local ridge frequency across a fingerprint image.
freqest.m estimates the ridge frequency within a small block of an image. This is
used by ridgefreq.
ridgefilter.m enhances a fingerprint image using oriented filters.
Example of using these functions above.

Interesting Synthetic Images

noiseonf.m generates noise images with specified amplitude spectra. One can
create pleasing cloud pattern images this way.
cloud9.m creates a movie sequence of noise images with specified amplitude
spectra. Very relaxing.

derespolar.m Generates deresolved images in polar coordinates.


polartrans.m Generates a polar transformation of an image. A linear or logarithmic
radius transformation can be specified.

12 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

ASCII Image Generation

matscii.m Function to generate ASCII images from grey scale images. A bit of retro
fun, but constant width fonts are getting hard to come by these days...

Homogeneous Transforms

plotframe.m plots a coordinate frame specified by a homogeneous transform.


trans.m homogeneous tranlation matrix.
rotx.m homogeneous matrix for rotation about x-axis.
roty.m homogeneous matrix for rotation about y-axis.
rotz.m homogeneous matrix for rotation about z-axis.
homotrans.m homogeneous transformation of points/lines
invht.m optimized inverse of homogeneous transformation matrix
inveuler.m solves for euler angles given a homogeneous transform.
invrpy.m solves for roll, pitch, yaw angles given a homogeneous transform.
dhtrans.m calculates the 4x4 homogeneous Denavit Hartenberg matrix given link
parameters of joint angle, length, joint offset, and twist.

Quaternions

newquaternion.m construct quaternion from specified angle and axis.


matrix2quaternion.m converts 4x4 homogeneous rotation matrix to quaternion
quaternion2matrix.m converts quaternion to a 4x4 homogeneous transformation
matrix.
quaternionrotate.m uses quaternion to rotate vectors.
quaternionproduct.m computes quaternion product.
quaternionconjugate.m computes quaternion conjugate.
vector2quaternion.m embeds a 3-vector in a quaternion.

Angle-Axis Descriptors

newangleaxis.m constructs angle-axis descriptor from specified angle and axis.


matrix2angleaxis.m converts homogeneous rotation matrix to angle-axis
description
angleaxis2matrix.m converts angle-axis descriptor to 4x4 homogeneous
transformation matrix.
angleaxisrotate.m uses angle axis descriptor to rotate vectors
normaliseangleaxis.m normalises angle-axis descriptor so that the angle has a

13 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

maximum magnitude of pi.

Image Display, Image Writing and Miscellaneous

findimage.m Displays a file dialog box to allow you to find and load your image
interactively. Useful when you have forgotten the name of your image, or can't be
bothered typing it out.
show.m This function displays an image, automatically setting the colour map to
grey if it is a 2D image, or leaving it as colour otherwise, and setting the axes to be
'equal'. The image is also displayed as 'TrueSize', that is, pixels on the screen
match pixels in the image. Finally a title corresponding to the image variable name
is added.
showfft.m displays the amplitude spectrum of an fft.
showlogfft.m displays the log amplitude spectrum of an fft.
showsurf.m This function wraps up the commands I usually use to display a
surface. The surface is displayed using SURFL with interpolated shading, in my
favourite colormap of 'copper', with rotate3d on, and axis vis3d set.
togglefigs.m provides a convenient means of toggling the display of multiple
figures. Handy for comparing images and plots.
imwritesc.m This function combines image rescaling and writing into the one
function. If the image type is double image values are rescaled to the range 0-1
so that no overflow occurs when writing 8-bit intensity values. The image format to
use is determined by MATLAB from the file ending. If the image type is of uint8 no
rescaling is performed.
matprint.m This function prints out a matrix using a specified C style format string.
Often you find that MATLAB's default number formats are not what you want...
digipts.m Function to digitise points in an image. This function uses the cross-hair
cursor provided by GINPUT. I find this is much more useable than the cursor used
by IMPIXEL. In addition each location digitised is marked with a red '+'.
impad Pads the boundary of an image with zeros.
imtrim Trims the boundary of an image (unpads it)
imsetborder Sets border pixels of an image to a specified value.
removenan Replaces NaN values in a matrix with a specified default value. Useful
when you want to prevent NaNs from contaminating and destroying some operation
on an array, for example, an FFT.
fillnan Replaces NaN values in a matrix with the value in the closest non-Nan pixel.
implace.m Function to place an image at a specified location within a larger image.
cubicroots.m computes the real roots of a cubic.
rgb2nrgb.m RGB to normalised RGB colour conversion.
rgb2lab.m RGB to L*a*b* colour conversion.
weightedhistc.m basic equivalent to MATLAB's HISTC function for weighted data.

Geometric shapes

icosahedron.m generates the vertices, adjacency graph and face list of an

14 of 15 3/5/2011 10:25 PM
Peter's Functions for Computer Vision http://www.csse.uwa.edu.au/~pk/research/matlabfns/

icosahedron.
geodome.m generates the vertices, adjacency graph and face list of a geodesic
sphere. Apart from looking cool the vertices, or face centres, of a geodesic sphere
can be useful for defining the bin centres of a 3D orientation histogram.
gplot3d.m a 3D version of MATLAB's gplot function.
drawfaces.m draws triangular faces defined by a set of vertices and a
corresponding face vertex list.
superquad.m generates parametric surfaces of superquadratics.
supertorus.m generates parametric surfaces of a supertorus.

String handling convenience functions

strstartswith.m tests if a string starts with a specified substring.


strendswith.m tests if a string ends with a specified substring.
namenpath.m returns filename and its path from a full filename that may include a
directory path
basename.m trims off the suffix ending from a filename.
pathlist.m produces a cell array of directories along a directory path

15 of 15 3/5/2011 10:25 PM

You might also like