Je voudrais savoir quel est le meilleur algorithme à utiliser pour réduire la taille d'une image matricielle. Par meilleur, j'entends celui qui donne les meilleurs résultats. Je connais l'algorithme bicubique, mais y a-t-il quelque chose de mieux ? Par exemple, j'ai entendu dire par certaines personnes qu'Adobe Lightroom possède une sorte d'algorithme propriétaire qui produit de meilleurs résultats que le bicubique standard que j'utilisais. Malheureusement, j'aimerais utiliser cet algorithme moi-même dans mon logiciel, et les secrets commerciaux soigneusement gardés d'Adobe ne suffiront pas.
Ajouté :
J'ai consulté Paint.NET et, à ma grande surprise, il semble que le Super Sampling soit meilleur que le bicubique lorsqu'il s'agit de réduire la taille d'une image. Cela m'amène à me demander si les algorithmes d'interpolation sont la bonne solution.
Cela m'a également rappelé un algorithme que j'avais moi-même "inventé", mais que je n'avais jamais mis en œuvre. Je suppose qu'il a également un nom (car quelque chose d'aussi trivial ne peut être l'idée de moi seul), mais je n'ai pas pu le trouver parmi les noms les plus courants. Super Sampling était celui qui s'en rapprochait le plus.
L'idée est la suivante : pour chaque pixel de l'image cible, calculez l'endroit où il se trouverait dans l'image source. Il se superposera probablement à un ou plusieurs autres pixels. Il serait alors possible de calculer les surfaces et les couleurs de ces pixels. Ensuite, pour obtenir la couleur du pixel cible, il suffirait de calculer la moyenne de ces couleurs, en ajoutant leurs surfaces comme "poids". Ainsi, si un pixel cible couvre 1/3 d'un pixel source jaune et 1/4 d'un pixel source vert, j'obtiendrais (1/3*jaune + 1/4*vert)/(1/3+1/4).
Il s'agirait naturellement d'un calcul intensif, mais il devrait être aussi proche de l'idéal que possible, non ?
Existe-t-il un nom pour cet algorithme ?