O propósito desse Toolbox é prover um conjunto de algoritmos para análise e classificação de Imagem Hiperespectral (HSI). Essa é uma iniciativa do Grupo de Pesquisa em Computação Ciêntifica da Pontifícia Universidade Católica de Goiás (PUC-GO). A primeira versão deste Toolbox (v 0.1) possui as seguinte organização:
| Diretório | Descrição |
|---|---|
| functions | Contém os arquivos .m referente a cada uma das funções do Toolbox. A medida que novas funções forem implementadas, sugere-se categorizar as funções em subdiretórios conforme sua finalidade. |
| data | Contém as matrizes de exemplo para experimentar os algoritmos. |
| app | Contém um arquivo hsiAnalisys.m referente a um pequeno aplicativo para explorar uma HSI. |
Para utilizar o Toolbox, basta clicar no botão verde "Clone or Download" no canto superior direito dessa página e descompactar o arquivo em qualquer diretório em seu computador. Para executar os algoritmos é necessário ter o software Matlab instalado. Recomenda-se a versão R2014a a ou posterior.
Estão disponíveis dento do diretório data HSIs de amostras de banana para experimentação do Toolbox. Foram digitalizadas a polpa e a casca de 4 espécies de banana. Essas espécies são: nanica, marmelo, prata e maçã.
Abra o software Matlab e navege até o diretório onde você descompactou os arquivos. Execute o seguinte código:
>> config;
>> load('polpa_prata.mat');
>> load('casca_prata.mat');
>> Banana = cat(1, polpa_prata, casca_prata);
>> Y = hsiAnalysis(Banana);Durante a execução do aplicativo, informe as opções conforme forem sendo solicitadas.
As funções disponíveis nesta implementadas até agora são:
- hsiGetLayer: Obtém uma matriz 2D com os valores do respactivo layer informado. Sintaxe:
>> L = hsiGetLayer(HSI, layer);- hsiGetImageLayer: Obtém a imagem do respactivo layer informado. Sintaxe:
>> I = hsiGetImageLayer(HSI, layer);- hsiShowLayer: Exibe a imagem em escala de cinza de um respectivo layer da HSI.
>> I = hsiShowLayer(HSI, layer);- hsiShowSpectrum: Exibe o espectro de um determinado pixel da HSI.
>> hsiShowSpectrum(HSI, x, y);- hsiNormalize: Normaliza os dados entre 0 e 1. Sintaxe:
>> Norm_HSI = hsiNormalize(HSI);- hsi2matrix: Esta função converte uma HSI em matriz 2D.
>> X = hsi2matrix(HSI);- hsiRemoveBackground: Executa o agrupamento espectral em duas classes empregando os algoritmos PCA e K-Means. Essa função retorna o rótulo de cada pixel após a execução dos algoritmos. É necessário identificar qual rótulo corresponde ao cluster com espectros do fundo. Para melhor aproveitamento do uso desta função, observe sua implementação dentro do arquivo hsiAnalisys.m no diretório app.
>> Y = hsiRemoveBackground(X);- getClusters: Executa o algoritmo K-Means a partir da matriz de Scores da PCA e respectivo número de pcs. O parâmetro k corresponde ao número de clusters desejado. Essa função retorna os rótulos de cada espectro 'Y', os centroids 'C', as somas dentro do cluster de distâncias ponto à centroid 'sumd' e a matriz de distâncias 'D'.
>> [Y, C, sumd, D] = getClusters( PCAscore, pcs, k );- showClusterOnImage: Exibe em uma determinada imagem, os pixels referente a um determinado cluster na cor RGB escolhida. Os parâmetros de entrada são:
- image: imagem de um respectivo layer (ver função hsiGetImageLayer),
- idx: vetor de rótulos de classes,
- cluster: identificador numérico referente ao cluster que se deseja exibir na imagem,
- r, g, b: valores entre 0 e 255 referente a intensidade de vermelho, verde e azul em uma imagem colorida no padrão RGB.
Sintaxe:
>> [ gray_image, rgb_image, fig ] = showClusterOnImage( image, idx, cluster, r, g, b);O primeiro passo é familiarizar com o sistema de versionamento de código. Para quem não possui conhecimento sobre controle de versão usando Git, recomento o seguinte curso disponível no YouTube: Curso básico de Git e GitHub.
O segundo passo é entrar em contato com Daniel Lucena ou Arlindo Galvão por meio do grupo LAMV.