Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Interazione e Multimedia, 9 CFU => Topic started by: Jad1 on 25-02-2010, 18:44:35



Title: Bayer Pattern
Post by: Jad1 on 25-02-2010, 18:44:35
Data l'immagine Bayer Pattern

 
                                    I =    20 200 240 200  20
                                            60 240   20   20  60
                                            20 240 200 200  20
                                            20 240   20   0    20
                                            20 200   20   0    20


                             
Applicare una color interpolation che tenga conto dei vicini 8-connessi.
Il mio dubbio è questo : devo prima suddividere l'immagine nei 3 canali principali? perchè ho provato a farlo ma non sono assolutamente convinto del risultato !
potete postare una vostra soluzione?
(certo che oggi sto rompendo un po troppo  .whistling)

Grazie a tutti cmq  :pray                             


Title: Re:Bayer Pattern
Post by: andreacannella on 25-02-2010, 19:40:51
pensa cos'è il bayer pattern e a cosa serve e ti risponderai da solo  :-OK


Title: Re:Bayer Pattern
Post by: Jad1 on 25-02-2010, 20:38:18
penso di essere riuscito a svolgerlo! Qualcuno puo postare una sua soluzione per un eventuale confronto e verifica ?!  :yoh


Title: Re:Bayer Pattern
Post by: Nova on 26-01-2011, 17:17:28
Il bayer pattern è da intendere così:
G B
R G

Oppure:

G R
B G
?

L'interpolazione da usare è la bilineare giusto?


Title: Re:Bayer Pattern
Post by: Daréios89 on 26-01-2011, 17:48:40
Credo la prima, lo schema del Bayer Pattern dovrebbe essere il primo.
Non ho capito però coem svolgere questo esercizio.
Intanto...il Bayer pattern è un metodo di interpolazione oppure un filtro?
Ancora non ho capito cos' è e a che serve....


Title: Re:Bayer Pattern
Post by: Nova on 26-01-2011, 18:00:11
Il payer pattern è uno schema di disposizione di sensori.
devi dividere quella matrice in 3 matrici: una matrice R, una G ed una B secondo lo schema:
G R
B G


Title: Re:Bayer Pattern
Post by: turì on 27-01-2011, 16:34:09
Il payer pattern è uno schema di disposizione di sensori.
devi dividere quella matrice in 3 matrici: una matrice R, una G ed una B secondo lo schema:
G R
B G

come si divide in R G B?

se puoi postare il procedimento :pray


Title: Re:Bayer Pattern
Post by: Daréios89 on 27-01-2011, 17:36:34
Questo dovrebbe essere un esempio, nel Bayer Pattern:

Code:
%Bayer Pattern
%V R
%B V

clear all;
close all;

A=double(imread('lena.jpg'));
[m,n,t]=size(A);
B=A;

for i=1:m
    for j=1:n
        if mod(i,2)==0 & mod(j,2)==0 || mod(i,2)~=0 & mod(j,2)~=0
            B(i,j,1)=0;
            B(i,j,3)=0;
        else if mod(i,2)==0 & mod(j,2)~=0
                B(i,j,2)=0;
                B(i,j,3)=0;
            else
                B(i,j,1)=0;
                B(i,j,2)=0;
            end
        end
    end
end

BP=B(:,:,1)+B(:,:,2)+B(:,:,3);

figure,
subplot(1,3,1), imshow(uint8(A),[]),title('Originale');
subplot(1,3,2), imshow(uint8(B),[]),title('Bayer Pattern falsi colori');
subplot(1,3,3), imshow(uint8(BP),[]),title('Bayer Pattern reale');


       
       



Title: Re:Bayer Pattern
Post by: InTheZone on 27-01-2011, 19:18:36
L'esercizio si svolge così:
La matrice data è organizzata in modo tale da avere i valori secondo lo schema: 
                                                                                                                                G B G B G
                                                                                                                                R G R G R
                                                                                                                                G B G B G
                                                                                                                                R G R G R
                                                                                                                                G B G B G  (schema bayer pattern)

