web-dev-qa-db-fra.com

Quel algorithme de redimensionnement choisir pour les vidéos?

J'utilise VirtualDub pour l'encodage avec ceux paramètresresize algorithms

Cependant, j’enregistre mes fichiers en 1920x1080 et les redimensionne à 1280x720. Maintenant, la question: quel algorithme dois-je choisir pour prendre une décision équilibrée entre qualité et taille de fichier?

Je suis toujours allé avec Lanczos parce que c'était ce qui était préconfiguré. Ces descriptions ne m'aident pas vraiment du tout dans ma question.

18
Grumpy ol' Bear

TL; DR

Lors de l'échantillonnage: Utilisez le filtrage Lanczos ou Spline.

Lors de l'échantillonnage: Utilisez le filtrage Bicubic ou Lanczos.

Celles-ci sont basées sur des documents que j'ai lus au fil des ans et de ce que j'ai vu utilisé dans l'industrie. Les recommandations peuvent varier en fonction du type de contenu et du domaine d'application.

Pourquoi est-ce important?

On pourrait faire valoir que les filtres de redimensionnement importent peu lorsque vous réduisez une vidéo. Plus important encore, ils ont un impact sur la qualité lors de la conversion ascendante, car vous devez générer des données là où il n'y en a pas.

Ces filtres n’ont tous qu’un impact marginal sur la taille du fichier. Il ne faut donc pas s’inquiéter des différences énormes qui existent ici.

Le fait est, comme toujours lors de l’encodage vidéo, que le résultat dépend fortement du matériel source. Vous ne pouvez pas toujours prédire le résultat, mais voyez ce qui vous convient le mieux.

Différents algorithmes

À titre d'exemple, voici bicubic vs. interpolation bilinéaire :

enter image description here

Vous voyez que l'interpolation bicubique donne des bords plus lisses? C'est une déclaration très générale… mais vous pouvez trouver un aperçu des algorithmes de redimensionnement d'image ici .

  • L'interpolation bilinéaire utilise un environnement 2x2 d'un pixel, puis utilise la moyenne de ces pixels pour interpoler la nouvelle valeur. Ce n'est pas le meilleur algorithme, mais plutôt rapide.

  • L'interpolation bicubique utilise l'environnement 4x d'un environnement pixel, alourdissant les pixels les plus profonds, puis utilise la moyenne pour interpoler le nouveau valeur. Pour moi, c'est le plus populaire.

  • La moyenne de zone utilise un mappage des pixels source et cible, en faisant la moyenne des pixels source par rapport à la fraction de pixels de destination couverte. Selon cette page , cela devrait produire de meilleurs résultats lors du sous-échantillonnage.

  • Spline et sinc interpolation utilise des polynômes d'ordre supérieur et est donc plus difficile à calculer que l'interpolation bicubique. Je ne pense pas que l'augmentation globale du temps de traitement mérite d'être utilisée.

  • Lanczos le rééchantillonnage implique également un filtre sinc. Plus onéreux en termes de calcul, il est généralement décrit comme étant de très haute qualité et peut être utilisé pour l’échantillonnage en amont et en aval.

  • ( hqx ainsi que 2xSaI sont des filtres utilisé pour la mise à l'échelle de pixel-art (par exemple, émulateurs de jeux). Je ne pense pas qu'il y ait une bonne raison de les utiliser en vidéo.

Comparaison de Jeff Atwood

Il s’avère que Jeff Atwood a fait un comparaison d’algorithmes d’interpolation d’image . Sa règle empirique consistait à utiliser une interpolation bicubique pour le sous-échantillonnage et une interpolation bilinéaire lors de la rééchantillonnage. Cela dit, ce n'est pas ce qui est généralement recommandé pour l'encodage vidéo - et certains commentateurs ont émis des doutes sur le savoir-faire d'Atwood dans ce domaine.

Cependant, il a également mentionné que…

Réduire les images est une opération totalement sûre et rationnelle. Vous réduisez simplement la précision et la résolution en éliminant les informations. Faites en sorte que l'image soit aussi petite que vous le souhaitez, et vous bénéficiez d'une fidélité totale, dans les limites du nombre de pixels que vous avez autorisés. Vous obtiendrez de bons résultats, quel que soit l'algorithme que vous choisissez. (Eh bien, à moins que vous ne choisissiez les algorithmes de la nef Pixel Resize ou du plus proche voisin.)

Autres exemples

Voici quelques exemples supplémentaires d'algorithmes d'interpolation d'images , y compris ceux que j'ai mentionnés ci-dessus.

J'ai également trouvé des documents (règles de scène) de la scène de codage vidéo qui explicitement interdisent le filtrage bicubique pour le sous-échantillonnage. Au lieu de cela, ils approuvent le rééchantillonnage de Lanczos, Spline ou "Blackman".

23
slhck

J'ai trouvé une bonne image qui documente une partie de cela.

enter image description here

Version grandeur nature ici .

En général, vous souhaitez obtenir un léger effet de netteté lors de la transformation d'une image plus grande en une plus petite et un effet de flou léger lors de la création d'une image plus petite en une plus grande. Par défaut, le jeu de filtres MadVR est Lanczos pour la conversion ascendante et bicubic pour la réduction.

6
Jeff Atwood

Vous convertissez 3x3 pixels d'origine en 2x2 pixels cibles.

Si vous souhaitez conserver des lignes nettes, choisissez Lanczos ou un système utilisant davantage de pixels environnants afin de ne pas brouiller les lignes nettes (telles que la fourrure ou les reflets).

Sinon, la superficie moyenne, etc. (également bilinéaire/trilinéaire) suffirait.

2
ZaB