Trasformazioni di intensità Filtraggio spaziale 31/03/2010 Francesca Pizzorni Ferrarese
Istogrammi L’istogramma è la rappresentazione grafica della quantità di pixel presenti nell’immagine per ciascun livello di grigio. L’asse orizzontale X rappresenta i valori dei grigi. L’asse verticale Y rappresenta il numero di pixel per ogni livello. ? The following are examples of histograms with predominately low, mid and high range intensities. tire.tif pout.tif eight.tif
Istogrammi (cont.) L’istogramma fornisce una raffigurazione sintetica delle caratteristiche di luminosità dell’immagine, trascurando però ogni informazione relativa alla posizione dei singoli pixel. Provare con i grating orizzontale e verticale
Istogrammi - Equalizzazione L’operazione di equalizzazione ha lo scopo di ottenere per l’istogramma un andamento praticamente costante. Per fare ciò si sostituisce al valore x di livello di grigio un valore y dato dalla seguente trasformazione: dove T è il numero complessivo dei pixel dell’immagine, L è il valore massimo dei livelli di grigi Ni è il numero di pixel che hanno un livello di grigio uguale a i, ovvero H(i) pout=imread('pout.jpg'); imshow(pout); pout=rgb2gray(pout); figure, imhist(pout) pout_eq=histeq(pout); figure, imshow(pout_eq) figure, imhist(pout_eq) imshow(image,[low, high]) also has the functioning of histogram stretch: all value that no larger than low will be shown as black; all pixel value that no less than high will be shown as white; the rest will be stretched to 0~255.
Specifica di un istogramma Sometimes, histogram equalization does not produce the contrast or results that we expect. Consider the following example, taken from page 86 of Digital Image Processing, Using MATLAB, by Rafael C. Gonzalez, adapthisteq J = adapthisteq(I) enhances the contrast of the grayscale image I by transforming the values using contrast-limited adaptive histogram equalization (CLAHE). CLAHE operates on small regions in the image, called tiles, rather than the entire image. Each tile's contrast is enhanced, so that the histogram of the output region approximately matches the histogram specified by the 'Distribution' parameter. The neighboring tiles are then combined using bilinear interpolation to eliminate artificially induced boundaries. The contrast, especially in homogeneous areas, can be limited to avoid amplifying any noise that might be present in the image.
Specifica di un istogramma y=twomodegauss(0.15,0.05, 0.75, 0.05, 1, 0.1, 0.002); Load the image data. Display the histogram of the image. Use histogram equalization to create a new image with more contrast. Display the histogram of the image created in step 4. Use histogram matching (using M-Files from above notes) to produce an image that looks something like the following:
Alcune funzioni per la trasformazione di intensità Le elaborazioni nel dominio spaziale possono essere espresse come: g(x,y)= T[f(x,y)] essendo f l’immagine di ingresso alla elaborazione, g quella di uscita e T un operatore su f, definito in un intorno di (x,y). La dimensione dell’intorno di (x,y) definisce il carattere della elaborazione: puntuale(l’intorno coincide con il pixel stesso); locale(per esempio una piccola regione quadrata centrata sul pixel); globale(l’intorno coincide con l’intera f).
Alcune funzioni per la trasformazione di intensità Il risultato di una elaborazione puntuale omogenea dipende solo dal valore del pixel cui è applicata, per cui tali elaborazioni vengono anche dette manipolazioni della scala dei grigio dei colori. Se invece il risultato dell’elaborazione dipende anche dalla posizione del pixel nell’immagine, si parla di elaborazioni puntuali non omogenee. Alcune tipiche elaborazioni puntuali omogenee: Aggiunta o sottrazione di una costante a tutti i pixel (per compensare sotto o sovraesposizioni); Inversione della scala dei grigi (negativo); Espansione del contrasto; Modifica (equalizzazioneo specifica) dell'istogramma; Presentazione in falsi colori.
Alcune funzioni per la trasformazione di intensità - Negativo imcomplement rx_neg=imadjust(rx_torace,[0 1], [1 0]); rx_neg=imadjust(rx_torace,[], [], 2); I=imread('tire.tif'); imshow(I) J=imcomplement(I); figure, imshow(J)
Alcune funzioni per la trasformazione di intensità – Trasformazioni di potenza I=imread('tire.tif'); J=imadjust(I,[],[],1); J2=imadjust(I,[],[],3); J3=imadjust(I,[],[],0.4); imshow(J); figure,imshow(J2); figure,imshow(J3);
Alcune funzioni per la trasformazione di intensità – Espansione del contrasto In alcune immagini com quelle da satellite i valori dei pixel occupano solitamente una parte limitata del possibile range di valori. Se i valori dei pixel sono quindi rappresentati nella loro forma originale, solo una piccola parte sarà visualizzata e quindi come risultato si avrà un'immagine a basso contrasto nella quale gli oggetti potranno apparire indistinguibili. La tecnica utilizzata per il miglioramento del contrasto consiste nell'applicazione di un algoritmo di trasformazione che permette di espandere l'intervallo dei livelli di grigio registrati nell'immagine originale, fino a coprire tutto l'intervallo dei valori possibili. Contrast-Stretching Transformations result in increasing the contrast between the darks and the lights. Effectively, what you end up with is the darks being darker and the lights being lighter, with only a few levels of gray in between. To create a Contrast-Stretching Transformation in MATLAB, you can use the following function: g=1./(1 + (m./(double(f) + eps)).^E) E controls the slope of the function and m is the mid-line where you want to switch from dark values to light values. eps is a MATLAB constant that is the distance between 1.0 and the next largest number that can be represented in double-precision floating point. There are two plot/diagram sets below to represent the results of changing both m and E. The below plot shows different values of E.
Alcune funzioni per la trasformazione di intensità – Espansione del contrasto
Alcune funzioni per la trasformazione di intensità – Espansione del contrasto In questo tipo di stretch la funzione di trasformazione non è più una retta definita da un solo coefficiente angolare, ma è una spezzata. Questo tipo permette quindi di espandere e contrarre differenziatamentei livelli di grigio dell'immagine e quindi facilitare il contrasto in immagini con istogrammi plurimodali g=1./(1 + (m./(double(f) + eps)).^E) stretching non lineare:equalizzazione dell’istogramma I=imread('tire.tif'); I2=im2double(I); m=mean2(I2) contrast1=1./(1+(m./(I2+eps)).^4); contrast2=1./(1+(m./(I2+eps)).^5); contrast3=1./(1+(m./(I2+eps)).^10); imshow(I2) figure,imshow(contrast1) figure,imshow(contrast2) figure,imshow(contrast3) Contrast-Stretching Transformations result in increasing the contrast between the darks and the lights. Effectively, what you end up with is the darks being darker and the lights being lighter, with only a few levels of gray in between. To create a Contrast-Stretching Transformation in MATLAB, you can use the following function: g=1./(1 + (m./(double(f) + eps)).^E) E controls the slope of the function and m is the mid-line where you want to switch from dark values to light values. eps is a MATLAB constant that is the distance between 1.0 and the next largest number that can be represented in double-precision floating point. There are two plot/diagram sets below to represent the results of changing both m and E. The below plot shows different values of E. I=imread('tire.tif'); I2=im2double(I); contrast1=1./(1+(0.2./(I2+eps)).^4) contrast2=1./(1+(0.5./(I2+eps)).^4); contrast3=1./(1+(0.7./(I2+eps)).^4); imshow(I2) figure,imshow(contrast1) figure,imshow(contrast2) figure,imshow(contrast3)
Filtro Gaussiano