MATLAB: Introducing a border/outline to objects in an image.

border outlinesImage Processing Toolboxindexing

Hi everyone,
I have a question about how to introduce an outline to a mask. Please check the original source image at: http://i39.tinypic.com/ap78s9.jpg. I would like the borders of the various objects in the mask to be outlined and each object identified as shown in: http://i39.tinypic.com/e839yt.jpg, both with an outline and an index number (so that the index number could be used to identify, and cross-refer the results generated by regionprops). This specific example was generated using ImageJ.
Any help would be much appreciated.
Thanks and have a good weekend.

Best Answer

Irgb = imread('ap78s9.jpg');
Igray = rgb2gray(Irgb);
Ibw = im2bw(Igray,graythresh(Igray));
Ifill = imfill(Ibw,'holes');
B = bwboundaries(Ifill);
stat = regionprops(Ifill,'Centroid');
imshow(~Ibw); hold on
for k = 1 : length(B)
b = B{k};
c = stat(k).Centroid;
plot(b(:,2),b(:,1),'g','linewidth',2);
text(c(1),c(2),num2str(k),'backgroundcolor','g');
end