2011-06-29 6 views
1

Je cherche à implémenter un algorithme de rééchantillonnage pour un tableau 2D (il pourrait s'agir d'une image en niveaux de gris ou d'un tableau 2D de valeurs à virgule flottante).Image/Rééchantillonnage de matrice 2D en C

Les étapes impliquées dans cette opération particulière sont:

  1. Étant donné un tableau 2D, je premier sous-échantillonnage à la taille de 8x8 ou 16x16, en utilisant une méthode de sous-échantillonnage (de préférence avec un anti-aliasing précédant filtration).

  2. Opération nuemrique à ce sujet.

  3. Puis remontez l'échantillon à sa taille d'origine en effectuant une interpolation bilinéaire.

En tant que prototype, je l'ai codé comme indiqué ci-dessous dans Octave. Il donne des résultats décents. Je cherche à obtenir des références sur la mise en œuvre du C.

fid = fopen("anti_vig_gain_map.txt","r"); 
fid2 = fopen("ds_us_anti_vig_gain_map.txt","w"); 

for i=1:1968 
    for j=1:2592 
     map(i,j) = fscanf(fid,'%f\n',1); 

    end 
end 

%downsample 

ds_map = imresize(map,[8 8],'linear'); 

%% some processing on ds_map 

%upsample 

us_map = imresize(ds_map,[1968 2592],'linear'); 

J'ai essayé de voir le code imresize.m mais il devient compliqué après un certain temps et ne pouvait pas extraire du code C sortir.

Tout pointeur sur le code C de référence pour l'interpolation bilinéaire pour effectuer le suréchantillonnage.

Je cherche également à obtenir des pointeurs pour le filtre anti-repliement et la méthode de down-sampling utilisant la méthode bilinéaire.

Répondre

1

Je pense que ce que vous recherchez est contenu dans la suite NetPBM. Plus précisément, pamscale qui gère à la fois l'échantillonnage haut et bas avec plusieurs schémas de filtrage possibles pour les deux directions. Le code est à la fois bien écrit et autonome.

+0

merci. Va lire le code et mettre à jour. – goldenmean

+0

J'ai lu ce code, mais il est - a) difficile à comprendre et donc à extraire/modifier. b) Aucun moyen de le tester. – goldenmean

Questions connexes