Image Inpainting
Apprends comment la retouche d'images restaure ou supprime du contenu à l'aide de masques, de la segmentation, d'OpenCV, de YOLO26 et de modèles génératifs, ainsi que les applications clés et les limitations.
La retouche d'image est une technique de vision par ordinateur qui reconstruit les régions manquantes, endommagées ou masquées intentionnellement d'une image afin que la zone complétée se fonde dans son environnement. Plutôt que de simplement recouvrir les pixels non désirés, un système de retouche estime un contenu de remplacement plausible à partir de la texture proche, de la structure de la scène et, dans les systèmes génératifs, de motifs visuels appris. Les objectifs courants incluent la restauration de photographies endommagées, la suppression d'objets ou de texte et le comblement de lacunes créées lors de l'édition d'images.
Fonctionnement de la retouche d'image#
Un flux de travail de retouche comporte généralement deux entrées : l'image originale et un masque identifiant les pixels à remplacer. Le système préserve les pixels situés à l'extérieur du masque tout en synthétisant ou en reconstruisant le contenu à l'intérieur. Les conventions de masques varient selon l'outil, tu dois donc confirmer si les pixels blancs, noirs, nuls ou non nuls représentent la région modifiable.
Les méthodes traditionnelles de vision par ordinateur propagent les couleurs, les contours et les textures vers l'intérieur à partir de la limite du masque. Par exemple, le flux de travail de retouche d'image OpenCV remplit les zones masquées à l'aide des pixels voisins et propose des algorithmes conçus pour continuer les structures environnantes. Ces approches sont efficaces et fonctionnent souvent bien pour les rayures, la poussière, le texte fin et les petits trous. (docs.opencv.org)
Les systèmes basés sur l'apprentissage infèrent un contexte de plus haut niveau. Un modèle peut reconnaître qu'une zone masquée se trouve sur de la maçonnerie, de l'herbe, des vêtements ou le visage d'une personne et générer un contenu cohérent avec cette interprétation. Cependant, le résultat est plausible plutôt qu'une récupération des pixels d'origine inconnus.
Masques et approches de modèles#
La qualité du masque affecte fortement le résultat. Un masque trop petit peut laisser derrière lui des bords d'objets ou des ombres, tandis qu'un masque surdimensionné supprime un contexte utile. Des masques précis peuvent être créés manuellement ou générés avec la segmentation d'image. La segmentation d'instances est particulièrement utile car elle produit un masque distinct au niveau du pixel pour chaque objet.
La documentation Ultralytics SAM 2 décrit la segmentation guidée par des points et des boîtes pour sélectionner interactivement un objet. Pour les classes d'objets connues, la tâche de segmentation Ultralytics YOLO renvoie des masques d'objets et des coordonnées de polygones. Ton équipe peut également créer et affiner des masques polygonaux avec l'éditeur d'annotation de la plateforme Ultralytics, qui prend en charge l'annotation manuelle, assistée par SAM et assistée par YOLO.
Plusieurs familles de modèles peuvent effectuer le remplissage proprement dit :
- Les méthodes classiques étendent les pixels voisins, les contours ou les motifs d'intensité lisses. L'API de restauration scikit-image inclut une retouche biharmonique pour les régions masquées.
- Les réseaux antagonistes génératifs apprennent à produire des complétions visuellement réalistes grâce à la concurrence entre des réseaux générateurs et discriminateurs.
- Les modèles de diffusion transforment de manière itérative le bruit à l'intérieur du masque en un contenu conditionné par l'image visible et, éventuellement, par une instruction textuelle.
Retouche d'image et tâches associées#
La retouche est définie par un remplacement localisé. Les tâches associées ont des objectifs différents :
- La suppression d'objets est une application de la retouche : la segmentation sélectionne l'objet et la retouche comble le trou résultant.
- La segmentation d'image identifie les pixels qui appartiennent à un objet ou à une classe mais ne les remplace pas.
- Le débruitage réduit le bruit étendu tout en préservant généralement le contenu de la scène.
- L'extension d'image étend le contenu au-delà du canevas d'origine plutôt que de réparer une région interne. Le guide d'édition d'image basé sur un masque Google Cloud distingue l'insertion, la suppression, l'expansion et le remplacement de contenu.
- La super-résolution augmente la résolution et les détails de l'image au lieu de cibler un masque défini par l'utilisateur.
La suppression de texte suit le même flux de travail que la suppression d'objets. Le texte est masqué, puis le système prédit l'arrière-plan obscurci. Si le texte recouvre un visage unique, un symbole ou un détail de document, l'information d'origine ne peut pas être récupérée de manière fiable.
Applications concrètes#
Nettoyage d'images de vente au détail : Un vendeur en ligne peut segmenter un câble parasite, un reflet, un support ou un objet d'arrière-plan d'une photographie de produit et retoucher la zone. Les petits défauts peuvent convenir à Adobe Content-Aware Fill, tandis que l'édition d'image générative Adobe peut gérer des régions plus grandes et sémantiquement complexes. (helpx.adobe.com)
Restauration d'image : Les archives et les équipes d'imagerie peuvent masquer les rayures, les taches de poussière, les défauts de capteur ou les pixels manquants dans les photographies numérisées et les images de microscopie. Cela peut améliorer la lisibilité et la présentation, mais les zones reconstruites ne doivent pas être traitées comme des preuves observées. Dans les images médicales, scientifiques ou médico-légales, une structure inventée pourrait modifier l'interprétation et doit être clairement documentée.
Flux de travail pratique et limites#
L'exemple suivant utilise YOLO26 pour créer un masque de personne et OpenCV pour remplir cette région. Installe les dépendances avec pip install ultralytics opencv-python numpy.
import cv2
import numpy as np
from ultralytics import YOLO
model = YOLO("yolo26n-seg.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Select the first detected person and convert its polygon to a mask.
class_ids = result.boxes.cls.cpu().numpy().astype(int)
person_index = next(i for i, class_id in enumerate(class_ids) if class_id == 0)
contour = result.masks.xy[person_index].astype(np.int32)
contour = contour.reshape(-1, 1, 2)
image = result.orig_img.copy()
mask = np.zeros(image.shape[:2], dtype=np.uint8)
cv2.drawContours(mask, [contour], -1, 255, cv2.FILLED)
inpainted = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
cv2.imwrite("inpainted.jpg", inpainted)Cette approche combine la localisation d'objets avec le motif documenté pour la construction de masques à partir de contours de segmentation. Le remplissage classique peut peiner avec les objets volumineux, la géométrie répétitive, les ombres, les reflets ou les visages. Les méthodes génératives gèrent un contexte plus large mais peuvent introduire des détails fabriqués. Conserve l'original, inspecte les limites à pleine résolution et enregistre les modifications importantes à l'aide de mécanismes de provenance tels que C2PA Content Credentials, en particulier lorsque l'authenticité importe. Les recommandations du NIST sur la transparence du contenu synthétique soulignent également la provenance et le marquage comme des garanties importantes pour les médias modifiés de manière significative. (c2pa.org)






