摘 要: 基于IDL對(duì)象圖形法實(shí)現(xiàn)了遙感圖像的漫游和連續(xù)多級(jí)縮放,具有運(yùn)行速度快,穩(wěn)定性好等特點(diǎn)。漫游解決了大的遙感圖像不能在一般窗口完整顯示的問(wèn)題, 方便用戶(hù)快速顯示瀏覽大的遙感圖像。圖像的縮放實(shí)現(xiàn)了對(duì)圖像細(xì)節(jié)的放大和縮小,改善了視覺(jué)效果,提高了圖像處理的效率。
關(guān)鍵詞: IDL; 對(duì)象圖形法; 圖像漫游; 圖像縮放
遙感圖像按一定比例尺客觀真實(shí)地記錄和反映地表物體的電磁輻射的強(qiáng)弱信息,是遙感探測(cè)所獲得的遙感信息資料的一種表現(xiàn)形式[1]。在遙感技術(shù)的研究中,對(duì)遙感圖像的分析與研究在地質(zhì)勘探、城市規(guī)劃、氣象科學(xué)、海洋利用和環(huán)境保護(hù)等方面都有十分重要的意義。隨著傳感器技術(shù)和計(jì)算機(jī)科學(xué)技術(shù)的快速發(fā)展,獲取的遙感圖像的地面分辨率越來(lái)越高,所包含的數(shù)據(jù)量越來(lái)越大,獲取的遙感圖像也越來(lái)越大[2]。如何快速顯示和瀏覽大的遙感圖像,獲得圖像中的細(xì)節(jié)信息就成為遙感圖像處理與分析的一個(gè)重要環(huán)節(jié)。交互式數(shù)據(jù)語(yǔ)言IDL(Interactive Data Language)是Research Systems公司(現(xiàn)為ITT Visual Information Solutions公司)推出的致力于科學(xué)數(shù)據(jù)的可視化和分析語(yǔ)言。它功能強(qiáng)大、簡(jiǎn)單易學(xué)、編程效率高,很少的幾行代碼就能實(shí)現(xiàn)其他語(yǔ)言很難實(shí)現(xiàn)的功能[3]。本文有效利用IDL語(yǔ)言強(qiáng)大的可視化、快速的數(shù)據(jù)處理能力及對(duì)象圖像法靈活方便的構(gòu)建圖形圖像等特點(diǎn),實(shí)現(xiàn)了遙感圖像的漫游和縮放功能,具有處理速度快、圖像移動(dòng)連續(xù)以及程序可移植性強(qiáng)等優(yōu)點(diǎn)。
1 漫游技術(shù)介紹
遙感圖像經(jīng)常是大畫(huà)面圖像,而一般的圖像顯示窗口較小,因此圖像不能完整顯示在窗口中,給圖像編輯帶來(lái)困難[4]。
圖像漫游是在圖像顯示窗口中上下左右移動(dòng),圖像的一側(cè)逐漸出現(xiàn),另一側(cè)逐漸消失??梢园颜膱D像定義為一個(gè)邏輯屏幕,而把顯示屏幕定義為一個(gè)物理屏幕,其關(guān)系如圖1所示。
可以看出,物理屏幕只是邏輯屏幕的一個(gè)子集,要瀏覽整個(gè)邏輯屏幕中的內(nèi)容,只需要移動(dòng)物理屏幕在邏輯屏幕中的起始位置即可,這就是漫游技術(shù)。在交互式系統(tǒng)中使用光標(biāo)控制物理屏幕起始位置[5]。
2 圖像的放大縮小技術(shù)概述
在圖像瀏覽過(guò)程中,對(duì)瀏覽區(qū)域進(jìn)行放大或者縮小是一種基本的操作。所謂圖像縮放是指改變圖像的分辨率。縮小圖像的主要目的是使得圖像符合顯示區(qū)域的大小并生成對(duì)應(yīng)圖像的縮略圖。放大圖像的主要目的是通過(guò)放大原圖像從而更清楚地看到圖像上的某些細(xì)節(jié)信息。尤其對(duì)高精度的大圖像來(lái)說(shuō),一些細(xì)節(jié)信息必須要通過(guò)放大操作來(lái)觀察。圖像的這種處理手法在圖像顯示、傳輸(通信)、圖像分析、動(dòng)畫(huà)制作和電影合成等方面有著相當(dāng)廣的應(yīng)用。但是對(duì)圖像的縮放操作并不能獲得更多關(guān)于該圖像的信息,因此圖像的質(zhì)量將不可避免地受到影響。
本文利用IDL語(yǔ)言編寫(xiě)的程序?qū)崿F(xiàn)了圖像的連續(xù)多級(jí)放大和連續(xù)多級(jí)縮小,每一級(jí)的放大和縮小系數(shù)可以根據(jù)用戶(hù)需要任意設(shè)定。
3 IDL的應(yīng)用
IDL作為語(yǔ)法簡(jiǎn)單地面向矩陣運(yùn)算的計(jì)算機(jī)語(yǔ)言,提供了與多種語(yǔ)言的標(biāo)準(zhǔn)接口工具和大量功能豐富的命令、函數(shù)和程序模塊,使得數(shù)據(jù)分析和可視化表達(dá)更加簡(jiǎn)潔、靈活。IDL已經(jīng)廣泛應(yīng)用在信息處理、空間科學(xué)、氣象、資源環(huán)境中數(shù)字圖像處理等領(lǐng)域[6]。
3.1 IDL的對(duì)象圖形法
IDL語(yǔ)言有兩套完全獨(dú)立的圖形體系:直接圖形法和對(duì)象圖形法[7]。直接圖形法是依靠當(dāng)前顯示設(shè)備快速顯示的圖形的可視化模式,創(chuàng)建在圖形設(shè)備上的內(nèi)容將不能再更改和重復(fù)利用,適用于命令行操作。對(duì)象圖形法不直接依賴(lài)于用戶(hù)使用的圖形設(shè)備,可以直接運(yùn)行于各種計(jì)算機(jī)系統(tǒng)中,而且不需要進(jìn)行圖形設(shè)備的設(shè)置,同時(shí)還可以重復(fù)利用,因此更加適合開(kāi)發(fā)應(yīng)用程序。
IDL的對(duì)象圖形法可以形象地理解為“壘積木”,構(gòu)建場(chǎng)景就是要將不同的“積木”按照一定的規(guī)則堆起來(lái)。本文利用IDL的對(duì)象圖形法建立了視圖對(duì)象和窗口對(duì)象等,將其按照層次關(guān)系“壘”起來(lái),最后把最終的場(chǎng)景再在窗口對(duì)象中顯示。IDL對(duì)象圖形系統(tǒng)的組成結(jié)構(gòu)如圖2所示。
3.2 IDL的鼠標(biāo)響應(yīng)事件
在用IDL語(yǔ)言編寫(xiě)漫游和縮放功能的過(guò)程中用到了大量的發(fā)生在繪圖DRAW組件中的鼠標(biāo)響應(yīng)事件,因此在這里簡(jiǎn)單介紹一下。IDL的圖形窗口中,每發(fā)生一個(gè)動(dòng)作都會(huì)產(chǎn)生事件,每個(gè)事件都會(huì)返回一個(gè)事件結(jié)構(gòu),所有的事件都是要靠這個(gè)結(jié)構(gòu)來(lái)處理的。
事件結(jié)構(gòu)是指組件的事件所包含的一組特定信息的集合。事件結(jié)構(gòu)包含了產(chǎn)生事件的相應(yīng)組件的相關(guān)信息。每個(gè)事件都產(chǎn)生于其自身的、特定的事件結(jié)構(gòu)中,然后被發(fā)送到事件處理模塊。
事件結(jié)構(gòu)與一般結(jié)構(gòu)的區(qū)別是事件結(jié)構(gòu)均有ID、Top和Handler 3個(gè)公共字段,這3個(gè)字段都是長(zhǎng)整型的變量。ID是事件過(guò)程中產(chǎn)生事件組件的唯一標(biāo)識(shí);Top是層次結(jié)構(gòu)中最頂級(jí)base的標(biāo)識(shí);Handler是與組件相關(guān)聯(lián)的組件事件處理程序的標(biāo)識(shí)。事件產(chǎn)生的事件結(jié)構(gòu)都要發(fā)送到事件處理程序中,每個(gè)事件處理程序都與某一個(gè)組件相關(guān)聯(lián)[8]。
DRAW組件的事件結(jié)構(gòu)為:
{WIDGET_DRAW,ID:0L, TOP:0L, Handler:0L ,Type:0,X:0,Y:0,Press:0,Release:0,Clicks:0}
字段Type用于設(shè)置時(shí)間的類(lèi)型,其可能的值有:鼠標(biāo)按下(0)、鼠標(biāo)松開(kāi)(1)、鼠標(biāo)移動(dòng)(2)、視點(diǎn)滾動(dòng)(3)和顯示(4)。上述所有事件都必須顯示地指定,否則相應(yīng)的事件是不會(huì)產(chǎn)生的。字段X和Y給出了事件發(fā)生時(shí)的設(shè)備或屏幕坐標(biāo),繪圖組件的左下角為坐標(biāo)原點(diǎn)。字段Press和Release,當(dāng)鼠標(biāo)被按下或釋放時(shí),它們的值就分別存在了。其中,1表示鼠標(biāo)左鍵,2表示鼠標(biāo)中鍵,4表示鼠標(biāo)右鍵。如果產(chǎn)生鼠標(biāo)移動(dòng)事件,那么Press和Release都被設(shè)置為0。當(dāng)鼠標(biāo)單擊時(shí),字段Clicks返回1,雙擊時(shí)返回2。
本文所編寫(xiě)的圖像漫游和縮放流程圖分別如圖3和圖4所示。
4 性能分析及效果
通常,功能實(shí)現(xiàn)時(shí)間的長(zhǎng)短直接決定了功能實(shí)現(xiàn)的好壞。對(duì)本文而言,程序執(zhí)行速度的快慢與圖像的大小有很大的關(guān)系。圖像越小,程序執(zhí)行的速度越快,反應(yīng)越靈敏。本文以2 064像素×2 534像素大小的圖像為例,通過(guò)在程序中添加時(shí)間函數(shù)經(jīng)過(guò)反復(fù)測(cè)試得到以下結(jié)果:圖像漫游所花費(fèi)的時(shí)間是0.156 s左右,圖像進(jìn)行一級(jí)放大和縮小的時(shí)間是0.171 s左右,當(dāng)進(jìn)行多級(jí)放大時(shí),時(shí)間會(huì)有所延長(zhǎng)。由此可知,本文實(shí)現(xiàn)的圖像的漫游和縮放功能執(zhí)行速度快,圖像能迅速跟隨鼠標(biāo)移動(dòng),給用戶(hù)以平滑和連續(xù)的感覺(jué)。
4.1 圖像漫游效果
原來(lái)顯示在窗口中的圖像及圖像向上、下、左、右漫游(以原圖中間的白色房屋為中心參考點(diǎn))后的圖像如圖5所示。
4.2 圖像放大效果
圖像的原圖以及放大系數(shù)設(shè)置為1.2時(shí)圖像經(jīng)過(guò)5級(jí)放大后的效果圖、放大系數(shù)設(shè)置為1.5時(shí)圖像經(jīng)過(guò)5級(jí)放大后的效果圖以及經(jīng)過(guò)多級(jí)放大后的效果圖如圖6所示。圖像還可以繼續(xù)進(jìn)行放大操作,但從圖6可看出,此時(shí)圖像失真較嚴(yán)重,研究意義較小。
4.3 圖像縮小效果
圖像的原圖以及縮小系數(shù)為0.8時(shí)經(jīng)過(guò)3級(jí)縮小的圖像、縮小系數(shù)為0.5時(shí)經(jīng)過(guò)3級(jí)縮小以后的圖像和經(jīng)過(guò)多級(jí)縮小以后的圖像如圖7所示。觀察圖像縮小效果圖可發(fā)現(xiàn),當(dāng)縮小到一定程度時(shí),圖像已經(jīng)完全顯示到屏幕上,此時(shí)繼續(xù)縮小圖像則不會(huì)有較大變化。
本文首次嘗試?yán)肐DL語(yǔ)言對(duì)象圖形法實(shí)現(xiàn)遙感圖像的漫游和縮放,并給出了處理結(jié)果。結(jié)果表明,該方法實(shí)現(xiàn)了對(duì)大的遙感圖像的快速瀏覽和對(duì)圖像的任意多級(jí)縮放,具有運(yùn)行速度快、連續(xù)性好等特點(diǎn),提高了用戶(hù)圖像處理的效率。
參考文獻(xiàn)
[1] 王一達(dá),沈熙玲,謝炯.遙感圖像分類(lèi)方法綜述[J].遙感信息,2006(5):67-71.
[2] 張宏偉,童恒建,左博新,等.基于GDAL大于2G遙感圖像的快速瀏覽[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(13):159-162.
[3] 董彥卿. IDL程序設(shè)計(jì)[M].北京:高等教育出版社,2012.
[4] 王洪慶,張焱.NDPC-386圖像漫游技術(shù)[J].微計(jì)算機(jī)應(yīng)用,1993,14(6):1-6.
[5] 李軍.通用的圖形圖像漫游技術(shù)[J].電腦編程技巧與維護(hù),1996(6):53-60.
[6] 韓培友. IDL可視化分析與應(yīng)用:可視化交互數(shù)據(jù)語(yǔ)言[M].西安:西北工業(yè)大學(xué)出版社,2006.
[7] 閆殿武.IDL可視化工具入門(mén)與提高[M].北京:機(jī)械工業(yè)出版社,2003.
[8] LIAM E G. Practical IDL programming[M]. Morgan Kauf-mann Publishers Inc., 2001.