Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Analisi di Immagini e Dati Biologici
Intensity Transformations L3-1 58
2
Analisi di Base Assumiamo che le nostre immagini siano
Immagini di intensità di luminosità (grayscale) Rappresentate da Interi senza segno [ ] (uint8) Oppure virgola mobile doppia precisione (double) [0...1]
3
Conversione a grayscale
Octave/Matlab usano la funzione rgb2gray → rgb2gray accetta come argomento una matrice RGB (NxMx3) → Il risultato preserva la rappresentazione binaria (uint8->uint8 etc.) → Il risultato è una matrice NxM dove per ogni pixel la terna (R,G,B) è sostituito da un unico valore di luminosità rappresentato dalla luminanza di quel colore ottenuta con la funzione rgb2ntsc La luminanza è definita da una formula che tiene in considerazione la struttura del nostro sistema percettivo Y = 0.299*R+0.587*G+0.114*B
4
Conversione a 'double' → mat2gray: accetta una matrice come argomento
Esegue una redifinizione di scala e rappresentazione binaria restituisce una matrice di identica dimensione con rappresentazione binaria 'double' i valori di intensità sono compresi nell'intervallo [0...1] La funzione accetta un secondo argomento per immagini che hanno un range non standard e lo prende come riferimento Se l'argomento è una matrice RGB (NxMx3) mat2gray opera indipendentemente su ciascun piano di colore
5
Caratterizzazione di Base della Qualità: istogrammi
L'istogramma Metodo basilare di caratterizzazione di un'immagine L'istogramma mostra la distribuzione all'interno del range di luminosità dello strumento dei valori dei pixel Applicazione: Esposizione: per immagini fotografiche l'istogramma permette di capire se l'immagine sarà sovraesposta o sottoesposta Contrasto: analisi, correzione Analisi della dinamica
6
Histograms L'istogramma si calcola percorrendo tutti i pixel e contando quanti pixel hanno un determinato valore
7
Image Histogram La somma dei valori dell'istogramma (integrale) è NxM (=numero di pixel dell'immagine) Semplice da calcolare per immagini uint8 Per immagini in con bit depth 16 o superiore si ricorre al binning
8
Image Histogram L'istogramma non è l'equivalente di un impronta digitale di un immagine Immagini completamente diverse possono avere istogrammi simili Si può costruire ad arte immagini con identico istogramma
9
Image Histogram Problemi con l'esposizione:
Settori di un istogramma inutilizzati, altri con frequenza di valori troppo alta Soprattutto per i valori di luminosità elevata l'istogramma rileva problemi di sovraesposizione
10
Image Histogram
11
Imagine Histogram Contrasto
Range effettivamente usato dei valori di un immagine Differenza tra valore massimo e valore minimo dell'intensità
12
Image Histogram
13
Image Histogram Dinamica di un immagine (Dynamic Range)
La dinamica di un'immagine è data dal numero di valori di pixel distinti usati nell'immagine Maggiore è la dinamica allora maggiore... La capacità di risoluzione di differenze (in linea di principio) La capacità di miglioramento della qualità in caso di difetti di esposizione o mancanza di contrasto La possibilità di preservare qualità dell'immagine anche dopo compressione o altre elaborazioni
14
Image Histogram Contrasto vs. Dinamica
Il contrasto può essere modificato alterando opportunamente i valori dei pixel La dinamica è una caratteristica costitutiva di un'immagine Il miglioramento della dinamica richiede tecniche di manipolazione che introducono 'nuovi' valori di pixel
15
Alterazione della Dinamica
16
Image Histogram Saturazione
La saturazione avviene quando i valori di pixel agli estremi della dinamica della fotocamera sono eccessivamente popolati Inevitabile se il range di luminosità della scena/oggetto sono più grandi della dinamica del sensore
17
Image Histogram: alterazioni
L'istogramma è un metodo semplice per rivelare alterazioni dovute a processing Effetto dell'espansione/riduzione del contrasto
18
Image Histogram: alterazioni
Alterazioni legate alla compressione Esempio: immagine compressa dopo essere stata salvata in un file GIF
19
Image Histogram: alterazioni
Alterazione dovute a compressione Esempio: immagine 'semplice' alterata dalla compressione interna al formato JPEG
20
Image Histogram La funzione imhist di Octave/Matlab
octave:5> img=imread('cameraman.tif'); octave:6> imshow(img) octave:7> clf octave:8> imhist (img)
21
Istogramma da Immagine di microscopia AF
L'istogramma di un immagine può dipendere dal tipo di tecnica usata per la raccolta di informazioni
22
Istogramma da Immagine di microscopia AF
Istogramma logaritmico img=imread('afpict.tiff'); [counts,x]=imhist(img); stem(x,log10(counts))
23
Point Operation Ogni valore di pixel viene trasformato secondo una legge che dipende dal valore del pixel stesso dalle coordinate del pixel (legge non-omogenea) L'effettiva forma della trasformazione può dipendere dal primo o entrambi i criteri
24
Point Operation Inversione di un immagine
Nell'inversione di un immagine ogni valore di pixel viene trasformato nel suo 'complementare' Per eseguire correttamente l'operazione si deve conoscere amax che dipende dal formato interno (double, unit8, unit16) Il package octave-image ha la funzione imcomplement
25
Inversione della luminosità
Codice octave octave:14> clf octave:15> imread('cameraman.tif') octave:16> imshow(img) octave:18> class(img) ans = uint8 octave:19> invimg=255-img; octave:20> imshow(invimg)
26
Inversione della luminosità
Il nostro occhio non ha sensibilità costante alle differenze a tutte le luminosità La capacità di discriminazione dell'occhio umano è più alta quando le intensità sono più basse
27
Alterazione della luminosità/contrasto
Usando le operazione scalare-matrice Moltiplicazione: modifica del contrasto perchè cambia in modo diverso valori di pixel diversi Addizione: modifica della luminosità perché 'sposta' tutti i pixel dello stesso valore Se applicate usando la formula algebrica si deve tenere conto dei limiti imposti dalla rappresentazione
28
Manipolazione luminosità
Limiti specifici dei valori di intensità di un pixel imposti dalla rappresentazione interna Le operazioni di moltiplicazione e addizione di uno scalare in generale non garantiscono il rispetto di questi limiti Octave forza gli elementi di variabili e matrici uint8 ad essere all'interno del range [ ] Sulle matrici di intensità in formato double invece i vincoli all'interno dell'intervallo [0,1] devono essere forzati
29
Manipolazione Luminosità
Esercizio: codice per manipolazione della luminosità di un'immagine Strategia: percorrere tutti i pixel e applicare a ciascuno di essi la trasformazione di intensità Approccio: usare due cicli for...endfor annidati Un ciclo per l'indice di riga Un ciclo per l'indice di colonna I cicli for...endfor definiscono un blocco di linee di codice che devono essere eseguite N volte
30
% leggiamo l'immagine dal file
img=imread('afmicro.tiff'); % convertiamo l'immagine in un immagine grayscale imggr=rgb2gray(img); % questa operazione modifica la classe di imggr da uint8 a double imggr=mat2gray(imggr); % fattore di alterazione dell'intensità fattore= 1.2; % creiamo una matrice di identica dimensione imgnuova=zeros(size(imggr)); % Si procede con la modifica di ogni pixel verificando % che il risultato sia vincolato all'interno dell'intervallo % dei valori propri della rappresentazione di questa immagine (clamping) [righe colonne] = size(imggr); for riga=1:righe for colonna=1:colonne nuovo_pixel = fattore * imggr(riga,colonna); if (nuovo_pixel > 1) nuovo_pixel = 1; endif % se il fattore fosse negativo si dovrebbe verificare % anche il caso nuovo_pixel < 0 e imporre che sia uguale a zero. % In questo esempio senza pretese di generalità sappiamo che % fattore > 0 imgnuova(riga,colonna) = nuovo_pixel; endfor
31
Manipolazione Luminosità
Secondo approccio Applicare la formula a tutta la matrice dell'immagine Selezionare gli indici degli elementi che escono dal range ammesso Assegnare ad essi il valore limite
32
Manipolazione luminosità
% leggiamo l'immagine dal file, la convertiamo in un immagine 'grayscale' % e quindi fissiamo il valore del fattore di alterazione dell'intensità % luminosa img=imread('picts/afmicro.tiff'); imggr=rgb2gray(img); % questa operazione modifica la classe di imggr % da uint8 a double imggr=mat2gray(imggr); fattore= 1.2; imgnuova = fattore * imggr; % immagine binaria dei pixel che eccedono i valori tra [0...1] overshoots = imgnuova > 1; % la sintassi di octave accetta una matrice binaria come argomento % delle parentesi di una matrice, eseguendo un assegnazione solo % agli elementi corrispondenti agli 1 imgnuova(overshoots) = 1;
33
Trasformazione Logaritmica
Più interessante la trasformazione logaritmica Iout=C*ln(1+a*Iin(u,v)) Regioni a luminosità più bassa acquistano dinamica a scapito delle regioni più luminose La costante a determina la curvatura La costante C determina la normalizzazione in base al valore massimo di I(u,v)
34
Trasformazione Logaritmica
35
Trasformazione Esponenziale
Iout=C*((1+a)Iin(u,v) -1) Regioni a luminosità più alta acquistano dinamica a scapito delle regioni meno luminose
36
Trasformazione Esponenziale
37
Thresholding Selezione di regioni di un immagine in base ad un valore di soglia (threshold) di luminosità Determinazione 'manuale': composizione di una immagine binaria a partire da un confronto tra la matrice dell'immagine e un valore di soglia La soglia determina cosa è da considerare sfondo (background) oppure oggetto Determinazione in base a vari criteri tramite la funzione graythresh
38
Thresholding: Otsu method
Default per graythresh Assumiamo che l'istogramma abbia un solo massimo Ogni valore di intensità definisce 2 regioni dell'istogramma La soglia calcolata con il metodo di Otsu è il valore di intensità che massimizza la varianza interclasse (e minimizza la varianza intraclasse)
39
Thresholding con il Metodo di Otsu
im = imread('rice.png'); im = mat2gray(im); level = graythresh(im); imb = im2bw(im,level); imshow(imb)
40
Thresholding: confronto di vari metodi
Confronto tra immagine originaria e thresholding con Otsu Intermodes Intermeans MaxEntropy
41
Modifica del Contrasto
42
Modifica automatica del Contrasto
Il valori dei pixel vengono modificati in modo che il contrasto occupi tutto il range di valori disponibili Idealmente il valore amin dovrebbe essere riportato a 0, mentre il valore amaxdovrebbe essere riportato a 255 per un immagine uint8 con una legge di proporzionalità
43
Modifica Automatica Contrasto
44
Modifica Automatica del Contrasto
45
Modifica del Contrasto
La formula di modifica automatica è sensibile singoli pixel troppo luminosi o troppo scuri Si prende quindi una frazione di tutti i pixel e si fa in modo che essa venga saturata entro 2 limiti ragionevoli di valore dell'intensità Si applica su una distribuzione così modificata la trasformazione proporzionale del contrasto
46
Modified Auto-Contrast
47
Modified Auto-Contrast
img=imread(...); imgadj=imadjust(img); La funzione imadjust 'satura' l'1% dei pixel ad entrambe le code della distribuzione ed mappa il resto dell'immagine sull'intervallo [0...1]. L'immagine deve essere quindi rappresentata con questa scala e in formato double
48
Modified Auto-Contrast
49
Histogram equalization
Confronto accurato di immagini analoghe Ricalcolare istogrammi in modo che sia paragonabili Analoga struttura Stesso contrasto Varie tecniche a disposizione Equalizzazione: riportare ad un andamento dato Uniforme Iperbolica Specificazione: imporre l'istogramma di una immagine data
50
Equalizzazione Strategia: si parte dal presupposto che una immagine di buona qualità ha un istogramma con una distribuizione (quasi) uniforme la distribuizione dei pixel non essendo continua non è possibile realizzare una distribuzione realmente Si usa una soluzione approssimata dove l'istogramma finale ha una distribuzione quasi uniforme solo “in media”
51
Equalizzazione Uniforme
52
Equalizzazione Uniforme
53
Equalizzazione Uniforme
Function File: J = histeq (I, n) Histogram equalization of a gray-scale image. The histogram contains n bins, which defaults to 64. I: Image in double format, with values from 0.0 to 1.0 J: Returned image, in double format as well See also: imhist Package: image
54
Manipolazione Contrasto: altri approcci
Histogram specification L'istogramma di un immagine è rimodulato in modo che abbia un andamento dato Gli istogrammi cumulativi servono a rimappare i valori
55
Manipolazione Contrasto: altri approcci
Imposizione dell'istogramma (cumulativo) secondo un andamento linare a tratti
56
Manipolazione Contrasto: altri approcci
57
Manipolazione Contrasto: altri approcci
58
Manipolazione Contrasto: altri approcci
Aggiustamento secondo un istogramma dato: l'istogramma della funzione originale viene collocato all'interno della funzione cumulativa di un istogramma dato
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.