Re: Having problems finding skeleton of a binary image
- To: mathgroup at smc.vnet.net
- Subject: [mg105666] Re: [mg105629] Having problems finding skeleton of a binary image
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Tue, 15 Dec 2009 07:24:03 -0500 (EST)
- References: <200912121155.GAA19724@smc.vnet.net>
Hi,
in my Gonzales&Woold [1] they are using the same element for the erosion
and the opening.
img = ImageCrop[Image[ConstantArray[1, {25, 50}], "Bit"], {100, 100}]
kern = {{0, 1, 0}, {1, 1, 1}, {0, 1, 0}};
Fold[ImageAdd, First@#, Rest@#] &[
ImageSubtract[#, Opening[#, kern]] & /@ NestWhileList[
Erosion[#, kern] &, img,
Plus @@ Flatten@ImageData[ImageSubtract[#, Opening[#, kern]]] =!=
0 &]]
or in the way of the book you could define the function Sk(A) (page 543,
eq. 9.5-12) with
Sk[a_, b_, k_] := With[{akB = Nest[Erosion[#, b] &, a, k]},
ImageSubtract[akB, Opening[akB, b]]
]
where a is the image, b is the structuring element and k is then number
of iterations. You take all images Sk[...] for k=1... until the erosion
a(-)kb is the empty image and add them together.
Cheers
Patrick
[1] http://www.imageprocessingplace.com/DIP-2E/dip2e_main_page.htm
On Sat, 2009-12-12 at 06:55 -0500, jalbers wrote:
> I am trying to find the skeletal subsets Skel(S;n) = (S (erosion) nE)
> - (S (erosion) nE) (open) E) for a simple rectangle. Skel[n] is
> returning a completely black image for n=0,1,2,3,...
>
> I think that I should be getting the classic dog bone shaped skeleton
> like you see with ImageAdjust[DistanceTransform[s]]. I am new to the
> concepts of morphological image processing. Any help would be greatly
> appreciated. Thanks
>
> Here is some of the code I am trying to use:
>
> EE = BoxMatrix[1]; (* structuring element *)
> nEE[n_] := BoxMatrix[n];
> Skel1[n_] := Erosion[s, nEE[n]]
> Skel2[n_] := Opening[Erosion[s, nEE[n]], EE]
> Skel[n_] := ImageSubtract[Skel1[n], Skel2[n]]
>
> (* white rectangle with a black border *)
> s = Image[ArrayPad[ConstantArray[1, {90, 180}], 50]]
>
> (* n=3 for example *)
> n = 3;
> Skel1[n]
> Skel2[n]
> Skel[n]
>
>
- References:
- Having problems finding skeleton of a binary image using Lantuejoul's
- From: jalbers <jalbers@bsu.edu>
- Having problems finding skeleton of a binary image using Lantuejoul's