Des algorithmes pour sous-échantillonner une image?

10

L'échantillonnage bicubique est assez bon pour échantillonner une image et l'agrandir, mais est-ce aussi un bon choix pour l'échantillonnage à la baisse? Y a-t-il de meilleurs choix?

Alan Wolfe
la source
1
Ces deux anciens articles de Le produit intérieur parle de filtres pour la génération de mipmap, ce qui pourrait être pertinent pour vous: Lien1 , lien2 .
glampert

Réponses:

12

Lorsque Sean et moi avons écrit stb_image_resize, nous avons choisi Mitchell pour réduire les effectifs. Mitchell est similaire à Cubic, vous pouvez en savoir plus sur la classe cubique des filtres d'échantillonnage dans Mitchell Netravali 1988 . Ils sont tous assez similaires et vous obtiendront des résultats très similaires.

Je ne trouve aucun enregistrement écrit entre Sean et moi expliquant pourquoi nous avons décidé d'aller avec Mitchell, mais si ma mémoire est bonne, nous avons juste rééchantillonné un tas d'images et utilisé l'algorithme que nous pensions être le meilleur. Je ne dirais pas qu'il existe un filtre faisant autorité ou le meilleur, vous devriez utiliser celui qui correspond le mieux à vos données.

Edit: Comme le dit joojaa, un filtre sinc fenêtré est également bon, sinon tout aussi bon marché. Vous pouvez trouver quelques implémentations ici .

Jorge Rodriguez
la source
3
Il existe un meilleur filtre faisant autorité, c'est un filtre sinc infiniment large. Ce n'est tout simplement pas possible de l'utiliser. jusqu'à ce que lanczos windowed sinc soit une bonne alternative à michell
joojaa
Pour référence, il y a aussi les outils d'image Nvidia .
glampert
Si vous utilisez un filtre cubique ou lanczos, ces types fonctionnent-ils aussi bien pour la mise à l'échelle que pour la réduction?
Alan Wolfe
Je n'ai pas essayé de lanczos donc je ne peux pas en parler. Nous avons choisi catmull-rom pour la mise à l'échelle, qui est un cube, et cela a bien fonctionné.
Jorge Rodriguez