定義:光流是可以說(shuō)是一種簡(jiǎn)單實(shí)用的圖像處理表達方式,它是通過(guò)一幅圖像序列中的圖像亮度來(lái)表現它的運動(dòng)模式,也就是一個(gè)點(diǎn)在一個(gè)物體、圖像表面上的運動(dòng)速度在視覺(jué)成像平面上的表達。
原理:光流的研究是利用圖像序列中的像素強度數據的時(shí)域變化和相關(guān)性來(lái)確定各自像素位置的“運動(dòng)”,即研究圖像灰度在時(shí)間上的變化與景象中物體結構及其運動(dòng)的關(guān)系。一般情況下,光流由相機運動(dòng)、場(chǎng)景中目標運動(dòng)或兩者的共同運動(dòng)產(chǎn)生的相對運動(dòng)引起的。光流計算方法大致可分為三類(lèi):基于匹配的方法、頻域的方法和梯度的方法。
工作方式:一幅圖像是由很多個(gè)像素點(diǎn)組成的,在一個(gè)二維平面中每個(gè)像素點(diǎn)都有一個(gè)坐標,可以抽象的說(shuō)對比一個(gè)鼠標傳感器在這副圖像的位置,只要鼠標傳感器運動(dòng),根據鼠標傳感器與像素點(diǎn)坐標的對比,便可以知道移動(dòng)的方向及坐標,根據當前的高度可以計算出移動(dòng)的距離。
現在市面上最常用到的光流傳感器為:APM用的Optical Flow光流傳感器和PIXHAWK用的PX4 Flow光流傳感器。
這里我們主要給大家講解一下PIXHAWK用的PX4 Flow光流傳感器,該傳感器是一款智能運動(dòng)相機,擁有752*480的像素分辨率,算法中采用4倍分級和裁剪法,計算速度達到250Hz,具備非常高的感光度,因此它能夠以120Hz的計算速度在室內或室外較暗的環(huán)境下工作。當然,也可以自行對它編程。
在PX4 Flow的模塊上有一個(gè)USB、UART和一個(gè)I2C接口,在USB、UART數據輸出時(shí)是采取MAVLINK協(xié)議包,然后由我們根據MAVLINK協(xié)議包手冊進(jìn)行數據解析,主要數據解析如下:
PX4 Flow光流傳感器進(jìn)行I2C數據通信時(shí),7位的設備總線(xiàn)地址可以由我們自己設定,選取什么地址完全取決于我們硬件如何連接。默認地址為0x42,總共8個(gè)地址可設,見(jiàn)下圖:
I2C數據幀包含22字節數據按照以下順序:
當我們向設備地址0x42,發(fā)送一個(gè)0x0,我們在數據幀地址中便可以讀取到22個(gè)字節的數據。
當我們將光流傳感器的數據進(jìn)行解析后,可以得到X、Y方向移動(dòng)量等數據,然后當使用定點(diǎn)時(shí),將該光流位置的偏移量數據通過(guò)PID算法加入到姿態(tài)角中。