Je sais qu'il ya 3 façons de multiplier les matrices dans OpenCV, on est:La multiplication matricielle est-elle incorrecte dans opencv?
cvGEMM(M1, M1T, 1, NULL, 0, Mult, 0);
l'autre:
cvMulTransposed(M1, Mult, 0);
et troisième:
cvMul(M1, M1T, Mult);
Je multiplient essentiellement un matrice par sa transposition. Après la multiplication des matrices doivent être symétriques .. mais chacune des méthodes ci-dessus me donne une sortie dissymétrique et complètement faux .. voici la matrice originale (M1):
rows: 5
cols: 50
dt: f
data: [ 60., 89., 86., 102., 58., 51., 143., 187., 140., 64., 80.,
169., 184., 172., 67., 90., 174., 191., 175., 41., 97., 86., 171.,
104., 87., 145., 164., 176., 157., 119., 176., 177., 180., 179.,
150., 44., 182., 148., 182., 38., 48., 197., 171., 171., 39., 48.,
169., 163., 141., 39., 93., 149., 169., 184., 56., 120., 166.,
182., 168., 144., 132., 172., 187., 173., 157., 164., 157., 152.,
166., 172., 175., 157., 133., 170., 140., 180., 164., 173., 175.,
152., 178., 176., 166., 143., 158., 177., 186., 172., 138., 141.,
182., 191., 169., 159., 34., 185., 154., 155., 171., 32., 81.,
154., 163., 112., 52., 126., 163., 183., 165., 53., 136., 176.,
184., 174., 51., 148., 173., 178., 139., 160., 158., 147., 163.,
154., 135., 146., 157., 181., 161., 79., 39., 172., 187., 174.,
45., 44., 187., 153., 173., 39., 46., 187., 145., 160., 36., 38.,
177., 155., 150., 37., 81., 154., 163., 112., 52., 126., 163.,
183., 165., 53., 136., 176., 184., 174., 51., 148., 173., 178.,
139., 160., 158., 147., 163., 154., 135., 146., 157., 181., 161.,
79., 39., 172., 187., 174., 45., 44., 187., 153., 173., 39., 46.,
187., 145., 160., 36., 38., 177., 155., 150., 37., 76., 165.,
195., 110., 100., 131., 180., 188., 184., 73., 146., 179., 193.,
183., 96., 117., 148., 146., 185., 97., 104., 147., 157., 174.,
172., 129., 171., 177., 181., 173., 123., 126., 186., 194., 171.,
91., 74., 109., 194., 145., 33., 117., 166., 180., 176., 35., 77.,
155., 152., 177. ]
mais multipliant par sa transposition donne cette :
rows: 5
cols: 5
dt: f
data: [ 927321., 1014163., 923303., 923303., 947641., 1014163.,
1260101., 1062130., 1062130., 1102823., 923303., 1062130.,
1004488., 1004488., 990651., 923303., 1062130., 1004488.,
1004488., 990651., 947641., 1102823., 990651., 990651., 1116004. ]
les valeurs sont asymétriques, aussi comment ils sont devenus si grand est ce que je ne comprends pas? CvMultransposed et cvGEMM donnent le même résultat que copié ci-dessus. CvMul donne une erreur d'exécution et retourne des valeurs de garbage. Aucune suggestion?
La plupart du temps que je trouve un "mauvais" résultat, c'est parce que je ne comprenais pas l'API ou à quoi ressemblerait la bonne réponse. Un bogue dans un logiciel disponible publiquement est moins probable. Une grande base d'utilisateurs garantit presque que quelqu'un d'autre aurait repéré le bug avant que je l'ai fait et l'ai réparé. Je suis presque certain que le problème est avec vous, votre compréhension et votre code. – duffymo
Je ne dis pas que c'est un bug, et je suis sûr que c'est une erreur de ma part, mais j'y ai travaillé toute la journée et je n'ai pas pu réparer, c'est pourquoi j'ai demandé de l'aide et des suggestions ici. – StuckInPhD
@Faraz Khan: Vous devriez poster du code qui génère ce comportement inattendu afin que nous puissions comprendre pourquoi. –