मैं वर्तमान में स्टीरियो कैमरों की एक जोड़ी के लिए एक ओपनसीवी प्रोग्राम लिख रहा हूं। कैमरा अंशांकन के साथ ही स्टीरियो अंशांकन किया जाता है।InitUndistortRectifyMap और Remap
अगला चरण मुझे प्राप्त होने वाली 2 छवियों से स्थान में सुविधा की स्थिति ढूंढना है। यही कारण है कि मुझे स्टीरियो छवियों को सुधारना है और बाद में मेरी गणना करना है।
समस्या मैंinitUndistortRectifyMap
साथ सामना करना पड़ रहा
है निम्नलिखित:
-अगर मैं आर 1 या आर 2 stereoRectify()
initUndistortRectifyMap()
को मैं remapping के बाद काला चित्र प्राप्त द्वारा गणना गुजरती हैं।
-अगर मैं 0 (पर आर (एक खाली मैट्रिक्स) पास करता हूं तो मुझे रीमेपिंग के बाद अनुचित छवियां मिलती हैं। हालांकि मुझे मिलने वाली छवियां थोड़ी विकृत हैं।
मुझे 2 कैमरों को सुधारने के लिए आर 1, और आर 2, initUndistortRectifyMap()
पास करने की आवश्यकता है, अन्यथा खाली मैट्रिक्स को पार करते समय स्टीरियो हेड एक ही विमान में घुमाए नहीं जाएंगे।
stereoRectify(intrinsic[0], distCoeffs[0], intrinsic[1], distCoeffs[1], imageSize,
R, T_Stereo, R1, R2, newP1, newP2, Q, CV_CALIB_ZERO_DISPARITY, -1, imageSize);
if (x_Cam.GetSerial()=="4002678487")
{
initUndistortRectifyMap(intrinsic[0], distCoeffs[0], R1, newP1, imageSize,
CV_16SC2 , mapx1, mapy1);
remap(x_Image, imageRectified[0],mapx1, mapy1, INTER_LINEAR);
return imageRectified[0];
}
if (x_Cam.GetSerial()=="4002702131")
{
//flip(in, in, -1);
initUndistortRectifyMap(intrinsic[1], distCoeffs[1], R2, newP2, imageSize,
CV_16SC2 , mapx2, mapy2);
remap(x_Image, imageRectified[1],mapx2, mapy2, INTER_LINEAR, BORDER_CONSTANT, 0);
return imageRectified[1];
}
मैं सभी मैट्रिक्स stereoRectify()
करने के लिए जा रहा मूल्यों की जाँच की और वे सही हैं:
मेरी कोड है। रोटेशन मैट्रिस आर 1, और आर 2 भी सही प्रतीत होता है। मैं सिर्फ काले छवियों को आउटपुट के रूप में प्राप्त कर रहा हूं।
मैंने प्रभाव को देखने के लिए आर 1 और आर 2 (उदाहरण के लिए आर 1 * आर 2) के लिए InitUndistortRectifyMap()
में बकवास मूल्यों को पारित करने का प्रयास किया, और मुझे अजीब परिणाम मिल गए लेकिन काले छवियां नहीं मिलीं।
मुझे लगता है कि आपका प्रश्न यह होगा: "क्यों initUndistortRectifyMap()' काले छवियों को वापस करता है और न केवल अजीब परिणाम? " अगली बार अपने विशिष्ट प्रश्न को स्पष्ट करने का प्रयास करें। –
'initUndistortRectifyMap()' का उपयोग करने से पहले आपको कैमरे को कैलिब्रेट करने की आवश्यकता है और जाहिर है कि आप अभी तक ऐसा नहीं कर रहे हैं। कृपया उस कोड को पोस्ट करें जहां आप कैमरे को कैलिब्रेट करते हैं: http://www.aishack.in/2010/07/calibrating-undistorting-with-opencv-in-c-oh-yeah/ –
एकल कैमरे को कैलिब्रेटेड के साथ-साथ दोनों स्टीरियो कैलिब्रेट() के साथ कैमरे एक साथ। मैंने स्टीरियो कैलिब्रेटाइन से आर और टी मैट्रिस की जांच की है और वे सही हैं। – user1901213