Search
Close this search box.
Denoise de imagens com Python
OpenCV Denoise de imagens

Posts Relacionados:

Denoise de imagens é o processo de remoção de ruídos. Crucial em várias tarefas de visão computacional, ele é facilmente implementado em Python com OpenCV.

Receba nossa newsletter

Denoise de Imagens

Denoise de imagens se refere ao processo de remoção de ruídos. Ele desempenha um papel crucial no processamento de imagens por várias razões. Denoise melhora as imagens e ajuda a discernir detalhes importantes. Além disso, denoise de imagens é uma etapa de pré-processamento essencial para várias tarefas subsequentes de visão computacional. Ele aumenta a precisão de tarefas como detecção de objetos, reconhecimento facial e análise de imagens.

Em campos como imagens médicas, etapas de denoising são vitais para garantir diagnósticos e análises precisas. O ruído pode obscurecer detalhes cruciais em imagens médicas, como ressonâncias magnéticas, tomografias computadorizadas e PET scans.

A aplicação de denoise também pode melhorar o desempenho dos algoritmos de compressão de imagens. Ao remover o ruído, os algoritmos de compactação codificam melhor as informações significativas em uma imagem, resultando em tamanhos de arquivo menores.

Denoise com Python e OpenCV

Em Python, o processo de denoise pode ser implementado facilmente com o auxílio de bibliotecas especializadas. Para este post, usaremos OpenCV. A biblioteca precisa ser instalada, como explicado aqui.

OpenCV conta com alguns algoritmos para denoising. A escolha do algoritmo mais apropriado depende de vários fatores, incluindo o tipo de ruído presente e o nível de detalhes que se deseja preservar. Portanto, a melhor estratégia para escolher a técnica apropriada é testar diferentes algoritmos e verificar qual se adapta melhor ao seu projeto. A seguir, exploraremos alguns algoritmos para denoise de imagens com OpenCV.

Non-Local Means Denoising

Esta é uma poderosa técnica de denoising que reduz o ruído usando a média de regiões semelhantes na imagem. Ela preserva bem as bordas e os detalhes das imagens. Além disso, ela é eficaz para vários tipos de ruídos. Em código, ela pode ser implementada assim:

				
					import cv2

img = cv2.imread('INSIRA SUA IMAGEM AQUI')
denoised_img = cv2.fastNlMeansDenoisingColored(img, None, h=10, hColor=20, templateWindowSize=7, searchWindowSize=21) # aplica denoise
cv2.imwrite('nova_imagem.jpg',denoised_img) # salva a nova imagem

				
			

No código acima, os parâmetros h e hColor controlam a intensidade do filtro para componentes de luminância e cor, respectivamente. Valores mais altos removem mais ruído, mas também podem borrar detalhes. Os parâmetros templateWindowSize e searchWindowSize definem os tamanhos de patch usados para buscar correspondência de similaridade (leia mais sobre esses parâmetros aqui). Veja um exemplo abaixo obtido com a aplicação da técnica.

Filtragem Mediana (Median Blur)

Técnica eficaz para denoise de imagens com ruídos pontuais. Ela substitui cada píxel pelo valor médio de seus píxeis vizinhos. Veja um exemplo de como implementar essa técnica em código:

				
					import cv2

img = cv2.imread('INSIRA SUA IMAGEM AQUI')
denoised_img = cv2.medianBlur(img, ksize=5) # aplica denoise
cv2.imwrite('nova_imagem.jpg',denoised_img) # salva a nova imagem
				
			

Nesse código, o parâmetro ksize deve ser um número ímpar. Um exemplo dessa técnica eh mostrado abaixo.

Filtragem Gaussiana

Técnica que reduz o ruído de uma imagem aplicando um kernel gaussiano. Ela opera identificando a vizinhança ao redor dos píxeis e calculando médias ponderadas gaussianas. A filtragem gaussiana é particularmente adequada para reduzir ruídos de alta frequência. No entanto, ela pode borrar bordas e detalhes. Ela pode ser implementada em código dessa maneira:

				
					import cv2

img = cv2.imread('INSIRA SUA IMAGEM AQUI')
denoised_img = cv2.GaussianBlur(img, ksize=(5,5), sigmaX=0) # aplica denoise
cv2.imwrite('nova_imagem.jpg',denoised_img) # salva a nova imagem
				
			

O parâmetro ksize é o tamanho do kernel gaussiano, sigmaX é o desvio padrão na direção X (definido como 0 para calcular a partir do tamanho do kernel, veja detalhes aqui). Um exemplo obtido com esse algoritmo é mostrado abaixo.

Filtragem Bilateral

Algoritmo que realiza denoise de imagens considerando tanto a proximidade espacial quanto a similaridade dos valores entre píxeis. Ou seja, a filtragem bilateral opera com um filtro gaussiano no espaço e outro que é uma função da diferença entre píxeis. Com isso, essa técnica preserva as bordas. Veja sua implementação em código:

				
					import cv2

img = cv2.imread('INSIRA SUA IMAGEM AQUI')
denoised_img = cv2.bilateralFilter(img, d=5, sigmaColor=75, sigmaSpace=75) # aplica denoise
cv2.imwrite('nova_imagem.jpg',denoised_img) # salva a nova imagem
				
			

O parâmetro d é o diâmetro da vizinhança, sigmaColor e sigmaSpace controlam a força do filtro para domínios de cor e espaço, respectivamente. Veja mais detalhes sobre esse algoritmo aqui. Abaixo, veja um resultado de sua aplicação em uma imagem.

Imagem com IA Generativa – Dia 102

IA generativa img102

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial