Detectando diferentes componentes:
Si está tratando de detectar los diferentes componentes, probablemente haya otros enfoques para hacerlos que no sean detectar los contornos. Aquí hay un ejemplo en Mathematica. Se utiliza una erosión seguida de dilatación para cerrar la brecha en el segundo componente antes de la detección (si no hace esto, no lo detectará).
img = Binarize@Import["http://i.stack.imgur.com/yqDyu.png"];
Colorize[MorphologicalComponents[Dilation[Erosion[img,1],1]]]
La figura a la izquierda a continuación, muestra la detección de objetos imperfectos (sin cerrar el espacio) y a la derecha, muestra la detección correcta (ejecutando el código anterior).
Detectando los diferentes contornos:
Sin embargo, si realmente desea separar solo los contornos, aquí hay un ejemplo. La erosión y la dilatación se realizan como antes para cerrar la brecha y la imagen resultante se ejecuta a través de un detector de bordes Canny. He hecho explícitas las opciones predeterminadas, para que pueda ver lo que se está utilizando.
img2 = EdgeDetect[Dilation[Erosion[img, 1], 1], Method -> "Canny"]
Esto le dará tanto el borde interior como el exterior (vea la figura a la izquierda a continuación), ya que el ancho del píxel es mayor que 1 en todos lados. No he tenido mucha suerte tratando de hacerlo más delgado, ya que el rendimiento se degrada (puede ser diferente para sus otras imágenes). Los contornos internos son los que desea, y el contorno exterior es solo el contorno combinado de los 4 componentes. Ahora todo lo que tenemos que hacer es soltar el más externo con:
SelectComponents[img2, "EnclosingComponentCount", # > 0 &]
que te da solo los contornos internos (ver abajo a la derecha). En otras palabras, solo selecciona aquellos contornos que están encerrados por al menos otro contorno, lo que descalifica automáticamente el más externo. No sé el equivalente de estos comandos / operaciones en openCV.
Tenga en cuenta que los saltos aparentes en la figura se deben a guardar en JPEG en un tamaño menor. No se ve así en mi pantalla.