• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種多功能紅外圖像播放軟件的設(shè)計實現(xiàn)

      2014-09-23 03:19:02賈丕軍
      電子設(shè)計工程 2014年11期
      關(guān)鍵詞:控件鼠標(biāo)灰度

      賈丕軍,賈 杰

      (1.中國空空導(dǎo)彈研究院 河南 洛陽 471099;2.南昌航空大學(xué) 江西 南昌 330063)

      一種多功能紅外圖像播放軟件的設(shè)計實現(xiàn)

      賈丕軍1,賈 杰2

      (1.中國空空導(dǎo)彈研究院 河南 洛陽 471099;2.南昌航空大學(xué) 江西 南昌 330063)

      文中針對紅外裝置采集的信息圖形化處理的需求,借鑒視頻播放器的設(shè)計思路,采用動態(tài)鏈接庫、ActiveX技術(shù)等模塊化設(shè)計方法開發(fā)了紅外圖像播放軟件。實踐表明,該軟件在用戶界面上通過鼠標(biāo)控制,可實現(xiàn)連續(xù)顯示圖像、顯示單點或范圍內(nèi)像素信息的功能?;诩t外信息的特點,該軟件還可以通過輔助信息標(biāo)識出目標(biāo)位置,并旋轉(zhuǎn)圖像以符合慣性坐標(biāo)系下視角。該軟件的開始、暫停、停止和改變播放速度等播放控制功能,以及自動灰度調(diào)節(jié)、轉(zhuǎn)換位圖、轉(zhuǎn)換視頻等功能使紅外信息處理更加方便,為類似圖像處理需求提供了一種功能全面、運行穩(wěn)定、適應(yīng)性強的方法。

      紅外圖像;播放控制;VC編程;多線程;ActiveX

      隨著紅外技術(shù)的發(fā)展,紅外成像系統(tǒng)獲得了越來越廣泛的應(yīng)用。對于數(shù)據(jù)分析人員來講,最直觀的圖像查看方式,莫過于像視頻播放器那樣連續(xù)顯示圖像。本文設(shè)計的紅外圖像播放軟件,可以像視頻播放器一樣實現(xiàn)圖像的順序顯示。此外還可以根據(jù)紅外成像裝置提供的參數(shù)信息,在圖像上標(biāo)識出感興趣目標(biāo)的位置;根據(jù)圖像的背景灰度均值動態(tài)調(diào)整圖像的灰度范圍,以便于區(qū)分目標(biāo)和背景;還可以對圖像進(jìn)行旋轉(zhuǎn)以符合慣性坐標(biāo)系下的視圖。此外還有轉(zhuǎn)換位圖和視頻的功能,可供演示匯報等場合使用。另外還支持用戶鼠標(biāo)的交互操作,便于查看單點或范圍內(nèi)信息。

      1 系統(tǒng)架構(gòu)設(shè)計

      軟件各功能模塊包括圖像數(shù)據(jù)提取,紅外成像裝置參數(shù)提取,圖像顯示控制,圖像播放控制,圖像顯示等部分。由于軟件功能較復(fù)雜,所以采用了模塊化設(shè)計方法,不僅降低了復(fù)雜度,也降低了各部分之間的耦合度,便于在此平臺上實現(xiàn)不同類型的圖像播放。其中,圖像數(shù)據(jù)及參數(shù)提取通過動態(tài)鏈接庫實現(xiàn),一旦圖像數(shù)據(jù)或參數(shù)格式有變化,只需要更新動態(tài)鏈接庫就可以;圖像顯示控制和圖像播放控制由主程序?qū)崿F(xiàn),完成對其它組件的控制;圖像顯示通過單獨設(shè)計的ActiveX控件完成,其中封裝了圖像的繪制、旋轉(zhuǎn)、根據(jù)指令錄制avi格式視頻以及用戶鼠標(biāo)交互的功能。各部分關(guān)系如圖1所示。

      2 紅外圖像、參數(shù)提取動態(tài)鏈接庫

      包含紅外圖像及成像裝置參數(shù)的數(shù)據(jù)文件由于來源不同,其文件格式通常不相同;此外圖像的壓縮算法往往也各不相同。

      圖1 軟件各模塊關(guān)系Fig. 1 Relationships between each module of the software

      然而對于圖像播放來說,只需提供原始的圖像數(shù)據(jù),以及成像裝置參數(shù)信息即可。所以本文通過“針對接口設(shè)計”的軟件工程方法,利用動態(tài)鏈接庫封裝圖像數(shù)據(jù)和參數(shù)的提取[1],從而將數(shù)據(jù)格式的變化與圖像播放隔離,提高了系統(tǒng)的穩(wěn)定性。

      從文件中提取數(shù)據(jù)需要知道數(shù)據(jù)的位置信息,該位置信息預(yù)先寫入配置文件。動態(tài)鏈接庫讀取配置文件中的位置信息,并生成位置信息的鏈表,將該鏈表傳遞給提取函數(shù)。由提取函數(shù)利用鏈表的信息從文件中讀取數(shù)據(jù)。

      如果采用了不同的圖像壓縮算法,就單獨編寫該種壓縮算法的解壓縮函數(shù),并將函數(shù)信息寫入配置文件。提取動態(tài)鏈接庫可以從配置文件中讀取解壓縮函數(shù)信息,然后調(diào)用該函數(shù)來完成圖像解壓縮。

      3 圖像顯示控制

      圖像顯示控制包括:解算出成像裝置給的目標(biāo)位置和大小,在圖像中標(biāo)識出來;解算出需要旋轉(zhuǎn)的角度,并對圖像進(jìn)行旋轉(zhuǎn);根據(jù)圖像背景灰度值來調(diào)整圖像灰度范圍。其中前兩項只需解算出有關(guān)參數(shù),然后提供給主程序,再由主程序提供給圖像顯示模塊。

      第三項需求的產(chǎn)生是由于灰度圖像的紅綠藍(lán)分量值相同且都是8位,而實際紅外圖像通常都超過8位,這就需要對數(shù)據(jù)進(jìn)行截短。以圖2為例,假設(shè)原始圖像為14位,從中截取8位(例如取第10到第3位),然后判斷更高位(14位到11位)是否全為0,如是則最終灰度值取為第10~第3位的數(shù)值,否則取為255。這樣做的目的是為了保證值較大的數(shù)值截短后也較大,防止出現(xiàn)“1111 00000000 00”截短后反而比“0000 11111111 00”還要小的情況,導(dǎo)致圖像失真。

      圖2 圖像數(shù)值截短表示Fig. 2 Clipping of image value to reduce its length

      這樣處理能夠保證圖像不失真,但是會出現(xiàn)目標(biāo)和背景無法區(qū)分的情況。比如所有像素點的14~11位都不是全零,那么所有像素灰度值都變?yōu)?55,導(dǎo)致目標(biāo)湮沒在背景當(dāng)中。這時就要根據(jù)圖像的灰度均值來動態(tài)的調(diào)整截取的8位,保證區(qū)分開目標(biāo)和背景。具體方法是:以2N×0.75(N取8~13)6個值將整個取值范圍分為由低到高7段(分別對應(yīng)截取8位的最高位為8~14),圖像灰度均值落在哪一段,就截取相應(yīng)的 8 位[2]。

      4 圖像播放控制

      圖像播放軟件需要在連續(xù)顯示圖像的同時,還能夠響應(yīng)用戶的各種操作,所以必須通過多線程來實現(xiàn)[3]。主線程創(chuàng)建播放線程,并根據(jù)用戶的操作控制播放線程,如圖3所示。

      圖3 播放線程的創(chuàng)建及工作過程Fig. 3 Creation of playing-thread and its workflow

      主線程除了創(chuàng)建播放線程還要同時創(chuàng)建WaitableTimer。WaitableTimer每隔一定時間就激活一次(Signaled),播放線程中的WaitForSingleObject函數(shù)就會結(jié)束等待,執(zhí)行后面的播放一幅圖像的操作。主程序可以通過設(shè)置WaitableTimer的激活時間間隔來控制播放的快慢。此外還可以通過調(diào)用CancelWaitableTimer來使WaitableTimer處于休眠狀態(tài),從而實現(xiàn)暫停播放的效果。繼續(xù)播放只要喚醒WaitableTimer就可以。

      5 圖像顯示控件

      圖像顯示部分的功能相對獨立,所以采用ActiveX控件將該功能模塊予以封裝[4]??丶腛nDraw函數(shù)代碼見下:

      代碼中首先創(chuàng)建了一個內(nèi)存設(shè)備dcMem,以及相應(yīng)的兼容位圖。圖形繪制,及像素值信息和統(tǒng)計信息的顯示,首先在該內(nèi)存設(shè)備上完成,最后再一并顯示。這樣可以提高效率并防止屏幕閃爍。

      圖形繪制由于涉及到圖像旋轉(zhuǎn),所以調(diào)用函數(shù)SetWorldTransform來設(shè)置旋轉(zhuǎn)一定角度后的世界坐標(biāo)系,然后再在該坐標(biāo)系下作圖。在調(diào)用SetWorldTransform之前先要調(diào)用函數(shù)SetGraphicsMode(HDC hdc, int iMode),該函數(shù)的第二個參數(shù)iMode取為GM_ADVANCED,表示允許指定的dc進(jìn)行世界坐標(biāo)系的變換。SetWorldTransform(HDC hdc, CONST XFORM*lpXform)的第二個參數(shù)為轉(zhuǎn)換的結(jié)構(gòu)參數(shù)。設(shè)旋轉(zhuǎn)角度為θ,lpXform所指向結(jié)構(gòu)變量各分量eM11=-cos(θ),eM12=sin(θ),eM21=sin(θ),eM22=cos(θ)。圖像繪制完成后,需要將世界坐標(biāo)系恢復(fù)為正常。即賦值eM11=1,eM12=0,eM21=0,eM22=1,然后再調(diào)用一次SetWorldTransform。再設(shè)置圖形模式為正常:調(diào)用函數(shù)SetGraphicsMode,第二個參數(shù)為GM_COMPATIBLE。

      由于原始圖像是矩形,如果直接旋轉(zhuǎn)繪制到屏幕上就會超出控件的作圖區(qū)域。針對圖像有效區(qū)域為圓形的特點,通過創(chuàng)建橢圓區(qū)域,并調(diào)用函數(shù)SelectClipRgn將橢圓區(qū)域選入裁剪區(qū)[5],然后再作圖,就可以達(dá)到在規(guī)定范圍內(nèi)繪制的效果。

      用戶鼠標(biāo)右鍵單擊可以顯示單點的像素值,左鍵拉框可以顯示選定范圍內(nèi)的最大最小值,均值和方差等統(tǒng)計信息。右鍵單擊后,鼠標(biāo)響應(yīng)事件函數(shù)OnRButtonUp(UINT nFlags,CPoint point)被調(diào)用。在該函數(shù)中,point表示鼠標(biāo)點擊位置,首先要根據(jù)“鼠標(biāo)位置/繪圖區(qū)域尺寸×圖像數(shù)據(jù)數(shù)組大小”的公式算出對應(yīng)的圖像數(shù)據(jù)數(shù)組的索引,然后根據(jù)索引取出像素值,交給右鍵信息繪制類對象m_cPointInfo,然后通過調(diào)用函數(shù)InvalidateControl引起控件重繪。在OnDraw函數(shù)中,m_cPointInfo通過在內(nèi)存dc上輸出文本將值信息顯示給用戶。用戶左鍵拉框選取范圍時,由于要動態(tài)顯示用戶選擇的區(qū)域,使用了MFC類CRectTracker。該類可以在用戶選擇區(qū)域時,用矩形框標(biāo)識出所選范圍。用戶左鍵按下時,消息函數(shù)OnLButtonDown被調(diào)用。在該函數(shù)中,調(diào)用CRectTracker類的TrackRubberBand函數(shù),當(dāng)用戶鼠標(biāo)松開時,該函數(shù)返回。此時CRectTracker類對象的m_rect變量代表所選擇的區(qū)域,用上面獲取單點值的辦法也可以獲取范圍內(nèi)的值。然后就可以算出這些值的最大最小,均值方差等統(tǒng)計信息。然后更新顯示區(qū)域,OnDraw函數(shù)被調(diào)用,由m_ cStatisticInfo通過文本輸出的方式顯示給用戶。

      屏幕錄像是通過創(chuàng)建avi流,并調(diào)用函數(shù)AVIStreamWrite往avi流中寫入數(shù)據(jù)的方法來完成的[6]。上面OnDraw函數(shù)中,布爾變量m_bNewFrameToAvi的作用是控制采樣率。由于紅外成像裝置的圖像速率通常比較快,能夠達(dá)到每秒幾十甚至上百幀。通常的avi視頻的幀頻都是每秒二十多幀,再加上紅外圖像內(nèi)容變化較慢,幀頻還可以更低。這就需要對圖像進(jìn)行采樣,比如每隔六幀取一幀,并設(shè)置m_bNewFrameToAvi為真,這樣OnDraw函數(shù)就會只將該幀寫入到avi視頻文件當(dāng)中,而忽略其它幀??紤]到視頻播放的方便,avi視頻沒有采用壓縮編碼的方式。這樣做的好處是,在匯報演示時可以避免因為沒有解碼器而導(dǎo)致無法播放。

      6 結(jié) 論

      文中介紹了該多功能圖像播放軟件的總體設(shè)計方法以及關(guān)鍵技術(shù),并對部分實現(xiàn)過程中遇到的難點問題進(jìn)行了詳述。由于采用模塊化設(shè)計方法,隔離了各功能獨立模塊,保證了軟件整體的穩(wěn)定性和可靠性。該軟件自開發(fā)完成以來,在多個項目中得到應(yīng)用,不同的項目只需在配置文件中設(shè)置文件格式,編寫不同的圖像解壓縮函數(shù),就可以繼續(xù)使用該播放軟件。很好的滿足了圖像瀏覽、演示等科研需求。

      [1] David J.Kruglinski. Visual C++技術(shù)內(nèi)幕[M].潘愛民,王國印,譯.4版修訂版.北京: 清華大學(xué)出版社,2009.

      [2] 《編程之美》小組.編程之美[M].北京:電子工業(yè)出版社,2008.

      [3] Charles Petzold. Windows程序設(shè)計[M].5版.方敏,張勝,梁路平,趙勇,譯.北京: 清華大學(xué)出版社,2010.

      [4] 宇鵬,王曉峰,李云飛.Visual C++實踐與提高-ActiveX篇[M].北京:中國鐵道出版社,2001.

      [5] 官章全,韓云君,李罡.Visual C++ 6.0 高級編程范例[M].北京:電子工業(yè)出版社,2001.

      [6] 陳國建,楊國祥,唐清榮.Visual C++范例開發(fā)大全[M].北京:清華大學(xué)出版社,2010.

      The design and realization of a multifunctional software for infrared image playback

      JIA Pi-jun1, JIA Jie2
      (1. China Airborne Missle Academy, Luoyang 471099, China; 2. Nanchang Hangkong University,Nanchang 330063, China)

      Aiming at the graphical processing of information acquired by infrared equipments, some instructive ideas are borrowed from the video player to develop a playback software for infrared images, using modular design methods such as dynamic link library and ActiveX technology. Practice shows that, the software can display images continuously, show pixel information of a single point or an area selected, under the control of users’ mouse. Based on the characteristics of infrared information, the software can also identify the targets, and rotate the image to match the inertial coordinate system perspective using the auxiliary information. Those playback functionalities as start, pause,stop and changing the playback speed, and automatically adjusting gray level, bitmap conversion, video conversion make the infrared information processing more conveniently, providing a comprehensive, stable, adaptable method for similar image processing.

      infrared image; playback control; VC programming; multi-threading; ActiveX

      TN98

      A

      1674-6236(2014)11-0185-03

      2014–03–19 稿件編號:201403218

      國家自然科學(xué)基金(61263012)

      賈丕軍(1982—),男,山西大同人,碩士,工程師。研究方向:數(shù)據(jù)處理軟件設(shè)計。

      猜你喜歡
      控件鼠標(biāo)灰度
      采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
      基于灰度拉伸的圖像水位識別方法研究
      Progress in Neural NLP: Modeling, Learning, and Reasoning
      Engineering(2020年3期)2020-09-14 03:42:00
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      基于最大加權(quán)投影求解的彩色圖像灰度化對比度保留算法
      基于灰度線性建模的亞像素圖像抖動量計算
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      45歲的鼠標(biāo)
      超能力鼠標(biāo)
      IM家庭電子(2008年11期)2008-12-05 09:49:20
      鼠標(biāo)也可以是這樣的
      诸城市| 新竹市| 肃宁县| 深圳市| 福鼎市| 祁东县| 永靖县| 郑州市| 广河县| 红河县| 济阳县| 周口市| 富川| 双鸭山市| 德格县| 忻城县| 锦州市| 都匀市| 望都县| 保德县| 德格县| 邓州市| 叶城县| 博白县| 左权县| 固镇县| 阜城县| 垣曲县| 湘阴县| 昭苏县| 红原县| 洱源县| 商城县| 秀山| 友谊县| 鄂尔多斯市| 昌乐县| 佛冈县| 靖宇县| 林西县| 油尖旺区|