UFPR – Universidade Federal do Paraná Departamento de Engenharia Elétrica Processamento de Sinais Digitais Professor: Ph.D. Marcelo de Oliveira Rosa Processamento de Imagem: Segmentação e K-means Aluno: Marcel Guarise Matrícula: 20034697 Curitiba, 09 de novembro de 2007. Introdução Neste trabalho será abordado o tema “Processamento de imagem – segmentação e algoritmo K-means”. O trabalho focará uma das etapas do processamento de imagem a Segmentação e apresentará um dos algoritmos utilizado para a realização da segmentação, o K-means. Mas antes é necessário definir o que é o processamento de imagem, como ele funciona, quais as suas etapas e utilidades. O sentido da visão pode ser considerado o meio mais eficiente de que o ser humano dispõe para captar as informações originadas no ambiente que o cerca. Algumas aplicações e alguns tipos de imagens requerem uma interação visual bastante intensa. A capacidade humana para processar e interpretar imensas quantidades de dados de natureza visual motiva o desenvolvimento de técnicas e dispositivos, de modo a estender ainda mais essa capacidade e essa sensibilidade. O conhecimento de como reage o sistema visual humano e de algumas técnicas disponíveis para melhor adequar a imagem à aplicação são importantes para desenvolver soluções computacionais automatizáveis. Nesta ótica, o processamento de imagens permite viabilizar um grande número de aplicações, tanto no domínio do aprimoramento de informações picturais para interpretação humana quanto no domínio da análise automática por computador de informações extraídas de uma imagem ou cena. Como visto em [1], uma imagem ou cena refere-se à função bidimensional de intensidade da luz f(x,y), onde x e y denotam as coordenadas espaciais e o valor f em qualquer ponto (x, y) é proporcional ao brilho ou níveis de cinza da imagem naquele ponto. A figura 1 ilustra uma imagem e a sua convenção. Figura 1. Convenção para representação de imagens digitais. Fonte [1] Podemos dividir o processamento de imagens em algumas etapas e elas são listadas abaixo: 1. Tratamento fora da imagem: Alterações na iluminação, uso de colorantes químicos ou outros processos para melhorar ajudar no processo de aquisição de imagens; 2. Aquisição da imagem: Etapa de amostragem, armazenamento e compactação das imagens. Num SPI (Sistema de Processamento de Imagens) essa fase é realizada geralmente por câmeras à tubo (Vidicom) , CCD, scanners ou alguns sensores dedicados (sistemas de infravermelho, radares, etc.). O produto desta etapa é uma imagem digital, forma para análises computacionais. 3. Melhoramento (“Image Enhancement”): Aqui as imagens digitais são filtradas (eliminando o ruído e realce de contraste) para melhorar a eficiência das próximas etapas do processamento; 4. Segmentação: Etapa de divisão da imagem de entrada em partes, áreas ou “objetos e fundos de imagem”; 5. Parametrização: Determinação de grandezas sobre cada “objeto” encontrado na segmentação, área, perímetro, forma, descrição estrutural, topologia, etc; 6. Reconhecimento: Classificação dos objetos, de acordo com os parâmetros encontrados na etapa anterior; 7. Análise: Associação das grandezas ao problema a ser solucionado, por exemplo atribuindo um rótulo a um objeto, determinando as funções de correlação temporal e espacial, analisando seqüências de imagens, etc; O processamento de imagens tem muitas utilidades e depende exclusivamente do problema a ser solucionado. Assim, de acordo com [2] e [3], seguem abaixo listadas algumas das suas aplicações: Fotografia e impressão; Processamento de imagens de satélites; o Monitoramento de queimadas; Processamento de imagens médicas; o Localização de tumores e outras patologias; o Cirurgia guiada por computador; Detecção da face ou de objeto; o Reconhecimento de digitais; Segmentação Segmentação é uma etapa empregada no processamento de uma imagem. Ele consiste no processo de dividir uma imagem digital em múltiplas regiões, baseados num conjunto de pixels ou objetos, com o objetivo de simplificar e/ou mudar a representação de uma imagem, facilitando a sua análise. De acordo com [3], existem vários processos de segmentação conhecidos. Como resultado, cada um dos pixels em uma mesma região é similar com referência a alguma característica ou propriedade computacional, tais como cor, intensidade, textura ou continuidade. Assim, podemos dividir a segmentação em alguns tipos, que são: Segmentação baseada em Características dos Pixels: o Segmentação de Cores; o Segmentação de Intensidades; Segmentação baseada em Formatos: o Detecção de Descontinuidades; o Detecção de Pontos; o Detecção de Linhas; o Detecção de Bordas; Segmentação por Regiões: o Detecção de Texturas; O processo orientado a análise de pixels, classifica cada ponto de imagem de acordo com as características de cor ou intensidade. Geralmente, as análises por pixel são facilmente implementadas na segmentação. O processo mais conhecido é o Thresholding. Neste processo cada pixel, em tons de cinza é reconhecido binariamente como objeto ou fundo (binariamente, “1” ou “0”). Um método mais avançado cria histogramas, orientado às intensidades de tons de cinza ou de cor, que mostram a freqüência de ocorrência de determinadas intensidades numa imagem. As regiões e objetos são reconhecidos a partir destes dados. Mais informações podem ser encontradas em [4]. A figura 2, ilustra um histograma de uma imagem. Figura 2. Histograma, freqüência de ocorrências de níveis de cinza numa imagem. No processo de segmentação baseado em formas, os bits são analisados como que ao todo, procurando definir formatos já conhecidos, polígonos, círculos, retas elipses ou até mesmo descontinuidades. De acordo com [1], alguns métodos muito utilizados para esses tipos de análise, são live-wire e o watershed transformation. O ultimo método é um algoritmo que divide uma image em áreas baseado na sua topologia. Na segmentação por regiões, os bits são agrupados e analisados, assim é possível detectar texturas e regiões que não apresentam as mesmas cores e intensidades, mas sim uma região com mesma característica. Um exemplo deste tipo de detecção seria o reconhecimento de um objeto xadrez, pois se fosse utilizado uma detecção por pixel, cada quadrado do xadrez seria reconhecido como um objeto a parte. Como principais métodos desse tipo de segmentação, temos: Region Growing, Pyramid Linking e Texture-Energie-Measure. Figura 3. Exemplo de Segmentação por região, através do algoritmo Region Growing. Fonte [5] Várias dificuldades são encontradas no momento da segmentação, e elas são listadas abaixo: Erro de luminação: Se a segmentação for automática, seria interessante para uma melhora da eficiência do processo, um controle do ambiente de aquisição, com correções de iluminação para se obter melhores contrastes e eliminação de sombras; Bordas das regiões são muitas vezes irregulares e imprecisas; Qualidade da distinção de elementos e regiões afetam a precisão do resultado; Problema na escolha para a melhor estratégia e adequação ao que se deseja. Um detalhe maior para o último problema: Vários algoritmos e técnicas de segmentação de imagens foram desenvolvidos, não havendo porém uma solução para os problemas de segmentação. Por isso, é necessário frisar, que muitas vezes para a resolução de um problema de segmentação de imagem é necessária a combinação das técnicas de modo à sua adaptação ao domínio do problema. Por isso, para obter um bom resultado é necessário uma boa interpretação do problema para poder ser assim encontrar a melhor solução para o problema. Sistemas que fazem isto são caros e requerem um grande processamento. O algoritmo K-means O algoritmo K-means (ou k-médias) é um dos algoritmos de clusterização mais conhecidos e utilizados. Uma clusterização nada mais é que um tipo de aprendizado não-supervisionado, que tem com objetivo agrupar um conjunto de objetos em subconjuntos ou clusters. A idéia do algoritmo K-Means, de acordo com [6], é fornecer uma classificação de informações de acordo com os próprios dados, baseada em análises e comparações entre os seus valores numéricos. Assim, o algoritmo fornecerá uma classificação automática sem a necessidade de supervisão humana, ou seja, sem pré-classificação existente. Por causa desta característica, o K-Means é considerado como um algoritmo de mineração de dados (data mining) não supervisionado. Um exemplo que ajuda a facilitar o entendimento deste algoritmo seria uma tabela com linhas e colunas que contêm os dados a serem classificados. Nesta tabela, cada coluna é chamada de dimensão e cada linha contém informações para as dimensões, que também são chamadas de ocorrências ou pontos. Geralmente, trabalha-se com dados contínuos neste algoritmo, mas nada impede que dados discretos sejam utilizados, desde que eles sejam mapeados para valores numéricos correspondentes. Como foi dito, o algoritmo analisa todos os dados desta tabela e cria classificações, isto é, o algoritmo indica uma classe (cluster) e diz quais linhas pertencem a esta classe. A quantidade de classes desejadas deve ser fornecida pelo usuário. Este número de classes que deve ser passado para o algoritmo é chamado de k e é dele que vem a primeira letra do nome do algoritmo. O algoritmo compara cada valor de cada linha por meio da distância e gera as classes, além de classificar as ocorrências. Geralmente, para calcular a que distância uma ocorrência está da outra, é utilizada a distância euclidiana. A maneira de calcular esta distância depende da quantidade de atributos da tabela fornecida. Após o cálculo das distâncias o algoritmo calcula centróides para cada uma das classes. Conforme as iterações do algoritmo, o valor de cada centróide é refinado pela média dos valores de cada atributo de cada ocorrência pertencente a este centróide. Com isso, o algoritmo gera k centróides e coloca as ocorrências da tabela de acordo com sua distância dos centróides. Basicamente, o K-means tenta separar os dados em k clusters Si (i=1,2,...,k) de tal forma que a variância intra-cluster seja minizada, como mostrado na fórmula abaixo: Uma seqüência simples de entender a iteração do K-means, mostrada em [7] é: 1. Escolher valores iniciais aleatórios para os centróides i; 2. Cada ponto xj é associado ao cluster Si cujo centróide i seja o mais próximo de xj. 3. Os centróides de cada cluster Si são recalculados com base nos pontos associados a eles; 4. Repete-se os passos 2 e 3 até a convergência, que ocorre quando os centróides não mudam mais de lugar. As figuras 4 ilustra vários sendo agrupados em algumas centróides. Já a figura 5 mostra o resultado de uma segmentação de uma imagem por meio de um algoritmo K-means. Figura 4. Vários pontos com três centróides após três iterações. Fonte [7] Figura 5. Segmentação realizada pelo método K-means. Fonte [7] O comportamento do algoritmo k-means apresenta vantagens no que concerne à simplicidade à eficiência. É rápido para cálculos simples, possibilitando o processamento seqüencial dos lados, acarretando baixa quantidade de armazenamento de informações a serem processadas. A desvantagem é a sua dependência dos valores iniciais de k, da ordem em que as amostras são processadas, da escolha dos primeiros centros de agrupamento e da geometria das mostras disponíveis para análise. Em alguns casos sua utilização requer experimentação com vários valores de k e diferentes escolhas dos parâmetros iniciais. Conclusão A importância do processamento de imagens é muito grande em diversas aplicações em áreas como a medicina, metereologia, robótica, entre outras. Através desta ferramenta podemos obter informações de uma imagem que nem mesmo o olho humano poderia conseguir. Graças ao nível de processamento de imagens já alcançado pelo homem, os resultados obtidos por essa ferramenta são satisfatórios, mas vale ressaltar que a muito ainda a se desenvolver e assim melhor a rapidez e a qualidade dos resultados ainda mais. No “mundo dos pixels” as imagens são processadas em várias etapas, sendo a etapa de segmentação uma das mais importantes, pelo fato de “descobrir, encontrar e separar” os objetos do fundo de cena. Mas para isso são necessários algoritmos matemáticos para analisar um pixel ou um conjunto deles e realizar a segmentação. Um algoritmo poderoso é o K-means, que possui uma ótima eficiência e possui a vantagem de ter uma grande velocidade de cálculo, mas que acaba dependendo dos valores iniciais para as centróides (k). Referências [1] Introdução ao processamento de imagens. http://atlas.ucpel.tche.br/~vbastos/pi.htm; [2] Processamento de imagens. http://pt.wikipedia.org/wiki/Segmenta%C3%A7%C3%A3o_%28processamento_de_image m%29; [3] Segmentação. http://de.wikipedia.org/wiki/Segmentierung_%28Bildverarbeitung%29; [4] Thresholding. http://en.wikipedia.org/wiki/Thresholding_%28image_processing%29; [5] Segmentação de dados de imagem. http://mnementh.de/static/data/Segmentierung.pdf; [6] Data mining na prática, o algoritmo K-means. http://www.imasters.com.br/artigo/4709/ sql_server/data_mining_na_pratica_algoritmo_k-means/; [7] Reconhecimento de padrões. http://ltodi.est.ips.pt/jascenso/padroes/teoricas/Aula %207%20-%20Aprendizagem%20N%C3%A3o%20Supervisionada.pdf;