![Page 1: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/1.jpg)
Fusão de imagens utilizando transformada Wavelet e IHS no
ambiente TerraLib
Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software
Docentes:Dr. Gilberto Câmara
Lúbia Vinhas
Discentes:Paulo Honda Ota
Vantier Veronezi Bagli
![Page 2: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/2.jpg)
Estrutura
Introdução- Motivação- Objetivo
Transformação IHS
Fusão por Transformada Wavelets
Padrão Adotado
Resultados
Conclusão
![Page 3: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/3.jpg)
Motivação
Realizar fusão de imagens CBERS através de Transformação Wavelet e IHS no ambiente TerraLib utilizando padrões de projeto para
manipulaçãodos algoritmos portados
Introdução
![Page 4: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/4.jpg)
Objetivos
Portar algoritmo de transformação RGB IHS do aplicativo
SPRING para o ambiente TerraLib
Implementar algoritmos de fusão por Transformadas Wavelets no ambiente TerraLib
Adotar padrões de projeto para manipulação desses algoritmos
Introdução
![Page 5: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/5.jpg)
Transformação RGB IHS
Para descrever as propriedadesde cor de um objeto em umaimagem, normalmente o olhohumano não distingue aproporção de azul, verde e vermelho presentes, e sim, avalia a intensidade (I), a corou matiz (H) e a saturação (S).
![Page 6: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/6.jpg)
Transformação RGB IHS
Fusão
![Page 7: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/7.jpg)
Fusão por Transformada Wavelet
A fusão de imagens através da transformada wavelet,
em geral, é realizada pela troca da sub-banda de baixa
resolução em um determinado nível j, que é resultado da
decomposição de uma imagem pancromática de alta
resolução espacial, por uma imagem de baixa resolução que
contém a informação espectral.
![Page 8: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/8.jpg)
Fusão por Wavelet (método Ventura)
![Page 9: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/9.jpg)
Padrão Adotado
Strategy
Criar uma camada que encapsule os diversos algoritmos
de fusão de forma que possam ser alterados, inseridos ou
removidos independentemente dos clientes que os utilizam.
![Page 10: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/10.jpg)
Padrão Adotado
Problema: Os métodos de fusão por wavelet e transformação IHS possuem comportamentos diferentes.
Fusão por wavelets: entrada: Banda PAN + Banda Multiespectral + Filtro + Nível de decomposição + nome de saída saída: 1 Banda da Imagem Fundida
Fusão por Transformação IHS: entrada: Banda PAN + 3 Bandas Multiespectrais + flag + nome de saída saída: 3 Bandas da Imagem Fundida
Transformação de cores: entrada: 3 Bandas Multiespectrais + flag + nome de saída saída: 3 Bandas da Imagem Transformada (RGB/IHS)
![Page 11: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/11.jpg)
Padrão Adotado
Solução:
Criar classe Imagem Multiespectral (TeImaMult), para uniformizar os
parâmetros de entrada das imagens multiespectrais nos algoritmos de fusão por Wavelet e transformação de cores.
Uniformizar os outros parâmetros de entrada (flag, nível de decomposição, nome da imagem de saída e filtro)
Delegar a instanciação da estratégia escolhida por FACTORY.
![Page 12: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/12.jpg)
Estratégia para fusão / transformação de cor
Fusao
AppFusao()
Estrategia
MetodoFusao()
Ventura
MetodoFusao()
Garguet Método n
_estrategiaFusao/Trans
_estrategiaFusao/Trans->MetodoFusao()
RGB2IHS
MetodoFusao()
IHS2RGB
MetodoFusao()
Método n
MetodoFusao() MetodoFusao() MetodoFusao()
Wavelet
MetodoFusao()
Transformação
MetodoFusao()
![Page 13: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/13.jpg)
// Estratégia de Waveletclass Strat_Fusao_Wave: public Strat_Fusao {public:
Strat_Fusao_Wave(int l,char* f):filtro(f),level(l){};virtual void MetodoFusao(TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ) = 0;char *filtro, *name_out;int level;string name, type;
};class Ventura: public Strat_Fusao_Wave {public:
Ventura(int l,char* f):Strat_Fusao_Wave(l,f){}void MetodoFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ){
for (int i = 0 ; i < ImageMult.getsize() ; i++){name = TeGetName ( name_exit);type = TeGetExtension (name_exit);string temp = name+"_"+Te2String(i)+"."+type;name_out = (char*)temp.c_str();fusionVentura(ImagePan, ImageMult.getband(i), filtro, level, name_out);
}}
};class Garguet: public Strat_Fusao_Wave{public:
Garguet(int l,char* f):Strat_Fusao_Wave(l,f){};void MetodoFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ) {
for (int i = 0 ; i < ImageMult.getsize() ; i++){name = TeGetName ( name_exit);type = TeGetExtension (name_exit);string temp = name+"_"+Te2String(i)+"."+type;name_out = (char*)temp.c_str();fusionGarguet(ImagePan, ImageMult.getband(i), filtro, level, name_out);
}}
};
![Page 14: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/14.jpg)
// Estratégia de Transformação
class Strat_Fusao_Transf: public Strat_Fusao{public:
Strat_Fusao_Transf(int f):flag(f){}virtual void MetodoFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ) = 0;int flag;
};
class RGB2IHS: public Strat_Fusao_Transf{public:
RGB2IHS(int f):Strat_Fusao_Transf(f){};void MetodoFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ){ ihs_RGB2IHS(ImageMult.getband(0), ImageMult.getband(1) , ImageMult.getband(2), flag, name_exit, ImagePan);}
};
class IHS2RGB: public Strat_Fusao_Transf{public:
IHS2RGB(int f):Strat_Fusao_Transf(f){};void MetodoFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan ){ ihs_IHS2RGB(ImageMult.getband(0), ImageMult.getband(1) , ImageMult.getband(2), flag, name_exit, ImagePan);}
};
![Page 15: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/15.jpg)
// Factory da estratégia de processamentoclass Strat_Factory{public:
static Strat_Fusao* make(const string &method,int n = 0, char* f = 0){
if ( method == "Ventura" ) return ( new Ventura(n,f) );else if ( method == "Garguet" ) return ( new Garguet(n,f) );else if ( method == "RGB2IHS" || method == "FusionTrans" ) return ( new RGB2IHS(n) );else if ( method == "IHS2RGB" ) return ( new IHS2RGB(n) );
}};
class Fusao{public:
Strat_Fusao* proc;
Fusao(Strat_Fusao* st):proc(st){}
void AppFusao( TeImaMult& ImageMult, char* name_exit, TeRaster& ImagePan = TeRaster() ){
proc->MetodoFusao (ImageMult, name_exit, ImagePan);}
};
![Page 16: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/16.jpg)
Exemplo de aplicação
CBERS_B2 CBERS_B3 CBERS_B4
![Page 17: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/17.jpg)
spot5_pan
![Page 18: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/18.jpg)
Composição CBERS RGB(342)
CBERS_rgb342
![Page 19: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/19.jpg)
Resultado Wavelet (Ventura) 4 níveis de decomposição
TeImaMult ima3( imab3, imab4 , imab2 ); // classe que suporta n bandasStrat_Fusao* strat = Strat_Factory::make("Ventura", level, filtro);Fusao fusao( strat );fusao.AppFusao(ima3, nomesaida, imapan);
![Page 20: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/20.jpg)
Resultado (Garguet - Duport) 4 níveis de decomposição
TeImaMult ima3( imab3, imab4 , imab2 ); // classe que suporta n bandasStrat_Fusao* strat = Strat_Factory::make(“Garguet", level, filtro);Fusao fusao( strat );fusao.AppFusao(ima3, nomesaida, imapan);
![Page 21: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/21.jpg)
Resultado Fusão por Transformação IHS
TeImaMult ima3( imab3, imab4 , imab2 ); // classe que suporta n bandasStrat_Fusao* strat = Strat_Factory::make(“FusionTrans");Fusao fusao( strat );fusao.AppFusao(ima3, nomesaida, imapan);
![Page 22: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/22.jpg)
I H S
Transformação RGB IHS
TeImaMult ima3( imab3, imab4 , imab2 ); // classe que suporta n bandasStrat_Fusao* strat = Strat_Factory::make(“RGB2IHS", flag);Fusao fusao( strat );fusao.AppFusao(ima3, nomesaida);
IHS2RGB
![Page 23: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/23.jpg)
Conclusões
A utilização de padrões de projeto se mostrou muito eficiente, pois pode-se tratar diferentes algoritmos de mesma forma
A implementação da abstração de imagem multiespectral (classe TeImaMult) se mostrou necessária e eficiente para a uniformização dos métodos utilizados
![Page 24: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:](https://reader035.vdocuments.pub/reader035/viewer/2022062623/552fc10e497959413d8c4fd9/html5/thumbnails/24.jpg)
Agradecimentos
Lúbia Vinhas (DPI - equipe TerraLib)
Ricardo Cartaxo M. Souza(DPI)
Leonardo Santanna Bins(DPI)