blob-doh

blob_doh

skimage.feature.blob_doh(image, min_sigma=1, max_sigma=30, num_sigma=10, threshold=0.01, overlap=0.5, log_scale=False) [source]

Finds blobs in the given grayscale image.

Blobs are found using the Determinant of Hessian method [R127]. For each blob found, the method returns its coordinates and the standard deviation of the Gaussian Kernel used for the Hessian matrix whose determinant detected the blob. Determinant of Hessians is approximated using [R128].

Parameters:

image : ndarray

Input grayscale image.Blobs can either be light on dark or vice versa.

min_sigma : float, optional

The minimum standard deviation for Gaussian Kernel used to compute Hessian matrix. Keep this low to detect smaller blobs.

max_sigma : float, optional

The maximum standard deviation for Gaussian Kernel used to compute Hessian matrix. Keep this high to detect larger blobs.

num_sigma : int, optional

The number of intermediate values of standard deviations to consider between min_sigma and max_sigma.

threshold : float, optional.

The absolute lower bound for scale space maxima. Local maxima smaller than thresh are ignored. Reduce this to detect less prominent blobs.

overlap : float, optional

A value between 0 and 1. If the area of two blobs overlaps by a fraction greater than threshold, the smaller blob is eliminated.

log_scale : bool, optional

If set intermediate values of standard deviations are interpolated using a logarithmic scale to the base 10. If not, linear interpolation is used.

Returns:

A : (n, 3) ndarray

A 2d array with each row representing 3 values, (y,x,sigma) where (y,x) are coordinates of the blob and sigma is the standard deviation of the Gaussian kernel of the Hessian Matrix whose determinant detected the blob.

Notes

The radius of each blob is approximately sigma. Computation of Determinant of Hessians is independent of the standard deviation. Therefore detecting larger blobs won’t take more time. In methods line blob_dog() and blob_log() the computation of Gaussians for larger sigma takes more time. The downside is that this method can’t be used for detecting blobs of radius less than 3px due to the box filters used in the approximation of Hessian Determinant.

References

[R127] (1, 2) http://en.wikipedia.org/wiki/Blob_detection#The_determinant_of_the_Hessian
[R128] (1, 2) Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool, “SURF: Speeded Up Robust Features” ftp://ftp.vision.ee.ethz.ch/publications/articles/eth_biwi_00517.pdf

Examples

>>> from skimage import data, feature
>>> img = data.coins()
>>> feature.blob_doh(img)
array([[ 121.        ,  271.        ,   30.        ],
       [ 123.        ,   44.        ,   23.55555556],
       [ 123.        ,  205.        ,   20.33333333],
       [ 124.        ,  336.        ,   20.33333333],
       [ 126.        ,  101.        ,   20.33333333],
       [ 126.        ,  153.        ,   20.33333333],
       [ 156.        ,  302.        ,   30.        ],
       [ 185.        ,  348.        ,   30.        ],
       [ 192.        ,  212.        ,   23.55555556],
       [ 193.        ,  275.        ,   23.55555556],
       [ 195.        ,  100.        ,   23.55555556],
       [ 197.        ,   44.        ,   20.33333333],
       [ 197.        ,  153.        ,   20.33333333],
       [ 260.        ,  173.        ,   30.        ],
       [ 262.        ,  243.        ,   23.55555556],
       [ 265.        ,  113.        ,   23.55555556],
       [ 270.        ,  363.        ,   30.        ]])
doc_scikit_image
2017-01-12 17:20:19
Comments
Leave a Comment

Please login to continue.