Extraire de simples contours de lignes de Savant bords

Je voudrais extraire les contours d'une image, exprimée comme une séquence de coordonnées de points.

Avec Canny je suis en mesure de produire une image binaire qui contient uniquement les bords de l'image. Ensuite, je suis en train d'utiliser findContours pour extraire les contours. Les résultats ne sont pas OK, si.

Pour chaque bord, j'ai souvent eu 2 lignes, comme si elle était considérée comme une très fine de la zone.
Je voudrais simplifier mes contours afin que je puisse les attirer comme des lignes simples. Ou peut-être les extraire avec une autre fonction que de produire directement le résultat correct serait encore mieux.

J'ai eu un coup d'oeil sur la documentation de OpenCV, mais j'ai été pas en mesure de trouver quelque chose d'utile, mais je suppose que je ne suis pas le premier avec un problème similaire. Est-il une fonction ou une méthode que je pourrais utiliser?

Voici le code Python que j'ai écrit jusqu'à présent:

def main():
    img = cv2.imread("lena-mono.png", 0)

    if img is None:
        raise Exception("Error while loading the image")

    canny_img = cv2.Canny(img, 80, 150)

    contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    contours_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

    scale = 10
    contours_img = cv2.resize(contours_img, (0, 0), fx=scale, fy=scale)

    for cnt in contours:
        color = np.random.randint(0, 255, (3)).tolist()
        cv2.drawContours(contours_img,[cnt*scale], 0, color, 1)

    cv2.imwrite("canny.png", canny_img)
    cv2.imwrite("contours.png", contours_img)

Le facteur d'échelle est utilisé pour mettre en évidence les doubles lignes de contours.
Voici les liens vers les images:

  • Lena niveaux de gris
  • Bords extrait avec Canny
  • Les Contours: Zoom 10x, où vous pouvez voir la mal résultats produits par findContours

Toute suggestion sera grandement apprécié.

vous devez utiliser HoughLines docs.opencv.org/modules/imgproc/doc/...
le flou de l'image pour réduire les bruits
Je ne pense pas que c'est une question de bruit dans l'image. Si vous regardez les bords extrait avec Futé ils sont OK. Avec HoughLines je ne serais pas capable de gérer les courbes dans l'image, n'est-ce pas?
oui bien sûr, vous auriez, houghlines a quelques paramètres que vous devriez jouer avec eux et de trouver votre format souhaité, comme dans les courbes, vous obtiendrez plusieurs lignes! les lignes sont essentiellement des start-point final! nous travaillons avec de détection de voie sur une route et c'est ce que nous utilisons.

OriginalL'auteur Muffo | 2013-08-06