DÉTECTION DES DROITES DANS UNE IMAGE : HOUGH

Signaler
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
Messages postés
1
Date d'inscription
mercredi 14 octobre 2009
Statut
Membre
Dernière intervention
7 juin 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43486-detection-des-droites-dans-une-image-hough

Messages postés
1
Date d'inscription
mercredi 14 octobre 2009
Statut
Membre
Dernière intervention
7 juin 2011

Been voilà, je voulais savoir si quelqu'un à réussi à achever la détection des droites avec la transformée de Hough version Java et surtout les droites parallèles.
Peace,
Gaara
Messages postés
18
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
12 avril 2010

s'il vous plait NICO7854 comment je peux appliquer le transformé de hough avec matlab j'ai essayé beaucoup mais pas de résultat, merci d'avance
Messages postés
4
Date d'inscription
mercredi 4 novembre 2009
Statut
Membre
Dernière intervention
8 novembre 2009

Merci pour ta réponse mais j'ai trouvé plus simple avec Matlab. J'ai réussi à tout faire (avec l'aide d'internet quand même) ;).

Ps : Jpense que tu t'en "fou" mais si tu es intéressé je peux te le passer.

Et encore merci pour tout ceux qui m'ont aidé.

A+
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
J'ai retrouvé un vieux code pour calculer le barycentre d'objet connexe:

bool CImage::Barycentre(CImage *ImgDest)
{
if(hBmp==0){
MessageBox(NULL,"Barycentre : L'image source est vide",
NULL,MB_OK|MB_ICONWARNING);
return 0;
}
if(ImgDest==0)
ImgDest=this;

POINT Pt;
int i,j,Pij,X,Y,k,l,cpt,MoyenneX,MoyenneY;
bool **Buffer;

queue Fifo,FifoSave;

CImage ImgTmp(this);
ImgDest->Copy(this);
ImgDest->Fill(0,0,0);

//Cette image permet de visualiser les pixels déjà visités.
Buffer=AllocT_bool(Width,Height,FALSE);

//Pour tous les pixels de l'image
for(i=0;i<Width;i++)
for(j=0;j<Height;j++)
if(Buffer[i][j]==FALSE)
{
Buffer[i][j]=TRUE;
Pij=(int) ImgTmp.ucBits[(i+j*Width)*4];
if(Pij!=255)
continue;

Pt.x=i;Pt.y=j;
Fifo.push(Pt);
FifoSave.push(Pt);

do
{
Pt=Fifo.front();
Fifo.pop();
X=Pt.x;Y=Pt.y;

for(k=-1;k<=1;k++)
for(l=-1;l<=1;l++)
if(X+k>=0 && Y+l>=0 && X+k<Width && Y+l<Height)
if(!(k==0 && l==0))
if(Buffer[X+k][Y+l]==FALSE && ImgTmp.ucBits[(X+k+(Y+l)*Width)*4] == 255)
{
Buffer[X+k][Y+l]=TRUE;
Pt.x=X+k;Pt.y=Y+l;
Fifo.push(Pt);
FifoSave.push(Pt);

}

}
while(!Fifo.empty());
if(FifoSave.empty())
continue;

cpt=0;
MoyenneX=0;
MoyenneY=0;
while(!FifoSave.empty())
{
Pt=FifoSave.front();
FifoSave.pop();
MoyenneX+=Pt.x;
MoyenneY+=Pt.y;
cpt++;
}
ImgDest->SetPixel((int)((double) MoyenneX/(double)cpt),(int)((double) MoyenneY/(double)cpt),255,255,255);
}

SetBitmapBits (ImgDest->hBmp,(Width*Height)*4,ImgDest->ucBits);
ImgDest->ImgType=BIN;
DesAllocT_bool(Buffer,Width);

return true;
}

A+
Afficher les 51 commentaires