Matlab: blending di immagini
Ciao a tutti.
Prima di proseguire nel topic voglio precisare che si tratta si di operazioni su immagini, ma alla fine sono solamente operazioni su matrici.
Ho i seguenti input:
1) Versione passa-basso di un set di immagini (matrice 512x512x3)
2) Versione passa-alto di un set di immagini (matrice 512x512x3)
3) Mappa dei pesi di un set di immagini (matrice 512x512x3)
Il set di immagini è ovviamente il medesimo ed i pixel tra le tre componenti (per ogni immagine) sono nella medesima posizione.
Devo effettuare operazioni separata per le immagini passa-basso e passa-alto, vediamole in dettaglio.
- Per le immagini passa basso devo eseguire un filtraggio di media, ovvero moltiplicare ciascuna immagine per la corrispondente immagine, sommare il risultato e dividere per la somma dei pesi. Supponendo di avere tre immagini potrei fare una cosa del genere:
Vorrei intanto sapere da voi se la procedura mostrata sopra è corretta.
- Per le immagini passa-alto devo eseguire un filtraggio non lineare "max weight". Ovvero considerando le tre immagini passa-alto e le tre immagini dei pesi, devo tenere il pixel tra le immagini passa-alto che ha il maggior peso tra le immagini dei pesi, sapendo che il range è [0 1].
Avete consigli sull'implementazione di questa procedura?
Grazie.
Prima di proseguire nel topic voglio precisare che si tratta si di operazioni su immagini, ma alla fine sono solamente operazioni su matrici.
Ho i seguenti input:
1) Versione passa-basso di un set di immagini (matrice 512x512x3)
2) Versione passa-alto di un set di immagini (matrice 512x512x3)
3) Mappa dei pesi di un set di immagini (matrice 512x512x3)
Il set di immagini è ovviamente il medesimo ed i pixel tra le tre componenti (per ogni immagine) sono nella medesima posizione.
Devo effettuare operazioni separata per le immagini passa-basso e passa-alto, vediamole in dettaglio.
- Per le immagini passa basso devo eseguire un filtraggio di media, ovvero moltiplicare ciascuna immagine per la corrispondente immagine, sommare il risultato e dividere per la somma dei pesi. Supponendo di avere tre immagini potrei fare una cosa del genere:
%LP1 contiene l'immagine passa basso 1 %LP2 contiene l'immagine passa basso 2 %LP3 contiene l'immagine passa basso 3 %W1 contiene l'immagine dei pesi 1 %W2 contiene l'immagine dei pesi 2 %W3 contiene l'immagine dei pesi 3 LP1 = double(LP1) / 255; LP2 = double(LP2) / 255; LP3 = double(LP3) / 255; W1 = double(W1) / 255; W2 = double(W2) / 255; W3 = double(W3) / 255; LP_SUM = ((LP1 .* W1) + (LP2 .* W2) + (LP3 .* W3)); W_SUM = (W1 + W2 + W3); LP_RESULT = LP_SUM ./ W_SUM; LP_RESULT = uint8(LP_RESULT * 255);
Vorrei intanto sapere da voi se la procedura mostrata sopra è corretta.
- Per le immagini passa-alto devo eseguire un filtraggio non lineare "max weight". Ovvero considerando le tre immagini passa-alto e le tre immagini dei pesi, devo tenere il pixel tra le immagini passa-alto che ha il maggior peso tra le immagini dei pesi, sapendo che il range è [0 1].
Avete consigli sull'implementazione di questa procedura?
Grazie.
Risposte
"enigmagame":
- Per le immagini passa-alto devo eseguire un filtraggio non lineare "max weight". Ovvero considerando le tre immagini passa-alto e le tre immagini dei pesi, devo tenere il pixel tra le immagini passa-alto che ha il maggior peso tra le immagini dei pesi, sapendo che il range è [0 1].
Avete consigli sull'implementazione di questa procedura?
Nessuna idea?