[mmdpcb] [Up] [mmdpotatoes] Demonstrations

mmdpieces
Classify two dimensional pieces.

Description

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.

Illustrated Source Code

Reading

The binary image of the pieces is read.

a = mmreadgray('pieces_bw.tif');
mmshow(a);
a

Contour noise reduction

A thickening that preserves the number of connected objects is applied to reduce contour noise.

seA = mmimg2se(mmbinary(uint8([0 1 0;1 0 1;0 0 0])));
seB = mmimg2se(mmbinary(uint8([0 0 0;0 1 0;0 0 0])));
iAB = mmse2hmt(seA,seB);
mmintershow(iAB)
ans =
. 1 . 
1 0 1 
. . .
b = mmthick(a, iAB);
mmshow(b);
b

Skeleton

The homotopic skeleton by thinning is created.

c = mmthin(b);
mmshow(c);
c

Skeleton pruning

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

Detect rings

Extraction of the rings by reconstruction of the thicked image from the filtered skeleton.

e = mminfrec(d,b);
mmshow(e);
e

Rings in the input image

Restriction of the objects detected to the input-image.

f = mmintersec(a,e);
mmshow(f);
f

Skeleton of the remaining objects

It eliminates the skeleton of the rings.

g = mmsubm(c,e);
mmshow(g);
g

End points filtering

It removes sucessively 4 end-points to let T junctions just on T-pins.

h = mmthin(g, mmendpoints, 4);
mmshow(h);
h

T-pins markers

It detects triple points, applying the union of matchings with the template rotated 90 degrees. These points will identify (mark) the T-pins.

seA2 = mmimg2se(mmbinary(uint8([0 1 0; 1 1 1; 0 0 0])));
seB2 = mmimg2se(mmbinary(uint8([1 0 1; 0 0 0; 0 1 0])));
i = mmsupcanon(h, mmse2hmt(seA2,seB2));
mmshow(h,mmdil(i,mmsedisk(2)));
h,mmdil(i,mmsedisk(2))

Detect T-pins

Detection of the T-pins by reconstruction of the ticked image from the T-pin markers.

j = mminfrec(i,b,mmsebox);
mmshow(j);
j

T-pins in the input image

Restriction of the objects detect to the input image

k = mmintersec(a,j);
mmshow(k);
k

Detect nails

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

Color composition

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]