Buscar

Atividade Prática - PDI - Nota 100

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER
ESCOLA SUPERIOR POLITÉCNICA
BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO
DISCIPLINA DE Processamento Digital de Imagens
 
 
 Atividade Prática
professor: Charles Way Hun Fung
Santos - SP
2020
SUMÁRIO
RESUMO	i
1	INTRODUCAO	1
1.1	OBJETIVOS	1
2	METODOLOGIA	1
3	resultados e discussões	1
6	REFERÊNCIAS BIBLIOGRÁFICAS	1
RESUMO
Esta atividade consiste em reunir, através de quatro diferentes experimentos, procedimentos para processamento digital de imagens com o ambiente matemático SciLab. Serão abordados tópicos importantes da disciplina, tais como Histograma, Filtragem Espacial, Modelagem de cores e morfologia matemática.
Palavras-chave: processamento digital, processamento de imagens, SciLab.
Abstract: This experimental work is intended to gather different processes applying digital image processing topics and approaches. The main subjects in this practical work are Histogram, Space Filtering, colors modeling and mathematic morphology concepts.
Keywords: digital processing, processing images, SciLab.
i
14
1. INTRODUCAO 
Os procedimentos experimentais executados nesta atividade possuem imagens especificadas pelo roteiro desta atividade no portal AVA Univirtus. No desenvolvimento de cada atividade serão realizados processos característicos de cada tópico segregado.
OBJETIVOS
Utilizar o ambiente matemático SciLab para resolver os problemas de processamento de imagens.
METODOLOGIA
Conforme citado, cada processo implementado nos experimentos a seguir serão realizados no ambiente virtual SciLab. A resolução de cada item das atividades deve conter o código e, caso necessário, as imagens de resultado.
Procedimentos Experimentais
Histograma
Para realizar esta atividade, fazemos a leitura das imagens fornecidas pelo roteiro house.tif, cameraman.tif e lena_color_256.tif usando o comando “imread”.
Imagens utilizadas para atividade histograma.
Observa-se que após a leitura das imagens designadas com a ferramenta SciLab, as imagens em escala de cinza possuem uma diferença nas dimensões em comparação com uma imagem colorida.
Imagem do console SciLab para leitura das imagens.
	De acordo com o demonstrado a imagem colorida “imcol” possui três dimensões, enquanto as imagens em escala de cinza possuem duas dimensões.
Descrição de tamanho da imagem colorida.
	
Após convertermos a imagem colorida em níveis de cinza utilizando a função “rgb2gray”, possuímos uma matriz dimensional resultante com grau similar às matrizes das imagens que já estavam com estas características anteriormente, ou seja, bidimensionais.
Imagem de conversão e rgb2gray.
A imagem acima demonstra o código utilizado para converter a imagem colorida e apresenta o comando “subplot” que irá imprimir as imagens resultantes da conversão na tela.
Janela resultante da função subplot.
	Para obtermos o histograma das imagens em níveis de cinza, precisamos utilizar a função “imhist” do ambiente. Abaixo está a relação dos comandos feitos para levantamento do histograma das imagens: 
Imagem de comandos para histograma.
O histograma é um gráfico que representa a distribuição dos pixels em razão dos níveis de cinza. Observa-se abaixo o histograma da imagem cameraman.tif. Sabemos que quanto mais próximo do nível igual a 255, mais claro é o nível de cinza do pixel. Notamos, então, uma considerável concentração de pixels mais próximos do nível mais baixo de cinza, ou seja, mais escuros, devido à roupa do homem. Além de uma distância entres os pixels escuros e os níveis médio/claro, devido a imagem possuir uma paisagem clara ao fundo do homem:
Histograma cameraman.tif.
	Abaixo a relação das imagens em níveis de cinza e seus respectivos histogramas, acrescida do código utilizado para essa impressão:
Código para impressão do subplot.
Imagem resultante do subplot com histograma.
	É possível também realizar a equalização do histograma, com o comando “imhistequal”. Vide os comandos utilizados para tal:
