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.

ImportanteDestaque

A obra segue a metodologia descrita em Zampirolli et al. (2025) — uma extensão de Zampirolli et al. (2024), trabalho premiado na trilha de “Recursos e Ambientes Educacionais” na EduComp 2024. O conteúdo integra a biblioteca morph.py, desenvolvida pelo autor.

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
PDF 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:

  1. Parte Teórica: Localizada na abertura do capítulo.
  2. 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.

NotaHerança Técnica

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.

NotaNota

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).
DicaNota sobre o formato

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.