Rilevazione del numero di filati nell'immagine del tessuto


12

Sono un utente alle prime armi nell'elaborazione delle immagini e sto lavorando a un progetto per determinare il numero di filati nell'immagine di un tessuto, ovvero orditi e trame (filati perpendicolari e paralleli sull'asse x).

immagine di esempio

Sto cercando di rilevare i fili prendendo rispettivamente la somma di colonne e file per orditi e trame, ma non sembra funzionare perché l'immagine non è molto ben focalizzata e nitida. Inoltre, il metodo è molto sensibile all'allineamento dei filati nel tessuto.

Si prega di proporre un algoritmo migliore, se possibile, per il rilevamento di filati. Inoltre, se esiste la possibilità di allineare i fili per ogni immagine catturata. Ho provato IMROTATE ma crea le aree nere nell'immagine che disturbano la somma delle righe e l'algoritmo fallisce.

Qualsiasi aiuto in tal senso varrà molto per me. Grazie.


Usa un FFT. Sono compiti?
endolith

Sì, una trasformata di Fourier è probabilmente il punto di partenza corretto. "Tirerebbe" la regolarità dell'immagine dalla confusione. Non sono sicuro di come gestire la rotazione parziale, però. Forse potresti trasformare le strisce e notare la loro fase, quindi determinare se le strisce adiacenti erano inclinate a sinistra oa destra.
Daniel R Hicks,

Risposte:


9

Una trasformata di Fourier ti darà il periodo di tutte le caratteristiche periodiche nell'immagine - ad esempio ti dirà che c'è un evento di struttura 3 pixel in orizzontale e 5 pixel in verticale, da questo e dalla scala di pixel puoi calcolare il numero di fili


3

Alcuni codici in 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

risultato>

inserisci qui la descrizione dell'immagine

34.5541
27.2259


1
Sarebbe bello se spiegassi cosa stai facendo in questo codice.
Abid Rahman K,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.