--> imcameq = imhistequal(imcam);
--> imhoueq = imhistequal(imhou);
--> imgrayeq = imhistequal(imgray);
--> [qtd1,niv1] = imhist(imcameq);
--> [qtd2,niv2] = imhist(imhoueq);
--> [qtd3,niv3] = imhist(imgrayeq);
Esta função realiza uma distribuição mais ampla dos pixels através do eixo de nível de cinza. Isso define mais a imagem com tons mais claros ou mais escuros, dependendo da tendência original do pixel. Conforme abaixo, o histograma e as respectivas imagens após realização da equalização:
Imagem com histogramas equalizados.
Filtragem Espacial
Para realizar esta atividade, faremos a leitura das imagens jetplane.tif e walkbridge.tif.
Imagens utilizadas para a atividade.
	Na filtragem espacial, serão utilizados comandos do ambiente virtual juntamente com máscaras definidas pela atividade. Estas máscaras aplicarão filtros na imagem a fim de destacar determinadas características.
Detecção de pontos Isolados
Para realizarmos a filtragem com destaque de pontos isolados, será aplicada a convolução de uma matriz sobre as imagens. A matriz utilizada nesta atividade foi exemplificada na atividade prática 2 da disciplina, a qual é uma forma de representação matricial dos laplacianos.
Imagem da matriz para pontos isolados.
	Após a leitura das imagens e criação da matriz a ser utilizada, aplicaremos a convolução nas imagens lidas utilizando o comando “conv2” do SciLab. Porém é necessário converter os pixels de valor inteiro para real antes de aplicar a convolução nas figuras.
.
Imagens da leitura das imagens, criação da matriz e conversão de pixels.
	Realizando os códigos de aplicação da matriz e em seguida o subplot, obtemos os seguintes resultados:
Código para convolução e impressão do filtro de pontos isolados.
Imagens resultado da aplicação do filtro.
	Percebemos que após a aplicação da matriz as imagens resultantes apresentam destaque aos pontos isolados. Dito isto e de acordo com as características das imagens originais, que possuem uma grande diversidade de elementos não uniformes, há poucos traços que podemos reconhecer nas imagens resultantes. Tais como as vigas da ponte e as linhas do corpo do avião.
Isso ocorre porque este filtro destacou pontos que não podíamos ver, mas estavam lá. As imperfeições da neve e do rio são bons exemplos de pontos isolados que não eram vistos na forma original.
Detecção de linha
Os filtros de detecção de linha são filtros que podem ser usados nas imagens para enfatizar determinados traços em determinada direção. Isso depende da máscara de filtro utilizada para a convolução, pois as linhas possuem diversas direções.
Matrizes para aplicação dos filtros de linha.
Leitura e criação das máscaras no SciLab.
	
	Abaixo segue o código para aplicação da convolução e para impressão das imagens:
--> res1H = conv2(imjetR,maskH);
--> res1V = conv2(imjetR,maskV);
--> res145P = conv2(imjetR,mask45P);
--> res145N = conv2(imjetR,mask45N);
--> res2H = conv2(imwalR,maskH);
--> res2V = conv2(imwalR,maskV);
--> res245P = conv2(imwalR,mask45P);
--> res245N = conv2(imwalR,mask45N);
--> subplot(251);
--> imshow(imjet);
--> subplot(252);
--> imshow(res1H);
--> subplot(253);
--> imshow(res1V);
--> subplot(254);
--> imshow(res145P);
--> subplot(255);
--> imshow(res145N);
Resultados dos filtros de linha para imagem jetplane.tif:
Resultados do filtro de linhas na imagem walkbridge.tif:
	As imagens, conforme explicado anteriormente, possuem os destaques para as linhas da imagem original. Cada imagem na direção descrita pelas máscaras, respectivamente horizontal, vertical, 45 graus positivos e 45 graus negativos.
