針對原始ct圖像數據的壓縮方法
2023-09-10 09:24:45 6
專利名稱:針對原始ct圖像數據的壓縮方法
技術領域:
本發明屬於醫學圖像無損壓縮方法,特別涉及一種針對原始CT圖像數據的壓縮方法。
背景技術:
隨著數位化技術的普及和發展,用於放射診斷的數位化醫學成像系統的不斷豐富,醫院中每天都會產生大量的醫學圖像數據。因此如何有效、經濟、快速地存儲、傳輸和顯示這些數據就越來越成為研究者們的熱門課題。這裡最主要的就是需要我們解決醫學圖像數據的壓縮問題,以便減輕存儲與通信的負擔。
由於醫學圖像是用來進行疾病的檢查和診斷的,故而對其有著特殊的要求,即該醫學圖像應該有非常高的保真度,任何程度的圖像信息的損失都有可能產生誤診。基於以上的考慮,醫學圖像的數據壓縮通常採用無損壓縮方法,而有損壓縮方法則被嚴格地限制,不少國家則有明確的法律規定對醫學圖像進行壓縮時不能採用有損壓縮方法。而我們在這裡的討論也自然地只是針對原始CT圖像數據的無損壓縮。然而現有醫學圖像數據無損壓縮仍然存在壓縮比較低的問題,適應不了現代醫學圖像數據存儲量大的要求。
發明內容
針對現有醫學圖像數據壓縮比低的問題,本發明提供一種針對原始CT圖像數據的壓縮方法。
本方法是通過針對原始CT圖像數據的特點對其進行預處理再利用廣義的遊程編碼進行無損壓縮,從而改善了圖像數據的壓縮效果,使得壓縮倍數有比較明顯地提高而且對壓縮速度不會有多少影響。本發明適用於原始CT圖像數據的快速無損壓縮及解壓縮,以方便對CT圖像數據的存儲和讀取。
醫學圖像數據的壓縮可以借鑑絕大多數常見的一般數據的無損壓縮方法。特別是醫學圖像數據既可以用一維數組表示也可以用二維數組表示,所以原則上一般的數據無損壓縮方法均可用於醫學圖像的數據壓縮。另外原始CT圖像還具有這樣一個特點儘管從整個圖像來看,像素值(CT值)差別很大,但是在局部區域(骨骼區、軟組織區等),像素值(或CT值)的差別很小,這種情況對基於遊程長度編碼的壓縮方法而言無疑是非常適用的。下面我們將對此方法進行詳細討論。
普通情況下的遊程長度編碼壓縮方法是這樣的編碼可以按照逐行或逐列進行。遊程長度碼用三個連續的數表示標誌符、長度、像素值。標誌符可以用在圖像中最少出現的像素值(CT值)充當。經過逐行或逐列搜索後得到若干個「三元組」。例如,在某一圖像中最少出現的CT值為255,經過搜索發現接下來的33個像素的CT值均為200,此時就可以遊程長度編碼為255(標誌符)33(長度)200(CT值)。
若相同CT值的持續長度不足4,用上述「三元組」表示就毫無壓縮的效果可言。此時可直接用CT值編碼。若長度值大於或等於標誌符所對應的數值上限,則應把這個「三元組」,分解為若干組。例如可將(255 323 67)分成(255 200 67)及(255 123 67),即將323分成200+123。這種分解原則一般可以根據需要自行指定,只是在一開始就應該明確下來。若下一個像素值為255,則表示為(255 255),碼(255 0)表示結束。這兩種碼非「三元組」,屬特殊碼。
現舉例說明,下面為一組圖像數據矩陣。
0000 15 15 744444495 95 9595 7123 123 123 123 7769 69 69 69 69 69 69 69 69 69 00 53 34 000077 77 77 82 82 82201 201 201 201 201 201 201 201 48 48 48 48 48 232 232 0 上面的圖像數據矩陣,假設標誌符為255,則按上述規定所得到的遊程長度編碼為255 164015157255 6 4255 4 95 72554123 7 7255 254 69 255 156 69 0 0 53 34 25540 77 77 778282 82255 8201 255 548 232232
255 129 0總的編碼字節為48,壓縮比為752/48。
另一方面,原始的CT圖像數據有其自身的特點。一般來說,三維CT圖像空間中的每一個體素或者二維CT切片圖像中的每一個像素所對應的CT值都是用一個十六位的short類型數據來存儲的。但實際上CT值大致分布在一個1000~3000的範圍內,所以這個十六位的short類型數據中只有12位的有效數據寬度。它的高四位是冗餘的。利用這一個特點,本發明提出了一種針對原始CT圖像數據的壓縮方法,以便提高壓縮比,更好地對原始CT圖像數據進行壓縮和存儲。
在不做任何改進的情況下,如果對原始CT圖像數據進行遊程長度編碼,則標誌符佔兩個字節(其中首字節的高四位為冗餘),像素值(CT值)也佔用兩個字節(其首字節的高四位同樣為冗餘),如果此時長度碼也採用兩個字節表示的話,則這樣一個「三元組」需要六個字節表示。同時,我們注意到CT原始圖像數據是局部均勻的。也就是說,在較長的一段連續數據(遊程區間)內,像素(CT)值的變化是很微弱的,只有字節的較低的位上才有差異,而字節高位則是基本沒有變化的。據此我們有改進方案如下將組成每個CT值的高位所在字節和低位所在的字節拆分開,把所有的這些高位對應的字節放在一起,其餘的所有低位所對應的字節放在一起。然後對這個經過重新排序的數據集進行遊程長度編碼壓縮。此時遊程長度編碼的長度碼如果採用一個字節表示的話,則該「三元組」可以由三個字節組成,即標誌符、像素值和長度碼各佔一個字節。注意如果相鄰的原始雙字節數據相同,則對應的高位組成的相鄰字節也必然相同,反之如果低位組成的相鄰字節數據不同,則對應的相鄰原始雙字節數據也必然不同。這也就是說,經過如上方式重排後的數據比之原來的數據集具有更好的均勻性。事實上,由於相鄰的CT值局部均勻,所以那些連續的高位字節會以很高的概率出現大片相同的數據,這對於提高遊程長度編碼的壓縮比有很大的幫助。
通過更進一步的分析,我們可以有改進的針對原始CT圖像的遊程長度編碼方案二同樣是將每個CT值拆成兩部分,一個部分是變化較為劇烈的低八位數據組成的字節,另一部分由是變化不那麼劇烈的最高的四位所組成的。這樣原來的針對每個像素值佔雙字節的CT圖像數據的遊程長度編碼壓縮就變成了針對每個像素佔一個(低位部分對應的)字節和半個(高位部分對應的)字節所組成的數據的遊程長度編碼壓縮。
與最初的方案有所不同的是,這裡我們在對高位部分對應的半個字節所組成的數據流進行遊程長度編碼壓縮時,充分利用其每個數據單位只有四位有效位的特點,只用四位而不是上面的8位來表示遊程長度編碼中一個「三元組」的標誌符和像素值部分。這樣在原來的基礎上壓縮率又有了一定的提高。需要說明的是,這裡我們對「三元組」中長度碼的部分仍然採用一個字節來編碼,因為一方面這樣處理使得編程實現起來比較方面,另外也是由於這是通過實踐經驗所得到的一個較優的長度值(最大表示有連續255個相同的數據)。
概括起來本發明無損壓縮方法,包括如下步驟1、輸入數據流;2、重排數據,將輸入的數據流拆分高位部分和低位部分;3、分別對高位部分數據流和低位部分數據流進行遊程長度編碼;4、合併經過遊程長度編碼後的高位數據流和低位數據流;5、輸出編碼後的數據。
我們知道,一個數據流的局部均勻性越好,對其進行遊程長度編碼的壓縮效果就越明顯。所以其中第二步拆分的目的是對原始CT圖像數據進行「預處理」,使其具有更好的局部均勻性。同時,對原始CT圖像數據流的拆分預處理還帶來另外一個好處,就是每個標誌符所佔的空間更小了,「三元組」的大小更為合理,這樣第三步遊程長度編碼的操作就更好地達到了壓縮的目的。
反之,在解壓縮時,我們根據所採用的遊程長度編碼方案的進行相應的逆操作。以第一種方案為例首先讀入經過遊程長度編碼的數據,每讀入一個「三元組」,就根據像素值和長度碼將其解碼成對應的一段數據流。當全部的解碼工作結束後。這些一段段的數據流組合在一起,就構成了同原始CT圖像數據同樣大小的數據集。當然此時的這個數據集是原始CT圖像數據經過重新排列後所得到的,它的前面一半部分就是原始CT圖像數據的所有高位部分的集合,而後面一半部分則是原始CT圖像數據的所有像素的第八位所構成的字節的集合,最後將它們恢復成原來的樣子即可。
其過程如圖2所示包含如下步驟1、輸入編碼後的數據流;2、進行遊程長度解碼;3、拆開解碼後的數據為高位部分數據和低位部分數據;4、合併重排數據;5、輸出解碼後的數據。
本發明方法可大幅度提高壓縮比。壓縮比可提高50%~150%左右。
圖1為本發明壓縮方法流程圖,圖2為本發明的解壓縮方法流程圖。
具體實施例方式
現在對上面所提出的壓縮和壓縮方法舉例說明如下
下面為原始CT圖像數據流1106 11061000100010001000 893893955 955 955 955955955 100010000 0 0 . ... 0132132 132 132 231 231 231 . ... 231231198 198 198 .. . . ... 198(I原始CT圖像數據流)對於上面所示的原始CT圖像數據流,按照高8位的數據為高位數據,低8位數據為低位數據進行拆分,經過拆分後可以得到下面所示的經過重排預處理後的數據流4 4 3 3 . . . . . . . 33 . . 3 0 0 0 . . . . 00 0 . . . . . . . . . 00 0 . . . . . . . . . 082 82232232232232125125187187187 187187187 2322320 0 0 . . . . 0132132 132132231231231 . . . . 231231198 198198. . . . . . . 198(II經過預處理後的數據流)接下來對經過預處理後的數據流II進行遊程長度編碼,為了方便敘述,我們假設標誌符一律為255,則按上述規定所得到的遊程長度編碼為III4 4 255143 255320 82 82 255 4232125 125255 6 187232 232255802554 132 2559 231 25511198(III)即,經過用本發明方法改進的遊程長度編碼後得到的壓縮數據流一共是32個字節。而如果對I所對應的原始CT圖像數據流進行常規的遊程長度編碼所得到的結果應為IV1106 1106 255 41000 893 8932556955 10001000 2558025541322559231 25511198(IV)注意由於IV中的每個數據都是佔兩個字節的,因此此數據流的大小為24*2=48個字節,相比本發明所提出的改進方法所得到的結果多用了50%的存儲空間。
另外需要指出的是,實際的原始CT圖像數據往往具有比上面例子所採用的數據集更好的均勻性,因此壓縮效果也更好。根據申請者在實踐中的經驗,通常申請者所提出的方法大致可以提高壓縮比50%到150%左右。
由於解壓縮的只是壓縮的逆過程而已,比較容易理解,它只是由III所示的編碼後的數據流經過遊程長度解碼過程得到II所示的高位字節和低位字節數據流,再經過合併重排得到I所示的原始CT圖像數據流。
權利要求
1.一種針對原始CT圖像數據的壓縮方法,其特徵在於包括以下步驟①輸入數據流;②重排數據,將輸入的數據拆成高位部分和低位部分;③分別對高位部分數據流和低位部分數據流進行遊程長度編碼;④合併經過遊程長度編碼的高位數據流和低位數據流;⑤輸出編碼後的數據。
2.一種對權利要求1所述的原始CT圖像數據的壓縮的解壓縮方法,其特徵在於包括以下步驟①輸入編碼後的數據流;②進行遊程長度解碼;③拆開解碼後的數據為高位部分數據和低位部分數據;④合併重排數據;⑤輸出解碼後的數據。
3.如權利要求1所述的針對原始CT圖像數據的壓縮方法,其特徵在於所述將輸入的數據拆成高位部分和低位部分是指按高八位和低八位進行拆分。
4.如權利要求1所述的針對原始CT圖像數據的壓縮方法,其特徵在於所述遊程長度編碼方式有二種a將遊程長度編碼的長度碼用一個字節表示,則標誌符、長度、像素值構成的三元組由三個字節組成,標誌符、長度、像素值各佔一個字節;b各用四位來表示遊程長度編碼中一個三元組的標誌符和像素值部分,其三元組中長度碼的部分仍採用一個字節編碼。
全文摘要
一種針對原始CT圖象數據的壓縮方法,包括以下步驟輸入數據流;重排數據,將輸入的數據拆成高位部分和低位部分;分別對高位部分數據流和低位部分數據流進行遊程長度編碼;合併經過遊程長度編碼的高位數據流和低位數據流;輸出編碼後的數據,本發明方法可提高壓縮比50%~150%。
文檔編號A61B6/03GK1483382SQ0313360
公開日2004年3月24日 申請日期2003年7月28日 優先權日2003年7月28日
發明者韓軼男 申請人:瀋陽東軟數字醫療系統股份有限公司