2

Je voulais rectifier une paire d'images stéréo provenant de deux modalités différentes (visuelle et thermique). Je les deux caméras à l'aide calibréRectifier des images de différentes tailles

[cameraParams,imagesUsed,estimationErrors] = estimateCameraParameters(imagePoints,worldPoints); 

me donner un objet stereoParameter, puisque imagePoints points correspondant contient pour les deux modalités damiers.

Pour corriger, j'utilisé l'appel suivant:

[J1,J2] = rectifyStereoImages(I1,I2, cameraParamsStereo); 

I1 est une image visuelle et I2 un thermique. Malheureusement, cela me donne l'erreur:

Error using rectifyStereoImages>parseInputs (line 106) Inputs must be of the same size and data types.

Error in rectifyStereoImages (line 96) [I1, I2, interp, outputView, fillValues] = parseInputs(...

Les résolutions des deux images sont tout à fait différents (2048x1088 pour le visuel, 384x288 pour thermique). De mon engagement cependant, la rectification en principe devrait encore fonctionner, car il est fait de même dans this papier. Honnêtement cependant, je ne sais pas comment ...

Question: Y at-il une façon de corriger les images Matlab de tailles différentes? Si non, y a-t-il un algorithme pour le faire qui peut être facilement mis en œuvre?

+0

avez-vous essayé de faire de votre image thermique la même taille que l'optique? ajoutez une rangée et des colonnes vides à droite et en bas. – gregswiss

+0

@gregswiss: Avec vide je suppose que vous voulez dire des valeurs nulles. J'ai essayé cela maintenant, mais cela me donne une autre erreur "Index dépasse les dimensions de la matrice" dans "Erreur dans vision.internal.calibration.CameraParametersImpl/getValidBounds (ligne 860)" – user1809923

Répondre

0

Malheureusement, la fonction rectifyStereoImages nécessite que les deux images aient la même taille. C'est une limitation de l'implémentation, pas de l'algorithme.

Une chose que vous pouvez faire est undistort les images en utilisant la fonction undistortImage, trouver des points correspondant (par exemple en utilisant matchFeatures), puis utilisez la fonction triangulate pour obtenir une reconstruction clairsemée 3-D.

Vous pouvez également essayer de rendre les deux images de la même taille en remplissant la petite image avec des zéros. Vous devrez tamponner les images d'étalonnage avant l'étalonnage, afin que tout soit cohérent.

+0

désolé pour ma réaction tardive. Je veux vraiment rectifier les images, donc votre premier chemin ne fonctionne malheureusement pas. En ce qui concerne votre seconde façon, je suis confus: si je tamponne les images avec des zéros sur la droite et le bas, les points d'angle pour les damiers ne changeront pas - donc estimerCameraParameters (imagePoints, worldPoints) devrait me donner les mêmes résultats qu'avant le remplissage? – user1809923

+0

C'est une pensée ... Essayez-le. – Dima

+0

Je l'ai fait. Je reçois la même erreur que précédemment, dans mon commentaire du 16 septembre ci-dessus. Les points de coin de l'image matelassée ne changent pas et estimateCameraParameters (imagePoints, worldPoints) n'obtient aucune information sur le fait que les images ont été modifiées (elles ont été complétées). Même si j'utilise l'application d'étalonnage stéréo, calibrer (qui fonctionne maintenant avec les images rembourrées) puis cliquer sur "Afficher rectifié" dans un exemple, j'obtiens la même erreur. – user1809923