Considere os seguintes descritores de Cor: - CW-LUV Igual ao que ja implementei CW-HSV, mas é feito no espaço CIELuv e usa um nível a mais de recursão (127 bits) - DCD-MPEG7 Extração: Agrupa cores com regiões semelhantes; cada cor tem uma porcentagem (soma das porcentagens é igual a 1); cada cor tem uma variância; a imagem como um todo tem uma coerência espacial :: O(n) + O(Agrupamento). Não sei como é feito o agrupamento de cores. Deve usar o Genealized Lloyd Algorithm (GLA). Existe um outro descritor na lista que substitui o GLA por um outro algoritmo de agrupamento chamda LBA. Distância: O(Nqi*NQj), NQi=quantidade de cores dominantes na imagem de consulta; NQj=quantidade de cores dominantes na imagem da base - CSD-MPEG7 Extração: Passa janela 8x8 na imagem incrementando h(m) sempre que a cor m estiver dentro da janela (m=0,1,...,M-1) ? quantização em M cores; dependendo do tamanho da imagem, a janela pode ter taxas diferentes de "sampling"; normaliza valores de h(m) pela qtde de locais que a janela pode ficar :: [0,1]; quantiza então cada bin para 8 bits (não linear); melhor resultado para 184 bins ? 8 bits; melhor que SCD :: O(n) + O(nb), O(nb) para quantizar bins para 8 bits Distância: O(nb), nb=numero de bins [L1 ou L2] - Histograma Acumulado (CHD) Extração: O(n), similar ao histograma global de cor Distância: O(nb), nb=numero de bins - Williams Correlograms Extração: O(n) - Calcula Correlograma para mais de uma propriedade de cor: cor, magnitude do gradiente, rank e texturedness Nao sei o q é um correlograma! Distância: O(nb), nb=numero de bins [L1] - CCH - Cell Histogram do Stehling Extração: Divide a imagem em células e calcula, para cada cor, o histograma da célula: O(n) Gera FV muito grande = 1856 bins (on average) and 4096 bins (at most) Distância: O(nb), nb=numero de bins [L1] - LuColorBitmap Extração: O(n) - acha a média e o desvio padrão entre todos os pixels da imagem (para cada banda RGB). Divide a imagem em m blocos e acha a média de cada bloco. Distância: Euclidiana para medidas globais e Hamming para locais. No entanto é necessária uma normalização Gaussiana que depende de toda a base de imagens - MestradoDanielSilva - descritor coesao Extração: O(n) - Segmenta, agrupa regiões semelhantes, analisa áreas da regiões. Não sei como é feito o agrupamento de regiões. Distância: O(nb), nb=numero de bins [L1, L2 ou Linf (L1 foi melhor)] Escolha um dos descritores acima para implementar. Considere as seguintes sugestões para a implementação: 1- Implemente o descritor em linguagem C 2- Utilize a biblioteca de funções fornecida. Nesta biblioteca estão funções de leitura e gravação de imagens e estruturas de dados para a manipulação das imagens. Use as estruturas de dados conforme a biblioteca (Image, CImage, etc). 3- Você pode implementar o descritor usando uma estrutura de diretórios de compilação (com diretórios de fontes, includes, etc) ou então codificar tudo num único arquivo. 4- É importante que você implemente o algoritmo de extração e a função de distância do descritor como funções independentes. Elas devem seguir as especificações: void Extraction(char *img_path, char *fv_path); double Distance(char *fv1_path, char *fv2_path); A função Extraction é a responsável por extrair as características de uma imagem. O caminho dessa imagem no sistema de arquivos é o primeiro parâmetro da função. O segundo parâmetro é o caminho do arquivo que será gerado pela função. Este arquivo irá conter as características extraídas da imagem, ou seja, será o vetor de características. A função Distance é a responsável por comparar dois vetores de características. Ela recebe como parâmetro os caminhos dos dois arquivos de características a serem comparados. A função retorna um valor do tipo double que é a distância calculada. Obs.: caso a função de distância do descritor (proposta no artigo) gere um valor de similaridade ao invés de um valor de distância, faça a conversão para esse valor ser a distância e não a similaridade entre as imagens. Normalmente essa conversão é muito simples: a similaridade é inversamente proporcional à distância. 5- Verifique cuidadosamente se a implementação está correta. Para isso, sugere-se que você use a função de extração de características em mais de uma imagem diferente. Depois de testar a extração, teste a função de distância. Verifique se a distância calculada corresponde a uma distância coerente com as diferenças visuais entre as imagens. 6- Após testar bem seu descritor, entre no link abaixo e siga o procedimento de cadastro do descritor na ferramenta de testes: http://www.lis.ic.unicamp.br/~otavio/tests/ferramenta/cadastra_descritor.php