2010-04-29 12 views
2

Je suis la conception d'un jpeg bmp décodeur qui redimensionne l'image. J'ai reçu le code source du décodeur, mon travail consiste donc à concevoir un scaler. Je ne sais pas par où commencer. J'ai repéré l'Internet pour les différents algorithmes de mise à l'échelle, mais je ne suis pas sûr de savoir où introduire la mise à l'échelle. Alors devrais-je faire la mise à l'échelle après que l'image est convertie en bmp ou devrais-je le faire pendant le décodage au niveau du microcontrôleur. suis confus :(mise à l'échelle de l'image en C

Si vous les gars avez des informations à me aider, son apprécié. tout matériel à lire, le code source pour analyser etc ....

Oh j'oublié de mentionner une chose, cette est un projet de portage de la plate-forme PC à un fpga, donc, tous les fichiers de bibliothèque sont disponibles sur la plate-forme cible.

Répondre

2

Il y a plusieurs façons à l'échelle d'une image.

le plus simple est de décoder les image puis redimensionner en utilisant un algorithme de mise à l'échelle naïve, quelque chose comme:

dest_pixel [x,y] = src_pixel [x * x_scale_factor, y * y_scale_factor] 

où x/y_scale_factor est

src_size/dest_size 

Une fois que vous avez ce travail, vous pouvez regarder dans les systèmes de mise à l'échelle plus complexes, des choses comme filtre bilinéaire. Par exemple, le pixel de destination est la moyenne de plusieurs pixels de la source lors de la réduction de la taille et une interpolation de plusieurs pixels de la source lors de l'augmentation de la taille.

+0

Facteur d'échelle devrait être l'inverse de ce que vous avez là. Sinon, vous accéderez à des pixels hors limites dans l'image source. (Imaginez src_size est 1 et dest_size est 2 et ce qui se passe comme résultat.) –

+0

@Jim: Un cas de sommeil pas assez là je pense. Le fixe maintenant. – Skizz

+0

Merci Skizz et Jim, j'ai fait une mise à l'échelle simple tableau et cela a fonctionné. Si vous avez des codes sources de mise à l'échelle complexes, postez-les pour que je puisse les étudier. (n'importe quelle langue, n'importe quelle plate-forme). – Gan