Pages: [1]   Go Down
Print
Author Topic: Chiarimento su interpolazione bilineare.  (Read 925 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
klarkent
Matricola
*
Offline Offline

Gender: Male
Posts: 32



« on: 08-11-2012, 13:23:57 »

Alla lezione di giorno 6/11/2012 il prof. ha fatto un esempio su come applicare l'interpolazione bilineare ad una immagine che prima è stata rimpicciolita e successivamente zoomata. Provando ad applicare la regola v(x,y)=ax+by+cxy+d sono riuscito ad interpolare solamente i valori per i pixel che hanno coordinate (pari, pari).
Guardando il codice del prof. pubblicato sullo studium ho notato che il prof. durante l'interpolazione fa riferimento a valori che, volendo ingrandire ed interpolare un'immagine, a noi dovrebbero essere sconosciuti e cioè i valori della matrice I.

Code:
for i=2:m-1
    for j=2:n-1
            if mod(j,2)==0 & mod(i,2)==0
                a=inv( [i-1 j-1 (i-1)*(j-1) 1; ...
                    i-1 j+1 (i-1)*(j+1) 1; ...
                    i+1 j-1 (i+1)*(j-1) 1; ...
                    i+1 j+1 (i+1)*(j+1) 1])*[I(i-1,j-1), I(i-1,j+1), I(i+1,j-1), I(i+1,j+1)];
                Z(i,j)=a(1,1)*i+a(2,1)*j+a(3,1)*i*j+a(4,1);

            end
    end
end
Il codice del prof. quindi funziona perché appunto siamo ancora in possesso della matrice I. Ma se avessimo solamente l'immagine corrispondente alla matrice I rimpicciolita e l'immagine corrispondente zoomata come cambia quel pezzo di codice?!
Io, come dicevo prima, sono riuscito ad interpolare solo i valori di posizione (pari, pari) mentre se applico la formula modificando il sistema con le coordinate dei quattro pixel più vicini spesso tale sistema non ammette soluzioni e quindi ho vari problemi e i pixel non vengono interpolati bene.
Logged
Pages: [1]   Go Up
Print
Jump to: