A evolução do AutoSplitter
Publicado em: 27 de outubro de 2026
2012 – Detectando cantos
Quando comecei a trabalhar no AutoSplitter, não tinha uma referência real. O software básico de digitalização fornecido pelo fabricante do meu scanner de mesa era o único que eu havia experimentado, e deixava muito a desejar.
Eu queria criar algo melhor, e meu único ambiente de testes era meu próprio scanner e minhas próprias fotos de família. Essas fotos não estavam coladas em um álbum amarelado; eram apenas um monte de fotos em uma caixa de papelão.
Então, presumi que digitalizar fotos sobre o fundo esbranquiçado de um scanner de mesa seria o único caso de uso para quase todo mundo.
Isso inspirou a primeira versão do meu algoritmo de detecção de fotos. A tarefa parecia óbvia: dada uma imagem digitalizada com várias fotos, encontrá-las identificando quais pixels pertencem a uma foto e quais pertencem à mesa do scanner. Todas as fotos são retangulares, com cantos (na maioria das vezes) bem definidos. Perto do canto de uma foto, 25% dos pixels vizinhos fazem parte da foto e 75% fazem parte do fundo. O fundo geralmente é quase branco, enquanto o conteúdo da foto costuma estar longe do branco.
Avaliar grupos de pixels de acordo com essa lógica permite encontrar cantos… na maioria das vezes. Algumas detecções são falsos positivos (não são cantos de verdade), e outras são falsos negativos (cantos não detectados). Os cantos detectados podem ser facilmente classificados como superior esquerdo, superior direito, inferior esquerdo ou inferior direito, dependendo de quais segmentos ao redor do pixel do canto parecem ser fundo e quais parecem fazer parte de uma foto.
Dois ou três cantos podem ser suficientes para determinar a localização de uma foto com bastante precisão. Essa abordagem funcionava muito bem com minhas coleções de fotos. Alguns cantos não detectados causavam problemas, como a união equivocada de várias fotos, mas ainda era muito melhor do que o software original que veio com meu scanner.
Como observação, a detecção de bordas é outra boa maneira de encontrar formas retangulares em uma imagem. Não posso dizer que ela nunca tenha desempenhado um papel nos meus algoritmos, mas foi usada apenas como um recurso secundário para avaliar as detecções de fotos. Nunca foi o método principal.
2019 – Quadrados e blocos… e cantos

No outono de 2019, depois de anos tentando repetidamente aprimorar o algoritmo de detecção automática, eu ainda não tinha feito muito progresso. Consegui alguns avanços ajustando o método de detecção de cantos, mas as melhorias nunca foram revolucionárias. Adicionei várias camadas de filtros ao algoritmo de detecção de cantos para que ele funcionasse mesmo quando os usuários não digitalizassem sobre um fundo branco. Isso ajudou bastante, mas não o suficiente.
O próximo grande avanço foi o «método dos quadrados». Na área de TI, isso é chamado de rotulagem de componentes conectados e ajuste de envoltória convexa. A ideia é bastante simples: classificar todos os pixels da imagem de entrada como fundo ou foto usando filtros diferentes e, depois, encontrar grupos de pixels que pareçam fazer parte de uma foto. Os quadrados adjacentes são agrupados; cada grupo delimita aproximadamente uma foto detectada.
Isso funcionava muito bem com fundos irregulares. Tornei o algoritmo de detecção de cantos muito mais rigoroso para que detectasse apenas fotos evidentes. O método dos quadrados processava então as áreas restantes, não detectadas, para encontrar as outras fotos. Infelizmente, não consegui descobrir como detectar com precisão os ângulos de rotação das fotos, então elas eram sempre detectadas sem rotação (a 0 grau). Ainda assim, foi uma grande melhoria em relação à abordagem baseada somente em cantos.
Verão de 2026 – Finalmente, os quadrados giram
Depois de muitas tentativas fracassadas de aprimorar ainda mais meus métodos de detecção automática, finalmente consegui determinar os ângulos de rotação dos grupos de quadrados detectados. Isso me levou a abandonar a detecção de quadrados, pois ela era a causa principal de muitos falsos positivos e detecções mescladas. Mais uma vez, porém, não consegui melhorar ainda mais os resultados.
Início do outono de 2026 – Aprendizado profundo
Não havia mais para onde ir. Quadrados e cantos não conseguiam oferecer resultados melhores. Por mais que eu ajustasse o algoritmo, um fato inevitável continuava: encontrar objetos retangulares em uma imagem é FÁCIL. Descobrir quais pixels pertencem às fotos é difícil — MUITO difícil. Tudo depende dessa simples classificação binária de cada pixel. Não importa o quanto o método de detecção de retângulos esteja bem ajustado se não for possível identificar com precisão quais pixels pertencem ao retângulo, certo?
O aprendizado profundo usa redes neurais, algoritmos que imitam o cérebro humano até certo ponto. Treinar redes neurais exige muitos dados de exemplo (e as respostas correspondentes) para ensinar e avaliar a rede. Treinar um sistema de detecção de fotos para imagens digitalizadas não é fácil. Não dá para encontrar um caminhão cheio de fotos digitalizadas na internet. Também não podia obtê-las dos meus clientes, já que o software NUNCA enviava imagens digitalizadas, e os clientes certamente não aprovariam esse tipo de processo.
O aprendizado profundo oferece a resposta à pergunta fundamental: ESTE PIXEL FAZ PARTE DE UMA FOTO OU NÃO? Se for possível responder a essa pergunta com confiabilidade, um simples algoritmo de rotulagem de componentes conectados (que gosto de chamar de «quadrados») pode detectar fotos com muita precisão.
Encontrei uma maneira de obter dados de exemplo suficientes para treinar a rede neural sem comprometer a privacidade de ninguém. Como resultado, o AutoSplitter detecta fotos com muita confiabilidade desde a versão 1.16.1.
O futuro
No momento, não sei qual será o próximo passo. Provavelmente, será preciso refinar os dados de treinamento para melhorar ainda mais a detecção automática. Os resultados ainda não são 100% precisos e provavelmente nunca serão. De qualquer forma, se eu encontrar uma maneira de melhorá-los, vou tentar.