Comment un ordinateur peut-il augmenter la résolution de 1024x768 à 1920x1080?


8

Sans qu'il n'y ait de barres noires, je veux dire. 1080 n'est pas un multiple de 768, donc y a-t-il une sorte de perte de données?


5
Il existe des algorithmes de mise à l'échelle comme la mise à l'échelle bicubique qui utilisent des splines pour approximer la couleur des pixels lorsqu'ils sont mis à l'échelle à n'importe quelle taille.
EvilTak

@EvilTak, pouvez-vous développer votre commentaire en une petite réponse?
glampert

@glampert l'a fait. Voulez-vous que je supprime mon commentaire?
EvilTak

@EvilTak, je pense que vous pouvez le laisser. Belle réponse btw, merci!
glampert

Réponses:


8

En substance, une image est un groupe d'échantillons ponctuels (lire Un pixel n'est pas un petit carré 3 ). Lorsque vous transformez ou redimensionnez l'image, vous devez la rééchantillonner. Donc, ce que vous faites, théoriquement, c'est de prendre les échantillons ponctuels et de les convertir en une fonction continue. Ensuite, vous échantillonnez cette fonction continue et reconstruisez un signal. Donc, il y a deux ou trois phases différentes ici.

  1. Conversion des échantillons en fonction continue, (reconstruction de fonction).
  2. (Transformer)
  3. Rééchantillonnage du signal

Notez qu'aucune de ces étapes n'a de forme fixe. En pratique, une fois optimisé, il est impossible de dire qu'il y a des étapes. La transformation ne doit pas vraiment être simple, il peut s'agir de cartographier la forme en spirale, etc.

Reconstruction du signal

Image 1 : Un signal 1-D reconstruit par différents filtres.

En pratique, on en sait beaucoup sur la reconstruction du signal dans le domaine du traitement du signal. Concevoir ces filtres et choisir le bon est une forme d'art en soi. Mais, en substance, le choix du filtre est un compromis entre le flou et la sonnerie . Bien sûr, l'algorithme a également d'autres qualités telles que le nombre d'instructions qu'il faut pour mettre en œuvre et la vitesse et la quantité de mémoire dont il a besoin, etc. Ce qui peut être très important dans les applications en temps réel ou intégrées.

Le processus

Image 2 : Aperçu de l'ensemble du processus.


5

Il existe de nombreux algorithmes de mise à l'échelle et de réduction d'échelle disponibles pour mettre à l'échelle les images de toute résolution à toute autre résolution arbitraire. Chaque algorithme implique généralement un compromis entre efficacité, fluidité et netteté, avec différents degrés de chaque compromis pour différents algorithmes.

Consultez cet article Wikipedia pour de tels algorithmes et des exemples de tels algorithmes.

L'algorithme le plus connu (et utilisé) est l' algorithme d' interpolation bicubique . Il interpole entre des points 2D sur une grille rectangulaire. À l'aide de splines cubiques (ou interpolation cubique), il interpole d'abord sur une dimension (trouve la ligne / colonne interpolée), puis interpole la ligne / colonne interpolée dans l'autre dimension.

L'interpolation bilinéaire est similaire à l'interpolation bicubique, sauf que la première interpole à l'aide d'une fonction linéaire et ne peut interpoler qu'entre deux valeurs et que la seconde utilise une fonction cubique et peut interpoler entre quatre valeurs.

La fonction simple pour l'interpolation bicubique est la suivante:

f(f(p00, p01, p02, p03, y),
  f(p10, p11, p12, p13, y),
  f(p20, p21, p22, p23, y),
  f(p30, p31, p32, p33, y),
  x)

où (x, y) est la position interpolée et p [] [] est le tableau 2d représentant la grille 4 * 4.

Consultez ce lien pour plus d'informations et un exemple de code, ce qui aide vraiment beaucoup!


0

Bien que les autres réponses données soient correctes, je ne suis pas sûr qu'elles répondent entièrement à votre question. Afin de ne pas obtenir de barres noires, vous avez 2 options si la destination n'est pas la même forme (ou format d'image) que la source:

  1. Remplissez la destination en laissant quelques pixels de la source hors de la destination. Dans votre exemple, la source est 1024x768 et la destination est 1920x1080. Si vous redimensionnez l'image d'origine pour obtenir un résultat de 1920 x 1440, vous pouvez ensuite recadrer le haut et / ou le bas pour obtenir une résolution de 1920 x 1080.
  2. Étirez l'image de destination pour l'adapter. Vous devez donc redimensionner verticalement en 1080/768 = 1,40625 et redimensionner horizontalement en 1920/1024 = 1,875. Ce n'est presque jamais ce que vous voulez, et semble terrible dans la plupart des cas. (C'est ce qui rend les gens beaucoup plus larges qu'ils ne le devraient et transforme les cercles en ovales et les rotations en cisailles.)

Il existe une autre option, mais elle ne correspond pas à vos critères - mettez à l'échelle uniformément, mais seulement jusqu'à ce qu'une dimension soit aussi grande que la destination. Dans ce cas, vous devez redimensionner à la fois horizontalement et verticalement 1,40625 pour obtenir un résultat de 1440x1080. Ceci est généralement appelé "échelle pour s'adapter".

Pour chacune de ces options, vous pouvez utiliser n'importe quel algorithme de mise à l'échelle répondant à vos besoins.


1
Vous pouvez également avoir des barres blanches. Vous pouvez également utiliser une fonction de synthèse d'image pour remplir les pixels, vous pouvez superposer une image avec elle-même, une qui est rognée et une qui s'étire par exemple. voici simplement une quantité infinie de façons de traiter sans données. Je pense que la plupart d'entre nous ont simplement supposé que ce serait une échelle non uniforme.
joojaa

Très vrai. J'ai supposé que l'affiche originale ne voulait pas spécifiquement remplir avec une couleur unie et ne s'intéressait qu'à l'aspect de la mise à l'échelle, car c'est ce qu'ils demandaient. Mais il existe de nombreuses autres méthodes de remplissage. Il existe également des méthodes de mise à l'échelle non linéaire, où le centre conserve son rapport d'aspect et les bords sont étirés, par exemple.
user1118321
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.