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