Alternative alla trasformazione di Hough per il rilevamento di una struttura a griglia


16

Ho un'immagine che è composta da più "angoli" che formano una forma a griglia:

inserisci qui la descrizione dell'immagine

Dopo alcune ricerche, Hough sembrava una buona scelta, perché non è turbato da interruzioni di linea. Tuttavia, il problema che ho è che le mie linee sono "grasse" e qualsiasi rilevamento dei bordi che eseguo (Canny in questo caso), rileva i bordi della linea e non il centro:

inserisci qui la descrizione dell'immagine

Ciò significa che la trasformazione di Hough finisce per individuare uno (o entrambi) dei "lati" delle mie linee della griglia, e non il centro.

inserisci qui la descrizione dell'immagine

Dato che so cosa sto cercando (questa forma simile a una griglia, sempre approssimativamente nello stesso orientamento), c'è un modo migliore per eseguire la parte di "rilevamento dei bordi" per darmi le linee centrali, o dovrei cercare con un metodo totalmente diverso?


Per il contesto, questa griglia verrà confrontata con una griglia nominale per eseguire la calibrazione della telecamera Tsai.
Benjol,

"Rilevamento bordi corro, seleziona i bordi della linea" Sì, perché il rilevamento bordi converte i bordi in creste e la tua immagine è già creste. Un bordo è un confine tra luce e buio.
endolith

Risposte:


10

La trasformazione di Hough sarebbe davvero di aiuto nel raccogliere la griglia in questo caso. Per "assottigliare" le linee, potresti prendere in considerazione l'operazione di scheletro

Ciò produrrebbe un'immagine come questa: Uscita di scheletro

A causa del modo in cui funziona la scheletrizzazione, produrrà comunque alcune linee che sembreranno irrilevanti per la griglia, ma queste linee verso direzioni "errate" non sono così tante (almeno nell'immagine data) da confondere il rilevamento delle linee della Trasformazione di Hough troppo e sceglierà chiaramente le due serie principali di linee in direzioni distinte. (Ecco come appare l'output HT:) inserisci qui la descrizione dell'immagine

Se stai usando MATLAB, potresti voler controllare questa pagina di aiuto


Grazie! Questo aiuta molto. Non ho ancora ottenuto la mia licenza MATLAB, ma l'ho provato usando SimpleSkeletonization di AForge e funziona meglio ... Anche se non è ancora perfetto. Rivisiterò questo argomento in seguito quando avrò alcuni dati reali su cui testarlo.
Benjol,

Potresti provare a sormontare prima l'immagine originale ad una certa soglia che sembra produrre linee della griglia grassa "ottimali". Quello che intendo per ottimale è che sono almeno connessi. Ciò potrebbe migliorare le prestazioni della scheletro ma si avrebbe un parametro aggiuntivo per determinare (la soglia). Forse vale anche la pena esaminare come migliorare anche l'acquisizione delle immagini.
A_A

sì, come ho detto, quando avrò i dati reali con cui giocare, varrà la pena il mio tempo per mettere a punto il sistema. Un grande dubbio che ho su Hough in generale è che la discretizzazione di theta funzionerà contro la precisione dei sub-pixel di cui abbiamo bisogno. (Quello, e non sono del tutto convinto che le aberrazioni dell'obiettivo non significheranno che le linee potrebbero essere curve, non diritte ...)
Benjol

11

Un'alternativa alla trasformazione di Hough sarebbe la trasformazione di Radon ( 1 , 2 ). Una descrizione approssimativa di un algoritmo per rilevare una struttura a griglia potrebbe apparire così:

1. Perform Radon Transform from 0 to 180 degrees.
2. Find the two highest maxima in the angle bins.
3. For the two angles with maximal amplitude find the local maxima within the bin.
4. You can use the constraint that the maxima should have even spacing to deal with outliers.

MODIFICA :

Ecco un piccolo frammento di matlab per illustrare il passaggio 1-3:

im = imread('grid.png');
[R, xp] = radon(im, 0:180);
imagesc(0:180, xp, R)

Risultato della trasformazione del radon

plot(max(R)) % the two maxima are at 65 & 117 degrees

Massimi su tutti gli angoli

plot(R(:, 65))

Massimi a 65 gradi

plot(R(:,117))

Massimi a 117 gradi

Per rispondere alla tua domanda dai commenti: mi sembra dall'immagine di esempio che hai fornito, che questo metodo è più efficace contro piccoli difetti nella griglia rilevata. Gli scheletri raramente producono linee rette che potrebbero essere uno svantaggio per la successiva trasformazione di Hough.


Grazie, potresti dirmi in poche parole quale vantaggio ti aspetteresti dalla trasformazione di Radon rispetto alla trasformazione di Hough?
Benjol,

@benjol, ho aggiornato la mia risposta.
Bjoernz,

Molto bello, grazie mille. Quando l'IT mi darà accesso a Matlab, lo proverò!
Benjol,

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.