12.07.2015 Views

Stylization and Abstraction of Photographs - Luiz Velho - Impa

Stylization and Abstraction of Photographs - Luiz Velho - Impa

Stylization and Abstraction of Photographs - Luiz Velho - Impa

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Autor: Jonas Sossai Júnior, aluno PIBIC do IMPAOrientador: <strong>Luiz</strong> <strong>Velho</strong>Baseado no trabalho apresentado por Doug DeCarlo e Anthony Santella no SIGGRAPH2002.Índice1. Introdução2. Detecção de Arestas2.1. Introdução2.2. Descrição do Método2.3. Resultados3. Segmentação da Imagem3.1. Introdução3.2. Descrição do Método3.3. Resultados4. Abstração de regiões importantes4.1. Introdução4.1. Descrição do Método4.1. Resultados5. Comparação dos Resultados6. Considerações Finais7. Bibliografia


1. IntroduçãoO presente trabalho tem como finalidade criar desenhos estilizados a partirde fotografias, abstraindo as regiões mais importantes destas, de maneira que sepossa extrair boas informações a partir de uma fotografia.A criação de um desenho estilizado a partir de um fotografia pode ser feitasem que se considere as regiões importantes. Entretanto, estamos interessadosem considerar as regiões mais importantes de uma fotografia, para assimrealmente criar uma abstraçãoMas como saber quais regiões são importantes? Qu<strong>and</strong>o olhamos para umafoto não olhamos para a foto toda; nosso foco de visão fica em uma determinadaregião por um determinado tempo. Isto responde à nossa pergunta: as regiõesmas importantes são aquelas para as quais olhamos primeiro e por mais tempo.2. Detecção de Arestas2.1. IntroduçãoArestas são os pontos de uma imagem que são provavelmente contornos deobjetos, e em função disso, sua detecção tem fundamental importância naidentificação de objetos numa cena.Os principais métodos de detecção de arestas são baseados em verificaçãodo gradiente da imagem. Desta maneira pixels que apresentam um gradiente altoprovavelmente são contornos de objetos, ou seja, arestas.


2.2. Descrição do MétodoO método utilizado é descrito abaixo:Imagem RGBTransformação para escalas de cinzaImagem Gray-ScaleFiltro GaussianoImagem Gray-Scale sem ruídosDetecção de arestas utiliz<strong>and</strong>o ooperador de RobertsArestas DetectadasPrimeiramente a imagem é transformada em uma imagem em escalas decinza através de sua luminância, onde:luminância(r,g,b)=0.299*r+ 0.587*g + 0.114*bDesta maneira temos o seguinte resultado:Imagem RGBImagem Gray-Scale


O segundo passo, é realizar uma suavização na imagem de modo que todosos ruídos (pontos com gradiente alto mas que não fazem parte de contornos)sejam eliminados. Para isso é utilizado o filtro gaussiano 5x5 abaixo :147 4 1416 26 164G=1/273*72641267416261641 4 7 4 1Tendo em mãos este filtro, para cada pixel da imagem é feito umaconvolução com este filtro:P’(x,y)=∑∑G(i,j) P(x-i,y-i)Feito isso, temos o seguinte resultado:Imagem Gray-ScaleImagem SuavizadaO último estágio de nosso método é executar a detecção de arestas. Paraisso são utilizados os operados de gradiente de Roberts, descritos abaixo:Gx =100-1Gy =0-110


Para cada pixel da imagem suavizada é feito uma convolução com estesfiltros:Px(x,y)=∑∑Gx(i,j) P(x-i,y-i)Py(x,y)=∑∑Gy(i,j) P(x-i,y-i)O gradiente da imagem é obtido através da fórmula:Grad(x,y)= Px(x,y)* Px(x,y) + Py(x,y)*Py(x,y)Para cada pixel, o valor do gradiente é comparado com um Threshold. Se ovalor do gradiente for maior, o pixel pertence a uma aresta e é pintado de preto;se não, ele é pintado de branco. Deste modo temos o seguinte resultado:Imagem SuavizadaArestas Detectadas(Threshold=350)2.3. ResultadosA seguir são apresentados alguns resultados obtidos pelo s<strong>of</strong>tware.Imagem RGBArestas Detectadas(Threshold=330)Imagem RGBArestas Detectadas(Threshold=600)


3. Segmentação da Imagem3.1. IntroduçãoSegmentação da imagem é o processo de dividir a imagem em regiões decor ou textura, de modo a produzir uma nova imagem com menos cores. Nonosso caso utilizaremos a segmentação da imagem em regiões de cor.Qu<strong>and</strong>o uma imagem é segmentada, são associados a ela diversas regiõesde cor, onde o valor da cor em cada região é a média das cores dos pixels queestão contidos nesta região.Existem vários métodos para executar a segmentação de uma imagem emregiões de cor, como o Split <strong>and</strong> Merge, o Region Growing, entre outros.3.2. Descrição do MétodoO método utilizado (Crescimento de regiões) é descrito abaixo:Imagem RGBDeterminação das sementesImagem com n sementes definidasSelecionar i-ésimasementeCrescer i-ésima regiãoMerging dos pixels restantesImagem com n regiões de corImagem segmentada


