Implémentations techniques de l'upscaling


15

J'ai donc vu des bicubes et des fractales répertoriés comme méthodes de mise à l'échelle des photos. Quels sont les détails techniques derrière leur fonctionnement et pourquoi / quand est-il meilleur que l'autre?


upsize: bilinéaire; réduction: lanczos 3.

Réponses:


15

Tout d'abord, l'agrandissement d'image implique de séparer les pixels d'une quantité fixe et de remplir l'espace entre les pixels précédemment voisins avec un contenu similaire. Cela peut se faire par la fabrication de pixels de base (filtrage bicubique) ou par des moyens plus complexes, tels que la conversion de l'image en une représentation vectorielle et la mise à l'échelle dans l'espace vectoriel.

Le filtrage bicubique et le filtrage bilinéaire utilisent une courbe de fonction relativement simple pour mélanger les couleurs des pixels voisins lorsque vous agrandissez une image. Bilinéaire utilise une courbe de fonction linéaire, tandis que Bicubic utilise une courbe de fonction spline cubique (cspline). La filtration bicubique produit généralement des résultats plus fluides, mais les deux algorithmes mélangent finalement les valeurs des pixels voisins ensemble via une courbe de fonction pour "combler les lacunes" lors de l'agrandissement d'une image. Il convient de noter que la mise à l'échelle bicubique est généralement sans perte, en ce sens que seul l'espace entre les pixels d'origine est réellement généré. Selon les nuances d'implémentations spécifiques, les pixels d'origine peuvent changer légèrement, mais pour la plupart, les données d'origine sont conservées et de nouvelles données sont fabriquées pour être remplies lorsqu'une image est agrandie.

L'approche fractale de la mise à l'échelle de l'image adopte une approche entièrement différente. Des algorithmes plus complexes sont utilisés pour analyser le contenu d'une image, identifier les bords et les "objets" et finalement convertir l'image en un format vectoriel fractal. Une fois l'image vectorisée, elle peut être mise à l'échelle "sans perte" dans l'espace vectoriel, puis re-rendue à une plus grande taille. Les algorithmes fractaux, tels que les fractales authentiques, utilisent un algorithme vectoriel fractal pour mettre à l'échelle une image tout en conservant des bords lisses et nets. Cette approche est utile lorsque votre image présente initialement des bords nets et reconnaissables comme facteur clé, et il est important de maintenir une netteté nette sur ces bords.

De plus, Genuine Fractals essaie de maintenir les détails non marginaux via le concept d '"auto-similitude", en préservant les détails en considérant le contenu de l'image comme étant de nature fractale et en restituant le contenu non-edge à partir d'algorithmes fractals. Cela présente l'avantage présumé, plutôt que de simplement fabriquer des informations à partir de pixels voisins, de nouveaux contenus peuvent être générés à partir de motifs composés de nombreux pixels. Cette approche peut très bien fonctionner lors de la mise à l'échelle d'environ 200%, mais la nature vectorielle fondamentale de la mise à l'échelle devient plus apparente lors de la mise à l'échelle vers des tailles plus grandes. Il convient également de noter que cette méthode de mise à l'échelle n'est pas sans perte et que certains détails de pixels fins peuvent être ignorés lorsque l'algorithme tente de trouver une fractale.modèles qui peuvent être reproduits. Une mise à l'échelle extrême peut entraîner une réplication du motif visible et les détails des bords fins peuvent être effacés afin de maintenir des bords nets et nets à toutes les tailles d'image.

BenVista propose également un algorithme propriétaire baptisé S-Spline. Il y a peu d'informations sur les spécificités de cet algorithme, mais il ressemble à un autre algorithme basé sur la courbe de fonction. La mise à l'échelle S-Spline Max dans PhotoZoom Pro, comme les fractales authentiques, fait un excellent travail en conservant la définition des bords. Cet algorithme est également capable d'évoluer à environ 200% environ, mais pousser cet algorithme beaucoup plus loin entraîne une dégradation et un lissage des détails non liés aux bords. Il semble que le compromis général dans les algorithmes de mise à l'échelle soit soit une définition de bord maximale, soit une conservation maximale des détails. Il convient également de noter que la plupart des algorithmes de mise à l'échelle tiers, y compris Genuine Fractals et BenVista PhotoZoom Pro, appliquent automatiquement un masque flou à l'image finale par défaut.

Il est possible d'utiliser le bicubique de manière itérative. Le nœud fondamental de la mise à l'échelle bicubique est qu'elle fabrique plus d'informations à mesure que vous grandissez, au prix ultime de la netteté. En effectuant une mise à l'échelle bicubique par incréments de 3 à 5%, vous conservez des détails beaucoup plus originaux ou quasi originaux et fabriquez beaucoup moins d'image à chaque étape. Les résultats finaux d'une mise à l'échelle bicubique itérative (ou étagée) peuvent maintenir une définition de bord considérablement plus élevée, sans perdre de détails fins. Le coût, cependant, est un investissement personnel beaucoup plus important dans la mise à l'échelle, car pour le moment, aucune application préfabriquée ne le fera pour vous. Vous devez calculer manuellement la nouvelle largeur et la hauteur de l'image à chaque étape en multipliant la largeur ou la hauteur précédente par votre pourcentage de mise à l'échelle et en branchant ce nombre dans votre programme de retouche d'image " s outil de mise à l'échelle bicubique. Les résultats finaux peuvent être superbes et aussi nets qu'une image bicibique avec un masquage flou. Les limites de la taille à laquelle vous pouvez agrandir une image sans préjudice visible sont beaucoup plus importantes que d'autres algorithmes, au moins 400%, voire davantage.


Hmm. Il serait assez facile de programmer cette mise à l'échelle bicubique itérative comme un script gimp, ou une action photoshop ....
Veuillez lire le profil le

Je l'ai essayé en tant qu'action Photoshop, mais je n'ai pas réussi, car cela nécessitait des informations informatiques. Je ne fais pas vraiment beaucoup de scripts avec Photoshop, donc je ne sais pas s'il prend en charge les fonctions mathématiques ou les scripts.
jrista

2
+1 Wow, fantastique réponse détaillée. Je pensais que c'était une question ennuyeuse jusqu'à ce que je lise votre réponse.
fmark

Je viens de tester plusieurs rezising dans Paint.net, mais les résultats n'étaient pas comme indiqué dans cette réponse, l'image redimensionnée plusieurs fois était tellement floue que la même image rééchantillonnée une seule fois. J'ai essayé avec la même image redimensionnée à 200% et itérative 104% à chaque fois jusqu'à atteindre approximativement les mêmes dimensions de pixels.
Jahaziel

1
Si vous voulez un exemple de bicubique itératif réalisé sur une image qui a bénéficié de la méthode, regardez mon analyse ici: Etude Emprical: Upscaling numérique extrême
jrista
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.