Segmentação de imagens - Engenharia Eletrica

Propaganda
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;
Download