O primeiro passo do método é a determinação das sementes para ocrescimento das regiões. As primeiras sementes são escolhidas baseado no valorde gradiente de cada pixel, utiliz<strong>and</strong>o o operador de Sobel, representado abaixo:-10+1+1+2+ 1Gx =-20+ 2Gy =000-1 0 +1-1 -2 -1Px(x,y)=∑∑Gx(i,j) P(x-i,y-i) Py(x,y)=∑∑Gy(i,j) P(x-i,y-i)Grad(x,y)= Px(x,y)* Px(x,y) + Py(x,y)*Py(x,y)Se o valor de Grad de um pixel for menor que um Threshold=0.3, este pixelprovavelmente não estará em um contorno de objeto, e assim será uma sementepara crescimento de regiões.Por questões de uniformidade na segmentação, a imagem é varrida de modoque de cada 10 em 10 pixels seja escolhida uma semente.Como resultado desta pesquisa de sementes, temos:Imagem RGBSementes EncontradasO segundo passo, após escolhidas as sementes é, para cada semente, crescera região. O pseudocódigo para este método é o seguinte:


egião=sementeCrescerRegiao(pixel_x, pixel_y)InicioSe pixel não pertence a regiãoInicioDiferença=|média de cor da região-média de cor do pixel|Se diferença < ThresholdInicioadiciona pixel a regiãoCrescerRegiao(pixel_x, pixel_y-1)CrescerRegiao(pixel_x, pixel_y+1)CrescerRegiao(pixel_x-1, pixel_y)CrescerRegiao(pixel_x+1, pixel_y)FimFimFimPintarRegiaoComo resultado, temos a seguinte imagem segmentada:Imagem RGBImagem Segmentada (Threshold=60)Após feito isso, nota-se que inúmeros pixels da segmentação continuaramsem pertencer a uma região. Desta maneira, para estes pixels é realizado umalgoritmo de merging, que basicamente os integram às regiões que ostangenciam. Desta maneira temos como resultado final:Imagem Segmentada (Threshold=60)Imagem Segmentada (Threshold=60)(após merging)


3.3. ResultadosA seguir são apresentados alguns resultados obtidos pelo s<strong>of</strong>tware.Imagem RGBImagem Segmentada(Threshold=50)Imagem RGBImagem Segmentada(Threshold=60)4. Abstração de Regiões importantes4.1. IntroduçãoQu<strong>and</strong>o olhamos para uma imagem, não olhamos para todas regiões delasimultaneamente. Olhamos primeiramente para regiões que nos chamam aatenção, ou seja, as regiões mais importantes da imagem.Desta maneira, se quisermos abstrair informação de regiões importantes deuma imagem, devemos executar nossa segmentação de modo que estas regiõessejam preservadas. Mas como?


4.2. Descrição do MétodoO método utilizado para abstrair as regiões é descrito abaixo:Imagem RGBDetecção de arestasEscolha das RegiõesImportantesAbstraçãoSegmentação da ImagemDesenho Estilizado com abstraçãoPara extrair as regiões mais importantes, desenvolvemos o seguinte método.O usuário seleciona primeiramente os pontos que ele supostamente observaprimeiro em uma fotografia. Para cada ponto escolhido, também sãoselecionadas 8 pontos vizinhos, como mostrado abaixo:Tendo em mãos estes pontos vizinhos, compara-se a cor de cada um delescom o ponto escolhido. Se esta diferença for menor que um Threshold=40, esteponto vizinho é escolhido como semente.Ao final desta escolha feita pelo usuário, temos em mãos os pontos maisimportantes da fotografia, ou seja, as sementes que serão as primeiras a serutilizadas para crescimento da imagem, os quais serão segmentadas com umThreashold de segmentação menor que o restante das sementes.Imagem RGBRegiões selecionadas


4.3. ResultadosThreshold da detecção de arestas => 800Threshold da segmentação da imagem => 60Imagem RGBDesenho Estilizado(sem abstração)Imagem RGBDesenho Estilizado(com abstração)Threshold da detecção de arestas => 500Threshold da segmentação da imagem => 50Imagem RGBDesenho Estilizado(sem abstração)Imagem RGBDesenho Estilizado(com abstração)


5. Comparação de resultadosResultados encontrados por DeCarlo e SantellaResultados encontrados pelo s<strong>of</strong>twaredesenvolvido6. Considerações FinaisMelhorias e trabalhos futuros- Utilização de um algoritmo para suavizar as fronteiras deregiões de cor;- Permitir ao usuário escolher níveis de detalhe.Agradecimentos- Ao pr<strong>of</strong>essor <strong>Luiz</strong> <strong>Velho</strong>, pelos ensinamentos e peloencorajamento na realização do trabalho;- Ao pr<strong>of</strong>essor Paulo Cezar, pelos ensinamentos complementaresdados no final do curso.


7. Bibliografia- DeCarlo , Santella . <strong>Stylization</strong> <strong>and</strong> <strong>Abstraction</strong> <strong>of</strong> <strong>Photographs</strong>. SIGGRAPH2002.- Foley, James D. , Van Dam, Andries , Feiner, Steven K. ,Hughes, JohnF. Computer Graphics , Principles <strong>and</strong> practices 1996 Addison-Wesleypublishing company , Inc.- <strong>Velho</strong>, <strong>Luiz</strong> , Gomes , Jonas . Computação gráfica : Imagem , 1994IMPA/SBM -Rio de Janeiro

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!