Detección del número de hilos en la imagen de la tela.


12

Soy un usuario novato en el procesamiento de imágenes y trabajo en un proyecto para determinar el número de hilos en una imagen de tela, es decir, urdimbres y tramas (hilos perpendiculares y paralelos al eje x).

Imagen de muestra

Estoy tratando de detectar los hilos tomando la suma de columnas y filas para urdimbres y tramas, respectivamente, pero no parece funcionar porque la imagen no está muy bien enfocada y nítida. Además, el método es muy sensible a la alineación de los hilos en la tela.

Proponga un mejor algoritmo si es posible para la detección de hilos. Además, si existe alguna posibilidad de hacer hilos rectos para cada imagen capturada. He intentado IMROTAR pero crea las regiones negras en la imagen que perturban la suma de filas y el algoritmo falla.

Cualquier ayuda a este respecto será de gran valor para mí. Gracias.


Use una FFT. ¿Es esta tarea?
endolith

Sí, una transformación de Fourier es probablemente el punto de partida correcto. Sería "sacar" la regularidad de la imagen fuera de la confusión. Sin embargo, no estoy seguro de cómo manejar la rotación parcial. Tal vez podría transformar las franjas y observar su fase, luego determinar si las franjas adyacentes se inclinaban hacia la izquierda o la derecha.
Daniel R Hicks

Respuestas:


9

Una transformación de Fourier le dará el período de cualquier característica periódica en la imagen, por ejemplo, le indicará que hay un evento de estructura de 3 píxeles horizontalmente y 5 píxeles verticalmente, a partir de esto y la escala de píxeles puede calcular el número de hilos


3

Algún código en Mathematica:

i = ColorNegate@Import@"http://i.stack.imgur.com/Jlhgw.jpg";
i3 = DeleteSmallComponents[Binarize[i, .4], 10];
lines = ImageLines[i3, .6];
Show[i, Graphics[{Thick, Orange, Line /@ lines}]]
(*y coord mean increments at x=0 *)
b = Mean@Differences@ Sort[(#[[2, 1]] #[[1, 2]] - #[[1, 1]] #[[2, 2]])/(#[[1,1]] - #[[2, 1]]) & /@ lines];
(*mean slope*)
a = Mean[-(-#[[1, 2]] + #[[2, 2]])/(#[[1, 1]] - #[[2, 1]]) & /@ lines];
(*Threads*)
- a ImageDimensions[i3][[1]]/b 
(*yarns*)
2 ImageDimensions[i3][[2]]/b

Resultado>

ingrese la descripción de la imagen aquí

34.5541
27.2259


1
Sería bueno si explicas lo que estás haciendo en este código.
Abid Rahman K
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.