Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Icev– Instituto de Ensino Superior
64.055-260 – Teresina – PI – Brasil
1. Resumo
Este relatório apresenta um estudo completo sobre o processamento de imagens,
dividido em três seções distintas. Na primeira parte, realizamos uma série de operações
na imagem “lena.png", como redimensionamento, conversão para o espaço de cores
HSV, análise do histograma em cores e escala de cinza, além da equalização. Também
exploramos a exibição dos canais de cores separadamente.
A segunda parte concentra-se na manipulação da imagem “imagem.png". Nessa seção,
implementamos técnicas para preencher espaços vazios em objetos pretos, remover
exclusivamente objetos pretos, preencher espaços vazios em objetos coloridos (azul,
amarelo e verde) e realçar as bordas na imagem.
Na terceira parte, aplicamos o processamento de imagens a três imagens diferentes:
“lena_ruido.png", “coins.png” e “margaridas.png". Utilizamos o filtro da Mediana para
reduzir o ruído na imagem “lena_ruido.png". Para a imagem “coins.png", aplicamos os
filtros Sobel e Prewitt para detectar as bordas. Por fim, exploramos a segmentação das
imagens na imagem “margaridas.png” criando retângulos e aplicando métodos de
binarização em cada região.
Esse estudo demonstra a aplicação de várias técnicas de processamento de imagens para
melhorar a qualidade das imagens, realçar características específicas e extrair
informações valiosas. Cada seção do trabalho é discutida detalhadamente com
resultados e insights apresentados.
2. Parte I
A Parte I deste estudo de processamento de imagens concentra-se nas operações
aplicadas à imagem "lena.png". O objetivo principal desta seção é introduzir e explorar
as técnicas fundamentais de processamento de imagens, demonstrando sua aplicação na
manipulação e melhoria da qualidade de uma imagem.
As operações realizadas nesta parte incluem o redimensionamento da imagem para
diferentes tamanhos, a conversão para o espaço de cores HSV para análise mais
detalhada das características de cores, a geração de histogramas tanto em cores quanto
em escala de cinza para compreender a distribuição de intensidade de pixels e, por fim,
a equalização do histograma para melhorar o contraste e a visibilidade das
características da imagem.
Ao detalhar cada uma dessas etapas, este resumo destaca o propósito e a importância de
cada operação na preparação da imagem para análise posterior. A Parte I serve como
uma base crucial para a compreensão das técnicas avançadas de processamento de
imagens que serão abordadas nas partes subsequentes deste estudo.
2.1 Utilizamos o seguinte código para redimensionar a imagem:
- cv2.imread(caminho_imagem): Carrega uma imagem do caminho especificado e
armazena na variável imagem.
- cv2.resize(imagem, (1024, 1024)): Redimensiona a imagem para o tamanho
especificado (1024x1024 pixels) e armazena na variável imagem_redimensionada.
- cv2.imshow('Imagem Redimensionada', imagem_redimensionada): Exibe a imagem
redimensionada em uma janela com o título 'Imagem Redimensionada'.
- cv2.imwrite('imagem_redimensionada.jpg', imagem_redimensionada): Salva a
imagem redimensionada como 'imagem_redimensionada.jpg' no disco.
- cv2.imshow('Imagem Original', imagem): Exibe a imagem original em uma janela
com o título 'Imagem Original'.
- cv2.waitKey(0): Aguarda indefinidamente até que uma tecla seja pressionada antes de
fechar as janelas de imagem.
Temos a seguir uma captura de tela mostrando a imagem original e a mesma
redimensionada:
- cv2.waitKey(0): Aguarda indefinidamente até que uma tecla seja pressionada antes de
fechar a janela da imagem.
Temos a seguir uma captura de tela mostrando a imagem original e a mesma
convertida para HSV:
3. Parte II
4. Parte III
Na Parte III do trabalho, foram realizadas diferentes operações de processamento de
imagem nas imagens fornecidas. Na imagem "lena_ruido.png", foi aplicado o filtro da
Mediana para suavizar o ruído presente na imagem. Na imagem "coins.png", foram
aplicados os filtros Sobel e Prewitt para detecção de bordas e realce de características
importantes. Quanto à imagem "margaridas.png", um script foi desenvolvido para
dividir a imagem em quadrados distintos e aplicar um método de binarização em cada
uma dessas partes, permitindo assim uma análise mais detalhada das regiões individuais
da imagem. Essas operações visam melhorar a qualidade das imagens, destacar
características relevantes e facilitar a análise de padrões em cada imagem.
4.1 Utilizamos o seguinte código para aplicar o filtro da Mediana:
- cv2.imread('parte_III\Filtro_Prewitt\coins.png', cv2.IMREAD_GRAYSCALE):
Carrega uma imagem em tons de cinza (escala de cinza) do caminho especificado e a
armazena na variável imagem.
- np.array([...], dtype=np.float32): Define os kernels de filtro Prewitt para detecção de
bordas, tanto para a direção horizontal (kernel_x) quanto para a direção vertical
(kernel_y).
- cv2.filter2D(imagem, -1, kernel_x): Aplica o filtro Prewitt na direção horizontal à
imagem usando o kernel kernel_x e armazena o resultado em prewitt_x.
- cv2.filter2D(imagem, -1, kernel_y): Aplica o filtro Prewitt na direção vertical à
imagem usando o kernel kernel_y e armazena o resultado em prewitt_y.
- np.sqrt(prewitt_x2 + prewitt_y2): Calcula a magnitude das bordas detectadas
combinando as saídas dos filtros Prewitt horizontal e vertical. O resultado é armazenado
em magnitude.
- np.uint8(magnitude): Converte a magnitude em um array de inteiros sem sinal de 8
bits (uint8), que é o formato adequado para imagens.
- cv2.imwrite('coins_prewitt_x.jpg', prewitt_x): Salva a imagem das bordas detectadas
na direção horizontal como 'coins_prewitt_x.jpg'.
- cv2.imwrite('coins_prewitt_y.jpg', prewitt_y): Salva a imagem das bordas detectadas
na direção vertical como 'coins_prewitt_y.jpg'.
- cv2.imwrite('coins_magnitude.jpg', magnitude): Salva a imagem da magnitude das
bordas como 'coins_magnitude.jpg'.
- cv2.imshow('Imagem Original', imagem): Exibe a imagem original.
- cv2.imshow('Prewitt X', prewitt_x): Exibe a imagem das bordas detectadas na direção
horizontal.
- cv2.imshow('Prewitt Y', prewitt_y): Exibe a imagem das bordas detectadas na direção
vertical.
- cv2.imshow('Magnitude', magnitude): Exibe a imagem da magnitude das bordas.
- cv2.waitKey(0): Aguarda indefinidamente até que uma tecla seja pressionada antes de
fechar as janelas de imagem.
- cv2.destroyAllWindows(): Fecha todas as janelas abertas pelo OpenCV após uma
tecla ser pressionada.
Temos o seguinte resultado da imagem com o filtro prewitt:
Prewitt X e Prewitt Y
Imagem Original e Magnitude
4.2 Utilizamos o seguinte código para aplicar o filtro da Sobel:
Sobel X e Sobel Y
Imagem Origial e Magnitude