Faculdade de Engenharia da Universidade do Porto Licenciatura em Engenharia Electrotécnica e de Computadores Televisão Digital, 2004/2005 ANÁLISE DE IMAGENS PARA EXTRACÇÃO DE CONTORNOS Relatório Alexandre José Brito Vieira Sousa 000503096 Sérgio Bruno Ferreira Torres 000503269
Índice Introdução... 1 Algoritmo desenvolvido... 1 Elaboração da Interface... 2 Botões... 2 Resultados... 3 Conclusões... 5
Introdução: Refere-se o presente relatório ao trabalho prático realizado no âmbito da disciplina de Televisão Digital. Pretende-se com este trabalho implementar um algoritmo que permita extrair os contornos de várias imagens bem como aplicar e comentar os diferentes métodos já existentes. Os métodos utilizados na execução deste trabalho foram os seguintes: Sobel, Prewitt, Roberts, Laplacian, Zero-cross e Canny. Foi ainda implementado um algoritmo diferente dos que foram referidos, que será explicado mais à frente e que tem como base algumas das funções existentes no Matlab 6.5. Algoritmo desenvolvido: O algoritmo desenvolvido baseia-se na utilização das seguintes funções do Matlab: im2bw permite binarizar, ou segmentar, a imagem rgb utilizada, obtendo assim uma imagem a preto e branco onde são detectadas muito facilmente os contornos. edge determina os contornos da imagem binarizada, utilizando o método Sobel como método predefinido. medfilt2 é utilizada duas vezes para determinar a mediana da imagem obtida no fim da iteração eliminando assim algum ruído que a imagem apresenta. bwmorph determina o esqueleto da imagem obtida no fim, de modo a ser obtido um contorno aproximado da imagem original. Inicialmente este algoritmo consiste em obter várias imagens que resultam da imagem original aplicando uma binarização para cada nível de threshold, obtendo assim diferentes imagens com diferentes níveis. Numa segunda fase a partir dessas imagens são obtidas outras mas que apresentam os contornos das anteriores. A imagem final obtida resulta da soma destas. Por fim essa imagem será processada de modo a ser eliminado algum ruído. Para tal é determinada a mediana da imagem final obtida, utilizando a função medfilt2 do Matlab. A imagem obtida apresenta uns contornos muito acentuados, de modo a tornar esses contornos mais finos, aplica-se a função bwmorph que determina o esqueleto dos objectos dessa imagem. Este algoritmo foi elaborado de modo a podermos experimentar novos métodos e fazer diversas comparações entre este e outros existentes. Análise de Imagens Para Extracção de Contornos 1
Elaboração da Interface: A interface foi elaborada de modo a permitir uma interacção simples e eficaz com o utilizador. Como se pode ver na imagem esta interface é composta por vários botões que executam determinadas funções quando são premidos (explicadas detalhadamente na página seguinte). Verifica-se também a existência de zonas para a introdução de texto que serão utilizadas para abrir ou guardar imagens. As janelas presentes (duas grandes e uma mais pequena) são os mostradores das imagens correspondendo a cada janela uma imagem diferente, sendo que a mais pequena serve para mostrar a imagem que foi aberta. O segmento de código correspondente a esta interface está em anexos no código do programa. BOTÕES: Mostrar imagem permite abrir a imagem que está no endereço escrito no espaço reservado para esse efeito, o endereço deve conter o endereço do ficheiro, bem como a nome deste e a extensão. Zoom box podemos seleccionar uma zona da imagem mais pequena arrastando de modo a criar uma caixa, ampliando depois essa zona seleccionada que aparece de modo automático. Aplicar permite aplicar um diferente nível de threshold à imagem que aparece do lado esquerdo, quando é utilizado um dos métodos já existentes. Menu Extracção de contornos permite escolher o método que queremos aplicar na imagem a ser processada. Análise de Imagens Para Extracção de Contornos 2
Resultados: De seguida vão ser apresentados os resultados obtidos para três diferentes tipos de imagens existentes no site da disciplina, para cada uma delas iremos ver os resultados obtidos com cada um dos métodos, que são os seguintes: Imagem1 original (tipo jpeg): Método Sobel: Método Prewitt: Método Roberts : Método Laplacian: Método Canny: Método da Binarização: Análise de Imagens Para Extracção de Contornos 3
Imagem2 original (tipo bmp): Método Sobel: Método Prewitt: Método Roberts : Método Laplacian: Método Canny: Método da Binarização: Análise de Imagens Para Extracção de Contornos 4
Imagem3 original (tipo tif): Método da Binarização: Conclusões: Com a análise efectuada a estes três tipos de imagens diferentes podemos concluir que para todas as imagens, exceptuando as imagens do tipo TIF o método Canny é aquele que apresenta mais informação relativamente aos contornos, e é aquele que melhor descreve a imagem. Quanto aos outros métodos, todos eles apresentam resultados razoavelmente aceitáveis, mas pode-se dizer que o de Roberts é o método menos eficiente, sendo aquele que apresenta piores resultados, os métodos de Sobel, Prewitt e Laplacian apresentam resultados um pouco melhores e muito aproximados entre si, para qualquer das duas primeiras imagens. Os resultados do método Zero-Cross não são apresentados aqui pois são exactamente iguais aos do método Laplacian uma vez que este se baseia no método Zero-Cross. Analisando agora o método da Binarização que foi desenvolvido por nós podemos concluir que os resultados apresentados para as duas primeiras imagens são os esperados mas pode ver-se que para a segunda imagem os resultados não são tão bons mas ainda assim são minimamente aceitáveis. Este método verificou-se útil para a última imagem apresentada, que é do tipo TIF, uma vez que após a realização da experiência efectuada por nós pudemos verificar que esta imagem apenas dava para ser processada com o método que foi desenvolvido, ou seja o método da Binarização, e com resultados satisfatórios como pudemos verificar na imagem acima apresentada. Análise de Imagens Para Extracção de Contornos 5