2012-06-25 31 views
5

Estoy trabajando en un proyecto de clasificación de imágenes, he extraído líneas curvas de la imagen utilizando la detección de bordes, y necesito clasificarlas en función de su curvatura.Clasificando líneas con opencv

Por ejemplo, en la imagen de abajo hay 3 tipos de líneas, la línea izquierda tiene una buena curvatura, la del medio tiene una curvatura no mala y la línea derecha tiene una curvatura muy mala.

curves

Gracias por su ayuda

+0

Creo que quieres decir que la izquierda tiene buena curvatura? – cdhowie

+0

+1 pregunta interesante. – ArtemStorozhuk

+0

@cdhowie: tiene razón :) – hamed

Respuesta

4

que veo pocas medidas posibles para clasifique:

Trate línea aproximada con un poco de aprox EPS a continuación, comprobar cuántos segmentos de recta aproximada, segmentos como la mejor línea es . (Esto puede hacer que los problemas en caso de más a la izquierda, cuando la línea contiene de unos segmentos)

Comprobar que limita el tamaño de la caja, de menos tamaño mejor línea de

defectos Comprobar convexidad.

+0

, ve que los defectos de convexidad y la aproximación de línea son una buena manera de descubrir lo que quiero, pero el cuadro delimitador no es una buena característica. – hamed

+0

@hamed No entiendo cómo la aproximación puede ayudarte. En la curva izquierda, el caso contiene muchos segmentos iguales a la curva derecha ... – ArtemStorozhuk

+2

@Astor, tienes razón, pero se me ocurre otro método. primero usando la aproximación lineal de puntos y luego calcular el ángulo entre cada línea consecutiva, en línea recta este ángulo para cada línea consecutiva es aproximadamente 180, para buenas curvas este ángulo debe estar entre 160 y 180, y así sucesivamente para curvas malas – hamed

5

Si está trabajando con imágenes, puede saber si una forma como las que ha mostrado contiene bordes "lisos" o "nítidos". Puede calcular los valores propios y vectores propios de la matriz estructural (o matriz de tensor de imagen). Para los píxeles que pertenecen a un borde recto o liso, uno de los valores propios sería mucho más grande que el otro. En caso de que el píxel sea una esquina o un punto curvo, ambos valores propios probablemente serán grandes y similares. Luego sugiero que mida estas características en los píxeles de sus formas y entrene un clasificador de acuerdo a sus necesidades.

Puede encontrar más detalles sobre tales cosas casi otra parte, a pesar de que le puede dar la referencia de mi doctorado, echar un vistazo a la sección 2.4.2 http://oa.upm.es/4837/1/MARCOS_NIETO_DONCEL.pdf

Saludos!

+0

la matriz de tensor de imagen es la misma que la matriz de Hesse? – Ruchir