Funzioni > Elaborazione immagini > Estrazione di funzionalità > Esempio: trasformata della distanza euclidea
  
Esempio: trasformata della distanza euclidea
Utilizzare la funzione distform per calcolare la trasformata della distanza euclidea della matrice M, considerando i pixel con valore fg come pixel di primo piano.
Per informazioni sull'utilizzo di questo esempio, fare riferimento a Esempi di elaborazione delle immagini.
Matrice immagine
1. Definire una matrice immagine e applicarvi distform.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Il valore di ogni pixel di output corrisponde alla distanza fino al pixel di primo piano di input più vicino (valore 100).
Per i pixel di primo piano di input, la distanza di output è zero.
Per i vicini orizzontali e verticali, la distanza è 1.
Per i vicini in diagonale, la distanza è la radice quadrata di 2 o 1.414.
Immagine con un singolo pixel diverso da zero
1. Definire un'immagine con un singolo pixel diverso da zero.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
2. Applicare distform all'immagine:
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
La distanza aumenta in modo monotono man mano che ci si allontana dal pixel di primo piano (pixel centrale) nell'immagine di input.
La trasformata della distanza produce una distanza approssimativamente euclidea. Nell'esempio precedente è possibile osservare che l'output esatto della trasformata della distanza euclidea per la posizione della matrice (0,1) deve corrispondere a:
Fare clic per copiare questa espressione
Mentre nell'immagine di output di questo esempio il valore è 5,243.
Immagine di un oggetto circolare
1. Definire l'immagine di un cerchio:
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
2. Utilizzare la funzione scale per scalare il cerchio.
Fare clic per copiare questa espressione
3. Utilizzare la funzione WRITEBMP per scrivere il cerchio scalato in un file.
Fare clic per copiare questa espressione
4. Applicare la funzione distform al cerchio, scalarlo e salvare i risultati in un nuovo file.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
5. Inserire le immagini dai due file e confrontare i risultati.
(sc.bmp)
(scdist.bmp)
I valori di distanza sono uguali a zero per tutti i punti all'interno del cerchio e aumentano in modo monotono man mano che ci si sposta verso l'esterno, ma non sono esattamente uguali alla distanza euclidea o, in tal caso, l'output sarebbe radialmente simmetrico.
Due immagini binarie di un singolo oggetto
1. Leggere un'immagine.
Fare clic per copiare questa espressione
2. Utilizzare la funzione translate per creare versioni traslate dell'immagine e scrivere le immagini traslate in file.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
3. Inserire le immagini dai tre file e confrontare i risultati.
(flower.bmp)
(flower_d2.bmp)
(flower_d3.bmp)
4. Utilizzare la funzione distform per calcolare la trasformata della distanza di D1.
Fare clic per copiare questa espressione
5. Utilizzare le funzioni mask e mean per mascherare l'immagine della trasformata della distanza con immagini D2 e D3 e calcolare la media dell'intera immagine. Tale valore rappresenta una misura della distanza tra le due immagini.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
La distanza tra D1 e D1 è zero, mentre la distanza tra D1 e le altre immagini aumenta con il grado di traslazione.
6. Calcolare la distanza di Hausdorff
La distanza di Hausdorff è definita come massimo della distanza tra punti più vicina in due insiemi. Per calcolare la distanza di Hausdorff tra le due immagini, utilizzare la funzione max anziché la funzione mean.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Due immagini dei bordi
È possibile confrontare le prestazioni dei rilevatori dei bordi calcolando la distanza tra due immagini dei bordi. Utilizzare la media o il valore massimo delle distanze mascherate come misura della distanza dei bordi.
1. Utilizzare la funzione READ_IMAGE per leggere un file immagine.
Fare clic per copiare questa espressione
2. Applicare i due rilevatori dei bordi canny e binarize all'immagine e scrivere i risultati in file esterni.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
3. Inserire e confrontare visivamente le due immagini.
(lena_e1.bmp)
(lena_e2.bmp)
4. Calcolare la distanza complessiva tra i bordi.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione