Prefácio
Este livro constitui uma obra em constante atualização sobre Processamento Digital de Imagens (PDI) e Visão Computacional (VC), concebido como material didático interativo para cursos de graduação e pós-graduação em Computação, Engenharias e áreas correlatas.
Um livro vivo
O material não possui caráter estático. O conteúdo passa por evolução contínua: exemplos são refinados, novas seções são incorporadas e as abordagens pedagógicas são atualizadas conforme o retorno de usuários. Por essa razão, o material é tratado como um projeto inicial — uma base em expansão.
Uso de ferramentas de Inteligência Artificial
A produção deste livro conta com o suporte de ferramentas de Inteligência Artificial (IA) para elevar a qualidade do texto e do código. A versão inicial dos capítulos foi submetida a processos de revisão por meio de assistentes, em versões gratuitas, como DeepSeek, Gemini e Claude. Mediante prompts iterativos, tais ferramentas auxiliaram no seguinte:
- Refinamento da clareza e precisão das explicações;
- Detecção e correção de erros de sintaxe, lógica e digitação em exemplos de código;
- Sugestão de melhorias na organização e fluidez textual.
Adicionalmente, ilustrações foram geradas pelo Gemini, com o propósito de auxiliar a visualização de conceitos abstratos da área.
Como este livro é produzido
O conteúdo é integralmente redigido em Quarto (armazenado na pasta all), um sistema de publicação científica que permite a renderização do código-fonte para múltiplos formatos:
| Formato | Descrição |
|---|---|
| HTML | Versão web com navegação interativa: fzampirolli.github.io/pdi-vc |
| Versão para impressão ou leitura offline: livro.pt.py.pdf | |
Notebooks (.ipynb) |
Versão processada por filtro personalizado que resolve citações e numeração de elementos, formatando referências no padrão ABNT. Compatível com Jupyter e Google Colab. |
No início de cada capítulo, botões “Open in Colab” direcionam para dois ambientes:
- Parte Teórica: Localizada na abertura do capítulo.
- Parte Prática: Localizada na seção 💻 Parte Prática com Exercícios de Programação ao final do capítulo.
O script de pós-processamento (gerar_notebooks_alunos.py) prepara os arquivos para distribuição, assegurando a funcionalidade em ambientes interativos sem a necessidade de instalação local do Quarto.
A biblioteca morph.py
A biblioteca morph.py (Zampirolli et al., 2025) é empregada em toda a obra. Desenvolvida para fins pedagógicos, a ferramenta oferece uma interface simplificada sobre bibliotecas consolidadas, como OpenCV, NumPy e Matplotlib, permitindo o foco nos conceitos teóricos em detrimento de detalhes específicos de API.
A estrutura da morph.py fundamenta-se em ferramentas de morfologia matemática desenvolvidas no Brasil, como MMachLib (Lotufo et al., 1997) e MMach (Barrera et al., 1998), além da mmorph, empregada na obra de Dougherty; Lotufo (2003). Tais ferramentas serviram como referência para o ensino da área por décadas.
A biblioteca permite realizar leitura, exibição, conversões de cores, filtragem e morfologia matemática de forma concisa:
import morph as mm
img = mm.read('lena.jpg') # leitura da imagem
mm.show(img) # exibição
neg = mm.neg(img) # inversão (negativo)
mm.show(neg)O código-fonte está disponível em: github.com/fzampirolli/pdi-vc/tree/master/morph
Exercícios de Programação (EPs) e validação automática
Cada unidade inclui Exercícios de Programação (EPs). Trata-se de problemas que demandam a implementação de programas, que podem utilizar a morph.py ou outras bibliotecas padrão. Os EPs visam consolidar a teoria por meio de uma progressão de complexidade técnica.
Estrutura e Validação
A execução da validação ocorre por meio da classe TestSuite:
TestSuite("EP01_01.py").run()O sistema compara a saída da implementação com casos de teste definidos (arquivos .cases) e gera um relatório de conformidade. O suporte abrange múltiplas linguagens (atualmente Python, Java, C++, C, JavaScript e R), o que possibilita a aplicação do material em diferentes contextos acadêmicos. Os mesmos EPs, com os respectivos casos de teste, estão disponíveis para a plataforma Moodle para fins de avaliação.
Idiomas e Conversão de Código
O núcleo de referência é escrito em Português com exemplos em Python. Versões em outros idiomas e linguagens de programação são geradas via APIs de IA, passando por um fluxo que automatiza a tradução textual e a conversão de sintaxe de código.
As versões traduzidas via IA servem como ponto de partida e podem apresentar imprecisões, sendo recomendada a revisão antes da aplicação em sala de aula.
Código aberto
O projeto é regido por princípios de código aberto. O repositório público contém o texto, códigos, imagens e scripts: github.com/fzampirolli/pdi-vc
Antes de começar: Notebooks em Python
O conceito de Literate Programming (Programação Literária), proposto por Donald Knuth (Knuth, 1984), fundamenta a estrutura deste material. A lógica inverte o paradigma tradicional: o programa é escrito para a leitura humana, assemelhando-se a um ensaio, enquanto o código é extraído para execução computacional.
O conteúdo é estruturado em Notebooks, documentos que intercalam células de texto (em Markdown) e células de código (em Python).
- Execução: Células de código são identificadas por
[ ]. A execução ocorre via Shift + Enter ou pelo botão ▶️. - Ambientes: O acesso pode ser feito localmente (Jupyter) ou via nuvem (Google Colab).
Em ambientes interativos, o código pode ser modificado e executado. Nas versões estáticas (HTML ou PDF), os blocos de código servem para fins de leitura e referência, mantendo-se a integridade das explicações.