主頁(http://www.130131.com):淺析監(jiān)控圖像處理系統(tǒng)的軟件結(jié)構(gòu) 【中國集群通信網(wǎng)】圖像軟件系統(tǒng)的功能 在現(xiàn)在的面向計算機內(nèi)存的圖像處理系統(tǒng)里,一般采用Windows操作系統(tǒng)、PCI總線、單屏操作方式,而且又融合了圖像通信技術(shù)。當(dāng)前圖像軟件系統(tǒng)一般應(yīng)具有以下功能: 1、圖像的輸入輸出 圖像的輸入主要包括攝像機、掃描儀、數(shù)碼相機的圖像輸入;圖像的輸出主要包括打印機、視頻拷貝機、監(jiān)視器的圖像輸出。要實現(xiàn)把輸入輸出設(shè)備嵌入圖像軟件系統(tǒng)以完成圖像輸入輸出的功能,就需要調(diào)用或安裝這些設(shè)備的設(shè)備驅(qū)動程序。 2、圖像文件的存儲與加載 圖像文件的存儲是把幀存或內(nèi)存的圖像儲存在磁盤上,圖像文件的加載是把磁盤中的圖像文件調(diào)入幀存或內(nèi)存,這里有圖像文件格式問題,常采用通用的BMP格式等。 3、系統(tǒng)的管理 系統(tǒng)的管理可以認為是對圖像硬件系統(tǒng)的工作狀態(tài)進行控制。如輸入通道輸出通道的切換、存貯體的選擇等。 4、圖像處理 圖像處理的種類很多,常常以大類來作為一級菜單的內(nèi)容,如灰度變換、圖像編輯、圖像量測、圖像增強等。 5、圖像的通信 圖像的通信包括圖像的發(fā)送與接收,常常涉及圖像的壓縮與傳輸。一般分靜態(tài)圖像壓縮與傳輸以及動態(tài)圖像壓縮與傳輸。有兩種圖像數(shù)據(jù)源的圖像壓縮與傳輸:圖像數(shù)據(jù)來自硬盤;圖像數(shù)據(jù)來自硬件圖像系統(tǒng)。 圖像軟件系統(tǒng)的分層結(jié)構(gòu) 通常,圖像軟件系統(tǒng)是分層構(gòu)造的,圖1給出了圖像軟件系統(tǒng)的分層結(jié)構(gòu)。圖中虛線框部分是圖像軟件系統(tǒng),其中底層是硬件驅(qū)動層,主要解決和硬件的聯(lián)接問題,中間層是處理層,實現(xiàn)各種各樣的算法,最上面一層是數(shù)據(jù)的存儲和通信。 一般來說,驅(qū)動硬件設(shè)備,可以采用以下三種方法: ·提供高級語言調(diào)用子程序; ·提供可安裝的設(shè)備驅(qū)動程序; ·提供通用的設(shè)備驅(qū)動程序。 在Windows操作系統(tǒng)里,用戶可以直接安裝打印機、掃描儀等設(shè)備的驅(qū)動程序。因為在Windows操作系統(tǒng)里,已經(jīng)包含了許多外設(shè)的設(shè)備驅(qū)動程序,這對用戶來說是很方便的。 圖像軟件系統(tǒng)的硬件設(shè)備驅(qū)動程序 圖像軟件系統(tǒng)的硬件設(shè)備驅(qū)動程序要完成如下任務(wù): ·對PCI總線上設(shè)備配置空間的操作; ·對SAA7146內(nèi)部寄存器的操作; ·對視頻前端子系統(tǒng)的初始化; ·對PC硬件中斷的維護; ·視頻圖像數(shù)據(jù)緩沖區(qū)的獲得; ·視頻圖像的實時顯示; ·軟件總體結(jié)構(gòu)和特殊功能的實現(xiàn)。 從整個系統(tǒng)的數(shù)據(jù)處理流程可以看到,位于主機內(nèi)的圖像數(shù)據(jù)緩沖區(qū)是數(shù)據(jù)流從外部專用硬件平臺到主機內(nèi)部通用處理平臺的中轉(zhuǎn)環(huán)節(jié)。外部圖像數(shù)據(jù)經(jīng)PCI總線接口控制芯片寫到緩沖區(qū)內(nèi),而內(nèi)部的軟件需要從緩沖區(qū)讀數(shù)據(jù),進行處理和顯示。
點擊查看大圖片 圖 圖像軟件系統(tǒng)的分層結(jié)構(gòu) 視頻圖像數(shù)據(jù)的顯示問題,目前都是利用Windows API函數(shù)SetDIBitsToDevice實現(xiàn)圖像數(shù)據(jù)從緩沖區(qū)到顯示設(shè)備之間的傳送。絕大多數(shù)顯卡的硬件功能支持SetDIBitsToDevice,當(dāng)硬件不支持時,Windows將提供經(jīng)軟件模擬的SetDIBitsToDevice函數(shù)。由于有統(tǒng)一的規(guī)范,不需要關(guān)心所選用的顯卡的具體細節(jié),同是顯示模式的問題也迎刃而解了。由于圖像數(shù)據(jù)的傳輸由顯卡的硬件完成,所以能達到很好的效果。 Windows圖像軟件系統(tǒng)的基礎(chǔ)結(jié)構(gòu) 在Windows操作系統(tǒng)且采用單屏方式的條件下,要對圖像進行處理,就必須將圖像裝入內(nèi)存。當(dāng)物理內(nèi)存不足時,系統(tǒng)通過內(nèi)存分頁交換,利用硬盤空間模擬內(nèi)存。應(yīng)用程序使用統(tǒng)一的系統(tǒng)內(nèi)存管理,代碼簡單,維護方便,還具有自動伸縮性。 圖像作為一個處理對象放到內(nèi)存中,必須使用數(shù)據(jù)結(jié)構(gòu)來描述它,這就是圖像數(shù)據(jù)結(jié)構(gòu)。對于任何一個圖像應(yīng)用程序來說,圖像數(shù)據(jù)總是應(yīng)用程序數(shù)據(jù)的核心部分。 應(yīng)用程序的所有功能幾乎都是圍繞它進行的。如文件讀寫、掃描、拍攝、處理、顯示、打印等,都需要建立、訪問圖像數(shù)據(jù),實際上都是以圖像數(shù)據(jù)結(jié)構(gòu)核心為中心的。即使是最簡單的圖像顯示軟件,也需要圖像文件讀取和圖像顯示兩大部分。 一個圖像軟件系統(tǒng),包括不同的圖像處理算法、圖像顯示、掃描儀或攝像機支持、圖像采集卡支持、圖像文件格式轉(zhuǎn)換等,都涉及到圖像數(shù)據(jù)結(jié)構(gòu)。如果我們建立了一個以圖像數(shù)據(jù)結(jié)構(gòu)為核心的Windows圖像軟件系統(tǒng)的基礎(chǔ)結(jié)構(gòu),就建立了一個完整的軟件圖像環(huán)境。 圖像基礎(chǔ)結(jié)構(gòu)包括圖像數(shù)據(jù)結(jié)構(gòu)核心和圍繞此核心構(gòu)造的周邊模塊。圖像數(shù)據(jù)結(jié)構(gòu)核心是居于中心位置的。周邊模塊包括圖像文件格式支持、圖像顯示、圖像處理等。 在設(shè)計過程中,要注意以下幾個問題: 圖像基礎(chǔ)結(jié)構(gòu)的核心部分以C/C++語言完成。因為C/C++語言編譯效率高,執(zhí)行速度快,這對于要處理大量數(shù)據(jù)的圖像應(yīng)用來說是非常關(guān)鍵的;且C/C++ 語言非常靈活,使得圖像基礎(chǔ)結(jié)構(gòu)可以高效的實現(xiàn),而用其他的語言實現(xiàn)某些相同的功能可能要花很大的精力;C/C++語言移植性強,幾乎可以移植到任何硬件和操作系統(tǒng)中。 圖像基礎(chǔ)結(jié)構(gòu)的內(nèi)部實現(xiàn)可以使用C++,但是對外接口一律使用C界面。因為C++的名字解析方法沒有統(tǒng)一的標準,不同公司的C++編譯器對相同的C++符號解析得到的名字可能完全不同,因此不同C++編譯器生成的目標文件不能正確連接。這使得像Windows系統(tǒng)下具有C++接口的動態(tài)連接庫(DLL)的應(yīng)用不太可行,所以對外接口使用C語言則沒有這個問題。 避免使用依賴于平臺的聲明、函數(shù)等,保持核心的可移植性。圖像核心定義和代碼只使用標準C數(shù)據(jù)類型和標準C庫(ANSI)調(diào)用。當(dāng)需要高端應(yīng)用時,圖像核心可以迅速移植到UNIX及其他平臺,使整個應(yīng)用具備較強的移植能力和伸縮性。 目前,圖像基礎(chǔ)結(jié)構(gòu)包含如下模塊: ·StdImage:圖像數(shù)據(jù)結(jié)構(gòu)核心以及對此核心進行操作的基本函數(shù); ·ProgressStub:進度處理機制的定義和接口; ·VirtualFile:虛擬文件I/O界面; ·Vf_file:虛擬文件I/O的實際文件實現(xiàn);
|





