[mmdpcb] [Up] [mmdpotatoes] | Demonstrations |
The input image is a binary image typically found in industrial automation applications. It has three types of objects: rings, nails and T-pins. Our procedure for identification of these classes of objects is based on thickening, thinning and reconstruction.
An homotopic thickening is applied to reduce contour noise.
>>> seA = mmimg2se(mmbinary([[0,1,0],[1,0,1],[0,0,0]]))
>>> seB = mmimg2se(mmbinary([[0,0,0],[0,1,0],[0,0,0]]))
>>> iAB = mmse2hmt(seA,seB);
>>> print mmintershow(iAB)
. 1 . 1 0 1 . . .
>>> b = mmthick(a, iAB);
>>> mmshow(b);
![]() |
|
b |
The open lines of the skeleton are pruned by the end point thinning. The remaining skeleton components will be loops, identifying the rings.
>>> d = mmthin(c,mmendpoints());
>>> mmshow(c,d);
![]() |
|
c,d |
Extraction of the rings by reconstruction of the thicked image from the filtered skeleton.
>>> e = mminfrec(d,b);
>>> mmshow(e);
![]() |
|
e |
It removes sucessively 4 end-points to let T junctions just on T-pins.
>>> h = mmthin(g, mmendpoints(), 4);
>>> mmshow(h);
![]() |
|
h |
It detects triple points, applying the union of matchings with two templates. These points will identify (mark) the T-pins.
>>> seA1 = mmimg2se(mmbinary([[0,1,0],[0,1,0],[1,0,1]]))
>>> seB1 = mmimg2se(mmbinary([[0,0,0],[1,0,1],[0,1,0]]))
>>> seA2 = mmimg2se(mmbinary([[0,1,0],[1,1,1],[0,0,0]]))
>>> seB2 = mmimg2se(mmbinary([[1,0,1],[0,0,0],[0,1,0]]))
>>> i1 = mmsupcanon(h, mmse2hmt(seA1,seB1));
>>> i2 = mmsupcanon(h, mmse2hmt(seA2,seB2));
>>> i = mmunion(i1,i2);
>>> mmshow(h,mmdil(i,mmsedisk(2)));
![]() |
|
h,mmdil(i,mmsedisk(2)) |
Detection of the T-pins by reconstruction of the ticked image from the T-pin markers.
>>> j = mminfrec(i,b,mmsebox());
>>> mmshow(j);
![]() |
|
j |
The nails are imediatly detected by the subtration of the images of the rings and T-pints from the input image.
>>> l = mmsubm(mmsubm(a,f),k);
>>> mmshow(l);
![]() |
|
l |
The result of the classification is presented in a pseudo color image.
>>> m = mmgray(f,'uint8',1);
>>> n = mmgray(k,'uint8',2);
>>> o = mmgray(l,'uint8',3);
>>> p = mmunion(m,n,o);
>>> mmlblshow(p);
![]() |
|
p |
[mmdpcb] [Up] [mmdpotatoes] | ![]() |
Copyright (c) 2003, Roberto A. Lotufo, UNICAMP-University of Campinas; Rubens C. Machado, CenPRA-Renato Archer Research Center. |