Sampling and Quantization Francesca Pizzorni Ferrarese 10/03/2010
Creazione delle immagini Creare le seguenti immagini aventi risoluzione 256x256 pixels Scacchiera con dimensione degli elementi 16x16 pixels (scacchiera.pgm) Suggerimento: Help > Checkerboard scacchiera = checkerboard(16,8); scacchiera = (scacchiera > 0.5); figure, imshow(scacchiera)
Creazione delle immagini Grating simusoidale orizzontale con frequenza spaziale di 32 pixels (grating1.pgm) Suggerimento: ogni riga dell’immagine è una sinusoide x=[1:256]; y=sin(32*x); plot(y) grating1=repmat(y,256,1); imshow(grating1)
Creazione delle immagini Grating orizzontale-verticale ottenuto dal prodotto di due grating rispettivamente orizzontale e verticale aventi ognuno frequenza spaziale di 32 pixels (grating2.pgm) grating_orizz=repmat(y’,1,256); figure imshow(grating_orizz_32) grating2=grating1.*grating_orizz; imshow(grating2)
Creazione delle immagini Grating orizzontale ottenuto modulando il grating1 con un grating orizzontale di frequenza spaziale pari a 8 pixel (grating3.pgm) >>ym = modulate(y,8,32,'am'); >> plot(ym) >> grating3=repmat(ym,256,1); >> imshow(grating3)
Sampling Per ognuna delle immagini create Eseguire il campionamento con passi 2, 4, 8 senza effettuare alcun filtraggio preventivamente e visualizzarle scacchiera2=scacchiera(1:2:256,1:2:256); scacchiera4=scacchiera(1:4:256,1:4:256); scacchiera8=scacchiera(1:8:256,1:8:256);
Sampling Effettuare una interpolazione di ordine 0 (nearest neighbor), 1 (linear) e 2 (cubic) che riporti le immagini alla dimensione originale e visualizzare le immagini Suggerimento: Help > imresize oppure interp2
Sampling Per ogni coppia di immagini (orginale, interpolata), calcolare l’errore quadratico medio (MSE) ed il PSNR e classificare i metodi di interpolazione considerati in conseguenza Mean-squared error: in the previous equation, M and N are the number of rows and columns in the input images, respectively. PSNR: In the previous equation, R is the maximum fluctuation in the input image data type. For example, if the input image has a double-precision floating-point data type, then R is 1. If it has an 8-bit unsigned integer data type, R is 255, etc error_diff = A - B; decibels = 20*log10(1/(sqrt(mean(mean(error_diff.^2))))); disp(sprintf('PSNR = +%5.2f dB',decibels))
Quantization Per ognuna delle immagini Effettuare una quantizzazione uniforme con passi uguali a 2, 4, 8, 16, 32, 64, 128. Con quanti livelli di grigio vengono rappresentate le immagini rispettivamente in ogni caso? clear all close all x=[1:256]; y=sin(32*x); plot(y) grating1=repmat(y,256,1); figure; subplot(3,3,1) imagesc(grating1); colormap(gray); nbit=8; s=grating1; mx=max(max(s)); s=s/mx; i = nbit while i >= 2 subplot(3,3,i) sc=2^(i-1)-1; %figure(i); sq=s*sc srnd=round(sq); er=sq-srnd; imagesc(srnd); %colormap('gray') i = i-1; end
Quantization Per ogni coppia di immagini (orginale, interpolata), calcolare l’errore quadratico medio (MSE) ed il PSNR e rappresentare ognuno di tali parametri in un grafico in funzione del passo di quantizzazione.