Bonjour,
j'utilise actuellement une biblioth�que de calcul lin�aire appel�e Armadillo. Cette r�cente librairie exploite la notion de template au maximum et est d�crit comme �tant ultra et plus performants que les autres biblioth�ques de m�me types.
je voudrais voir comment se comporte Armadillo au sein �un algorithme plus complexe. Pour cela, j'ai choisi d�implanter un algo de conversion de couleurs de l�espace RGB vers YUV dont je vais mesurer le temps d'ex�cution sous matlab et visual.
je d�ja fait le code matlab suivant:
et je voudrais l'impl�menter en c++, voici le code dont je dispose:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 function [Y,U,V]= rgb2yuv(I) R=I(:,:,1); G=I(:,:,2); B=I(:,:,3); Y=min(bitshift(abs (2104*R+4130*G+802*B+135168) ,-13) ,235); U=min(bitshift(abs ( -1214*R -2384*G+3598*B+1052672) ,-13) ,240); V=min(bitshift(abs (3598*R -3013*G-585*B+1052672) ,-13) ,240); end
le but �tant d�effectuer un d�calage de 13 bits sur les valeurs absolues des valeurs de mes �quations et de prendre le minimum par rapport au valeur mise (235 240 240) et stocker l'ensemble dans une matrice (y u v) mais j'ai vois pas pourquoi ca ne marche pas
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 void RGB2YUV(const cube& i, mat& y, mat& u, mat & v) { //récupère les 3 composantes mat R = i.slice(0); mat G = i.slice(1); mat B = i.slice(2); // y=min(( abs(2104*R+4130*G+802*B+135168) >> 13) ,235); u=min(( abs( -1214*R -2384*G+3598*B+1052672) >> 13) ,240); v=min(( abs(3598*R -3013*G -585*B+1052672) >> 13) ,240); }
quelqu'un peut-il m'aider a r�soudre ce probl�me?
Partager