Bonjour à tous,

j'utilise la fonction ippiHoughLine_8u32f_C1R de la bibliothèque IPP 6.1 pour détecter des lignes dans une image. Cette fonction renvoie les coordonnées polaires (Rho et Theta) pour chaque ligne détectée. Seulement, je n'arrive à détecter que les lignes horizontales, les lignes "diagonales" me renvoient des valeurs erronées pour Rho et Theta, et les lignes verticales ne sont pas détectées.

Voici le type d'image sur laquelle j'opère la transformée de Hough :



Je vous donne la définition de la fonction ainsi que les paramètres que j'ai utilisés :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
IppStatus ippiHoughLine_8u32f_C1R(const Ipp8u* pSrc, int srcStep, IppiSize roiSize, IppPointPolar delta, int threshold, IppPointPolar* pLine, int maxLineCount, int* pLineCount, Ipp8u* pBuffer);
Parameters

pSrc : Image sur 8 bits

srcStep : Distance in bytes between starts of consecutive lines in the source image.
Ici j'ai fixé srcStep égal à la largeur de mon image

roiSize : taille de mon image - 1

delta : Step of discretization ( delta.rho - radial increment, delta.theta - angular increment
delta.rho = 1 et delta.theta = pi/180

threshold : Minimum number of points that are required to detect the line.
J'ai fixé threshold à 50

pLine : Renvoie les valeurs de rho et theta

maxLineCount : Number of elements of the destination buffer -> fixé à 1000

pBuffer : Pointer to the working buffer.

N'ayant de trouvé de docs ni d'exemples utilisant cette fonction, je suppose que je dois mal utiliser certains paramètres. Si certains d'entre vous ont déjà utilisé cette fonction, ou si quelqu'un à une idée, je suis preneur ^^