blog

L’évolution d’AutoSplitter

Publié le : 27 octobre 2026

L’évolution d’AutoSplitter

2012 – Détecter les coins

Quand j’ai commencé à travailler sur AutoSplitter, je n’avais pas vraiment de référence. Le logiciel de numérisation de base fourni par le fabricant de mon scanner à plat était le seul que j’avais essayé, et il était vraiment insuffisant.

J’étais motivé à créer quelque chose de mieux, et je ne disposais que de mon propre scanner et de mes propres photos de famille comme configuration de test. Ces photos n’étaient pas collées dans un album jauni : c’était simplement une pile de photos dans une boîte en carton.

J’ai donc supposé que numériser des photos sur le fond blanchâtre d’un scanner à plat serait le seul cas d’utilisation pour presque tout le monde.

Cela a inspiré la première version de mon algorithme de détection des photos. La tâche semblait évidente : à partir d’une image numérisée contenant plusieurs photos, trouver celles-ci en déterminant quels pixels appartiennent à une photo et lesquels appartiennent à la vitre du scanner. Toutes les photos sont rectangulaires, avec des coins (généralement) nets. Autour du coin d’une photo, 25 % des pixels voisins font partie de la photo et 75 % font partie de l’arrière-plan. Celui-ci est généralement presque blanc, tandis que le contenu de la photo est en général bien éloigné du blanc.

L’évaluation de groupes de pixels selon cette logique permet de repérer des coins… la plupart du temps. Certaines détections sont des faux positifs (ce ne sont pas réellement des coins), et d’autres des faux négatifs (des coins non détectés). Les coins détectés peuvent facilement être classés comme coin supérieur gauche, supérieur droit, inférieur gauche ou inférieur droit, selon les zones autour du pixel du coin qui semblent correspondre à l’arrière-plan ou faire partie d’une photo.

Deux ou trois coins peuvent suffire à déterminer assez précisément l’emplacement d’une photo. Cette approche fonctionnait plutôt bien avec mes collections de photos. Certains coins manqués posaient problème, par exemple lorsque plusieurs photos étaient fusionnées par erreur, mais le résultat restait bien meilleur que le logiciel fourni avec mon scanner.

À titre d’information, la détection des contours est une autre bonne façon de trouver des formes rectangulaires dans une image. Je ne peux pas dire qu’elle n’a jamais joué de rôle dans mes algorithmes, mais elle n’a servi que d’aide secondaire pour évaluer les détections de photos. Elle n’a jamais été le moteur principal.


2019 – Carrés et blocs… et coins

Carrés adjacents détectés par l’algorithme de détection des photos d’AutoSplitter – vue de débogage

À l’automne 2019, après des années à essayer sans cesse d’améliorer l’algorithme de détection automatique, je n’avais toujours pas beaucoup progressé. J’avais obtenu quelques gains en affinant la méthode de détection des coins, mais les améliorations n’étaient jamais révolutionnaires. J’avais ajouté plusieurs couches de filtrage à l’algorithme de détection des coins pour qu’il fonctionne même lorsque les utilisateurs ne numérisent pas sur un fond blanc. Cela aidait beaucoup, mais pas suffisamment.

La grande avancée suivante fut la « méthode des carrés ». En informatique, on parle d’étiquetage des composantes connexes et d’ajustement d’enveloppe convexe. L’idée est assez simple : à l’aide de différents filtres, classer tous les pixels de l’image d’entrée comme arrière-plan ou photo, puis trouver les groupes de pixels qui semblent tous faire partie d’une photo. On regroupe les carrés adjacents ; chaque groupe délimite approximativement une photo détectée.

Cette méthode fonctionnait plutôt bien avec des arrière-plans irréguliers. J’ai rendu l’algorithme de détection des coins beaucoup plus strict afin qu’il ne détecte que les photos évidentes. La méthode des carrés traitait ensuite les zones restantes, non détectées, pour trouver les autres photos. Malheureusement, je n’ai pas réussi à déterminer précisément les angles de rotation des photos : elles étaient donc toujours détectées sans rotation (à 0 degré). Malgré tout, c’était une nette amélioration par rapport à l’approche basée uniquement sur les coins.


Été 2026 – Les carrés tournent enfin

Après de nombreuses tentatives infructueuses pour améliorer encore mes méthodes de détection automatique, j’ai finalement réussi à déterminer les angles de rotation des groupes de carrés détectés. Cela m’a poussé à abandonner la détection des carrés, qui était à l’origine de nombreux faux positifs et de détections fusionnées. Mais, une fois de plus, je n’ai pas réussi à améliorer davantage les résultats.


Début de l’automne 2026 – Apprentissage profond

Carrés adjacents détectés par l’algorithme de détection des photos d’AutoSplitter – vue de débogage

Il n’y avait plus d’autre piste. Les carrés et les coins ne pouvaient pas donner de meilleurs résultats. Quelle que soit l’ampleur de mes réglages, un fait incontournable demeurait : trouver des objets rectangulaires dans une image est FACILE. Déterminer quels pixels appartiennent à des photos est difficile — TRÈS difficile. Tout dépend de cette simple classification binaire de chaque pixel. Peu importe à quel point la méthode de détection des rectangles est bien réglée si l’on ne peut pas identifier précisément les pixels qui appartiennent au rectangle, n’est-ce pas ?

L’apprentissage profond utilise des réseaux neuronaux, des algorithmes qui imitent dans une certaine mesure le cerveau humain. Pour entraîner les réseaux neuronaux, il faut beaucoup de données d’exemple (et les réponses correspondantes) afin d’entraîner et d’évaluer le réseau. Entraîner un système de détection des photos sur des images numérisées n’est pas facile. On ne trouve pas des tonnes d’images numérisées sur Internet. Je ne pouvais pas non plus les obtenir auprès de mes clients, puisque le logiciel ne téléversait JAMAIS d’images numérisées et que les clients n’auraient certainement pas approuvé ce genre de procédé.

L’apprentissage profond apporte la réponse à la question essentielle : CE PIXEL FAIT-IL PARTIE D’UNE PHOTO OU NON ? Si l’on peut répondre à cette question de façon fiable, un simple algorithme d’étiquetage des composantes connexes (que j’aime appeler « carrés ») peut détecter les photos avec une grande fiabilité.

J’ai trouvé un moyen d’obtenir suffisamment de données d’exemple pour entraîner le réseau neuronal sans porter atteinte à la vie privée de qui que ce soit. Ainsi, AutoSplitter détecte les photos de façon très fiable depuis la version 1.16.1.


L’avenir

Pour le moment, je ne sais pas quelle sera la prochaine étape. Il faudra probablement affiner les données d’entraînement pour améliorer encore la détection automatique. Les résultats ne sont certainement pas encore précis à 100 %, et ne le seront probablement jamais. Quoi qu’il en soit, si je vois un moyen de les améliorer, j’essaierai.