基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法
【專利摘要】本發(fā)明公開了一種基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,通過內(nèi)存映射的方式對CIS掃描的一塊圖像數(shù)據(jù)包進(jìn)行讀取,并將讀取的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)和臨時(shí)緩沖區(qū),再在臨時(shí)緩沖區(qū)中進(jìn)行繪圖,并將繪制后的臨時(shí)緩沖區(qū)的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)中,最后將圖像緩沖區(qū)中的圖像數(shù)據(jù)包與上一段顯示的圖像合并顯示,圖像緩沖區(qū)中的圖像數(shù)據(jù)包,最后讀取下一段圖像數(shù)據(jù)包。通過上述步驟,本發(fā)明克服了現(xiàn)有技術(shù)中由于圖像數(shù)據(jù)內(nèi)存過大,導(dǎo)致系統(tǒng)運(yùn)行減慢,用戶體驗(yàn)較卡的缺陷,減小內(nèi)存占用量,提高速度,不會出現(xiàn)卡死的情況,適合推廣使用。
【專利說明】[0001] 基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法
【技術(shù)領(lǐng)域】
[0002] 本發(fā)明涉及一種圖像顯示方法,具體是指大幅面掃描儀系統(tǒng)內(nèi)部圖像的圖像快速 顯示方法。
【背景技術(shù)】
[0003] 對通過CIS (Contact Image Sensor)掃描的大幅面掃描儀來講,產(chǎn)生的圖像數(shù)據(jù) 量一般都達(dá)到幾百兆,甚至是幾個(gè)G,讀取和處理圖像數(shù)據(jù)都有可能會消耗很多時(shí)間。海量 的數(shù)據(jù)顯然不適合全部放入內(nèi)存中進(jìn)行處理,即使有時(shí)候能夠?qū)⑺械臄?shù)據(jù)放入內(nèi)存中, 仍然可能導(dǎo)致系統(tǒng)運(yùn)行緩慢。同時(shí)在用戶交互過程中,由于經(jīng)常變換圖像的比例、拖動(dòng)圖像 等操作來查看圖像的具體細(xì)節(jié),這就導(dǎo)致傳統(tǒng)的通過內(nèi)存查看圖像的功能變得不適用。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)中由于圖像數(shù)據(jù)內(nèi)存過大,導(dǎo)致系統(tǒng)運(yùn)行減慢, 用戶體驗(yàn)卡頓感較強(qiáng)的缺陷,提供一種單線程工作的海量圖像快速顯示方法。
[0005] 為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下: 基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,采取以下步驟操作: (1) 通過內(nèi)存映射的方式對CIS掃描的一塊圖像數(shù)據(jù)包進(jìn)行讀取; (2) 將讀取的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)和臨時(shí)緩沖區(qū); (3) 在臨時(shí)緩沖區(qū)中進(jìn)行繪圖; (4) 將繪制后的臨時(shí)緩沖區(qū)的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)中; (5) 將圖像緩沖區(qū)中的圖像數(shù)據(jù)包與上一段顯示的圖像合并顯示,圖像緩沖區(qū)中的圖 像數(shù)據(jù)包,并返回步驟(1 ),讀取下一段圖像數(shù)據(jù)包。
[0006] 為實(shí)現(xiàn)較快處理,所述步驟(1)中的圖像為BMP格式。
[0007] 為實(shí)現(xiàn)內(nèi)存映射,所述步驟(1)中通過內(nèi)存映射方式讀取數(shù)據(jù)包的具體實(shí)施步驟 如下: (la) 通過CreateFile函數(shù)新建或者打開文件內(nèi)核對象,告知操作系統(tǒng)物理存儲器的 位置,通過該函數(shù)設(shè)定文件的訪問權(quán)限和文件共享模式; (lb) 通過CreateFileMapping函數(shù)來對設(shè)置需要的物理儲存器的大小,并設(shè)定文件的 保護(hù)屬性; (lc) 通過MapViewOfFile函數(shù)將數(shù)據(jù)包映射到內(nèi)存中,映射的數(shù)據(jù)包是整個(gè)文件數(shù)據(jù) 包或文件的部分?jǐn)?shù)據(jù),并設(shè)定文件的訪問權(quán)限; (ld) 若需要清空數(shù)據(jù),則調(diào)用UnmapViewOfFile函數(shù)來釋放內(nèi)存中的數(shù)據(jù)包;并執(zhí)行 下一步驟; (le) 通過Closehandle函數(shù)關(guān)閉文件映射對象和文件對象。
[0008] 進(jìn)一步來講,所述步驟(5)中將圖像緩沖區(qū)中的圖像數(shù)據(jù)進(jìn)行顯示的具體操作如 下: (5a)獲取當(dāng)前圖像放大縮小比例及滾動(dòng)條位置; (5b)重構(gòu)顯示區(qū)域圖像數(shù)據(jù)包; (5c)雙緩沖圖像顯示。
[0009] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果: (1)本發(fā)明中圖像的保存采用BMP格式,該格式為Windows系統(tǒng)的基本圖像格式,可以 加快系統(tǒng)硬件的處理速度,為優(yōu)選的保存格式。
[0010] (2)本發(fā)明最大的優(yōu)勢在于采用內(nèi)存映射的方法來讀取海量的圖像數(shù)據(jù),這個(gè)方 法的物理存儲器不再是系統(tǒng)文件,而是保存在電腦硬盤中的文件,只講硬盤數(shù)據(jù)映射到內(nèi) 存,不必為此操作分配內(nèi)存空間,也沒有內(nèi)存的讀、寫操作,大大加快了對大數(shù)據(jù)文件的處 理速度。
[0011] (3)本發(fā)明在內(nèi)存映射結(jié)束后可釋放虛擬內(nèi)存空間,并且通過Closehandle函數(shù) 關(guān)閉文件映射對象和文件對象,不再內(nèi)存空間留下印記,為下一次內(nèi)存映射做好相應(yīng)準(zhǔn)備。
[0012] (4)本發(fā)明為減輕繪制過程中的閃爍感,采取了雙緩沖繪圖的方式,如果沒有交互 繪制過程,則將圖像緩沖區(qū)的圖像直接顯示在顯示器上,常規(guī)情況下一邊繪制一邊顯示會 帶來圖像閃爍,而由于采用內(nèi)存映射,減少了對內(nèi)存的占有量,為臨時(shí)緩沖區(qū)"騰出"空間。
[0013] (5)本發(fā)明中由于圖像數(shù)據(jù)占有量較大,因此每次繪制不必將全部數(shù)據(jù)放入內(nèi)存 空間進(jìn)行繪制,本發(fā)明中采用CIS掃描,正是對掃描的介質(zhì)進(jìn)行線性分割,產(chǎn)生的數(shù)據(jù)包是 分段性的,因此本發(fā)明可對每段包分開進(jìn)行處理,也避免了全部處理時(shí)內(nèi)存空間不夠或處 理過程"卡殼"。
【專利附圖】
【附圖說明】
[0014] 圖1為本發(fā)明-實(shí)施例的流程圖。
【具體實(shí)施方式】
[0015] 下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明,本發(fā)明的實(shí)施方式包括但不限于 下列實(shí)施例。 實(shí)施例
[0016] 如圖1所示的本發(fā)明,具體實(shí)施步驟如下: (1) 判斷是否為BMP格式,若是則進(jìn)行下一步,若不是則將格式修改為BMP格式; (2) 由于CIS將介質(zhì)分割為線性掃描,故產(chǎn)生的圖像數(shù)據(jù)為一塊一塊的數(shù)據(jù)包,通過內(nèi) 存映射方式按照順序?qū)⑵渲幸粔K數(shù)據(jù)包映射到內(nèi)存上,其中該映射具體操作如下: A. 過CreateFile函數(shù)新建或者打開文件對象,告知操作系統(tǒng)物理存儲器的位置,通過 該函數(shù)可以設(shè)定文件的訪問權(quán)限和文件共享模式; B. 通過CreateFileMapping函數(shù)來對設(shè)置需要的物理儲存器的大小,并設(shè)定文件的保 護(hù)屬性。
[0017] C.通過MapViewOfFile函數(shù)將數(shù)據(jù)映射到內(nèi)存中,映射的數(shù)據(jù)可是整個(gè)文件數(shù)據(jù) 包也可以是文件的部分?jǐn)?shù)據(jù),并設(shè)定文件的訪問權(quán)限。此時(shí)對于地址空間的數(shù)據(jù)操作就等 同于將文件加載內(nèi)存中操作的方式一樣。
[0018] D.此次內(nèi)存映射完畢,不再需要將文件中的數(shù)據(jù)映射到內(nèi)存中時(shí),需要調(diào)用 UnmapViewOfFile函數(shù)來釋放內(nèi)存中的數(shù)據(jù)。
[0019] E.通過Closehandle函數(shù)關(guān)閉文件映射對象和文件對象。
[0020] 除了用到上述內(nèi)存映射的基本函數(shù)之外,經(jīng)常需要對整個(gè)大數(shù)據(jù)進(jìn)行定位操 作,部分讀取文件數(shù)據(jù)。SetFilePointerEx函數(shù)負(fù)責(zé)對讀取數(shù)據(jù)的起始位置定位,以及 ReadFile函數(shù)負(fù)責(zé)具體的讀取數(shù)據(jù)等操作。
[0021] 整個(gè)內(nèi)存映射的過程可以簡化為首先將內(nèi)存映射文件讀取到指定的內(nèi)存地址空 間中,在內(nèi)存中對具體的數(shù)據(jù)包進(jìn)行處理和數(shù)據(jù)重構(gòu)操作,并將數(shù)據(jù)包傳遞給顯示設(shè)備,完 成圖像數(shù)據(jù)的顯示操作,最后釋放申請的內(nèi)存空間,關(guān)閉文件映射對象。
[0022] (3)將讀取的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)和臨時(shí)緩沖區(qū); 這樣做是為了減輕圖像顯示繪制過程中的閃爍感,而顯示圖像的是圖像緩沖區(qū),繪制 的是臨時(shí)緩沖區(qū)。
[0023] (4)在臨時(shí)緩沖區(qū)中進(jìn)行繪圖; 沒有交互繪制,只繪制臨時(shí)緩沖區(qū),一般來說屏幕分辨率不超過,其最多容納的像素 不超過顯示屏的分辨率,因此顯示每次不需要將所有的圖像數(shù)據(jù)完全導(dǎo)入整個(gè)內(nèi)存,只需 要根據(jù)當(dāng)前的圖像放大縮小比例,以及上下滾動(dòng)條和左右滾動(dòng)條來判斷當(dāng)前圖像的顯示區(qū) 域?qū)?yīng)所對應(yīng)的圖像數(shù)據(jù)包。由于已經(jīng)通過內(nèi)存映射來完成對數(shù)據(jù)包的讀取,并生成了新 的圖像數(shù)據(jù)包。
[0024] (5)將繪制后的臨時(shí)緩沖區(qū)的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)中; (6)將圖像緩沖區(qū)中的圖像數(shù)據(jù)與上一段顯示的圖像合并顯示,并返回步驟(1),讀取 下一段圖像數(shù)據(jù)包。
[0025] 由于處理的數(shù)據(jù)包是分塊進(jìn)行的,因此每次顯示只能顯示一塊數(shù)據(jù)包的圖像信 息,保持上一個(gè)圖像在顯示器上不變,顯示此次處理的數(shù)據(jù)包的圖像信息是與上一次顯示 的圖像信息合并顯示的,這樣便可不斷填補(bǔ)顯示圖像的空缺,最后形成一個(gè)完整圖像。
[0026] 按照上述實(shí)施例,便可很好地實(shí)現(xiàn)本發(fā)明。
【權(quán)利要求】
1. 基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,其特征在于,采取以下步驟操 作: (1) 通過內(nèi)存映射的方式對CIS掃描的一塊圖像數(shù)據(jù)包進(jìn)行讀取; (2) 將讀取的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)和臨時(shí)緩沖區(qū); (3) 在臨時(shí)緩沖區(qū)中進(jìn)行繪圖; (4) 將繪制后的臨時(shí)緩沖區(qū)的數(shù)據(jù)包復(fù)制到圖像緩沖區(qū)中; (5) 將圖像緩沖區(qū)中的圖像數(shù)據(jù)包與上一段顯示的圖像合并顯示,圖像緩沖區(qū)中的圖 像數(shù)據(jù)包,并返回步驟(1),讀取下一段圖像數(shù)據(jù)包。
2. 根據(jù)權(quán)利要求1所述的基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,其特征 在于,所述步驟(1)中的圖像為BMP格式。
3. 根據(jù)權(quán)利要求2所述的基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,其特征 在于,所述步驟(1)中通過內(nèi)存映射方式讀取數(shù)據(jù)包的具體實(shí)施步驟如下: (la) 通過CreateFile函數(shù)新建或者打開文件內(nèi)核對象,告知操作系統(tǒng)物理存儲器的 位置,通過該函數(shù)設(shè)定文件的訪問權(quán)限和文件共享模式; (lb) 通過CreateFileMapping函數(shù)來對設(shè)置需要的物理儲存器的大小,并設(shè)定文件的 保護(hù)屬性; (lc) 通過MapViewOfFile函數(shù)將數(shù)據(jù)包映射到內(nèi)存中,映射的數(shù)據(jù)包是整個(gè)文件數(shù)據(jù) 包或文件的部分?jǐn)?shù)據(jù),并設(shè)定文件的訪問權(quán)限; (ld) 若需要清空數(shù)據(jù),則調(diào)用UnmapViewOfFile函數(shù)來釋放內(nèi)存中的數(shù)據(jù)包;并執(zhí)行 下一步驟; (le) 通過Closehandle函數(shù)關(guān)閉文件映射對象和文件對象。
4. 根據(jù)權(quán)利要求3所述的基于高精度大幅面掃描儀系統(tǒng)的圖像快速顯示方法,其特征 在于,所述步驟(5)中將圖像緩沖區(qū)中的圖像數(shù)據(jù)進(jìn)行顯示的具體操作如下: (5a)獲取當(dāng)前圖像放大縮小比例及滾動(dòng)條位置; (5b)重構(gòu)顯示區(qū)域圖像數(shù)據(jù)包; (5c)雙緩沖圖像顯示。
【文檔編號】G06F3/14GK104102465SQ201410324749
【公開日】2014年10月15日 申請日期:2014年7月9日 優(yōu)先權(quán)日:2014年7月9日
【發(fā)明者】趙澤東, 唐雪松, 陳仕隆, 呂坤, 楊雷 申請人:寧波摩視光電科技有限公司