Detecção de Borda
Para fazer a detecção de borda iremos utilizar 4 modelos de filtros. Roberts, Prewitt, Sobel e Robinson.
Máscara de detecção de borda de Robinson (1977).
Máscaras de detecção de borda Roberts, Prewitt e Sobel.
Aplicando filtro de borda de Roberts nas imagens:
--> mask_rbts1 = [-1,0;0,1];
--> mask_rbts2 = [0,-1;1,0];
--> res_imjet1 = conv2(mask_rbts1,imjetR); 
--> res_imjet2 = conv2(mask_rbts2,imjetR); 
--> subplot(121);
--> imshow(res_imjet1);--> subplot(122);
--> imshow(res_imjet2);
--> res_imwal1 = conv2(mask_rbts1,imwalR); 
--> res_imwal2 = conv2(mask_rbts2,imwalR); 
--> subplot(121);
--> imshow(res_imwal1);
--> subplot(122);
--> imshow(res_imwal2);
Filtro de bordas Roberts na imagem jetplane.tif.
Filtro de bordas Roberts na imagem walkbridge.tif.
Resultados de aplicação de filtros de borda de Prewitt:
--> mask_pre1 = [-1,-1,-1;0,0,0;1,1,1];
--> mask_pre2 = [-1,0,1;-1,0,1;-1,0,1];
--> res_imjet1 = conv2(mask_pre1,imjetR); 
--> res_imjet2 = conv2(mask_pre2,imjetR); 
--> res_imwal1 = conv2(mask_pre1,imwalR); 
--> res_imwal2 = conv2(mask_pre2,imwalR); 
--> subplot(221);
--> imshow(res_imjet1);
--> subplot(222);
--> imshow(res_imjet2);
--> subplot(223);
--> imshow(res_imwal1);
--> subplot(224);
--> imshow(res_imwal2);
Resultados de aplicação do filtro de Prewitt.
Resultados de aplicação de filtros de bordas de Sobel:
--> mask_sob1 = [-1,-2,-1;0,0,0;1,2,1];
--> mask_sob2 = [-1,0,1;-2,0,2;-1,0,1];
--> res_imjet1 = conv2(mask_sob1,imjetR); 
--> res_imjet2 = conv2(mask_sob2,imjetR); 
--> res_imwal1 = conv2(mask_sob1,imwalR); 
--> res_imwal2 = conv2(mask_sob2,imwalR); 
--> subplot(221);
--> imshow(res_imjet1);
--> subplot(222);
--> imshow(res_imjet2);
--> subplot(223);
--> imshow(res_imwal1);
--> subplot(224);
--> imshow(res_imwal2);
Resultados de aplicação do filtro de Sobel.
Resultados de aplicação dos filtros de Robinson:
--> mask_rob1 = [1,0,-1;2,0,-2;1,0,-1];
--> mask_rob2 = [0,-1,-2;1,0,-1;2,1,0];
--> mask_rob3 = [-1,-2,-1;0,0,0;1,2,1];
--> mask_rob4 = [-2,-1,0;-1,0,1;0,1,2];
--> mask_rob5 = [-1,0,1;-2,0,2;-1,0,1];
--> mask_rob6 = [0,1,2;-1,0,1;-2,-1,0];
--> mask_rob7 = [1,2,1;0,0,0;-1,-2,-1];
--> mask_rob8 = [2,1,0;1,0,-1;0,-1,-2];
Repetindo a mesma parte do código abaixo para a imagem walkbridge.tif. através da variável “res_imwal”.
--> res_imjet1 = conv2(mask_rob1,imjetR);
--> res_imjet2 = conv2(mask_rob2,imjetR);
--> res_imjet3 = conv2(mask_rob3,imjetR);
--> res_imjet4 = conv2(mask_rob4,imjetR);
--> res_imjet5 = conv2(mask_rob5,imjetR);
--> res_imjet6 = conv2(mask_rob6,imjetR);
--> res_imjet7 = conv2(mask_rob7,imjetR);
--> res_imjet8 = conv2(mask_rob8,imjetR);
--> subplot(241);
--> imshow(res_imjet1);
--> subplot(242);
--> imshow(res_imjet2);
--> subplot(243);
--> imshow(res_imjet3);
--> subplot(244);
--> imshow(res_imjet4);
--> subplot(245);
--> imshow(res_imjet5);
--> subplot(246);
--> imshow(res_imjet6);
--> subplot(247);
--> imshow(res_imjet7);
--> subplot(248);
--> imshow(res_imjet8);
Filtros de borda de Robinson na imagem jetplane.tif.
Filtros de borda de Robinson na imagem walkbridge.tif.
	Conforme vimos nestes experimentos com filtros de bordas, notamos que estes atores fazem com que as imagens resultantes da convolução destaquem as bordas das figuras inclusas na imagem, de forma gradiente. Abaixo modelos destas bordas gradientes:
Modelos de bordas degrau, rampa e telhado respectivamente.
Modelo de Cores
Para realizar esta atividade, faremos a leitura das imagens: baboo_colorido.tif, jupiter.tif e lena_colorida.tif.
Imagens utilizadas por esta atividade.
Separação R,G e B
Código:
--> bab = imread('baboo_colorido.tif');
--> jup = imread('jupiter.tif');
--> len = imread('lena_colorida.tif');
Repetindo o código a seguir para cada uma das 3 imagens para obter as componentes vermelho, verde e azul de cada imagem. Substituindo a variável “bab“, pela variável de imagem da respectiva imagem.
Código utilizado para components RGB da imagem baboo_colorido.tif.
Componentes RGB das imagens.
Conversão CMY
Imagens RGB convertidas para CMY (Ciano, Magenta e Amarelo).
Código para conversão.
Abaixo código para separação das componentes em CMY e impressão das imagens resultantes:
--> Cbab = cmyBab(:,:,1);
--> Mbab = cmyBab(:,:,2);
--> Ybab = cmyBab(:,:,3);
--> Cjup = cmyJup(:,:,1);
--> Mjup = cmyJup(:,:,2);
--> Yjup = cmyJup(:,:,3);
--> Clen = cmyLen(:,:,1);
--> Mlen = cmyLen(:,:,2);
--> Ylen = cmyLen(:,:,3);
--> subplot(331);
--> imshow(Cbab);
--> subplot(332);
--> imshow(Mbab);
--> subplot(333);
--> imshow(Ybab);
--> subplot(334);
--> imshow(Cjup);
--> subplot(335);
--> imshow(Mjup);
--> subplot(336);
--> imshow(Yjup);
--> subplot(337);
--> imshow(Clen);
--> subplot(338);
--> imshow(Mlen);
--> subplot(339);
--> imshow(Ylen);
Imagens em CMY com componentes separadas.
Conversão HSI
O formato HSI é composto por três partes Matiz (“Hue”), Saturação (“Saturation”) e Intensidade (“Intensity”). A saturação o grau de diluição de uma cor pura pela luz branca, já a intensidade pode ser interpretada como o brilho e a matiz é a cor pura da imagem.
--> //COnvertendo a imagem RGB para HSI//
--> hsiBab = rgb2hsv(bab);
--> hsiJup = rgb2hsv(jup);
--> hsiLen = rgb2hsv(len);
--> subplot(131);
--> imshow(hsiBab);
--> subplot(132);
--> imshow(hsiJup);
--> subplot(133);
--> imshow(hsiLen);
Imagens convertidas de RGB para HSI.
Imagens com as componentes HSI separadas.
Componentes individuais RGB
Abaixo é a sequência de imagens com as componentes RGB individualizadas, zerando as demais:
Inserção de ruídos
Nesta etapa estaremos aplicando ruídos com o comando “imnoise” na imagem lena_colorida.tif. Trabalharemos com dois tipos de ruído, gaussiano e Sal e Pimenta. As imagens demonstrativas estarão apresentando à direita a imagem original e à esquerda a imagem com ruído aplicado.
Gaussiano
Código:
--> lenGau = imnoise(len,'gaussian');
--> subplot(121);
--> imshow(len);
--> subplot(122);
--> imshow(lenGau);
Demonstração Gaussiano.
Sal e Pimenta
Código:
--> lenSeP = imnoise(len,'salt & pepper');
--> subplot(121);
--> imshow(len);
--> subplot(122);
--> imshow(lenSeP);
Demonstração sal e pimento.
Filtros
Aplicando um filtro de característica passa-baixa nas imagens com ruídos tratadas anteriormente, obtemos o seguinte resultado (Imagem com ruído gaussiano e sal e pimenta respectivamente):
Código:
--> filter = fspecial('average', 3);
--> lenFil = imfilter(lenGau,filter);
--> lenFGAU = imfilter(lenGau,filter);
--> lenFSeP = imfilter(lenSeP,filter);
--> subplot(121);
--> imshow(lenFGAU);
--> subplot(122);
--> imshow(lenFSeP);
	Aplicando um filtro Bayer na imagem baboo_colorido.tif obtemos o seguinte resultado (Imagem original à direita e filtrada à esquerda):
