160 likes | 248 Views
Escola Superior de Tecnologia e Gestão de Beja Engenharia Informática – Ano Lectivo 2010/2011 Estruturas de Dados e Algoritmos Apresentação do Trabalho de Avaliação Connected Component Labeling Realizado por: Eduardo Cardeira nº 6033. Connected Component Labeling – O que é isso ?
E N D
Escola Superior de Tecnologia e Gestão de Beja Engenharia Informática – Ano Lectivo 2010/2011 Estruturas de Dados e Algoritmos Apresentação do Trabalho de Avaliação ConnectedComponentLabeling Realizado por: Eduardo Cardeira nº 6033
ConnectedComponentLabeling – O que é isso ? • O ConnectedComponentLabeling (Marcãção de Componentes Conexos) é uma aplicação algorítmica da teoria dos grafos (mais especificamente, a teoria dos StronglyConnectedComponents). • Este algoritmo, maioritariamente aplicado na área da Visão por Computador (ComputerVision), permite processar imagens binárias e colorir cada uma das áreas conexas que as compõem com cores diferentes, permitindo identificar facilmente cada uma delas. • O processo referido permite distinguir, de forma simples, vários objectos presentes numa imagem, o que torna o algoritmo muito útil em diferentes áreas da sociedade, como a medicina, o exército, a robótica ou a astronomia. • Existem várias formas diferentes do algoritmo, as quais incluem os métodos TwoPass, OnePass e vários MultiPass.
ConnectedComponentLabeling – Como Funciona? Passos de Execução ( Segundo o método TwoPass ): FirstPass ( 1ª Passagem ): 1- Percorrer a imagem binária por colunas e linhas, analisando cada pixel;
ConnectedComponentLabeling – Como Funciona? FirstPass ( 1ª Passagem ): 2 – Se o pixel não pertencer à imagem (valor > 0): 1 – Identificar os pixéis vizinhos do actual; 2 – Se não existirem vizinhos, atribuir um novo valor ao pixel; 3 – Caso contrário, descobrir qual o valor mínimo entre os vizinhos e atribuir esse valor ao pixel; 4 – Guardar as equivalências entre marcas diferentes pertencentes a uma mesma área.
ConnectedComponentLabeling – Como Funciona? FirstPass ( 1ª Passagem ): 2 – (Exemplos Visuais):
ConnectedComponentLabeling – Como Funciona? SecondPass ( 2ª Passagem ): 1 – Percorrer novamente a imagem binária, analisando cada um dos pixéis; 2 – Se o pixel não pertencer ao fundo da imagem: 1 – Substituir o valor da marcação do pixel pelo valor mais pequeno correspondente;
ConnectedComponentLabeling – Código da Aplicação A estrutura do código desenvolvido é a seguinte: - Classesdo Projecto: ImageOperations – Métodos para manipulação dum ficheiro de imagem; Main – Executa os métodos principais da função; TwoPass – Contém os métodos responsáveis pelo funcionamento do algoritmo TwoPass.
ConnectedComponentLabeling – Código da Aplicação - Métodos das Classes: - ImageOperations: - openImage – Abre um ficheiro de imagem. - saveImage– Guarda um ficheiro de imagem. - getWidth – Obtém o comprimento da imagem. - getHeight – Obtém a altura da imagem. - imageBinarization – Converte a imagem recebida numa imagem Binária.
ConnectedComponentLabeling – Código da Aplicação - Métodos das Classes: - Main: - main – Chama as operações essenciais da aplicação. - getCPUTime – Obtém o tempo de execução gasto pelo CPU.
ConnectedComponentLabeling – Código da Aplicação - Métodos das Classes: - TwoPass: - getNeighborLabels – Devolve um array com as marcas vizinhas. - numberOfDifferentLabels – Calcula o número de marcas vizinhas diferentes. - getLowestNeighborLabel – Devolve a marca vizinha mais pequena. - labelPixel – Marca um pixel com um determinado valor.
ConnectedComponentLabeling – Código da Aplicação - Métodos das Classes: - TwoPass: - getLabel – Devolve a marca de um pixel. - colorize – Aplica cor a cada uma das áreas de acordo com o valor da sua marca correspondente. - generateColors – Gera cores aleatórias para as várias marcas. - findSet – Devolve o conjunto da lista de equivalências que contém o elemento especificado.
ConnectedComponentLabeling – Código da Aplicação - Métodos das Classes: - TwoPass: - setEquivalences – Gera equivalências entre as várias marcas de uma área conexa. - setLabelValue – Define o valor de uma marca. - run – Corre o método do TwoPass.
ConnectedComponentLabeling – Resultados Obtidos Ao processar três versões de uma mesma imagem com tamanhos diferentes, e contar o tempo de execução do algoritmo para cada uma delas, obteve-se a seguinte tabela de resultados:
ConnectedComponentLabeling – Resultados Obtidos Os dados da tabela permitiram elaborar o seguinte gráfico que relaciona a dimensão das imagens em pixéis, com o tempo de execução do algoritmo:
ConnectedComponentLabeling – Resultados Obtidos Depois de analisar os vários dados podemos concluir que: - O tempo de execução do algoritmo é proporcional ao tamanho da imagem processada; - Quanto menor for o tamanho da imagem a processar, mais eficiente se torna o algoritmo; - Provavelmente, existem métodos mais eficientes do que o TwoPasspara sistematizar o ConnectedComponentLabeling.
ConnectedComponentLabeling – Conclusão Para terminar, podemos dizer que: - Os processos de ConnectedComponentLabeling são uma forma simples e eficaz de produzir distinção entre áreas conexas de uma imagem; - São úteis na criação e implementação de vários processos essenciais em várias áreas da sociedade e uma das bases principais da Visão por Computador.