Bonjour,
Je suis en train de travailler sur la segmentation des textes manuscrits.
Le texte est scanné et est stocké sous forme d’une image binaire. Avant d’être analysée, l’image subit quelques prétraitements.
Après je passe à la phase de segmentation de texte en lignes, j'ai utilisé la méthode de projection horizontale (qui consiste à faire la somme de tous les pixels noirs sur chaque ligne et de construire l'histogramme correspondant) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 void CProjections::Projection_Image(const CImageExt&Image,Projection_Type trType) { unsigned int i,j,np,k; unsigned int Width, Height, XMax, YMax, XMin, YMin; Rect=Image.Bounding_Box(Image); Width=Rect.PMax.GetX()-Rect.PMin.GetX()+1; Height=Rect.PMax.GetY()-Rect.PMin.GetY()+1; XMax=Rect.PMax.GetX(); YMax=Rect.PMax.GetY(); YMin=Rect.PMin.GetY(); XMin=Rect.PMin.GetX(); Type=trType; switch(trType) { case V: //Vertical Projections if (Content!=NULL) delete[] Content; Size=Width; Content=new int [Size]; if (Content==NULL) { AddIPL98ErrorHistory("Espace mémoire insuffisant !!!"); return; } for(j=XMin; j<=XMax; j++) { np=0; for(i=YMin; i<= YMax; i++) if((Image.GetPixel(j,i)!=0)) np++; Content[j-XMin]=np; } break; case H: //Horizontal Projections if (Content!=NULL) delete[] Content; Size=Height; Content=new int [Size]; if (Content==NULL) { AddIPL98ErrorHistory("Espace mémoire insuffisant !!!"); return; } for(i=YMin; i<=YMax; i++) { np=0; for(j=XMin; j<= XMax; j++) if((Image.GetPixel(j,i)!=0)) np++; Content[i-YMin]=np; } break; } }
Après, il faut déterminer les minima des histogrammes résultant des projections horizontales puis de représenter chaque minima par un trait horizontal de même longueur que la ligne,
et c'est à cette étape que je suis bloquée
Quelqu'un peut m'aider ?
Merci d'avance
Partager