24
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

Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:

Embed Size (px)

Citation preview

Page 1: Fusão de imagens utilizando transformada Wavelet e IHS no ambiente TerraLib Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software Docentes:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

// 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:

// 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:

// 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:

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:

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:

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:

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:

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:

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:

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:

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:

Agradecimentos

Lúbia Vinhas (DPI - equipe TerraLib)

Ricardo Cartaxo M. Souza(DPI)

Leonardo Santanna Bins(DPI)