網(wǎng)站采集到wordpress優(yōu)化網(wǎng)站的公司哪家好
▌低畸變標(biāo)準(zhǔn)鏡頭的OAK相機RGB-D對齊的方法
OAK相機內(nèi)置的RGB-D管道會自動將深度圖和RGB圖對齊。其思想是將深度圖像中的每個像素與彩色圖像中對應(yīng)的相應(yīng)像素對齊。產(chǎn)生的RGB-D圖像可以用于OAK內(nèi)置的圖像識別模型將識別到的2D物體自動映射到三維空間中去,或者產(chǎn)生的RGB-D圖像用于產(chǎn)生彩色點云數(shù)據(jù)。默認(rèn)情況下,在立體匹配過程中,深度與校正后的左圖像對齊。
立體深度節(jié)點提供了現(xiàn)成的對齊功能。該節(jié)點接收一對立體圖像(左右相機圖像),并輸出一個深度圖。默認(rèn)情況下,深度圖與校正后的左圖像對齊,可以通過以下方法設(shè)置彩色相機和深度圖對齊。
stereo.setDepthAlign(dai.CameraBoardSocket.RGB)?? # 彩色相機和深度圖對齊的功能
▌大廣角系列相機的彩色相機和深度圖對齊產(chǎn)生RGB-D的方法
當(dāng)使用廣角OAK相機時,由于鏡頭造成的圖像的大失真,對齊可能會很棘手。默認(rèn)情況下,深度圖和左右相機是能夠矯正到?jīng)]有畸變的水平狀態(tài),但是彩色圖像是沒有去畸變的。這可能會導(dǎo)致兩個圖像對齊以后的錯位。為了解決這個問題,彩色圖像也需要去畸變。
目前OAK相機內(nèi)置了彩色相機去畸變的節(jié)點,是可以在相機內(nèi)去除畸變后和深度圖對齊,生產(chǎn)RGB-D的效果
cam = pipeline.create(dai.node.Camera)
cam.setBoardSocket(dai.CameraBoardSocket.RGB)
cam.setMeshSource(dai.CameraProperties.WarpMeshSource.CALIBRATION)
也可以通過opencv的方式手動去畸變
alpha = 0
stereo.setAlphaScaling(alpha)
rgb_w = camRgb.getResolutionWidth()
rgb_h = camRgb.getResolutionHeight()
rgbIntrinsics = np.array(calibData.getCameraIntrinsics(rgbCamSocket, rgb_w, rgb_h))
rgb_d = np.array(calibData.getDistortionCoefficients(rgbCamSocket))
rgb_new_cam_matrix, _ = cv2.getOptimalNewCameraMatrix(rgbIntrinsics, rgb_d, (rgb_w, rgb_h), alpha)
map_x, map_y = cv2.initUndistortRectifyMap(rgbIntrinsics, rgb_d, None, rgb_new_cam_matrix, (rgb_w, rgb_h), cv2.CV_32FC1)
frameRgb = cv2.remap(frameRgb, map_x, map_y, cv2.INTER_LINEAR)
當(dāng)將rgb相機畸變矯正后,圖像的邊緣不平直的部分會被裁切掉一部分。這導(dǎo)致了FOV的損失。為了最大化FOV,可以使用alpha參數(shù)[0-1]來縮放未扭曲的圖像,讓裁切的部分盡量小一點。
stereo.setAlphaScaling(alpha)
alpha = 0 -無縮放,未失真的圖像將與原始圖像的大小相同。
alpha = 1 -最大縮放,未失真的圖像將是適合原始圖像的最大可能的圖像。