Algorithme de redimensionnement d'image en C

Algorithme de redimensionnement d'image en C - Programmation

Marsh Posté le 21-03-2002 à 15:04:31    

Je cherche un algo de redimensionnement d'image :  
image[576][520] en image2[144][52]  
sans trop de perte : moyennage, lissage ou autre  
 
Pourriez vous m'indiquez des methodes ou des sites qui en parle ???
 
MERCI

Reply

Marsh Posté le 21-03-2002 à 15:04:31   

Reply

Marsh Posté le 21-03-2002 à 16:38:15    

stancw a écrit a écrit :

Je cherche un algo de redimensionnement d'image :  
image[576][520] en image2[144][52]  
sans trop de perte : moyennage, lissage ou autre  
Pourriez vous m'indiquez des methodes ou des sites qui en parle ???




 
Quand tu parles de limiter les pertes, tu veux sans doute dire limiter les artefacts visuels lies aux interferences. (parce que de la perte il y en a systematiquement quand tu reduis une image).
 
Pour limiter les interferences, tu utilises un filtre passe-bas.
Ton image a une frequence horizontale maximale de 576 (periode = 1)
Si tu veux l'echantillonner a une frequence de 144, tu dois donc limiter l'influence des frequences superieures a 144 (periode = 576/144 = 4). Tu peux donc par exemple faire la moyenne
sur 4 pixels horizontaux (box filter).
Tu inclus cette moyenne dans le calcul de ta nouvelle image.
Pour chaque nouveau pixel, tu calcules la moyenne sur les 4 pixels environnants (peu importe ou est le centre de ta "boite", l'important c'est de le faire uniformement sur l'image bien entendu, fais attention aux bordures de ton ecran).
Tu fais le meme calcul sur les pixels verticaux
peu importe l'ordre, tu peux meme faire le calcul simultanement en utilisant une "boite" en 2D.
 
Ce calcul n'est pas parfait, le box filter peut creer des artefacts d'interference sur certains types d'image.
(en effet une boite rectangulaire dans l'espace des frequences
n'est pas une boite mais fait des vagues de maniere periodique).
Pour eviter cela, il vaut peut etre mieux utiliser une moyenne ponderee sur les points voisins.
Les poids sont definis en cloche (la gaussienne).
ex: [1 2 1] c'est la definition d'une gaussienne de poids 4.
Le probleme de la gaussienne c'est que la coupe dans l'espace des frequences n'est pas franche. C'est a dire que tu as le choix
entre une image trop filtree (floue) ou pas assez filtree (risques d'interferences). En general le resultat est meilleur qu'avec la boite parce que tu n'as pas les artefacts liees aux vaguelettes de frequences. (une gaussienne en transformee de fourier reste une gaussienne).
 
Pour eliminer de maniere franche les frequences au dessus de 144, il y a une solution consistant a passer dans l'espace des frequences par une transformee de fourier rapide et a mettre a zero les coefficients situes au dessus de 144 en horizontal
et 52 en vertical. Puis faire la transformation inverse.
 
Attention aux effets bizarres sur les bords de ton image.
Elle est consideree comme periodique, c'est a dire que les bords droits et les bords gauches sont colles.
Tu peux ajouter des pixels inutiles sur les bords, avec des valeurs etudiees pour limiter les effets de la reduction de frequence.
 
A+
LEGREG

Reply

Marsh Posté le 21-03-2002 à 20:09:10    

Mer c pour cette reponse precise je vais essayer de retranscrire tout ça en C .....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed