Aplicação em streamlit para análise de filtros e como alteram uma imagem
Comparação de Filtros
Esta aplicação foi o primeiro projeto apresentado de forma mais simples na MasterClass de Visão Computacional disponibilizada pelo Carlos Melo. No desenvolvimento do projeto acrescentei algumas controles por slide. O tamanho do Kernel do filtro gaussiano. Dessa forma, foi possivel analisar como as suas dimensão influênciam na suavização causada na imagem, quanto maior o tamanho do kernel, maior o desfoque podemos ver a comparação abaixo:
Acima temos, respectivamente a imagem original, após aplicação do filtro gaussiano com kernel (9x9) e com Kernel (15x15). Vale Ressaltar que foi utilizado o borderType=cv2.BORDER_DEFAULT, em algumas comparações que fiz, percebi que a escolha desse parâmetro gera uma menor conservação de bordas em comparação com cv2.BORDER_CONSTANT, mas melhor que os cv2.BORDER_TRANSPARENT e cv2.BORDER_ISOLATED. O critério que utilizei foi qual dos parâmetros gerariam, uma maior facilidade em distinguir as trocas de cores e elementos em diferentes pontos da imagem após um alto desfoque.
Detector de Bordas
De mesmo modo, criei uma aplicação semelhante para analisar o comportamento do algoritimo Canny para detecção de bordas e como ele se comporta com a variação dos thresholds impostos, bem como com a variação do kernel usado no filtro gaussiano aplicado antes do algoritmo para redução de ruídos. Você pode entender um pouco mais sobre o funcionamento do método neste link. Abaixo temos a imagem após a aplicação do algoritmo.
Na imagem acima foram aplicados um kernel (15x15) no filtro gaussiano e borderType=cv2.BORDER_CONSTANT, afim de manter uma maior quantidade de bordas. No tresholding inferior um valor de igual à 30 e o superior igual à 40.
Conclusão
O projeto proposto foi bastante interessante, pude compreender mais sobre o funcionamento de certos filtros, bem como suas utilidades no âmbito da visão computacional. Essa aplicação possui outros filtros como o sépia, sketch, controle de contraste, saturação, conversão para escala de cinza, entre outros. Compilem o código localmente na maquina de vocês (streamlit run main.py) e me digam o que acharam para podermos progredir juntos hahah! Grande Abraço!! Qualquer algo a ser acrescentado, alguma dúvida, bem como críticas serão totalmente bem vindas!;)
Aplicação
Link para projeto no GitHub aqui