Phase congruency is an illumination and contrast invariant measure of feature significance

发布时间:2011-04-21 13:25:13

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 superseded by phasecong3.m and phasecongmono.m and is only here for reference.

o 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.

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.

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.

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.

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.

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.

o 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).

o 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 image. However you should note that many surveillance systems are close to being legally blind.

Phase congruency is an illumination and contrast invariant measure of feature significance

相关推荐