Résolution d'équations

Bon je savais pas trop ou poster mais on verra bien. Je termine un projet pour la fac qui parle de codec video et j’ai une fonction de conversion d’image du format Y Cb Cr au format RGB.

La conversion inverse est déjà faite, c’était facile j’avais la formule:

Je cherche donc à calculer l’inverse. J’ai tenté 1x à la main mais je me suis foiré, le résultat était pas bon et je cherche donc à savoir si c’est possible de trouver un logiciel capable de me calculer ça parce que vu mon timing j’ai pas vraiment le temps de m’amuser à refaire ça à la main (ça faisait un moment que j’avais pas fait de maths).

Est-ce que quelqu’un aurait une solution pour calculer ma saloperie ?

matlab, par exemple.
Tape-moi ta matrice au format: [ l1c1 l1c2 l1c3 ; l2c1… ], je te l’inverse…

ou alors tu cherches sur google et tu regardes la formule que te donne le premier résultat

Hum pas sur mais l’inverse de la grosse ça donne :

0.004566 0 0.0062
0.004566 -0.001536 -0.0032
0.004566 0.0079 1.1977

Bon mais c’est que des valeurs approchées, ça me chiffonne.

Tu penses vraiment que j’avais pas cherché ?

Regarde la formule de conversion RGB / Y Cb Cr de ton site et celle que j’ai filé. Et c’est celle que j’ai donné qu’il faut que j’utilise.

Visiblement c’est pas la même formule…

Là t’as une formule Y = A + BR, donc R = (B^-1)(Y-A)
( l’ordre est important )

Le seul truc compliqué c’est d’inverser B ( ta matrice 3x3 ), ce qu’une bonne âme munie de matlab ou d’un caltos te fera en 1min30 ( la mienne est au taf’ ).

J’ai déjà donné l’inverse de B B) Cela dit, c’est des valeurs approchées, donc je sais pas si ça te suffit. Faut quelle précision ?

Ouais c’est bon c’est presque ça j’ai réussi merci à tous ceux qui m’ont répondu !

efectivement.

10 minutes de recherches plus tard, je suis tombé sur ça qui nous dit ceci:

|R’| |0.00456621 0. 0.00625893 | |Y’| |16 | |G’| = |0.00456621 -0.00153632 -0.00318811| • |Cb| + |128| |B’| |0.00456621 0.00791071 0. | |Cr| |128|

[quote=“Rabban, post:9, topic: 44979”]efectivement.

10 minutes de recherches plus tard, je suis tombé sur ça qui nous dit ceci:

|R’| |0.00456621 0. 0.00625893 | |Y’| |16 | |G’| = |0.00456621 -0.00153632 -0.00318811| • |Cb| + |128| |B’| |0.00456621 0.00791071 0. | |Cr| |128|[/quote]

C’est - [16; 128; 128] et pas + en fait.

Et il doit manquer les parenthèses a priori, parce que tu multiplies à la fin par B^-1, donc la “petite matrice” est aussi multipliée.

je peux t’inverser la matrice 3*3 à gros coup de Ti-92 si tu veux B)

Ca, ça marche, testé et approuvé. La ti-92 je pense bien, mais 4 jours que je cherche pas 89 désespérément sans succès :smiley: Il FAUT que je la retrouve c’est précieux B)

C’est avec ma 89 que je t’ai filé la réponse moi aussi (me faudrait du temps pour retrouver comment on fait ça à la main B) ).

Sinon Feanor, c’est bien de lire les messages avant de poster : la réponse a été donné dès le 3eme message B)

[quote=“FMP_thE_mAd, post:14, topic: 44979”]C’est avec ma 89 que je t’ai filé la réponse moi aussi (me faudrait du temps pour retrouver comment on fait ça à la main B) ).

Sinon Feanor, c’est bien de lire les messages avant de poster : la réponse a été donné dès le 3eme message B)[/quote]

A la main tu pose la matrice [A I] et tu réduis jusqu’à tomber sur [I A^-1] en pivotant correctement. C’est chiant et long, merci Matlab.

A^-1 = tCoA / det A

avec ca toutes les inversions de matrices sont systematiques du moment que Det A =/ 0 ( ce qui est une obligation pour inverser )

edit :

tCoA = transposé de la comatrice de A

l’avantage de cette methode est que meme si calculer la comatrice est fastidieuse , c’est cepandant une operation systematique pouvant aisement se programmer contrairement à une reduction par pivot de gauss qui pousse à intuiter le pivot à chaque etape . donc pas besoin de reflechir . faut juste appliquer

Je suis tordu, mais j’aurais utilisé les Matrix de XNA B)