Difference between revisions of "Image processing"

From Helpful
Redirect page
Jump to: navigation, search
m (Image analysis)
m (Redirected page to Image processing notes)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{stub}}
+
#redirect [[Image processing notes]]
 
+
==Feature detection==
+
 
+
Where features tend to include:
+
 
+
* Points -
+
 
+
* Blobs - smooth areas that won't (necessarily) be detected by point detection. Their approximate centers may also be considered interest points
+
 
+
* Edges -
+
** a relatively one-dimensional feature, though with a direction
+
 
+
* Corners - Detects things like intersections and ends of sharp lines
+
** a relatively two-dimensional kind of feature
+
 
+
* Ridges
+
 
+
In comparisons between similar images, one should keep in mind that blob-centers can become interest points, gradients can become edges, etc., and that the difference to detectors can be and/or should be fuzzy.
+
 
+
* Interest point - could be said to group the above and more
+
** preferably has a clear definition
+
** has a well-defined position
+
** preferably quite reproducible, that is, stable under relatively minor image alterations such as scale, rotation, translation, brightness.
+
** useful in their direct image context - corners, endpoints, intersections
+
 
+
* Region of interest
+
 
+
 
+
See also:
+
* http://en.wikipedia.org/wiki/Feature_detection_(computer_vision)
+
* http://en.wikipedia.org/wiki/Corner_detection
+
* http://en.wikipedia.org/wiki/Edge_detection
+
* http://en.wikipedia.org/wiki/Blob_detection
+
* http://en.wikipedia.org/wiki/Ridge_detection
+
* http://en.wikipedia.org/wiki/Interest_point_detection
+
* http://en.wikipedia.org/wiki/Region_of_interest
+
 
+
<!--
+
* http://eom.springer.de/E/e120040.htm
+
-->
+
 
+
===Edge detection===
+
<!--
+
 
+
In theory:
+
* Step edges - sudden change in signal. (often not strictly immediate because of smapling. May be smoother)
+
* impulse edges - change to a value and back - lines (of some thickness)
+
* 'roof edge' - relatively soft, difference in direction/derivative
+
 
+
Edge detector ideally
+
* localization (often )
+
* edge orientation
+
* gives edge magnitude (lets us filter the most significant)
+
 
+
 
