Pitch: Engenharia real: um projeto que foi de OpenCV → IA → um algoritmo de 2MB
Existe um padrão curioso em engenharia de software:
a solução final costuma ser mais simples que a primeira versão.
Não porque os engenheiros ficaram mais inteligentes.
Mas porque eles finalmente entenderam o problema.
Um caso recente que ilustra isso muito bem é um pequeno projeto chamado Gemini Watermark Cleaner.
O objetivo parece trivial:
remover o watermark das imagens geradas pelo Gemini.
Mas o caminho técnico foi tudo menos trivial.
A evolução foi algo assim:
OpenCV
↓
modelo de IA pesado
↓
algoritmo matemático simples
Sim.
A versão final removeu toda a IA do sistema.
O problema real (que quase ninguém percebe)
Quando você vê um watermark numa imagem, parece que basta:
• apagar
• borrar
• preencher
Mas o watermark do Gemini normalmente é aplicado usando alpha blending.
Ou seja:
pixel_final = α * watermark + (1 - α) * original
Isso significa que os pixels foram misturados matematicamente.
Para recuperar a imagem original, você precisa reverter essa equação.
Esse detalhe muda completamente o tipo de solução.
Fase 1 — A solução óbvia: OpenCV
A primeira versão pública (v1.0.0) seguiu o caminho clássico da visão computacional.
OpenCV rodando no browser.
O pipeline era algo como:
detectar watermark
↓
gerar máscara
↓
inpainting
O projeto foi lançado com:
• smart detection
• adaptive masks
• processamento 100% local no browser 
Isso funcionava razoavelmente bem.
Mas logo apareceram problemas:
• falhas de detecção
• artefatos visuais
• problemas de inicialização do OpenCV no browser
Tanto que várias versões seguintes foram apenas hotfixes para estabilidade do pipeline. 
Esse é um padrão clássico:
quando você passa mais tempo consertando infra do que melhorando o produto, o modelo provavelmente está errado.
Fase 2 — A solução hype: IA
Depois veio a solução que todo mundo espera em 2025:
colocar IA no problema.
A versão v2.0.0 introduziu um modelo de image inpainting (LaMa). 
A ideia:
o modelo entende o contexto da imagem e reconstrói o fundo.
Isso trouxe melhorias reais:
• reconstrução muito mais natural
• watermark praticamente invisível
• qualidade muito maior
Mas também trouxe os problemas típicos:
• modelos grandes
• consumo de memória
• carregamento pesado
• latência alta
Em discussões de usuários na época, o processamento podia levar 30–50 segundos dependendo da resolução. 
Ou seja:
qualidade ↑
simplicidade ↓
Fase 3 — A pergunta que mudou tudo
Depois de algum tempo alguém fez a pergunta certa:
precisamos mesmo de IA para isso?
Porque o watermark do Gemini tem características muito específicas:
• posição previsível
• formato fixo
• opacidade consistente
Isso significa que o problema não é genérico.
É determinístico.
Fase 4 — engenharia reversa do watermark
Se a imagem foi criada assim:
watermarked = α * logo + (1 - α) * original
Então basta inverter:
original = (watermarked - α * logo) / (1 - α)
Isso é basicamente reverse alpha blending.
Nenhuma IA.
Nenhum modelo.
Só matemática.
Fase 5 — a simplificação radical
Na versão v3.0.0, o projeto abandonou completamente os modelos de IA.
O resultado foi radical:
• processamento em milissegundos
• extensão 98% menor
• 2MB em vez de ~200MB
• memória praticamente zero 
Além disso, a arquitetura foi reescrita para usar um pipeline Blob-based direto em memória, eliminando o antigo fluxo baseado em URLs que causava falhas de processamento. 
Isso também resolveu um problema recorrente:
imagens que simplesmente falhavam no processamento.
Arquitetura final
O pipeline hoje é basicamente isso:
download image
↓
detect watermark region
↓
reverse alpha blending
↓
export clean image
Sem IA.
Sem modelos.
Sem GPU.
Uma decisão arquitetural importante
Desde a primeira versão, o projeto adotou um princípio forte:
tudo roda no browser.
Isso significa:
• nenhuma imagem enviada para servidor
• latência mínima
• privacidade total
• escalabilidade infinita
Essa escolha apareceu desde o lançamento oficial da ferramenta. 
O lado humano da engenharia
Essa evolução também mostra algo interessante sobre produtos reais.
Muitas vezes a timeline é assim:
v1 → solução óbvia
v2 → solução hype
v3 → solução correta
Ou em termos de engenharia:
complexidade
↓
mais complexidade
↓
entendimento do problema
↓
simplicidade
A ironia da história
O projeto começou usando:
• visão computacional
• WebAssembly
• modelos de deep learning
E terminou com:
uma fórmula matemática rodando em JavaScript.
Isso acontece mais vezes do que imaginamos.
Se quiser testar
Existe uma demo pública que roda direto no browser:
https://geminiwatermarkcleaner.com/gemini-watermark-remover.html
A lição real
Muita gente acha que engenharia é sobre adicionar tecnologia.
Mas na prática, engenharia é sobre remover complexidade desnecessária.
E às vezes a melhor solução…
é aquela que você só descobre depois de tentar tudo o resto.