基於Qt的軌跡還原之一 introduction

2021-07-11 12:23:27 字數 891 閱讀 4613

從老師那裡接手「攝像機軌跡還原」的專案,現在終於完成了,接下來推出一系列總結文章。

這個專案的簡要情況是這樣的:電影後期製作,尤其是特效製作,都需要借助拍攝時攝像機的精確軌跡(以及姿態),因此攝像機軌跡還原是電影行業的乙個重要課題。這個課題的難點在於還原演算法,因為攝像機的搖臂多種多樣,運動的自由度也很大。我們在課題中將兩個感測器分別放在頂端攝像機和搖臂轉軸處,每個感測器都能採集高精度的九軸資料。我們摒棄樸素的加速度二次積分演算法,採用了另一種誤差更小的演算法,使得軌跡還原的效果十分接近行業要求水平。由於軌跡處理演算法一定程度上屬於商業秘密,故這裡不加詳述。

整個專案做成基於qt的應用程式,流程是這樣的:

1、開啟兩個感測器,與程式連線;

2、開始錄製,感測器實時傳回九軸資料;

3、錄製完成,構建軌跡圖,在程式中預覽效果;

4、確認效果後,匯出最終計算結果,做後期處理。

這裡第3步是關鍵,也是除演算法之外,我花費時間最多的地方。總體的要求是,在qt中利用計算得到的軌跡離散座標,繪製出可以互動(基本的旋轉、平移、縮放等)的3d軌跡圖,同時各個分量關於時間變化的曲線(即x-t,y-t,z-t)也要顯示出來,後者實際上要求用qt繪製函式曲線。值得注意的是,軌跡錄製的時長是不確定的。

下面是我實現的基本2d函式曲線效果:

在接下來的文章中,我將重點講述我用qt實現3d軌跡構建的過程。

剛開始的時候,我列出了以下選擇:

opengl(glut)

qglwidget

qopenglwidget(qt 5.4及以後版本)

qwt3dplot(開源庫,很長時間沒有更新了)

opencascade

vtk

QT裡的錯誤型別之一

undefined reference to vtable for sqloperator 錯誤型別 按照文中所說稍微修改了一下,在析構函式後面新增了 再make,成功了,高興啊!問題終於解決了。我的所有虛函式都是有定義的,沒想到就因為寫基類的這個虛析構函式大意,沒寫函式體就出現了乙個困擾我幾天的莫...

OSG在QT的中顯示之一

之前寫過關於osg的一些文章,主要是以基礎為主,但是結合qt來顯示還沒有寫過。osg和qt結合顯示有單獨的類 graphicswindowqt。如果編譯過程中沒有把這個類編譯成庫檔案,可以直接在原始碼中拷貝出來,把頭檔案和cpp檔案修改一下檔名就可以了,然後把修改好的.h和.cpp加入到工程中。環境...

基於索引的SQL語句優化之一

避免對列的操作 任何對列的操作都可能導致全表掃瞄,這裡所謂的操作包括資料庫函式 計算表示式等等,查詢時要盡可能將操作移至等式的右邊,甚至去掉函式。例1 下列sql條件語句中的列都建有恰當的索引,但30萬行資料情況下執行速度卻非常慢 select from record where substrb c...