Ho difficoltà a fare l'inverso di una matrice complessa. Per quanto ne so, la matrice complessa è semplicemente una matrice a due canali (CV_32FC2/CV_64FC2).Come eseguire l'inverso su una matrice complessa in OpenCV?
Diciamo che ho una matrice C:
Mat C(2, 2, CV_64FC2);
C.at<Vec2d>(0,0)[0] = 1;
C.at<Vec2d>(0,0)[1] = 1;
C.at<Vec2d>(0,1)[0] = 3;
C.at<Vec2d>(0,1)[1] = 4;
C.at<Vec2d>(1,0)[0] = 2;
C.at<Vec2d>(1,0)[1] = -1;
C.at<Vec2d>(1,1)[0] = 5;
C.at<Vec2d>(1,1)[1] = 2;
Mat InverseMat;
invert(C, InverseMat, DECOMP_SVD);
Dopo eseguo la funzione invertito, continuo a ricevere questo errore:
OpenCV Error: Assertion failed (type == CV_32F || type == CV_64F) in invert
La funzione di inversione funziona bene con un'immagine in scala di grigi caricato (1 canale), ma ho difficoltà a fare inversione su una matrice complessa che contiene parti reali e immaginarie.
Qualcuno può dirmi come risolvere il problema inverso di una matrice complessa? Preferibilmente utilizzando il metodo DECOMP_SVD, poiché non riesco a ottenere il risultato desiderato utilizzando il metodo DECOMP_LU o DECOMP_CHOLESKY quando ho provato con un'immagine a canale singolo, probabilmente a causa della questione della matrice singolare. Grazie.
Grazie amico, hai fatto la mia giornata. Funziona per la matrice sopra. Ho provato il programma con l'immagine e funziona anche con successo. Avrò bisogno di analizzare ulteriormente l'immagine e ora posso procedere con il mio prossimo passo di elaborazione. Grazie ancora! – user2223228