look up table (LUT) - Algo - Programmation
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];
}
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
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.
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 ?
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.
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
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.
Marsh Posté le 11-05-2006 à 10:59:44
j'ai
Code :
|
il me met que Matrix et FALSE ne sont pas déclaré
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
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 ?
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)
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!!
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
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
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]
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...