基于Linux的ISA總線DMA的實現(xiàn)
引 言
本文引用地址:http://butianyuan.cn/article/150059.htm眾所周知, 視覺是人類感知世界的最重要的方式, 而現(xiàn)實生活中的所有物質(zhì)形態(tài)都是以三維空間而客觀存在。三維顯示能真正地再現(xiàn)客觀世界的立體空間, 提供更符合人們觀察習(xí)慣的交流方式, 有助于人們在綜合運用各種深度暗示之后, 通過大腦的計算感知而獲得真實、豐富、可靠的視覺體驗, 對社會的發(fā)展以及在科技、經(jīng)濟等方面的發(fā)展具有重要的作用。
目前, 三維顯示大致可以分為四類: 體視三維顯示、全息三維顯示、透視三維顯示和體三維顯示 ,其顯示的原理和特點如表1 所示。
表1 各類三維顯示原理及特點
本文通過旋轉(zhuǎn)24×16 二維LED 陣列實現(xiàn)了具有69120個體像素, 空間尺寸為Φ9414 mm ×6618mm 柱體內(nèi)的三維顯示, 文中論述了系統(tǒng)的整體結(jié)構(gòu)、顯示原理及其各組成部分的實現(xiàn)方法。最后并以顯示“茶壺”為例, 對此體三維顯示系統(tǒng)進行了分析和討論。
1 LED 體三維顯示系統(tǒng)設(shè)計
1.1 整體方案
由于人眼具有視覺暫留的特性, 即人類視覺對亮度改變的跟蹤會由于意識處理延遲而滯后。基于此特性, 利用電機驅(qū)動置于對稱轉(zhuǎn)軸兩側(cè)的發(fā)光二極管陣列, 使之高速旋轉(zhuǎn), 周期性地掃出一個柱體空間。同時, 尋址驅(qū)動控制電路根據(jù)需要調(diào)制不同時刻LED陣列的發(fā)光狀態(tài), 這樣通過快速顯示一幅幅二維圖像截面序列來實現(xiàn)三維顯示。由于人眼視覺暫留時間約為50~100ms, 當(dāng)電機轉(zhuǎn)速超過10r/s時, 人便不會有閃爍的感覺, 而是看到三維的立體圖像。根據(jù)此原理可設(shè)計如圖1 所示的LED體三維顯示系統(tǒng)。
利用計算機生成三維數(shù)據(jù)再通過數(shù)據(jù)傳輸電路把數(shù)據(jù)傳輸?shù)叫D(zhuǎn)驅(qū)動板上面的存儲器中, 并且由角度編碼器來測試電機的旋轉(zhuǎn)角度并把信號送給FPGA , 然后由FPGA 根據(jù)采集的角度編碼器輸出信號驅(qū)動LED 屏顯示并按時刷新LED 顯示屏。同時, 整個旋轉(zhuǎn)驅(qū)動板在電機的驅(qū)動下快速的旋轉(zhuǎn), 快速顯示一幅幅二維截面圖像來實現(xiàn)三維顯示。
1.2 三維數(shù)據(jù)生成
利用Matlab 軟件的強大功能, 首先可以通過im read ()、im f info ()、m eshgrid ()、m eshc () 和su rf ()等語句來實現(xiàn)具有灰度值的三維圖像, 假設(shè)獲得的三維圖像角坐標(biāo)為P (X0, Y0, Z0)。
令LED陣列旋轉(zhuǎn)所得的圓柱空間中LED 燈的柱坐標(biāo)為F ( r, H, z ) , 根據(jù)柱坐標(biāo)與直角坐標(biāo)的轉(zhuǎn)換關(guān)系, 求得空間LED燈的三維直角坐標(biāo)E (X 1, Y 1,Z 1) 可表示如下:
其中r, H, z 均為整數(shù), 且有: - 12 r≤12, 0 H≤360, 0 z ≤16。
最后, 令D(X2, Y2, Z2) = P(X0, Y0, Z0) ∩E (X1, Y1, Z1 ) 求出該顯示的L ED 燈的三維直角坐標(biāo), 以此作為三維數(shù)據(jù)的信息源。
從Matlab 610 版本開始,Mathworks 公司在軟件中增加了設(shè)備控制箱( Instrument control toolbox ) , 提供對RS2232/RS2485 通信標(biāo)準(zhǔn)的串口通信的正式支持。因此本系統(tǒng)使用該工具箱的serial 類及fopen、fw rite 等函數(shù), 通過RS2232 串口并利用數(shù)據(jù)傳輸電路把獲得的三維圖像數(shù)據(jù)傳輸?shù)絃ED 驅(qū)動電路板上。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論