nel senso che nella cella 1-1 c'è un valore verde, nella cella 1-2 c'è un valore blue, 1-3 di nuovo verde, 1-4 di nuovo blue......stessa cosa per la cella 2-1 (rosso), cella 2-2(verde), cella 2-3 (di nuovo rosso) ...e così via per tutta la matrice.
A questo punto da una matrice (quella di partenza 5X5 ) ne generi 3 (sempre 5X5), dove in una metti tutti i valori R in una quelli G e nell'altra quelli B, lasciando vuote le celle senza valore(visto che li andrai a calcolare per interpolazione).
Una volta ottenute le 3 matrici, ad ognuna applichi una color interpolation: replication, bilinear o bicubic (in questo esercizio è a piacere)
Ad esempio applichiamo una replication, allora la prima riga della matrice del verde sarà: 20 20 240 240 240 (guardati lo schema della replication nelle slides).
Replicando i valori in tutte e tre le matrici avrai ottenuto una color interpolation-replication della matrice di partenza.

Spero di essere stato chiaro, è più facile a farlo che a spiegare come si fa  .camberman


Title: Re:Bayer Pattern
Post by: turì on 27-01-2011, 19:22:19
grande!

grazie mille .wink


Title: Re:Bayer Pattern
Post by: Daréios89 on 27-01-2011, 23:36:28
Scusa ma io non ho capito, quello fatto da me è un Bayer Pattern?
Quindi se devo fare una replication devo prendere l' immagine di partenza, prendere i tre canali separatamente e applicare una replication alle singole 3 matrici?
Ma quello fatto da me è un bayer pattern?

Non ho capito come viene la prima riga del verde della replication, nella matrice originale ho:

20 200 240 200  20

dove i verdi sono 20 240 e 20
Ore per il verde deve andare a destra secondo lo schema, quindi siamo d' accordo nell' avere:

20 20 240 240 ma perchè c' è un altro 240 dopo?


Title: Re:Bayer Pattern
Post by: turì on 28-01-2011, 10:28:52
per effetto della replication credo

se la matrice G è questa

20 _ 240 _ 20    _ = bit vuoto

per riempire i bit vuoti usando la replication si ha

20 20 240 240 20

penso sia questo il procedimento.

e se invece dovessimo usare una interpolazione bilineare o bicubica? come si scelgono gli n-connessi?


Title: Re:Bayer Pattern
Post by: Daréios89 on 28-01-2011, 13:49:18
per effetto della replication credo

se la matrice G è questa

20 _ 240 _ 20    _ = bit vuoto

per riempire i bit vuoti usando la replication si ha

20 20 240 240 20

penso sia questo il procedimento.


e se invece dovessimo usare una interpolazione bilineare o bicubica? come si scelgono gli n-connessi?

Ora ci siamo lui aveva scritto:

Code:
20 20 240 240 240

Per quella bilineare si prendono se non ricordo male i vicini 4 connessi, per quella bicubica i 16 pixels più vicini.


Title: Re:Bayer Pattern
Post by: turì on 28-01-2011, 15:02:25
lo so ma nel nostro caso, essendoci delle posizioni vuote, come si prendono i valori?


Title: Re:Bayer Pattern
Post by: Daréios89 on 28-01-2011, 15:51:01
Vuoti?
Nel nostro caso abbiam ofatto l' esempio con la prima riga del verde, quindi dovrebbe diventare:

20 20 240 240 20

Dove l'ultimo venti è un pixel verde e rimane così, poichè è un bordo, almeno credo, non capisco cosa intendi per posizioni vuote, nella matrice di partenza non mi pare di averne visti.

Invece tu sapresti rispondere ad una domanda del primo compito del 2008 alla domanda 5?
Chiede di applicare un kernel ad un' immagine, ma io non ho capito come ottiene nei riquadri grigi quei valori

http://www.dmi.unict.it/fstanco/lezioni_IEM_2007_2008/scritto_010208_soluzione.pdf (http://www.dmi.unict.it/fstanco/lezioni_IEM_2007_2008/scritto_010208_soluzione.pdf)


