,,南洋生,
(華中科技大學(xué) 光學(xué)與電子信息學(xué)院,武漢 430074)
20世紀(jì)80年代,遙感應(yīng)用中人們需要獲取地物的分布與地物的物質(zhì)構(gòu)成,這樣的需求使成像光譜技術(shù)得到誕生[1]。起初,應(yīng)用于地物分析的傳統(tǒng)大型機(jī)載成像光譜儀,空間分辨率限制在米級(jí)[2],隨著成像探測(cè)技術(shù)的發(fā)展與生產(chǎn)生活的需要,應(yīng)用于精準(zhǔn)農(nóng)林業(yè)分布、病蟲檢測(cè)、水質(zhì)檢測(cè)等領(lǐng)域的成像光譜儀逐漸小型化,空間分辨率多在分米或厘米級(jí)。目前,基于LCTF[3]的成像光譜儀系統(tǒng)[4]由于其小型化、便攜化、功耗低、空間分辨率高等優(yōu)勢(shì),在日常生產(chǎn)生活中逐漸被開發(fā)研究。
但是,由于各科研機(jī)構(gòu)的分離性,與成像光譜儀系統(tǒng)硬件配合的軟件一直沒(méi)有適用的框架提出,也沒(méi)有開源的相關(guān)軟件在各單位間分享,在開發(fā)配套的成像光譜儀軟件時(shí),往往花費(fèi)了大量的重復(fù)時(shí)間。因此,本文提出了一個(gè)適用于LCTF成像光譜儀的軟件方案,可擴(kuò)展性高,方便各單位移植到自己的應(yīng)用中。
本文的成像光譜儀硬件平臺(tái)由實(shí)驗(yàn)室自主研發(fā),其系統(tǒng)構(gòu)成框圖如圖1所示。外界目標(biāo)物體發(fā)射或反射光線經(jīng)過(guò)前置光學(xué)系統(tǒng)到達(dá)分光器件LCTF,LCTF只允許指定波長(zhǎng)的光通過(guò),到達(dá)后置光學(xué)系統(tǒng),最終成像在探測(cè)模塊上,經(jīng)由終端軟件通過(guò)通用串行總線(universal serial bus,USB)協(xié)議控制LCTF中心透過(guò)波長(zhǎng)以及成像探測(cè)模塊,進(jìn)行光譜圖像的采集與顯示。
圖1 成像光譜儀系統(tǒng)結(jié)構(gòu)框圖
分光器件LCTF,基于液晶雙折射效應(yīng),通過(guò)改變對(duì)液晶施加的電壓大小改變液晶光學(xué)特性,對(duì)波長(zhǎng)進(jìn)行相位調(diào)制,從而實(shí)現(xiàn)波段的選擇。本文選用的LCTF其波長(zhǎng)范圍為420 ~ 750 nm,調(diào)制分辨率為1 nm,該模塊提供了USB接口實(shí)現(xiàn)對(duì)LCTF的控制。成像探測(cè)模塊主要由圖像傳感器與相應(yīng)外圍電路構(gòu)成,圖像傳感器有效分辨率為1280 × 960,使用USB控制芯片通過(guò)硬件接口配置圖像傳感器的相應(yīng)寄存器實(shí)現(xiàn)圖像數(shù)據(jù)的輸出。因此,終端軟件可以基于USB協(xié)議,控制成像光譜儀硬件系統(tǒng)實(shí)現(xiàn)透過(guò)波長(zhǎng)的選擇與圖像的傳輸控制。
本文設(shè)計(jì)的成像光譜儀軟件主要針對(duì)Windows系統(tǒng)的桌面開發(fā),因此采用微軟提供的Visual Studio開發(fā)套件進(jìn)行C++程序的開發(fā)。桌面程序的開發(fā),需要豐富的界面庫(kù)支撐,同時(shí)為了提高代碼的可讀性與可擴(kuò)展性,面向?qū)ο缶幊蹋褂瞄_源的界面庫(kù)Qt[5]進(jìn)行開發(fā)。Qt作為一個(gè)開源的跨平臺(tái)的軟件開發(fā)框架,不僅具有豐富的界面庫(kù),同時(shí)方便其他平臺(tái)的開發(fā)移植。Qt強(qiáng)大的信號(hào)槽機(jī)制,能夠很容易實(shí)現(xiàn)界面控件被觸發(fā)的響應(yīng)功能,使線程間的通信變得更加便捷,Qt的事件機(jī)制又讓動(dòng)作的觸發(fā)變得更加靈活。
按照軟件開發(fā)的流程,首先要明確需求,成像光譜儀軟件基本功能就是實(shí)現(xiàn)光譜圖像的接收、處理、顯示以及光譜曲線的分析[6]。為了實(shí)現(xiàn)圖像接收功能,需要考慮軟件與成像光譜儀硬件的通信,實(shí)現(xiàn)軟件對(duì)硬件的控制,需要考慮硬件傳輸?shù)臄?shù)據(jù)如何在軟件端緩存;為了實(shí)現(xiàn)圖像處理功能,需要考慮軟件端何時(shí)處理數(shù)據(jù),是與數(shù)據(jù)接收在同一線程還是在另一線程;為了實(shí)現(xiàn)顯示功能,需要考慮硬件傳輸?shù)臄?shù)據(jù)經(jīng)過(guò)軟件端處理如何傳遞給界面顯示;為了實(shí)現(xiàn)光譜曲線的分析,需要考慮如何讀取光譜立方體原始數(shù)據(jù)。因此,開發(fā)的光譜儀軟件實(shí)際可分為四大模塊,分別是圖像控制與接收模塊、圖像處理模塊、界面顯示模塊、光譜分析模塊。利用面向?qū)ο蟮能浖幊趟枷?,即這4個(gè)模塊可以獨(dú)立為4個(gè)不同的類。
圖像控制與接收模塊設(shè)計(jì)為設(shè)備類,命名為類CyDevice,負(fù)責(zé)與成像光譜儀硬件進(jìn)行通信,為其他模塊提供一些可調(diào)用控制設(shè)備的接口;圖像處理模塊設(shè)計(jì)為處理類,命名為類ImageProcess,負(fù)責(zé)實(shí)現(xiàn)圖像原始數(shù)據(jù)到圖片數(shù)據(jù)的轉(zhuǎn)換;界面顯示模塊即為界面類,命名為類MainWindow,負(fù)責(zé)用戶界面布局,負(fù)責(zé)實(shí)現(xiàn)交互邏輯;光譜分析模塊即為光譜分析類,通過(guò)新窗口提供,命名為類SpectrumAnalysisDialog,實(shí)現(xiàn)光譜分析基本功能,同時(shí)為其他的光譜圖像處理預(yù)留擴(kuò)展空間。類MainWindow需要控制圖像數(shù)據(jù)的接收與處理,因此需要調(diào)用類CyDevice和類ImageProcess的接口,即維護(hù)這兩個(gè)類的實(shí)例,如果采用這樣的方式,該類的代碼又含有響應(yīng)用戶操作的邏輯代碼,會(huì)顯得很冗雜,提高代碼維護(hù)的難度,降低可讀性。因此,再設(shè)計(jì)一個(gè)類,稱為類ImageModel,該類維護(hù)CyDevice和ImageProcess的實(shí)例,為界面類MainWindow提供必要的控制接口,使類MainWindow盡可能的簡(jiǎn)潔,圖像傳輸與處理的控制代碼限制在類ImageModel中維護(hù)。
基于Qt開發(fā)的桌面程序,至少會(huì)有一個(gè)線程,也稱為主線程或者圖像用戶界面(graphical user interface,GUI)線程,如果大量邏輯代碼都運(yùn)行在GUI線程中,特別是某些耗時(shí)的操作,如數(shù)據(jù)接收或者處理,將大量占用GUI線程的中央處理器(central processing unit,CPU)時(shí)間,從而導(dǎo)致用戶點(diǎn)擊界面的響應(yīng)操作滯后,影響用戶體驗(yàn),因此GUI線程應(yīng)該盡量保證響應(yīng)用戶的操作,減少其他耗時(shí)的處理。如果數(shù)據(jù)接收與處理在同一線程中進(jìn)行,假設(shè)數(shù)據(jù)接收耗時(shí)t接收,數(shù)據(jù)處理耗時(shí)t處理,那么圖像顯示幀率至多為1/(t接收+t處理),而對(duì)于成像光譜儀兼具成像這一特性,將接收與處理并發(fā)運(yùn)行,可以提高幀率,此時(shí)幀率主要受限于時(shí)間開銷較大的一方。因此,最終設(shè)計(jì)的程序應(yīng)當(dāng)至少分配3個(gè)線程,GUI主線程用來(lái)處理界面,及時(shí)響應(yīng)用戶操作,界面不卡頓,同時(shí)負(fù)責(zé)一些短時(shí)的控制操作,圖像接收線程負(fù)責(zé)不停地接收硬件傳輸上來(lái)的圖像數(shù)據(jù),圖像處理線程則負(fù)責(zé)圖像處理方面的代碼。
由于數(shù)據(jù)的接收與處理分離到兩個(gè)線程中進(jìn)行,因此需要考慮數(shù)據(jù)在線程間的傳遞與同步問(wèn)題,如果數(shù)據(jù)的緩存空間由二者的任何一方管理,那么另一方必然要調(diào)用到對(duì)方的接口,加上同步數(shù)據(jù)的代碼,會(huì)使得CyDevice和ImageProcess類間具有較高的耦合性,不符合低耦合性的設(shè)計(jì)理念,會(huì)使得兩個(gè)類的維護(hù)互相牽連,提高開發(fā)復(fù)雜度,增加維護(hù)成本。因此,額外設(shè)計(jì)一個(gè)類,管理數(shù)據(jù)的緩存空間,稱為類ImageFifo,將其屬性與接口設(shè)計(jì)為靜態(tài)類型,不用實(shí)例化便可以調(diào)用這些接口,且在類中封裝易于管理,這樣類CyDevice和類ImageProcess間可以通過(guò)直接調(diào)用類ImageFifo的靜態(tài)接口,來(lái)協(xié)調(diào)數(shù)據(jù)的同步與傳遞。通過(guò)這種方式,類CyDevice和類ImageProcess的耦合性大大降低,維護(hù)各自的代碼更加簡(jiǎn)單清晰。
因此,通過(guò)對(duì)成像光譜儀軟件的需求分析所提取出的基本功能,將各個(gè)功能整理模塊化[7],運(yùn)用面向?qū)ο蟮木幊趟枷耄O(shè)計(jì)不同的類負(fù)責(zé)不同的功能,考慮類之間低耦合,類內(nèi)部高內(nèi)聚[8],設(shè)計(jì)可擴(kuò)展、易維護(hù)的成像光譜儀軟件,其總體方案框圖如圖2所示。
圖2 成像光譜儀軟件總體方案框圖
接收模塊有一個(gè)關(guān)鍵性的任務(wù)就是解決成像光譜儀軟件與硬件間的通信問(wèn)題,為了使本文研究的成像光譜儀軟件設(shè)計(jì)更加合理,方便后續(xù)的功能開發(fā),基于USB通信協(xié)議之上,再制定一個(gè)屬于成像光譜儀應(yīng)用且易擴(kuò)展的通信協(xié)議,顯得很有必要。圖像控制與接收模塊被設(shè)計(jì)為類CyDevice,控制命令基于USB協(xié)議的控制端點(diǎn)傳輸,以不同的單字節(jié)控制命令碼和多字節(jié)傳輸數(shù)據(jù),實(shí)現(xiàn)對(duì)硬件層圖像傳感器寄存器和LCTF的配置。
對(duì)于分光器件LCTF的控制,主要包含LCTF設(shè)備的初始化、中心波長(zhǎng)的設(shè)定、LCTF運(yùn)行狀態(tài)的信息反饋。對(duì)于成像探測(cè)模塊的控制與傳輸,首先需要考慮該模塊硬件的初始化操作,其次是成像探測(cè)的開始與停止操作。而對(duì)于圖像傳輸,成像光譜儀的硬件數(shù)據(jù)并不是一個(gè)標(biāo)準(zhǔn)USB視頻(USB Video Class,UVC)格式的數(shù)據(jù),所以需要有命令控制幀同步,還需要控制其是否自動(dòng)曝光,以及手動(dòng)曝光模式下的曝光時(shí)間,需要控制圖像傳感器的模擬增益設(shè)置。
在制定的通信協(xié)議的基礎(chǔ)上,設(shè)計(jì)的接口由于軟件多線程應(yīng)用,內(nèi)部需要通過(guò)互斥鎖增強(qiáng)線程安全性。數(shù)據(jù)傳輸是類CyDevice的關(guān)鍵,成像光譜儀硬件圖像數(shù)據(jù)采用的是USB傳輸中的批量傳輸方式,通過(guò)發(fā)送相應(yīng)命令碼通知硬件進(jìn)行下一幀的采集,然后調(diào)用批量傳輸?shù)南嚓P(guān)接口實(shí)現(xiàn)數(shù)據(jù)接收,其流程圖如圖3所示。
圖3 成像光譜儀軟件數(shù)據(jù)接收接口流程圖
成像光譜儀的硬件傳輸數(shù)據(jù)是圖像傳感器的原始數(shù)據(jù),即分辨率1 280 × 960,像素位寬為12位,而計(jì)算機(jī)終端對(duì)可顯示的圖像數(shù)據(jù)格式有一定的要求。常見的圖像格式有灰度圖格式,像素位寬8位,取值區(qū)間0 ~ 255,顯示圖片只包含黑白的灰度信息;彩色格式,像素位寬24 bits,由紅色、綠色、藍(lán)色三通道構(gòu)成,每個(gè)通道占8位,可以顯示彩色圖片;彩色透明度格式,相對(duì)于彩色格式,多了一個(gè)透明度通道,可以顯示具有不同透明度的彩色圖片。因此,類ImageProcess需要提供圖像處理的接口,同時(shí)提供一定的彈性預(yù)留其他的處理方案,還需要提供一些控制接口供其他類調(diào)用,如暫停、拍照、錄像的底層接口。
如果將成像光譜儀當(dāng)做相機(jī)應(yīng)用,其硬件傳輸?shù)?2 bits位寬的原始數(shù)據(jù)需要選用合適的算法壓縮到8 bits,由于系統(tǒng)的噪聲首先需要去噪,同時(shí)需要一定的圖像增強(qiáng)技術(shù)對(duì)圖像進(jìn)行對(duì)比度、邊緣細(xì)節(jié)等信息的增強(qiáng),這樣處理得到的圖片顯示效果更好。但是,成像光譜儀軟件更多的需要體現(xiàn)不同中心波長(zhǎng)下的顯示效果,如果運(yùn)用圖像增強(qiáng)技術(shù)會(huì)干擾波長(zhǎng)變化對(duì)圖像數(shù)據(jù)的影響,不適合成像光譜儀的軟件應(yīng)用。因此,本文研究的成像光譜儀軟件在對(duì)硬件傳輸?shù)脑紨?shù)據(jù)去噪后,直接提取高8 bits數(shù)據(jù),封裝成灰度數(shù)據(jù)進(jìn)行顯示。但是考慮到,某些場(chǎng)景需要進(jìn)行圖像增強(qiáng)幫助查看場(chǎng)景信息,因此保留圖像增強(qiáng)的接口,方便調(diào)整需求。為了滿足某些需求下的場(chǎng)景空間變換,該類也設(shè)計(jì)了一些空間變換的接口,例如水平或者垂直鏡像。類ImageProcess的關(guān)鍵部分是原始數(shù)據(jù)到可顯示的圖像,其運(yùn)行流程圖如圖4所示。
圖4 成像光譜儀軟件原始數(shù)據(jù)處理流程
中間層類ImageModel封裝底層類Cydevice和處理類ImageProcess,為上層的界面模塊提供接口方便用戶操作邏輯的實(shí)現(xiàn)。類ImageModel維護(hù)了類CyDevice和類ImageProcess的實(shí)例對(duì)象,為了提高軟件運(yùn)行效率,還同時(shí)維護(hù)了兩個(gè)Qt線程類QThread實(shí)例,一個(gè)運(yùn)行圖像數(shù)據(jù)接收的代碼,另一個(gè)運(yùn)行圖像處理的代碼。數(shù)據(jù)接收與處理部分分別在兩個(gè)線程中,即導(dǎo)致了無(wú)法控制兩段代碼的運(yùn)行次序,需要運(yùn)用一定的技術(shù)手段進(jìn)行圖像數(shù)據(jù)的傳遞與數(shù)據(jù)內(nèi)存空間的訪問(wèn)同步[9],因此設(shè)計(jì)了類ImageFifo,提供靜態(tài)接口給數(shù)據(jù)接收和處理部分的代碼進(jìn)行調(diào)用。設(shè)計(jì)了一個(gè)簡(jiǎn)單結(jié)構(gòu)ImageData,其內(nèi)部定義了圖像數(shù)據(jù)內(nèi)存指針m_data、像素位寬m_bitsPerPixel、圖像高度m_imageHeight、圖像寬度m_imageWidth、當(dāng)前波長(zhǎng)m_wavelength,通過(guò)ImageData對(duì)象的拷貝傳遞,實(shí)現(xiàn)高效的線程間數(shù)據(jù)“傳遞”。類ImageFifo內(nèi)部實(shí)際維護(hù)了一個(gè)幀緩沖隊(duì)列,隊(duì)列成員為ImageData類型,添加了互斥鎖進(jìn)行線程的同步,隊(duì)列大小初始化時(shí)可以調(diào)整,并且提前分配好指定大小的數(shù)據(jù)緩沖內(nèi)存空間供循環(huán)利用。接收與處理線程代碼的運(yùn)行流程圖如圖5和6所示,這樣的方式使得線程間的同步與通信機(jī)制明確、易懂、可靠。
圖5 接收線程運(yùn)行流程圖
圖6 處理線程運(yùn)行流程圖
類MainWindow需要及時(shí)處理用戶對(duì)界面的響應(yīng),因此其運(yùn)行在主線程中,又稱為GUI線程。Qt提供的信號(hào)槽機(jī)制和事件驅(qū)動(dòng)機(jī)制大大方便了用戶操作響應(yīng)功能的實(shí)現(xiàn)。類MainWindow主要是以用戶的操作需求為驅(qū)動(dòng)而設(shè)計(jì),需求可能會(huì)擴(kuò)展變更,因此類MainWindow的代碼應(yīng)當(dāng)清晰整潔,通過(guò)調(diào)用ImageModel的接口響應(yīng)用戶操作邏輯,保持較高的可維護(hù)性。對(duì)于用戶的界面操作需求,Qt界面框架會(huì)捕捉到這些動(dòng)作,并發(fā)出相應(yīng)的信號(hào),將這些操作信號(hào)與類MainWindow合適的槽函數(shù)連接,實(shí)現(xiàn)界面響應(yīng)用戶的動(dòng)作。
根據(jù)成像光譜儀的成像功能需求,界面類MainWindow需要提供打開、關(guān)閉、暫停相機(jī)的操作入口,需要提供曝光控制、模擬增益控制的操作入口。而光譜儀功能需要明確光譜圖像的采集過(guò)程,首先最基本的是功能需要實(shí)現(xiàn)分光器件LCTF的初始化以及波長(zhǎng)變化,然后需要實(shí)現(xiàn)起始波長(zhǎng)到終止波長(zhǎng)所有波段的白板反射場(chǎng)景的參考圖像自動(dòng)采集,記錄當(dāng)前白板參考場(chǎng)景波長(zhǎng)相關(guān)的參數(shù)信息,按照相同波長(zhǎng)設(shè)置相同參數(shù)的規(guī)則,再進(jìn)行其他場(chǎng)景光譜圖像的采集,為光譜分析提供數(shù)據(jù)準(zhǔn)備。
為了保持圖像數(shù)據(jù)信息與波長(zhǎng)信息更改的一致性,波長(zhǎng)設(shè)置的實(shí)際動(dòng)作應(yīng)當(dāng)與數(shù)據(jù)接收在同一線程運(yùn)行,即GUI主線程發(fā)出波長(zhǎng)更改操作,更改標(biāo)志位使接收線程跳出數(shù)據(jù)接收循環(huán),利用信號(hào)槽機(jī)制的隊(duì)列連接,接收線程響應(yīng)實(shí)際動(dòng)作。白板參考光采集過(guò)程都是自動(dòng)化進(jìn)行,從起始波長(zhǎng)到終止波長(zhǎng),每個(gè)波段都需要自動(dòng)挑選合適的曝光值與增益值,利用二分查找[10]的思想,優(yōu)化該選擇過(guò)程,可以提高采集速率。參考光譜采集過(guò)程中,使用哈希表[10]存儲(chǔ)波長(zhǎng)相關(guān)的曝光增益值,實(shí)現(xiàn)之后其他目標(biāo)光譜圖像采集過(guò)程時(shí)的參數(shù)選擇設(shè)置。
光譜分析模塊是在主窗口點(diǎn)擊相應(yīng)按鈕之后,彈出一個(gè)子窗口與用戶交互,因此,光譜分析功能的接口設(shè)計(jì)在類SpectrumAnalysisDialog中,可以靈活設(shè)計(jì)不同的接口與界面實(shí)現(xiàn)不同的功能。本文研究的成像光譜儀軟件的光譜分析功能,主要需要實(shí)現(xiàn)選定圖像像素點(diǎn)的光譜曲線的繪制,光譜曲線繪制功能,是實(shí)現(xiàn)目標(biāo)反射光譜的繪制??紤]成像光譜儀應(yīng)用的波長(zhǎng)特性與像素空間分布,目標(biāo)成像選定像素點(diǎn)的反射率計(jì)算公式[11]如下:
(1)
式(1)中,x,y表示圖像像素點(diǎn)位置,λ表示波長(zhǎng),V目標(biāo)(x,y,λ)表示λ波長(zhǎng)下的目標(biāo)圖像在像素位置x、y處的像素值,V參考(x,y,λ)表示λ波長(zhǎng)下的白板參考圖像在像素位置x、y處的像素值,V背景(x,y,λ)表示λ波長(zhǎng)下的系統(tǒng)暗電流噪聲引起的圖像在x、y處的像素值,R參考(x,y,λ)表示λ波長(zhǎng)下的圖像在像素位置x、y處的反射率。
根據(jù)(1)的公式,對(duì)于特定目標(biāo),可以計(jì)算任意位置所有波長(zhǎng)下的反射率,從而可以繪制目標(biāo)圖像任意位置的反射率隨波長(zhǎng)的變化曲線,即光譜曲線。
本文設(shè)計(jì)的成像光譜儀軟件已經(jīng)在實(shí)驗(yàn)室開發(fā)的可見光成像光譜儀與近紅外成像光譜儀兩個(gè)平臺(tái)上使用并測(cè)試,均能穩(wěn)定運(yùn)行,界面響應(yīng)流暢無(wú)卡頓,并實(shí)現(xiàn)了正確的光譜圖像采集與顯示。在對(duì)界面進(jìn)行極端的點(diǎn)擊操作,軟件始終能夠正確處理請(qǐng)求,無(wú)崩潰現(xiàn)象發(fā)生。圖7顯示了波長(zhǎng)560 nm下的軟件運(yùn)行狀態(tài),圖8顯示了450 nm、560 nm、720 nm波長(zhǎng)下的色卡灰度圖像,6個(gè)區(qū)域分別為紅、綠、藍(lán)、青、品紅、黃六色。
圖7 波長(zhǎng)560 nm下的軟件運(yùn)行圖
圖8 3種波長(zhǎng)下的色卡圖像
由圖8可以看出,隨著透過(guò)波長(zhǎng)的增加,圖像整體灰度逐漸升高,這是由于本文采用的LCTF光譜透過(guò)率在短波區(qū)域較低,而在長(zhǎng)波區(qū)域較高,尤其是在450 nm附近,透過(guò)率極低,只有百分之五左右,導(dǎo)致該波長(zhǎng)下成像效果較差。由560 nm和720 nm下的成像可以發(fā)現(xiàn),不同顏色區(qū)域?qū)ΣㄩL(zhǎng)的響應(yīng)不同。綠色波段560 nm下2區(qū)域、4區(qū)域、6區(qū)域灰度值較高,這是因?yàn)檫@3個(gè)區(qū)域分別為綠色、青色、黃色,都能反射綠波段的光,而720 nm下1區(qū)域、5區(qū)域、6區(qū)域灰度值較高,這是因?yàn)檫@3個(gè)區(qū)域分別為紅色、品紅、黃色,都能反射紅波段的光。
本文設(shè)計(jì)并實(shí)現(xiàn)的成像光譜儀軟件具有很高的可移植性和可擴(kuò)展性,雖然系統(tǒng)基于本單位研究的成像光譜儀系統(tǒng),具有一定的特殊性,但是在軟件開發(fā)過(guò)程中,考慮到了這些特殊性,并且預(yù)留了相應(yīng)的接口或者方式供其他硬件方案的軟件開發(fā)。如類CyDevice的設(shè)計(jì)主要基于與硬件的通信而開發(fā),雖然本文的通信方式是USB傳輸,但是如果采用網(wǎng)絡(luò)傳輸,利用已知的接口框架只需要在CyDevice層更改通信方式即可,整體軟件同樣可以運(yùn)行;如類SpectrumAnalysisDialog提供了光譜分析功能的入口,因此在該類中更改界面布局,提供符合自身應(yīng)用的其他分析功能,軟件同樣可以運(yùn)行。所以,本文提出的軟件方案具有很高的彈性,并且這種彈性希望在其他單位開發(fā)者參與進(jìn)來(lái)之后,繼續(xù)優(yōu)化代碼方案,如數(shù)據(jù)傳輸層,如果數(shù)據(jù)接收速度遠(yuǎn)遠(yuǎn)超過(guò)數(shù)據(jù)處理速度,有沒(méi)有更好的緩沖設(shè)計(jì),以期實(shí)現(xiàn)更完善、更魯棒的成像光譜儀軟件開發(fā)框架。