Şu anda bir çift stereo kamera için bir openCV programı yazıyorum. Kamera kalibrasyonu ve Stereo Kalibrasyon yapıldı.InitUndistortRectifyMap ve Remap
Bir sonraki adım, elde ettiğim 2 görüntüden bir özelliğin yerini uzayda bulmak. Bu yüzden Stereo'yu görüntüleri düzeltmek ve daha sonra hesaplamalarımı yapmak zorundayım.
I initUndistortRectifyMap
ile Karşılıklı sorun şudur:
I yeniden eşleme sonra siyah görüntüler elde stereoRectify()
initUndistortRectifyMap()
için hesaplanmıştır R1 veya R2 geçmesi -Eğer.
-r (boş bir matris) öğesini initUndistortRectifyMap()
'a aktarırsam, yeniden hizalamadan sonra düzeltilmiş görüntüler elde ederim. Aldığım görüntüler biraz çarpık.
2 kamerayı düzeltmek için R1 ve R2'yi initUndistortRectifyMap()
'a aktarmam gerekiyor, aksi takdirde boş bir matris geçirilirken stereo kafalar aynı düzlemde döndürülemez.
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];
}
ben stereoRectify()
için gidiş tüm matris değerleri kontrol edilmeli ve Doğru olduklarından: Aşağıdaki
benim kodudur. R1 ve R2 dönüş matrisleri de doğru gibi görünüyor. Sadece çıktı olarak siyah görüntüler alıyorum.
Efekti görmek için çöp değerlerini R1 ve R2 (örneğin R1 * R2) için InitUndistortRectifyMap()
'a aktarmayı denedim ve siyah görüntüler değil, garip sonuçlar aldım.
Sorunun şu olabileceğini varsayıyorum: "Neden initUndistortRectifyMap()' sadece garip sonuçlar değil, siyah görüntüleri döndürüyor? " Bir dahaki sefere özel sorunuzu açıklığa kavuşturmaya çalışın. –
'initUndistortRectifyMap() 'işlevini kullanabilmeniz için önce fotoğraf makinesini kalibre etmeniz gerekiyor ve görünüşe göre bunu henüz yapmadınız. Lütfen kamerayı kalibre ettiğiniz kodu yazınız: http://www.aishack.in/2010/07/calibrating-undistorting-with-opencv-in-c-oh-yeah/ –
Tek kameralar hem StereoCalibrate() ile birlikte kameralar. R ve T matrislerini StereoCalibratoin'den kontrol ettim ve doğrular. – user1901213