look up table (LUT)

look up table (LUT) - Algo - Programmation

Marsh Posté le 09-05-2006 à 13:02:44    

quelqu'un peut 'il m'expliqué ce qu'est une LUT et exactement à quoi cela sert.
 
Je dois utilisé cet méthode pour faire une segmentation d'une image RGB en HSV
 
j'ai récupéré 4 fonction:
Allocmatrix()
Freematrix()
setMatrix
getMatrix
calculateMatrix
 
mais j'ai jamais utilisé cet méthode et donc je suis perdu
J'ai regardé sur internet mais personne n'explique la base et comment ca fonctionne...

Reply

Marsh Posté le 09-05-2006 à 13:02:44   

Reply

Marsh Posté le 09-05-2006 à 16:09:00    

une LUT c'est une table de précalcul/correspondance.
 
tu peux très imaginer une table comme ceci:
 
unsigned char Modulate[256][256];
 
qui fait 65Ko.
 
qui te permetterai de remplacer:
 
unsigned char mod( unsigned char value, unsigned char coef )
{
    return (int)(value*coef)/255; // faites pas chier avec les casts, c'est un exemple
}
 
par:
 
unsigned char mod_lut( unsigned char value, unsigned char coef )
{
    return Modulate[coef][value];
}
 

Reply

Marsh Posté le 09-05-2006 à 16:28:25    

Mouai c'est encore un peu flou pour moi mais ca viendra, et sinon tu connais Qtdesigner le logiciel ? Car je dois fair une table pour ensuite pouvoir fair une segmentation d'une image RGB en HSV
 
J'ai récupéré un programme en c pour construire cet table mais les byte ne sont pas reconnu sur qtdesigner

Reply

Marsh Posté le 09-05-2006 à 16:36:14    

non pas vraiment, mais pour moi c'est en environnement de construction d'IHM pour Qt, ça doit utiliser un compilo C/C++ sous-jacent.
 
a priori tes "bytes" c'est des unsigned char comme d'hab.

Reply

Marsh Posté le 10-05-2006 à 15:04:34    

Bon après avoir regardé sur internet, je vois a quoi sert la LUT. A faire des calcules préliminaire pour ensuite ne plus avoir a les refair pendant le déroulement du programme.
 
Seul hic, cet histoire de byte, car le programme que j'ai récupéré marche en byte mais cela n'est pas reconnu par QT.
 
Et sous qt pour récupéré mes valeur de RGB de l'image, je travail avec des floats. Doije plus utiliser des byte que les floats ?

Reply

Marsh Posté le 10-05-2006 à 16:08:39    

ça dépends de la nature du traitement, du volume de données.
 
chaque composante RVB et HSV peut rester en byte, mais tu auras ptet besoin de passer par des traitement en virgule flottante a certains moment.
 
de toutes façon, dans les versions préliminaires de ton code il vaut mieux  être en float, et ensuite voir ce qui est le mieux.

Reply

Marsh Posté le 10-05-2006 à 16:11:36    

oui mais j'ai 4 fonction qui son déja toute faite:
Allocmatrix()
Freematrix()
setMatrix
getMatrix
calculateMatrix  
 
elle fonctionne toutes en byte mais qd j'ai fait un copier coller, byte n'est pas reconnu (elle ne se met pas en couleur)
 
donc autant transformé des float en byte pour mes RGB et rien changé au code de mes fonctions
 
mais bon ya se problème de byte
j'ai regardé sur QT ya QByteArray mais bon je sais pas trop quoi fair

Reply

Marsh Posté le 10-05-2006 à 17:16:13    

byte doit être un unsigned char.
 
fait un:
 
typedef unsigned char byte;
 
et regarde si ça passe.

Reply

Marsh Posté le 11-05-2006 à 10:59:44    

j'ai

Code :
  1. Matrix = (byte***) malloc (sizeof(byte**)*128);
  2. if(Matrix==NULL) return FALSE


 
il me met que Matrix et FALSE ne sont pas déclaré

Reply

Marsh Posté le 11-05-2006 à 11:30:13    

pour les FALSE, c'est bon, j'ai trouvé mais Matrix je sais même pas ce que c'est lol

Reply

Marsh Posté le 11-05-2006 à 11:30:13   

Reply

Marsh Posté le 11-05-2006 à 11:42:43    

Bon déja ca compile tout, donc c'est déja ca...
Après tout fonctionne en byte enfin en unsigned char donc il va falloir que je transforme mes float en unsigned char !!! ca existe cte chose ;) ?

Reply

Marsh Posté le 11-05-2006 à 11:52:45    

oui mais là c'est du C, plus de l'algo.
 
bah bètement:
 
unsigned char c;
 
float f=c;
 
maintenant, comme tu travailles sur des amplitudes d'un signal (une couleur en l'occurence), ce serait plustôt
 
float f=c/255; // c*(1/255)

Reply

Marsh Posté le 11-05-2006 à 12:02:17    

ba en faite j'ai regardé un peu le programme de cet LUT et en faite c'est un tableau qui fait toutes les combinaisons de RGB puis avec mes valeur de HSV choisi pour la segmentation associ chaque combinaison à un FALSE pour si faut pas gardé et TRUE sil faut grader....
 
Comme cela tous les calculs sont fait au lancement du programme!!

Reply

Marsh Posté le 11-05-2006 à 12:02:49    

mais je vais regardé ca encore de plus près pour savoir exactement mais je pense que c'est ca

Reply

Marsh Posté le 11-05-2006 à 16:03:19    

Bon après des tests multiples, ma LUT marche trop nikel !! :) youpi
J'ai galéré pour la fair fonctionné...
 
La segmentation HSV est biento fini mais après vien un truc que j'ai horreur. C'est de fair une fonction qui affiche sur mon label le centre de l'objet qui aura été segmenté avec HSV

Reply

Marsh Posté le 11-05-2006 à 16:04:26    

Donc en faite, je rechange de topic lol  
[url]
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
[/url]

Reply

Sujets relatifs:

Leave a Replay

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