+
In sampled raster images, there is always noise
+
-->
+
* Canny [http://en.wikipedia.org/wiki/Canny_edge_detector]
+
* Canny-Deriche [http://en.wikipedia.org/wiki/Canny_edge_detector#Conclusion]
+
* Differential [http://en.wikipedia.org/wiki/Edge_detection#Differential_edge_detection]
+
* Sobel [http://en.wikipedia.org/wiki/Sobel_operator]
+
* Prewitt [http://en.wikipedia.org/wiki/Prewitt]
+
* Roberts Cross [http://en.wikipedia.org/wiki/Roberts_Cross]
+
 
+
 
+
===Interest point / corner detection===
+
* Harris operator [http://en.wikipedia.org/wiki/Corner_detection#The_Harris_.26_Stephens_.2F_Plessey_corner_detection_algorithm]
+
* Shi and Tomasi [http://en.wikipedia.org/wiki/Corner_detection#The_Shi_and_Tomasi_corner_detection_algorithm]
+
* Level curve curvature [http://en.wikipedia.org/wiki/Corner_detection#The_level_curve_curvature_approach]
+
* SUSAN [http://en.wikipedia.org/wiki/Corner_detection#The_SUSAN_corner_detector]
+
* FAST [http://en.wikipedia.org/wiki/Corner_detection#The_FAST_feature_detector]
+
 
+
 
+
===Blob detection ===
+
* Laplacian of Gaussian (LoG)
+
* Difference of Gaussians (DoG)
+
* Determinant of Hessian (DoH)
+
* Maximally stable extremal regions
+
* PCBR
+
 
+
 
+
 
+
===Object detection===
+
 
+
Tends to refer to detecting anything more complex than a point, edge, blob, or corner.
+
Regularly by example.
+
 
+
===Unsorted===
+
Feature extraction:
+
* SIFT (Scale-Invariant Feature Transform)
+
** [http://en.wikipedia.org/wiki/Scale-invariant_feature_transform]
+
 
+
* SURF (Speeded Up Robust Features)
+
** faster than SIFT, performs similarly
+
** http://en.wikipedia.org/wiki/SURF
+
 
+
* GLOH (Gradient Location and Orientation Histogram)
+
** http://en.wikipedia.org/wiki/GLOH
+
 
+
* MSER (Maximally Stable Extremal Regions)
+
** (primarily blob detection)
+
** http://en.wikipedia.org/wiki/Maximally_stable_extremal_regions
+
 
+
* LESH (Local Energy based Shape Histogram)
+
** http://en.wikipedia.org/wiki/LESH
+
 
+
* Scale-space
+
** http://en.wikipedia.org/wiki/Scale-space
+
 
+
Unsorted
+
* Hough transform
+
* Structure tensor
+
* SPIN, RIFT (but SIFT usually works better{{verify}})
+
 
+
 
+
==(Primarily) supporting transforms==
+
 
+
 
+
===Morphological image processing===
+
 
+
https://www.google.com/search?hl=en&q=morphological%20image%20processing
+
 
+
http://www.dspguide.com/ch25/4.htm
+
 
+
 
+
===Focusing on details or overall image===
+
 
+
====bandpass, blur, median====
+
 
+
For color analysis we often want to focus on the larger blobs and ignore small details.
+
(though in some cases they can fall away in statistics anyway).
+
 
+
 
+
====Variance image====
+
Each pixel defined by variance in nearby block of pixels
+
 
+
<!--
+
Good at finding sharp details and ignoring gradients
+
-->
+
 
+
http://siddhantahuja.wordpress.com/2009/06/08/compute-variance-map-of-an-image/
+
 
+
 
+
 
+
===Convolution===
+
 
+
<!--
+
Block convolution -
+
 
+
 
+
Circular convolution
+
-->
+
 
+
 
+
===Fourier transform===
+
 
+
<!--
+
Often 2D FFT
+
 
+
Sensitive to frequency content, so not useful in contexts where that is easily affected. For example, a resize down is a lowpass (destroys higher-frequency content - not very good for comparison).
+
A size normalization before the FFT might lessen that.
+
 
+
Can theoretically tell:
+
* overall complexity
+
** line art will show usually show more high frequencies than photos
+
** ...but you do some of that with simpler pixel statistics too
+
 
+
* directionality
+
** content at right angles? Landscapes and images of man-made things tend to have content at 90 degrees - horizontal and vertical, unless tilted
+
 
+
 
+
Also useful for
+
* high-pass filter
+
* low-pass filter
+
* band-pass filter
+
...to within some filtering error
+
-->
+
 
+
 
+
 
+
==Other useful processing==
+
 
+
===Near-duplicate detection, image similarity, image fingerprinting===
+
 
+
(Near-)duplicate detection is generally defined as detecting mild variations coming from one or more of:
+
* Common image/video editing operations:
+
** Crops - digital crops (often mostly of the less interesting areas) often up to half of the original
+
** Resizes - different resolution variations of the same image (includes resampling inaccuracies)
+
** Aspect ratio changes - particularly on TV material
+
** Mild color changes - contrast changes, implied changes from color space conversion
+
 
+
And, in some applications:
+
* Camera angles - different cameras taking images of the same thing (consider TV coverage from various networks). Also images from the same camera a short time apart
+
 
+
* Camera settings - such as color, brightness, exposure.
+
 
+
* Added borders
+
 
+
* mild noise
+
 
+
 
+
It ''can'' be a simple task - at least, much simpler than sub-image detection, more arbitrary image comparison, feature detection.
+
 
+
When you're, say, only interested in removing some almost duplicate wallpapers in your selection you deal with little more than rescales and crops, and perhaps some color changes.
+
These can be covered with relatively simple methods.
+
 
+
<!--
+
For example, dividing into an n-by-n grid (for n in the order of magnitude from 6 to 30 or so),
+
making a signature from the average color from each block, and making image distance by piece-wise subtraction.
+
 
+
 
+
 
+
Possible pre-filtering
+
 
+
* A lowpass filter is a fairly natural choice for overall blur-style pixel comparison, though which loses the ability to compare texture or details.
+
 
+
* Quick shift - because it eliminates local texture, and can be used as a first step in superpixelation, determining (areas with) major contrasts, and such.
+
 
+
Pre-filtering should not be done too fuzzily - everything looks like false positives because your comparison is actually pretty arbitrary.
+
For fuzzier comparison you often want algorithms based more on features.
+
 
+
 
+
Consider:
+
* exact raster copies
+
* resized images
+
* cropped images (mild or not)
+
* rotations
+
* Minor alterations (e.g. image filtering)
+
* images as part of other images (breaks global-comparison techniques, or at least makes them a lot slow because they usually have to resort to brute-force look-everywhere)
+
 
+
Possible problems:
+
* hard-contrast images (histogram-based methods are somewhat fragile, resampling may change lines and such more than you wish)
+
 
+
* added borders
+
 
+
* signature spam
+
 
+
 
+
Features:
+
* basic statistics on things like color variation
+
 
+
 
+
Aspects of approaches
+
* comparing resolution-decimated versions (as a simple filter of which images to consider for more exact comparison)
+
* comparing color-decimated versions, possibly in more perceptual color spaces (to allow for resistance to image filtering)
+
* blurring as a low-pass filer (to avoid being overly sensitive to contrast variation, moire)
+
* Use of [[SIFT]] (to be resistant co combinations, focus on parts)
+
 
+
-->
+
 
+
 
+
 
+
See also:
+
* http://www.ee.columbia.edu/ln/dvmm/researchProjects/FeatureExtraction/NearDuplicateByParts/INDDetection.html
+

Latest revision as of 12:53, 11 July 2013