![]() |
|
» rgb = imread('coins3.tif');
» gray = rgb2gray(rgb);
» imhist(gray);
Use the histogram to choose a threshold that isolates the objects of interest. The image bw is a binary image.
» bw = gray>40; » imshow(bw); » imwrite(bw,'bw.jpg');
Use the Matlab function bwlabel to label the objects in the binary image. Display the results as an indexed image (with a pseudo-color colormap).
» [L,num] = bwlabel(bw); » num num = 11 » M = im2uint8(L/num); » imwrite(M,jet,'label.jpg');
There are 11 objects, some of which are just stray pixels. Find the area of each object using the Matlab function bwarea.
» for i=1:num
area(i) = bwarea(L==i);
end
» area
area =
1.0e+003 *
Columns 1 through 7
0.0020 4.3670 0.0010 0.0010 7.0810 7.0396 7.0464
Columns 8 through 11
0.0010 0.0010 4.2916 0.0010
Find those elements whose area is large. These are the coins.
» x = find(area>5)
x =
2 5 6 7 10
» area(x)'
ans =
1.0e+003 *
4.3670
7.0810
7.0396
7.0464
4.2916
Select those objects representing the smaller coins (pennies). Mask these objects in the original grayscale image and display the result.
» M = (L==2)|(L==10); » imshow(M) » penny = im2double(gray).*M; » imshow(penny) » imwrite(penny,'penny.jpg');
Maintained by John Loomis, last updated 8 Feb 2000