Title: Re:Bayer Pattern
Post by: InTheZone on 28-01-2011, 16:26:25
Ragazzi scusate, è stato un errore di battitura, l'ultimo pixel della prima riga è ovviamente 20  .arrossisco


Title: Re:Bayer Pattern
Post by: Daréios89 on 28-01-2011, 17:04:49
Grazie
Sapresti rispondere alla domanda che ho fatto nell' altra pagina ultimo post?

E inoltre qui alla prima domanda, come vengono assegnati i valori dei pixel dei 3 piani?

http://www.dmi.unict.it/fstanco/lezioni_IEM_2007_2008/scritto_120608_soluz.pdf


Title: Re:Bayer Pattern
Post by: InTheZone on 28-01-2011, 17:35:34
Nel caso di quel compito devi fare la seguente: prendi il pixel in questione (quello colorato in grigio) dalla matrice di partenza, ad esempio il primo da considerare è quello di posizione (2,4) = 11.
Una volta individuato, consideri i vicini 8-connessi, ovvero tutti gli altri pixel che lo circondano....questo riquadrino sarà grande esattamente quanto il kernel (3X3).
A questo punto applichi il kernel a tale riquadro ovvero fai la somma dei prodotti punto a punto. Il risultato sarà solo nel pixel centrale
Riquadro da considerare:
                230 12 15
                100 11 10
                123 12 19

Applichi il kernel: [0*230] + [0*12] + [0*15]+ [(-1)*100] + [1*11] + [1*10] + [0*123] + [0*12] + [0*19] = -79

Quindi nella posizione (2,4) dopo aver applicato il kernel al posto di 11 ci sarà -79

Ciao a presto  .camberman



Title: Re:Bayer Pattern
Post by: turì on 28-01-2011, 19:27:24
Vuoti?
Nel nostro caso abbiam ofatto l' esempio con la prima riga del verde, quindi dovrebbe diventare:

20 20 240 240 20

Dove l'ultimo venti è un pixel verde e rimane così, poichè è un bordo, almeno credo, non capisco cosa intendi per posizioni vuote, nella matrice di partenza non mi pare di averne visti.

Invece tu sapresti rispondere ad una domanda del primo compito del 2008 alla domanda 5?
Chiede di applicare un kernel ad un' immagine, ma io non ho capito come ottiene nei riquadri grigi quei valori

http://www.dmi.unict.it/fstanco/lezioni_IEM_2007_2008/scritto_010208_soluzione.pdf (http://www.dmi.unict.it/fstanco/lezioni_IEM_2007_2008/scritto_010208_soluzione.pdf)

aspetta prima una volta ottenuti i tre canali RGB

ad esempio il canale G tu hai

20 _ 240 _ 20

con la replication diventano 20 20 240 240 20 ci sei?

e se io invece di usare la replication dovessi usare la bilineare o la bicubica come la ottengo a partire da

20 _ 240 _ 20 ?


Title: Re:Bayer Pattern
Post by: Daréios89 on 28-01-2011, 23:42:26
 .penso
Allora se guardi lo schema risulterebbe che i pixel verdi danno praticamente il valore a quello centrale, cioè nello schema per dire i pixel verdi sono disposti a quattro, quindi il pixel centrale senza valore avrà i pixel verdi così:

uno sopra, un sotto, uno a destra, uno a sinistra.

Quindi se prendiamo sempre la prima riga, e vogliamo attribuire il valore dei pixel vuoti in base ai verdi dovremmo avere (dovremmo):

Il valore mancante dovrebbe essere dato dalla somma di quello a sinitra, destra e sotto, quindi guardando la matrice avremmo:

20 500 240 280 20

 .penso


Title: Re:Bayer Pattern
Post by: Daréios89 on 07-02-2011, 17:22:55
Mi è sorto un ulteriore dubbio, nell' esercizio in cui si chiede di applicare un interpolazione tenendo conto dei vicino 8 connessi, noi per come lo abbiamo fatto applichiamo per esempio una normale replication, ma perchè dice di tenere conto dei vicini otto connessi?