File Exchange Pick of the Week

Segmenting Coins…a Tutorial on Blob Analysis 6

Posted by Brett Shoelson,

Many of us who have used or participated in comp.soft-sys.matlab over the years--particularly those of us who have had occasion to solve image processing problems--have come to appreciate Image Analyst's thoughts on relevant matters.

Recently, Image Analyst had occasion to share his first file through the File Exchange--a demo tutorial on blob analysis. In a nice, well-documented bit of code, IA steps us through an approach to segmenting, and determining the properties of, some objects in an image. In this case, the image is a sample ('coins.png') that ships with the Image Processing Toolbox.

IA's code shows how one might segment objects of interest (coins) from the background, then use regionprops (my favorite IPT function!) to differentiate nickels from dimes, and dull dimes from shiny ones:

This is a nice demo--very informative, and certainly worth a read. Two thoughts: 1) IA's code uses bwlabel to calculate a connected components matrix of the image as a precursor to calling regionprops. As of R2009a, the new IPT function bwconncomp replaces bwlabel as the preferred approach; it uses significantly less memory, and can be markedly faster! Also, 2) IA shows how one can extract the specific pixels (PixelIdxList) associated with each object of interest, then calculate statistics on those pixel intensities to differentiate shiny from dull objects. Note that the fourth syntax of regionprops in the documentation enables one to avoid this step, and instead to operate directly on the original intensity image. Using this syntax, one can calculate directly the MIN, MAX, or MEAN intensitities--or even the weighted centroids-- of each blob in the image.

Nice work, Image Analyst!


Get the MATLAB code

Published with MATLAB® 7.9

6 CommentsOldest to Newest

Puneet, for overlapping blobs, you might have more success with a watershed segmentation approach. Do a docsearch for “watershed,” and you’ll find the watershed transform, and several examples and supporting docs that will help you.

How can we select the threshold automatically?

It should work in images where the background may be slightly textured and the contrast between the coins and background is not necessarily very high.

These postings are the author's and don't necessarily represent the opinions of MathWorks.