La suppression/le remplacement de l'arrière-plan, IMO, relève plus de l'art que de la science, vous ne trouverez pas d'algorithme unique pour résoudre ce problème MAIS, selon votre degré de désespoir ou d'intérêt pour la résolution de ce problème, vous voudrez peut-être considérer l'explication suivante :
Supposons que vous ayez une image en couleur.
Utilisez le mécanisme de décodage de votre choix et générez une image en niveaux de gris / luminosité de votre image couleur.
Tracez un graphique (métaphoriquement parlant) de la valeur numérique du pixel (x) par rapport au nombre de pixels de l'image pour cette valeur (y). Autrement dit, un histogramme de luminosité.
Maintenant, si votre arrière-plan est suffisamment grand (ou petit), vous verrez une partie du graphique représentant la distribution d'une gamme de pixels qui constituent votre arrière-plan. Vous pouvez sélectionner une plage légèrement plus large pour gérer l'anticrénelage (sur la base d'un décalage fixe que vous définissez si vous avez affaire à des images similaires) et l'appeler plage de luminosité pour votre arrière-plan.
Cela vous faciliterait la vie si vous connaissiez au moins un pixel (échantillon/valeur médiane d'un pixel) en dehors de la plage de pixels qui définit votre arrière-plan, de manière à pouvoir "rechercher" la partie du graphique qui définit votre arrière-plan.
Une fois que vous disposez de la gamme de pixels de luminosité pour l'arrière-plan, vous pouvez parcourir les pixels de l'image originale, comparer leurs valeurs de luminosité avec la gamme dont vous disposez et, si elle est comprise, remplacer le pixel de l'image originale par la couleur souhaitée, de préférence avec un décalage de luminosité basé sur le pixel original et le pixel échantillon, afin que l'arrière-plan remplacé ait également l'air anticrénelé.
Cette solution n'est pas parfaite et il existe de nombreux scénarios dans lesquels elle peut échouer ou échouer partiellement, mais elle fonctionnerait pour l'exemple d'image que vous avez joint à votre question.
Il existe également de nombreuses possibilités d'amélioration des performances, notamment grâce au GPGPU, etc.
Une autre solution possible consisterait à utiliser des bibliothèques de traitement d'images tierces préconstruites. Il en existe quelques-unes en open source, comme Camellia, mais je ne suis pas sûr des fonctionnalités fournies et de leur degré de sophistication.