Transformation de hough

Fermé
djsara Messages postés 4 Date d'inscription vendredi 24 septembre 2010 Statut Membre Dernière intervention 8 mai 2011 - 8 mai 2011 à 10:39
Bonjour,

Aidez-moi s'il vous plaît.....j'ai écrit l'algorithme de detection des lignes par méthode de transformation de hough mais il ne me donné pas aucun résultat je ne sais pas où l'erreur:
le code est :

double pixel;
maxR= sqrt((He*He)+(Wi*Wi)) ;//(W,He) taille d'image

/**************intialiser l'accumulateur par 0***********/
for (int i=0;i<900;i++){
for (int j=0;j<360;j++){
ligneaccu[i][j]=0;
}}

/**************parcours l'image et augmentaer l'accumulateur ***********/

int tt=sqrt(He*He+Wi*Wi);
for (int i=0;i<He;i++){
for (int j=0;j<Wi;j++){
pixel =GetBValue(M1->Canvas->Pixels[j][i]);
if(pixel>=40){ for (int thetat=0;thetat<360;thetat++){
angle= (thetat* 3.14) / 180;
R=(floor(j*sin(angle))+(i*cos(angle))) ;
if(R>0){
ligneaccu[R][thetat]++; }
}
} }}


/**************recherche la max******/
int maxi = 0;

for (int i = 1; i < 450 ; i++){ // VOILA C 30
for (int j = 1 ; j <360; j++){

if ( maxi < ligneaccu[i][j]){
maxi = ligneaccu[i][j];
R = i; // R
d= j; // angle

}
}}//find max

/*********affichage dans une autre image : M2*************/
for (int i = 0 ; i < He ; i++){
for (int j = 0 ; j <Wi; j++){
M2->Canvas->Pixels[j][i]=(TColor)RGB(0,0,0);
}}

angle= (d* 3.14) / 180;
b=int(floor(-cos(angle)/sin(angle))) ;
a=int(floor( R/sin(angle)));

for(int i=0 ; i < Wi ; i++){
y=int(floor(a*i+b));
if( y < He ){
pixel =GetBValue(M1->Canvas->Pixels[y][i]);
if(pixel!=0){
M2->Canvas->Pixels[y][i]=(TColor)RGB(pixel,pixel,pixel);
}}
}