本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,特別涉及一種影像數(shù)據(jù)的存儲和讀取方法。
背景技術(shù):
在現(xiàn)有的影像存儲技術(shù)中,像素以文件形式進(jìn)行存儲,讀取時需要進(jìn)行文件的操作,像素的獲取完全依賴于影像的頭信息,所以影像的大小受到影像頭信息存儲長度的限制。以tif格式為例,在其頭信息的存儲協(xié)議規(guī)定的長度下,單個影像文件的長度不超過4g大小。單個影像文件的壓縮格式必須是統(tǒng)一的,壓縮率越高,文件所占硬盤空間大小就越小,同時實際的影像信息損失越大,在讀取時所需的解壓時間就越多。在統(tǒng)一的壓縮格式下,影像文件的大小和效率有著不可調(diào)和的矛盾,影像格式必須在這兩者之間做出選擇,犧牲其中一項來換取另一項的提高。
在實際的影像顯示過程中,影響數(shù)據(jù)的顯示和影像數(shù)據(jù)分塊尺寸有關(guān),分片太大導(dǎo)致讀寫數(shù)據(jù)的冗余,速度降低,分片太小導(dǎo)致數(shù)據(jù)讀寫時文件訪問次數(shù)太多,速度降低?,F(xiàn)有的影像格式并沒有給出影像分塊大小的標(biāo)準(zhǔn),以及對于影響處理速度的影像,這導(dǎo)致同一格式的影像的讀寫效率不固定,而為了方便存儲,大多數(shù)影像都只分成少量的幾塊,使得這些影像讀寫效率較低,不方便影像的顯示處理。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明旨在提供一種壓縮率高,占用存儲空間少,同時保證原始影像信息的完整性,保證影像信息在存儲和讀取過程中不丟失的影像數(shù)據(jù)存儲和讀寫方法。
為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種影像數(shù)據(jù)存儲方法,包括以下步驟:
在文件中以影像數(shù)據(jù)的水平方向和垂直方向建立直角坐標(biāo)系,所述影像數(shù)據(jù)在所述直角坐標(biāo)系中的坐標(biāo)以像素為單位;
在所述直角坐標(biāo)系中按照坐標(biāo)對所述影像數(shù)據(jù)進(jìn)行分塊,得到影像塊;
根據(jù)原始影像數(shù)據(jù)創(chuàng)建金字塔,對所述影像塊采用無損壓縮進(jìn)行壓縮,對所述金字塔采用有損壓縮進(jìn)行壓縮;
將壓縮后影像塊和金字塔按照鍵-值存儲的形式寫入文件。
作為本發(fā)明的進(jìn)一步改進(jìn),所述金字塔每一層的影像數(shù)據(jù)的長和寬分別為原始影像數(shù)據(jù)長和寬的二分之一,面積為原始影像數(shù)據(jù)的四分之一。
作為本發(fā)明的進(jìn)一步改進(jìn),所述影像塊的大小為256*256個像素,影像數(shù)據(jù)的邊緣不足256個像素的剩余長度補(bǔ)足256個像素。
作為本發(fā)明的進(jìn)一步改進(jìn),所述鍵-值存儲的存儲協(xié)議如下:
影像長、寬、通道數(shù)以對應(yīng)的英文單詞為鍵進(jìn)行存儲;
影像每個通道的長度以通道的英文單詞和通道編號進(jìn)行存儲,所述英文單詞和通道編號間用短橫線間隔;
每個影像塊以影像塊所在的圖像層級和在整個影像分塊上的位置為鍵值進(jìn)行存儲,所有數(shù)字都是用十進(jìn)制整數(shù),使用短橫線隔,第一位數(shù)字表示其在圖像上的層級,第0層為原始影像數(shù)據(jù),第1層為第一層金字塔;第二個數(shù)字表示影像塊在橫向上的坐標(biāo)x,橫向第一個影像塊即為1;第三個數(shù)字表示影像例在豎方向上的坐標(biāo)y。
一種影像數(shù)據(jù)存儲系統(tǒng),包括以下模塊:
坐標(biāo)系模塊,用于在文件中以影像數(shù)據(jù)的水平方向和垂直方向建立直角坐標(biāo)系,所述影像數(shù)據(jù)在所述直角坐標(biāo)系中的坐標(biāo)以像素為單位;
分塊模塊,用于在所述直角坐標(biāo)系中按照坐標(biāo)對所述影像數(shù)據(jù)進(jìn)行分塊,得到影像塊;
金字塔模塊,用于根據(jù)原始影像數(shù)據(jù)創(chuàng)建金字塔,對所述影像塊采用無損壓縮進(jìn)行壓縮,對所述金字塔采用有損壓縮進(jìn)行壓縮;
寫入模塊,用于將壓縮后影像塊和金字塔按照鍵-值的形式寫入文件。
作為本發(fā)明的進(jìn)一步改進(jìn),所述金字塔每一層的影像數(shù)據(jù)的長和寬分別為原始影像數(shù)據(jù)長和寬的二分之一,面積為原始影像數(shù)據(jù)的四分之一。
作為本發(fā)明的進(jìn)一步改進(jìn),所述影像塊的大小為256*256個像素,影像數(shù)據(jù)的邊緣不足256個像素的剩余長度補(bǔ)足256個像素。
作為本發(fā)明的進(jìn)一步改進(jìn),所述鍵-值存儲的存儲協(xié)議如下:
影像長、寬、通道數(shù)以對應(yīng)的英文單詞為鍵進(jìn)行存儲;
影像每個通道的長度以通道的英文單詞和通道編號進(jìn)行存儲,所述英文單詞和通道編號間用短橫線間隔;
每個影像塊以影像塊所在的圖像層級和在整個影像分塊上的位置為鍵值進(jìn)行存儲,所有數(shù)字都是用十進(jìn)制整數(shù),使用短橫線隔,第一位數(shù)字表示其在圖像上的層級,第0層為原始影像數(shù)據(jù),第1層為第一層金字塔;第二個數(shù)字表示影像塊在橫向上的坐標(biāo)x,橫向第一個影像塊即為1;第三個數(shù)字表示影像例在豎方向上的坐標(biāo)y。
一種讀取如上述影像數(shù)據(jù)存儲方法存儲的影像數(shù)據(jù)的影像數(shù)據(jù)讀取方法,包括以下步驟:
查詢影像塊在所述金字塔上的層級和坐標(biāo);
根據(jù)所述鍵-值存儲的存儲協(xié)議以及所述影像塊的層級和坐標(biāo),得到所述影像塊的鍵值;
根據(jù)所述影像塊的鍵值在數(shù)據(jù)庫中查詢所述影像塊的影像數(shù)據(jù),得到所述影像塊被壓縮過的像素信息和壓縮信息;
利用所述壓縮信息對所述影像塊進(jìn)行解壓,并根據(jù)所述存儲協(xié)議得到所述影像塊的實際信息;
將所述像素數(shù)據(jù)在內(nèi)存中進(jìn)行重新排列和組織,得到所述影像塊的完整信息。
一種讀取如上述影像數(shù)據(jù)存儲方法存儲的影像數(shù)據(jù)的影像數(shù)據(jù)讀取系統(tǒng),包括以下模塊:
第一查詢模塊,用于查詢影像塊在所述金字塔上的層級和坐標(biāo);
鍵值模塊,用于根據(jù)所述鍵-值存儲的存儲協(xié)議以及所述影像塊的層級和坐標(biāo),得到所述影像塊的鍵值;
第二查詢模塊,用于根據(jù)所述影像塊的鍵值在數(shù)據(jù)庫中查詢所述影像塊的影像數(shù)據(jù),得到所述影像塊被壓縮過的像素信息和壓縮信息;
解壓模塊,用于利用所述壓縮信息對所述影像塊進(jìn)行解壓,并根據(jù)所述存儲協(xié)議得到所述影像塊的實際信息;
像素重排列模塊,將所述像素數(shù)據(jù)在內(nèi)存中進(jìn)行重新排列,得到所述影像塊的完整信息。
相比于現(xiàn)有技術(shù),本發(fā)明通過對原始影像數(shù)據(jù)和金字塔分別采用無損壓縮和有損壓縮進(jìn)行壓縮,壓縮率高,節(jié)省硬件空間,讀取效率高,對于大影像數(shù)據(jù)能達(dá)到快速打開,高速瀏覽,且能支持非常規(guī)影像的存儲,支持多通道存儲,支持不同通道不同像素存儲大小的影像數(shù)據(jù),在衛(wèi)星影像,數(shù)字地表模型,工程影像中具有廣闊的應(yīng)用前景。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉較佳實施例,并配合附圖,詳細(xì)說明如下。
附圖說明
圖1是本發(fā)明實施例中影像數(shù)據(jù)存儲方法的示意圖。
圖2是本發(fā)明實施例中影像數(shù)據(jù)存儲系統(tǒng)的示意圖。
圖3是本發(fā)明實施例中影像數(shù)據(jù)讀取方法的示意圖。
圖4是本發(fā)明實施例中影像數(shù)據(jù)讀取系統(tǒng)的示意圖。
標(biāo)記說明:210、坐標(biāo)系模塊;220、分塊模塊;230、金字塔模塊;240、寫入模塊;410、第一查詢模塊;420、鍵值模塊;430、第二查詢模塊;440、解壓模塊;450、像素重排列模塊。
具體實施方式
下面,結(jié)合附圖以及具體實施方式,對本發(fā)明做進(jìn)一步描述:
如圖1所示,為本發(fā)明實施例中影像數(shù)據(jù)存儲方法的示意圖。所述方法包括以下步驟:
步驟110、在文件中以影像數(shù)據(jù)的水平方向和垂直方向建立直角坐標(biāo)系,所述影像數(shù)據(jù)在所述直角坐標(biāo)系中的坐標(biāo)以像素為單位;
優(yōu)選的,以影像數(shù)據(jù)的左上角為坐標(biāo)原點(diǎn),向右向下為正方向,定義向右為x方向,向下為y方向,在這樣的定義下,影像數(shù)據(jù)的坐標(biāo)應(yīng)全為正整數(shù);
步驟120、在所述直角坐標(biāo)系中按照坐標(biāo)對所述影像數(shù)據(jù)進(jìn)行分塊,得到影像塊;
優(yōu)選的,所述影像分塊在坐標(biāo)系中以影像塊為單位。
優(yōu)選的,所述影像塊的大小為256*256個像素,影像數(shù)據(jù)的邊緣不足256個像素的剩余長度補(bǔ)足256個像素;
步驟130、根據(jù)原始影像數(shù)據(jù)創(chuàng)建金字塔,對所述影像塊采用無損壓縮進(jìn)行壓縮,對所述金字塔采用有損壓縮進(jìn)行壓縮;
具體的,每層金字塔數(shù)據(jù)由其下層金字塔得到,其像素構(gòu)成由上一層影像相鄰的四個像素進(jìn)行平均所得,影像金字塔的層數(shù)根據(jù)數(shù)據(jù)大小確定,最頂層的影像金字塔長和寬應(yīng)與影像分塊的長和寬相同;
優(yōu)選的,每一層金字塔影像數(shù)據(jù)的長和寬分別為原始影像數(shù)據(jù)的長和寬的二分之一,面積為原始影像數(shù)據(jù)的四分之一;
優(yōu)選的,對所述金字塔中不同層級的影像采用不同的壓縮方法,并對于分塊的影像每一塊單獨(dú)寫入壓縮信息,每一塊影像可單獨(dú)解壓;
步驟140、將壓縮后影像塊和金字塔按照鍵-值存儲的形式寫入文件;
優(yōu)選的,所述鍵-值存儲的存儲協(xié)議如下:
影像長、寬、通道數(shù)以對應(yīng)的英文單詞為鍵進(jìn)行存儲;
影像每個通道的長度以通道的英文單詞和通道編號進(jìn)行存儲,所述英文單詞和通道編號間用短橫線間隔;
每個影像塊以影像塊所在的圖像層級和在整個影像分塊上的位置為鍵值進(jìn)行存儲,所有數(shù)字都是用十進(jìn)制整數(shù),使用短橫線隔,第一位數(shù)字表示其在圖像上的層級,第0層為原始影像數(shù)據(jù),第1層為第一層金字塔;第二個數(shù)字表示影像塊在橫向上的坐標(biāo)x,橫向第一個影像塊即為1;第三個數(shù)字表示影像例在豎方向上的坐標(biāo)y。
圖2是本發(fā)明實施例中影像數(shù)據(jù)存儲系統(tǒng)的示意圖。所述系統(tǒng)包括以下模塊:
坐標(biāo)系模塊210,用于在文件中以影像數(shù)據(jù)的水平方向和垂直方向建立直角坐標(biāo)系,所述影像數(shù)據(jù)在所述直角坐標(biāo)系中的坐標(biāo)以像素為單位;
優(yōu)選的,以影像數(shù)據(jù)的左上角為坐標(biāo)原點(diǎn),向右向下為正方向,定義向右為x方向,向下為y方向,在這樣的定義下,影像數(shù)據(jù)的坐標(biāo)應(yīng)全為正整數(shù);
分塊模塊220,用于在所述直角坐標(biāo)系中按照坐標(biāo)對所述影像數(shù)據(jù)進(jìn)行分塊,得到影像塊;
優(yōu)選的,所述影像分塊在坐標(biāo)系中以影像塊為單位。
優(yōu)選的,所述影像塊的大小為256*256個像素,影像數(shù)據(jù)的邊緣不足256個像素的剩余長度補(bǔ)足256個像素;
金字塔模塊230,用于根據(jù)原始影像數(shù)據(jù)創(chuàng)建金字塔,對所述影像塊采用無損壓縮進(jìn)行壓縮,對所述金字塔采用有損壓縮進(jìn)行壓縮;
具體的,每層金字塔數(shù)據(jù)由其下層金字塔得到,其像素構(gòu)成由上一層影像相鄰的四個像素進(jìn)行平均所得,影像金字塔的層數(shù)根據(jù)數(shù)據(jù)大小確定,最頂層的影像金字塔長和寬應(yīng)與影像分塊的長和寬相同;
優(yōu)選的,每一層金字塔影像數(shù)據(jù)的長和寬分別為原始影像數(shù)據(jù)的長和寬的二分之一,面積為原始影像數(shù)據(jù)的四分之一;
優(yōu)選的,對所述金字塔中不同層級的影像采用不同的壓縮方法,并對于分塊的影像每一塊單獨(dú)寫入壓縮信息,每一塊影像可單獨(dú)解壓;
寫入模塊240,用于將壓縮后影像塊和金字塔按照鍵-值的形式寫入文件;
優(yōu)選的,所述鍵-值存儲的存儲協(xié)議如下:
影像長、寬、通道數(shù)以對應(yīng)的英文單詞為鍵進(jìn)行存儲;
影像每個通道的長度以通道的英文單詞和通道編號進(jìn)行存儲,所述英文單詞和通道編號間用短橫線間隔;
每個影像塊以影像塊所在的圖像層級和在整個影像分塊上的位置為鍵值進(jìn)行存儲,所有數(shù)字都是用十進(jìn)制整數(shù),使用短橫線隔,第一位數(shù)字表示其在圖像上的層級,第0層為原始影像數(shù)據(jù),第1層為第一層金字塔;第二個數(shù)字表示影像塊在橫向上的坐標(biāo)x,橫向第一個影像塊即為1;第三個數(shù)字表示影像例在豎方向上的坐標(biāo)y。
圖3是本發(fā)明實施例中影像數(shù)據(jù)讀取方法的示意圖。所述方法包括以下步驟:
步驟310、查詢影像塊在所述金字塔上的層級和坐標(biāo);
步驟320、根據(jù)所述鍵-值存儲的存儲協(xié)議以及所述影像塊的層級和坐標(biāo),得到所述影像塊的鍵值;
步驟330、根據(jù)所述影像塊的鍵值在數(shù)據(jù)庫中查詢所述影像塊的影像數(shù)據(jù),得到所述影像塊被壓縮過的像素信息和壓縮信息;
步驟340、利用所述壓縮信息對所述影像塊進(jìn)行解壓,并根據(jù)所述存儲協(xié)議得到所述影像塊的實際信息;
步驟350、將所述像素數(shù)據(jù)在內(nèi)存中進(jìn)行重新排列和組織,得到所述影像塊的完整信息。
圖4是本發(fā)明實施例中影像數(shù)據(jù)讀取系統(tǒng)的示意圖。所述系統(tǒng)包括以下模塊:
第一查詢模塊410,用于查詢影像塊在所述金字塔上的層級和坐標(biāo);
鍵值模塊420,用于根據(jù)所述鍵-值存儲的存儲協(xié)議以及所述影像塊的層級和坐標(biāo),得到所述影像塊的鍵值;
第二查詢模塊430,用于根據(jù)所述影像塊的鍵值在數(shù)據(jù)庫中查詢所述影像塊的影像數(shù)據(jù),得到所述影像塊被壓縮過的像素信息和壓縮信息;
解壓模塊440,用于利用所述壓縮信息對所述影像塊進(jìn)行解壓,并根據(jù)所述存儲協(xié)議得到所述影像塊的實際信息;
像素重排列模塊450,將所述像素數(shù)據(jù)在內(nèi)存中進(jìn)行重新排列,得到所述影像塊的完整信息。
本發(fā)明可以支持大影像的部分提取顯示,由于所有分塊獨(dú)立壓縮,壓縮分塊有獨(dú)立的頭信息存儲,對于大影像,可以進(jìn)行部分讀取,抽取感興趣的影像范圍進(jìn)行解壓顯示,而不必進(jìn)行整體解析。其過程如下:首先進(jìn)行影像總體信息解析;然后計算感興趣影像范圍的原始影像和金字塔影像塊編號;最后根據(jù)塊頭信息進(jìn)行解壓,重組感興趣部分的影像信息;即可快速的得到大影像的感興趣部分。
本發(fā)明可以支持影像的快速實時變換顯示。由于影像可以進(jìn)行部分提取,所以在做影像幾何和灰度變換時可以進(jìn)行實時變換顯示,具體步驟如下:讀取影像總體信息,確定需要進(jìn)行變換的影像區(qū)域,計算區(qū)域中的分塊信息,得到這些分塊的鍵值;根據(jù)鍵值獲取相應(yīng)的分塊影像,根據(jù)這些影像的頭信息,進(jìn)行解壓;根據(jù)所需要進(jìn)行的變換,對影像的幾何信息和灰度信息進(jìn)行變換,然后對這些變換后的像素進(jìn)行拼接;將拼接后的影像根據(jù)需要進(jìn)行顯示,由于只對感興趣的區(qū)域進(jìn)行變換操作,大量減少了需要計算和操作的像素值,可以達(dá)到實時變換的要求。
相比于現(xiàn)有技術(shù),本發(fā)明通過對原始影像數(shù)據(jù)和金字塔分別采用無損壓縮和有損壓縮進(jìn)行壓縮,壓縮率高,節(jié)省硬件空間,讀取效率高,對于大影像數(shù)據(jù)能達(dá)到快速打開,高速瀏覽,且能支持非常規(guī)影像的存儲,支持多通道存儲,支持不同通道不同像素存儲大小的影像數(shù)據(jù),在衛(wèi)星影像,數(shù)字地表模型,工程影像中具有廣闊的應(yīng)用前景。
對于本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及變形,而所有的這些改變以及變形都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。