Next: Particles, Previous: Texture, Up: Image Processing [Contents][Index]
The Guile-CV procedures and methods related to image features.
Returns a list of features, one list for each labeled object - including the backgroud - in ascending order.
Notes: (a) image can either be an RGB or a GRAY image; (b) l-image is the ‘corresponding’ labeled image; (c) when used, the #:n-label optional keyword argument must be total number of label values used in l-image, as returned by im-label and im-label-all.
The GRAY feature list values are:
area
The labeled object area in pixel
left top right bottom
The coordinates of the ‘bounding box’ labeled object16
mean-x mean-y
Also sometimes called the ‘centroid’, these are the average of the x and y coordinates of all of the pixels in the labeled object. These two coordinate values are floating points, representing the ‘mathematical position’ of the mean x and y values of the labeled object
min max mean std-dev
The minimum, maximum, mean and standard gray deviaton labeled object values
major-ev-x major-ev-y minor-ev-x minor-ev-y
Respectively the major and minor eigen vectors
x
andy
normalized coordinates17:(= (sqrt (+ (expt x 2) (expt y 2))) 1)
major-axis minor-axis
Respectively the major and minor eigen values, optimized so that they actually correspond to major and minor
radius
of the ellipse covering the samearea
as the particle itselfangle
The angle of the major eigen vector axis, in
degrees
in the trigonometirc circle reference systemcenter-mass-x center-mass-y
The center of mass
x
andy
coordinatesperimeter
The labeled object perimeter in pixels
skewness kurtosis
Respectively the skewness and the kurtosis of the labeled object
circularity aspect-ratio roundness
Respectively the circularity
(/ (* 4 %pi area) (expt perimeter 2))
, the aspect ratio(/ major-axis minor-axis)
and the roundness(/ minor-axis major-axis)
of the labeled object
The RGB feature list values are:
area
The labeled object area in pixel
left top right bottom
The coordinates of the labeled object (the corresponding GRAY feature footnote applies here too of course)
mean-x mean-y
Also sometimes called the ‘centroid’, these are the average of the x and y coordinates of all of the (red green blue) pixels in the labeled object. These two coordinate values are floating points, representing the ‘mathematical position’ of the mean x and y values of tha labeled object
min-r min-g min-b max-r max-g max-b mean-r mean-g mean-b std-dev-r std-dev-g std-dev-b
The minimum, maximum, mean and standard deviaton labeled object values of the red, green and blue channels
major-axis minor-axis
Respectively the major and minor eigen values, optimized so that they actually correspond to major and minor
radius
of the ellipse covering the samearea
as the particle itselfangle
The angle of the major eigen vector axis, in
degrees
in the trigonometirc circle reference systemcenter-mass-x center-mass-y
The center of mass
x
andy
coordinatesperimeter
The labeled object perimeter in pixels
skewness-r skewness-g skewness-b kurtosis-r kurtosis-g kurtosis-b
Respectively the skewness and the kurtosis labeled object values of the red, green and blue channels
circularity aspect-ratio roundness
Respectively the circularity
(/ (* 4 %pi area) (expt perimeter 2))
, the aspect ratio(/ major-axis minor-axis)
and the roundness(/ minor-axis major-axis)
of the labeled object
Though we did not make it public, Guile-CV has an internal feature display procedure that you might be interested to (re)use, so here is an example of a GRAY feature list display:
scheme@(guile-user)> ,use (cv) scheme@(guile-user)> (im-load "pp-17-bf.png") $2 = (85 95 3 (#f32(0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 …) …)) scheme@(guile-user)> (im-rgb->gray $2) $3 = (85 95 1 (#f32(0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 # …))) $4 = (0.0 251.0 128.3132714138286 8075) scheme@(guile-user)> (im-threshold $3 136) $5 = (85 95 1 (#f32(0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 # …))) scheme@(guile-user)> (im-label $5) $6 = (85 95 1 (#f32(0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 # …))) $7 = 2 scheme@(guile-user)> (im-features $2 $6) $8 = ((3782 0 0 84 94 43.19196319580078 45.657588958740234 0.0 # …) …) scheme@(guile-user)> ((@@ (cv features) f-display) (match $8 ((bg a) a))) area : 4293 (pixels) left top right bottom : 0 0 84 94 mean-x mean-y : 40.94992 48.18262 min (red, green, blue) : 137.00000 136.00000 135.00000 max (red, green, blue) : 255.00000 250.00000 250.00000 mean (red, green, blue) : 236.13417 232.84999 232.84207 std. dev. (red, green, blue) : 20.23275 19.41402 19.84854 major ev x, y : 0.22202 0.97504 minor ev x, y : 0.97504 -0.22202 major, minor axis : 39.86419 34.27900 (radius) angle : 77.17241 (degrees) center of mass x, y : 40.73749 48.28692 perimeter : 367.74725 skewness (red, green, blue) : -2.90164 -2.99066 -2.91777 kurtosis (red, green, blue) : 8.53371 9.05482 8.61162 circularity : 0.39891 aspect ratio : 1.16293 roundness : 0.85989
As we mentioned above, f-diplay
is defined in the (cv
features)
module, but it is not exported: in Guile, calling none
exported procedure (which should not be ‘abused’) is done using the
syntax @@ module-name binding-name
, which in this example
translates to (@@ (cv features) f-display)
.
Note
that when passed to im-crop, right
and bottom
must
be increased by 1: (im-crop image left top (+ right 1) (+ bottom
1))
.
Note that Vigra
calculates and returns these values in the image coordinate system,
where the y-axis
is ‘flipped’ compared to the trigonometric
circle ‘traditional’ representation. Guile-CV however transforms
and returns these values using the trigonometric circle reference
system.
Next: Particles, Previous: Texture, Up: Image Processing [Contents][Index]