Effacer l'arrière-plan d'une image
Bonjour les amis,
Comme d'habitude j'ai dû mal chercher sur internet des algorithmes permettant d'effacer l'arrière-plan d'une image.
Et sur notre site je n'ai rien trouvé pourtant je pensais que ça devait être un des premiers points à traiter sur une image.
Je sais que ce n'est pas évident à réaliser mais je n'ai pas trouvé la moindre piste.
Par contre j'utilise remove.bg et lui efface quasi instantanément l'arrière-plan d'une image.
Quelqu'un aurait-il une idée sur le principe?
Et ceci aussi pour la reconnaissance de formes et tant d'autres traitements.
Ils parlent d'intelligence artificielle mais on en met partout de cette sauce et quand je l'utilise c'est pour reconnaître de petites images dans une grande (genre décalcomanies) donc ce ne sont pas des visages ou des formes très complexes.
Et concernant la vitesse d'exécution je me demandais aussi comment les logiciels les plus performants en traitement d'images procédaient car tout ce que je fais dans ce domaine devient très vite lent si l'image a une certaine taille, genre Canny en Delphi, etc.
Un autre bête truc, quand on recherche quelque chose sur Google il nous affiche instantanément des millions d'occurences et moi avec ma petite base de données ça peut prendre un temps fou selon les requêtes, je sais ça n'a rien à voir avec le traitement d'images.
Si quelqu'un pouvait m'éclairer sur les techniques que ces logiciels utilisent je lui en serais reconnaissant.
1 pièce(s) jointe(s)
Effacer l'arrière-plan d'une image
Bonjour,
On ne trouve malheureusement que très peu de références concernant le principe du détourage d'une image;
la plupart des liens renvoient à des modes d'emploi de logiciels particuliers, quasiment sans la moindre indication théorique sur l'algorithme utilisé.
Les commentaires peuvent néanmoins contenir quelques indications utiles.
... il convient de souligner qu'un détourage automatique ne sera jamais aussi bon qu'un détourage manuel réalisé par un expert dans un logiciel tel que Photoshop ou Gimp. Les images complexes, comme certains sujets, exigent un réel savoir-faire associé à des outils puissants. Et si Remove.bg se sort admirablement des photos simples, où le sujet est bien en évidence, sans trop d'ombres notamment, il ne peut pas remplacer un œil humain. Ce qui ne l'empêche pas d'être très utile pour des détourages simples, d'autant qu'il est extrêmement rapide
J'ai essayé Remove.bg, que je ne connaissais pas; quelques essais ont montré un fonctionnement rapide et efficace. La mise en ligne paraît peu compatible avec la protection des droits d'auteur, si tu éditais un jour des images auxquelles tu tiens. Tu pourrais peut-être regarder du côté de Gimp, téléchargeable gratuitement.
L'élimination de l'arrière-plan sur un critère de couleur est le procédé le plus simple, qui s'impose immédiatement lorsque le fond de l'image ou l'objet à sélectionner présente une couleur uniforme ou un domaine de couleurs relativement étroit, sans qu'il y ait de teinte commune de part et d'autre du contour.
Le résultat peut cependant s'avérer décevant lorsque les bords présentent un dégradé (qui peut être simplement dû à une variation d'éclairement), ou lorsque le contour devient fractal (cas d'une fourrure, ou des cheveux).
J'avais tenté, il y a deux ans, de réaliser un montage montrant la trajectoire apparente de la Terre observée depuis le pôle Sud de la Lune, à partir d'une une vidéo réalisée par la NASA; bien que le noir absolu du ciel constituât un facteur favorable, le résultat est apparu décevant à cause du flou du contour planétaire, et aussi de ce que les zones plongées dans la nuit étaient aussi sombres que le ciel - il s'agissait, il est vrai, d'une vidéo synthétisée sur ordinateur.
L'intégralité du disque terrestre aurait pu être conservée par le tracé du cercle moyen calculé sur 4 ou 5 points du contour ... mais cela aurait alors demandé trop de temps.
3 pièce(s) jointe(s)
Effacer l'arrière-plan d'une image
Pour illustrer la sélection sur couleur, j'ai pris l'exemple à priori très simple d'un oiseau photographié en plein vol(1)!
Un bornage rapide des composantes (r, v, b) établi sur prélèvement de pixels aux 4 coins de l'image
120<r<127 ; 161<v<173 ; 224<b<232
conduit à un résultant assez décevant, montrant que le fond du ciel est loin d'être aussi uniforme qu'il semble au premier abord:
L'élimination des taches bleues résiduelles s'obtient par l'élargissement progressif des créneaux, après détection des composantes de couleur; on parvient, après un sixaine de rectifications:
La transformation de l'image s'obtient par le code précédent:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| FUNCTION Couleur(Px1: Pixel): Pixel;
CONST Coul: Pixel = (0, 255, 0);
VAR T1, T2, T3: Bool; Px2: Pixel;
BEGIN
T1:= ((095<Px1[1]) AND (Px1[1]<154));
T2:= ((147<Px1[2]) AND (Px1[2]<216));
T3:= ((215<Px1[3]) AND (Px1[3]<256));
IF (T1 AND (T2 AND T3)) THEN Px2:= Coul
ELSE Px2:= Px1;
Result:= Px2
END;
PROCEDURE Calc_Mat_Im2(La, Ha: Z_32; VAR Ma1, Ma2: Tab_Pix);
CONST Pzero: Pixel = ( 85, 170, 255);
VAR Xm, Ym: Z_32; Px: Pixel;
BEGIN
FOR Xm:= 0 TO (La - 1) DO
FOR Ym:= 0 TO (Ha - 1) DO
Ma2[Xm,Ym]:= Couleur(Ma1[Xm, Ym])
END; |
Les tableaux de pixels (Matrice_1, Matrice_2) correspondant respectivement aux corps des images bitmap initiale et finale
On est évidemment loin d'un procédé automatique et rapide ...
(1) Collection de William Fondevilla
http://www.nature-comminges.asso.fr/index.php/rapaces/
2 pièce(s) jointe(s)
Effacer l'arrière-plan d'une image
On peut envisager un algorithme à un seul paramètre, sachant que pour la trentaine de points testés sur le fond du ciel les conditions
(b > 215) et (r < b * 0.554)
sont vérifiées; elles conduisent alors au résultat suivant:
les taches bleues subsistantes disparaissent par l'intervention d'un rapport limite plus élevé, par exemple:
La délimitation du fond ne fait plus intervenir que deux booléens au lieu de six:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| FUNCTION Couleur(Px1: Pixel): Pixel;
CONST Coul: Pixel = (0, 255, 0); Krb = 0.600; // Krb = 0.554
VAR T1, T2: Bool; Px2: Pixel;
BEGIN
T1:= (Px1[3]>215);
T2:= (Px1[1]<(Px1[3] * Krb));
IF (T1 AND T2) THEN Px2:= Coul
ELSE Px2:= Px1;
Result:= Px2
END;
PROCEDURE Calc_Mat_Im2(La, Ha: Z_32; VAR Ma1, Ma2: Tab_Pix);
CONST Pzero: Pixel = ( 85, 170, 255);
VAR Xm, Ym: Z_32; Px: Pixel;
BEGIN
FOR Xm:= 0 TO (La - 1) DO
FOR Ym:= 0 TO (Ha - 1) DO
Ma2[Xm,Ym]:= Couleur(Ma1[Xm, Ym])
END; |
2 pièce(s) jointe(s)
Effacer l'arrière-plan d'une image
Je ne résiste pas à la tentation de soumettre à Remove.bg le cas franchement vicieux de cette image de la roussette Haploblepharus edwardsii :mrgreen:
Il y a comme un défaut dans le résultat:
Comme quoi rien ne vaut l'œil humain ... même si ce n'est pas celui d'un expert.