Interpolazione di immagini



Похожие документы
Rendering air show e verifica della sincronizzazione

Interpolazione ed approssimazione di funzioni

Metodi Stocastici per la Finanza

Le immagini digitali. Le immagini digitali. Caterina Balletti. Caterina Balletti. Immagini grafiche. Trattamento di immagini digitali.

Esempio di prova di laboratorio

Esempio. Approssimazione con il criterio dei minimi quadrati. Esempio. Esempio. Risultati sperimentali. Interpolazione con spline cubica.

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Dati importati/esportati

SPECIFICHE E LIMITI DI EXCEL

Esercizi su lineare indipendenza e generatori

Lezione 9: Cambio di base

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Sistemi Informativi Territoriali. Map Algebra

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Rappresentazione delle immagini

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

STUDIO DEL SEGNO DI UNA FUNZIONE

Le query di raggruppamento

Plate Locator Riconoscimento Automatico di Targhe

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Dal foglio di carta alla multimedialità

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

GNred Ver1.5 Manuale utenti - Modulo diashow

RICHIAMI SULLE MATRICI. Una matrice di m righe e n colonne è rappresentata come

Esercitazione n. 10: HTML e primo sito web

Informatica. Rappresentazione dei numeri Numerazione binaria

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Studente: SANTORO MC. Matricola : 528

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Marta Capiluppi Dipartimento di Informatica Università di Verona

PDF created with pdffactory trial version

Documentazione esterna al software matematico sviluppato con MatLab

Capitolo 13. Interrogare una base di dati

FASCI DI RETTE. scrivere la retta in forma esplicita: 2y = 3x + 4 y = 3 2 x 2. scrivere l equazione del fascio di rette:

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Applicazioni lineari

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

8.9 CREARE UNA TABELLA PIVOT

CREARE UN JUKEBOX CON POWERPOINT

Analisi della performance temporale della rete

Grafici tridimensionali

Elaborazione testi: immagini

II.f. Altre attività sull euro

Rette e piani con le matrici e i determinanti

Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche

Matlab: Strutture di Controllo. Informatica B

Matlab: Gestione avanzata dei file

Elaborazioni nel dominio spaziale (1) Soluzioni

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Salvare e importare dati

Lezione 8. La macchina universale

[Tutoriale] Realizzare un cruciverba con Excel

Compilatore risorse display grafico LCD serie IEC-line

Dimensione di uno Spazio vettoriale

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

C M A P M IONAM A E M NT N O

La capacità ricettiva

LE FUNZIONI A DUE VARIABILI

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

4 3 4 = 4 x x x 10 0 aaa

UNIVERSITÀ DEGLI STUDI DI TERAMO

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

La codifica delle Immagini. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132Sesto San Giovanni

Autorizzazioni Kronos Web

Comandi di Input/Output in Matlab

EMISSIONE FATTURE: LA STAMPA AVANZATA

GUIDA SOFTWARE GESTIONE DEL PERSONALE ENTI NON SOGGETTI AL PATTO DI STABILITA

Codifica delle immagini

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

INTRODUZIONE A MATLAB Matrix Laboratory

Informazione analogica e digitale

gestione e modifica di immagini fotografiche digitali

BEM: Conferma BEM (Buono Entrata Materiale) a Magazzino

Convertitori numerici in Excel

Capitolo 2 Distribuzioni di frequenza

Parte 2. Determinante e matrice inversa

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Come creare uno schema per il punto croce con il PAINT

Immagini digitali Appunti per la classe 3 R a cura del prof. ing. Mario Catalano

Tutorial 2. Importare una pianta di Autocad in ARCHline

I database relazionali (Access)

Database 1 biblioteca universitaria. Testo del quesito

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Trasformazioni 2D. Grande differenza rispetto alla grafica raster!

Utilizzo di index() per determinare la colonna delle x

MANUALE PARCELLA FACILE PLUS INDICE

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Acquisizione delle immagini digitali

NUOVO SISTEMA AGGIORNAMENTO DA FYO

L analisi dei dati. Capitolo Il foglio elettronico

Richiesta pagina PHP (es: index.php)

Il programma Physics per le calcolatrici TI-89, TI-89 Titanium, TI-92 Plus, Voyage 200

Foglio Elettronico. Creare un nuovo foglio elettronico Menu File Nuovo 1 clic su Cartella di lavoro vuota nel riquadro attività

Транскрипт:

Interpolazione di immagini Data un immagine in formato png (o jpeg o altro) di m n pixel, la si vuole portare ad una dimensione maggiore (ad esempio 2m 2n pixel). c Paola Gervasio - Calcolo Scientifico - 2014/15 1

Formato RGB di memorizzazione di una immagine Una immagine di m n pixel è memorizzata in un array a 3 indici A=(n,m,3) o equivalentemente in 3 matrici R, G, B di dimensione (n,m). R=red; G=green; B=blue. m= numero pixel lungo la x = numero di colonne di A n= numero pixel lungo la y = numero di righe di A I valori numerici assunti dagli elementi di queste matrici sono numeri interi in [0,255]. La combinazione dell intensità dei tre colori base nella posizione (i,j) delle tre matrici fornisce il colore finale del pixel (i,j). Per leggere un immagine.png da disco: A=imread ( nomefile, formato ) A=imread( scia, png ); c Paola Gervasio - Calcolo Scientifico - 2014/15 2