Código:
--> [nrow,ncol,nchan] = size(bab);
--> babBayer(1:2:nrow,1:2:ncol,2) = bab(1:2:nrow,1:2:ncol,2);
--> babBayer(2:2:nrow,2:2:ncol,2) = bab(2:2:nrow,2:2:ncol,2);
--> babBayer(1:2:nrow,2:2:ncol,1) = bab(1:2:nrow,2:2:ncol,1);
--> babBayer(2:2:nrow,1:2:ncol,3) = bab(2:2:nrow,1:2:ncol,3);
--> subplot(121);
--> imshow(bab);
--> subplot(122);
--> imshow(babBayer);
Interpolação
Aplicando a interpolação na imagem que tratamos com o filtro de Bayer anteriormente, teremos a imagem restaurada:
Código:
--> R = babBayer(:,:,1);
--> G = babBayer(:,:,2);
--> B = babBayer(:,:,3);
--> R = double(R);
--> G = double(G);
--> B = double(B);
--> G = G+conv2(G,[0 1 0;1 0 1;0 1 0]/4,'same');
--> B = B+conv2(B,[1 0 1;0 0 0;1 0 1]/4,'same');
--> B = B+conv2(B,[0 1 0;1 0 1;0 1 0]/4,'same');
--> R = R+conv2(R,[1 0 1;0 0 0;1 0 1]/4,'same');
--> R = R+conv2(R,[0 1 0;1 0 1;0 1 0]/4,'same');
--> babRestored(:,:,1)=R;
--> babRestored(:,:,2)=G;
--> babRestored(:,:,3)=B;
--> subplot(121);
--> imshow(babBayer);
--> subplot(122);
--> imshow(uint8(babRestored));
Morfologia Matemática
Para realizar esta atividade, faremos a leitura das imagens: retangulo.tif, texto.tif e Rosto.tif. Realizaremos um processamento morfológico nas imagens para realçar as características e o conteúdo das imagens.
Imagem retangulo.tif
Retângulo.tif
Devemos resultar no mais próximo possível de um retângulo branco sem nenhum artefato dentro ou fora do mesmo.
Variáveis após leitura da imagem retângulo.tif.
Código:
--> esRet = imcreatese('rect',30,30);
--> resRet = imdilate(ret,esRet);
--> imshow(resRet);
--> resRet = imerode(resRet,esRet);
--> imshow(resRet);
--> resRet = imerode(resRet,esRet);
--> imshow(resRet);
--> resRet = imerode(resRet,esRet);
--> imshow(resRet);
Resultado após primeira dilatação.
Resultado após primeira erosão.Resultado após segunda erosão.
Resultado final após terceira erosão.
Imagem texto.tif
Texto.tif
Deve-se obter o texto nítido (o texto original possuí falhas nos caracteres). O texto se tornará nítido quando estiver legível e sem falhas dentro das letras.
Código:
--> esTex = imcreatese('cross',3,3);
--> resTex = imdilate(tex,esTex);
--> imshow(resTex);
--> esTex = imcreatese('rect',1,1);
--> resTex = imerode(resTex,esTex);
--> imshow(resTex);
Resultado após aplicação do código.
Imagem Rosto.tif
Rosto.tif
Fazer um processamento morfológico para conseguir o contorno do rosto na imagem. Para tanto, dilatamos a imagem e subtraímos a nova imagem pela original.
Código:
--> ros = imread('Rosto.tif');
--> esRos = imcreatese('rect',10,10);
--> resRos = imdilate(ros,esRos);
--> imshow(resRos);
--> finalRos = resRos - ros;
--> imshow(finalRos);
Resultado após código.
REFERÊNCIAS BIBLIOGRÁFICAS
Todas as informações teóricas contidas neste trabalho foram baseadas nos estudos do portal AVA Univirtus referentes ao segmento de PROCESSAMENTO DIGITAL DE IMAGENS.
SCILAB ONLINE HELP. Manual SciLab. Disponível em: https://help.scilab.org/docs/5.3.0/pt_BR/index.html, acesso em 02 de abril 2020.
FARIA, Fabio Augusto. Disciplina de Processamento de Imagens. Disponível em: https://www.ic.unicamp.br/~ffaria/pi2s2015/class10/aula_segmentacao1.pdf, acesso em 02 de abril de 2020.
conclusão
O processamento digital de imagens é algo bem denso e que faz possível um trabalho muito grande sobre o que está sendo transmitindo na tela. Com os comandos de Histograma vimos que podemos definir mais ou menos uma imagem com uma distribuição mais ampla dos pixels da imagem com relação ao nível de cinza. Além da morfologia ajudando na definição da imagem retratada. A aplicação de filtros que facilmente vemos várias aplicações, inclusive em reconhecimento de imagens e objetos através de capturas de um ultrassom. Uma ferramenta que auxilia, detalha, e manipula uma das principais características da humanidade, a visualização.
1

Outros materiais