2009-05-28 9 views
0

J'essaie de trouver/écrire une fonction qui exécuterait la même opération que imlincomb(). Cependant, j'ai de la difficulté à trouver de telles fonctions en C++ sans utiliser d'autres fonctions de l'API Matlab que la bibliothèque Intel Performance Primitiives, et je ne veux pas vraiment acheter de licence à moins que mon application en profite vraiment. Quelle serait la méthode de mise en œuvre facile, ou peut-être s'il existe des fonctions standard qui facilitent le travail?Image Fonctions arithmétiques en C++

Merci d'avance.

Répondre

2

Il n'y a absolument rien de tel dans un paquet C++ standard. Vous pourriez être en mesure d'utiliser quelque chose dans LAPACK, mais je pense que vous feriez mieux d'écrire le vôtre. C'est une fonction assez simple: chaque pixel de sortie est indépendant et ne dépend que des pixels d'entrée aux mêmes coordonnées. En pseudocode:

for each row y in [0, height-1] 
    for each column x in [0, width-1] 
     for each color channel c in (R, G, B) 
      output[y][x][c] = 0 
      for each input i 
       output[y][x][c] += weight[i] * input[i][y][x][c] 

Bien sûr, la formulation exacte dépend exactement comment vos images sont stockées (tableau 3D, tableau 2D ou tableau 1D, et faire attention à l'ordre de vos dimensions!).

+0

Les images sont stockées dans un tableau 1D plat, mappé avec une table de hachage. Il était à l'origine stocké dans un tableau 5D, chaque élément du tableau étant un segment d'image de 350 x 80 pixels. – stanigator