Per visualizzare l immagine in una finestra grafica: image(a) Per vedere l occupazione di memoria: >> whos Name Size Bytes Class A 141x181x3 76563 uint8 Quindi n=141 e m=181. Gli elementi di A sono numeri interi che occupano 1Byte (invece degli 8 Byte dei numeri floating point). Una volta salvata l immagine in A, conviene salvare in due variabili il numero n di pixel lungo la direzione y ed il numero m di pixel lungo la direzione x e scomporre A in 3 matrici distinte con i 3 colori. [n,m,dim]=size(a); R=A(:,:,1); G=A(:,:,2); B=A(:,:,3); c Paola Gervasio - Calcolo Scientifico - 2014/15 3

A questo punto stabiliamo un fattore di ingrandimento (per esempio fattore=2;) ed ingrandiamo l immagine con la ricostruzione dei pixel intermedi: 1. con semplice moltiplicazione dei pixel, 2. con una interpolazione bilineare composita, 3. con spline cubiche. c Paola Gervasio - Calcolo Scientifico - 2014/15 4

1. Duplicazione dei pixel a=b=e=f=a; c=d=g=h=b; i=l=o=p=c; m=n=q=r=d; Per realizzare la duplicazione delle informazioni in modo semplice, basta sfruttare il prodotto di Kronecker fra matrici, implementato nel comando kron di Matlab. M=ones(2,2); % la dimensione di M e pari % al numero di ripetizioni per ogni pixel R1=kron(double(R),M); G1=kron(double(G),M); B1=kron(double(B),M) N.B. Il comando kron lavora solo su dati di tipo double, allora bisogna convertire R, G, B da uint8 a double. c Paola Gervasio - Calcolo Scientifico - 2014/15 5

Ora dobbiamo ricostruire l immagine completa, assemblando R1, G1, B1 [n1,m1]=size(r1); A1=uint8(zeros(n1,m1,3)); A1(:,:,1)=uint8(R1); A1(:,:,2)=uint8(G1); A1(:,:,3)=uint8(B1); figure(2); image(a1) e salvare l immagine su disco: imwrite(a1, scia1.png, png ) c Paola Gervasio - Calcolo Scientifico - 2014/15 6

Ingrandimento con duplicazione dei pixel. c Paola Gervasio - Calcolo Scientifico - 2014/15 7

2. Interpolazione bi-lineare Poniamo a=a, c=b, b=ricostruzione del colore a partire dai colori A e B, ad esempio: a=a; b=(a+b)/2; c=b; d=(a+c)/2; e=(a+b)/2+(c+d)/2; f=(b+d)/2;... Questa è interpolazione bilineare composita in 2D realizzabile con la function interp2 di MATLAB. c Paola Gervasio - Calcolo Scientifico - 2014/15 8

interp2 di Matlab La forma più generica per richiamare interp2 è: z1=interp2(x,y,z,x1,y1); per interpolazione bi-lineare composita z1=interp2(x,y,z,x1,y1, spline ); per le spline, - x e y, ascisse e ordinate corrispondenti alle quote z, - z è la matrice dei dati da interpolare. Nel nostro caso x=(1:m), y=(1:n), con m=numero di pixel in orizzontale e n= numero di pixel in verticale. - x1, y1 sono vettori riga contenenti i nuovi punti (risp. lungo le direzioni x e y) in cui si vuole valutare l interpolato, z1 è la nuova matrice, contenente i valori del polinomio interpolatore composito (o spline) nei punti di coordinate (x1,y1). c Paola Gervasio - Calcolo Scientifico - 2014/15 9

N.B. interp2 lavora solo su dati double. Bisogna fare una conversione da uint8 a double e poi i risultato deve essere riconvertito in uint8 per disegnare l immagine. 1. Costruire i vettori x1 e y1, che rappresentano le coordinate dei pixel nella nuova figura, h=1/2; x1=(1:h:m); y1=(1:h:n) ; è come se si introducessero dei pixel tra quelli esistenti. 2. interpolare facendo tutti i cambi di dati opportuni: z=double(r); R1=uint8(interp2(x,y,z,x1,y1)); z=double(g); G1=uint8(interp2(x,y,z,x1,y1)); z=double(b); B1=uint8(interp2(x,y,z,x1,y1)); A questo punto: ricostruire l immagine, disegnarla e salvarla su disco. [n2,m2]=size(r2); A2=uint8(zeros(n2,m2,3));... c Paola Gervasio - Calcolo Scientifico - 2014/15 10

Ingrandimento con interpolazione bi-lineare a tratti. c Paola Gervasio - Calcolo Scientifico - 2014/15 11

3. Interpolazione con spline cubiche in 2D Per costruire un interpolazione con spline, si procede come con l interpolazione bi-lineare composita sostituendo le chiamate ad interp2 con: R1=uint8(interp2(x,y,double(R),x1,y1, spline )); G1=uint8(interp2(x,y,double(G),x1,y1, spline )); B1=uint8(interp2(x,y,double(B),x1,y1, spline )); c Paola Gervasio - Calcolo Scientifico - 2014/15 12

Ingrandimento con interpolazione spline in 2D. c Paola Gervasio - Calcolo Scientifico - 2014/15 13

duplicazione bilineare spline c Paola Gervasio - Calcolo Scientifico - 2014/15 14

Ingrandimento con interpolazione duplicazione dei pixel. c Paola Gervasio - Calcolo Scientifico - 2014/15 15

Ingrandimento con interpolazione bi-lineare a tratti. c Paola Gervasio - Calcolo Scientifico - 2014/15 16

Ingrandimento con interpolazione spline in 2D. c Paola Gervasio - Calcolo Scientifico - 2014/15 17