TWI903348B - 用以編碼及解碼拜耳圖像影像之裝置及方法 - Google Patents
用以編碼及解碼拜耳圖像影像之裝置及方法Info
- Publication number
- TWI903348B TWI903348B TW113101291A TW113101291A TWI903348B TW I903348 B TWI903348 B TW I903348B TW 113101291 A TW113101291 A TW 113101291A TW 113101291 A TW113101291 A TW 113101291A TW I903348 B TWI903348 B TW I903348B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- code
- codeword
- currently
- reconstructed
- Prior art date
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本發明提供一種拜耳圖像影像之視訊編碼裝置,包含:一量化器、一量化器以及一可變長度編碼器。該量化器,用以根據一量化參數Q及一方程式,對一輸入像素及一目前預測像素之間的差值D進行量化,以產生一量化序列中之一量化值
,其中,該方程式為
Description
本發明係有關於視訊編解碼器(codec),特別地,尤有關於一種用以編碼及解碼拜耳圖像影像(Bayer pattern images)之裝置及方法。
數位相機、智慧型手機及其他成像(imaging)系統中,影像訊號處理器(image signal processor,ISP)是一特殊元件,主要功能是用來處理來自拜耳顏色濾波器陣列(Bayer color filter array,CFA)的原始輸出資料,並將其轉換為一高品質影像。在去馬賽克(demosaicing)步驟之前,ISP取得與拜耳圖像影像有關之低/標準動態範圍(low/standard dynamic range,LSDR)影像(各像素僅包含一種顏色)。於此階段,透過合併一連串具不同曝光時間的LSDR影像,ISP可產生一高動態範圍(high dynamic range,HDR)影像。因為這些LSDR影像是在不同時間點拍攝的,故這些LSDR影像會依序被壓縮並儲存於動態隨機存取記憶體(DRAM)內。之後,這些壓縮資料再從DRAM被讀回、解壓縮及被合併影像以產生HDR影像。因此,業界亟需一種無失真壓縮方案,令壓縮資料佔據較少的記憶體空間,並且使用者不會感受到任何畫質失真。
有鑒於上述問題,本發明的目的之一是提供一種拜耳圖像影像之視訊編碼裝置,令壓縮資料佔據較少的記憶體空間,並且使用者不會感受到任何畫質失真。
根據本發明之一實施例,係提供一種拜耳圖像影像之視訊編碼裝置,包含:一量化器、一預測器以及一可變長度編碼器。該量化器,用以根據一量化參數Q及一方程式,對一輸入像素及一目前預測像素之間的差值D進行量化,以產生一量化序列中之一量化值
,其中,該方程式為
。該預測器,耦接至該量化器,用以進行一組第一操作,包含:根據一目前區段在一目前拜耳圖像影像中的位置,提供該目前預測像素。該可變長度編碼器,耦接至該量化器,用以進行一組第二操作,包含:(1)計算連續零的數目ZR,其中ZR個連續零是位在該量化序列的下一個非零整數之前,或是位在該量化序列的末段;(2)以一第一碼字組,將該ZR個連續零編碼為一第一碼字;(3)以一第二碼字組,將該下一個非零整數編碼為一第二碼字;以及,(4)重複第二操作(1)至(3),直到處理完該量化序列中所有量化值為止,以產生一編碼位元組。其中,A滿足以下方程式:(Q
A +1)=N,以及其中N=2
d 2
n,n代表該輸入像素的位元寬度以及d為一整數。
本發明之另一實施例,係提供一種拜耳圖像影像之視訊編碼方法,包含以下步驟:根據一量化參數Q及一方程式,對一輸入像素及一目前預測像素之間的差值D進行量化,以產生一量化序列中之一量化值
,其中,該方程式為
;根據一目前區段在一目前拜耳圖像影像中的位置,提供該目前預測像素;計算連續零的數目ZR,其中ZR個連續零是位在該量化序列的下一個非零整數之前,或是位在該量化序列的末段;以一第一碼字組,將該ZR個連續零編碼為一第一碼字;以一第二碼字組,將該下一個非零整數編碼為一第二碼字;以及,重複該計算步驟、該將該ZR個連續零編碼為該第一碼字步驟以及該將該下一個非零整數編碼為該第二碼字步驟,直到處理完該量化序列中所有量化值為止,以產生一編碼位元組;其中,A滿足以下方程式:(Q
A +1)=N;以及,其中,N=2
d 2
n,n代表該輸入像素的位元寬度以及d為一整數。
本發明之另一實施例,係提供一種拜耳圖像影像之視訊解碼裝置,包含:一可變長度解碼器及一預測器。該可變長度解碼器,用以進行一組第一操作,包含:以交替的方式,比較一編碼位元組之前端位元樣式與一第一碼字組及一第二碼字組中所有的碼字,以產生一解碼數值,該解碼數值可以是一組連續零或是一個非零整數。該預測器,耦接至該可變長度解碼器,用以進行一組第二操作,包含:根據一目前重建區段在一目前重建拜耳圖像影像中的位置,提供一目前預測像素。
本發明之另一實施例,係提供一種拜耳圖像影像之視訊解碼方法,包含以下步驟:以交替的方式,比較一編碼位元組之前端位元樣式與一第一碼字組及一第二碼字組中所有的碼字,以產生一解碼數值,該解碼數值可以是一組連續零或是一個非零整數;以及,根據一目前重建區段相對於一目前重建拜耳圖像影像的位置,提供一目前預測像素。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他目的與優點詳述於後。
在通篇說明書及後續的請求項當中所提及的相關用語定義如下,除非本說明書中另有特別指明:「一」及「該」等單數形式的用語,都同時包含單數及複數的涵義;「/」的符號包含「或」與「及」的涵義。在通篇說明書中,具相同功能的電路元件使用相同的參考符號。
請注意,內嵌於ISP 120的編解碼系統100僅是示例,而非本發明之限制,實際實施時,編解碼系統100可採用任何其他的配置,例如內嵌於其他影像處理裝置,此亦落入本發明之範圍。
圖1係根據本發明一實施例,顯示一編解碼系統100的示例。參考圖1,編解碼系統100係內嵌於一成像系統(如數位相機)的ISP 120中。ISP 120從影像感應器110(如拜耳CFA)接收拜耳圖像影像,並於進行去馬賽克步驟之前,於去雜訊(denoising)、白平衡(white balancing)、色彩轉換(color transform)、曝光校正(exposure correction)及伽瑪校正(gamma correction)步驟之中,選擇性地進行零個或更多個步驟,以產生LSDR影像。在LSDR影像中,各像素只有一個顏色,並以8、10、12、14、或16位元資料(即位元寬度(bit width))來表示。因為這些LSDR影像是在不同時間點拍攝的,編解碼系統100依序壓縮這些LSDR影像,並儲存於DRAM 130,之後,編解碼系統100再從DRAM 130讀回資料壓縮資料及解壓縮資料,接著,ISP 120合併影像以產生HDR影像。圖1的實施例中的編解碼系統100包含圖2的區段(segment)編碼器200及圖5的區段解碼器500,同時,區段編碼器200及區段解碼器500係設置於ISP 120內。另一實施例中,區段編碼器200及區段解碼器500係分別設置於二個不同成像裝置/系統內。
圖2係根據本發明一實施例,顯示拜耳圖像影像之區段編碼器200的示意圖。參考圖2,本發明區段編碼器200包含一減法器210、一量化器(quantizer)220、一可變長度編碼器(variable length coder,VLC)230、一限幅器(clipper)240、一預測器(predictor)230、一加法器260以及一乘法器270。一般而言,各LSDR影像係分成多個區段(segment),且以逐區段及逐像素方式,饋入至區段編碼器200。以下詳述區段編碼器200及區段解碼器500的運作方式,且假設各區段寬度W為32個像素以及各像素只有一個顏色並以8位元(n=8)資料來表示,其中n代表輸入像素s[k]的位元寬度。
一目前LSDR影像的一目前區段的一輸入像素s[k]被饋入至減法器210,之後,減法器210將輸入像素s[k]的值減去目前預測像素p[k]的值,以得到一差值D,其中k=0~31。接著,量化器220根據一量化階層(step)/參數Q,對差值D進行量化,例如計算
,以產生一量化值delta,其中⌊ ⌋代表下取整函數(floor function)。然而,在計算機系統中,除法不容易實施,但乘法及往右移位(right shift)則相對容易實施。一實施例中,於量化器220中提供下列程式碼及方程式1以進行量化:
; // 方程式1
delta=D<0 ? -
:
; //若D<0,
delta= -
,否則,
delta=
其中,N及A都是整數。若輸入像素s[k]包含一n位元資料,則N=2
n。因為N是2的冪次方,故可用”往右移位(right shift)”來取代除法。例如,若N=4096,則須將分子(
)往右移12次/個位元,來得到
值。
圖3顯示N、Q及A值之間的關係。圖3中的A值為一整數且必須滿足條件:(Q
A +1)=N。選擇A值時,選定的N值必須大於或等於對應的2
n值。例如,假設n=10且Q=5,根據圖3,從最左邊數來第3行(column),沒有支援任何A值;此時,有二個選擇,可選擇對應N=4096之行的A=819,或選擇對應N=65536之行的A=13107,請注意上述二個對應的N值都大於2
10(n=10)。
圖4顯示具相同量化階層/參數Q=3的不同方程式經計算所得出的結果值的一部份(D值範圍從-3到14),其中方程式3(
)是習知的,而方程式1是根據N=4096及A=1365來計算。圖4表中的第二列顯示計算
的結果值,方程式2(
)則是源自
的修改版。從圖4可以觀察到,相較於第二列(row)的商,第三列(方程式2)的計算結果值的分布更加平均,且所有群組係以3的倍數為中心。為了逼近方程式2的計算結果值,業界之前已經公布方程式3。然而,很明顯的,第三列及第四列的資料並不匹配,以及對應方程式3之第四列中,D=0附近的資料也未平均分布;相反地,第三列(方程式2)及第五列(方程式1)的資料則完美地匹配。本發明方程式1的計算結果值絕對的正確性及平均分布,最小化量化錯誤(quantization error)並幫助進行無失真壓縮/解壓縮,其中,上述量化錯誤指的是差值D與其量化值delta之間的差值。
回到圖2,VLC 230係以本發明的運行值編碼方法(run value coding method)對一量化值delta序列進行編碼,以產生一編碼位元流(bitstream)。在本說明書中,「零運行(zero-run,ZR)」一詞指的是上述量化值delta序列中連續零的數目,而這些連續零是位在量化序列的下一個非零整數之前,或是位在量化序列的末段。表一顯示不同ZR(即連續零的不同數目)的編碼表。
| 表一 | |
| 碼字 | |
| ZR=0 | 1’b0 |
| ZR=1 | 2’b10 |
| ZR=2 | 3’b110 |
| ESC-run(ER)=3 | 4’b1110 |
| EOS | 4’b1111 |
於表一中,「區段末端(end of segment,EOS)」一詞指的是在上述量化值delta序列中,後續/剩餘的值(直到量化值delta序列的末端)都等於0。「逃離運行(ESC-run,ER)」一詞指的是在上述量化值delta序列中,連續零的預設數目;因此,在上述量化值delta序列中,當ZR> ER時,ZR個連續零會以ER加上(ZR-ER)個連續零來編碼。例如,7個連續零(ZR=7及ER=3)會以{3, 3, 1}的格式,亦即10’b1110111010來編碼。於表一中,五個碼字(codeword)為五個一元碼(unary code),分別對應上述量化值delta序列中,有0個零(即沒有零)、1個零、2個零、3個零、以及其剩餘值(直到序列的末端)都等於0。於表一中,各碼字(即各一元碼)採用ZR個1加上一個0來表示一對應的ZR值,然而,此非本發明之限制,於另一實施例中,各碼字(即各一元碼)係採用ZR個0加上一個1來表示一對應的ZR值。
表二顯示非零整數的編碼表。
| 表二 | |||
| 數值集合 | 階級 | 碼字 | |
| {+1, -1} | 0 | 2’b0s | |
| {+2, -2, +3, -3} | 1 | 4’b10xs | |
| {+4, -4, +5, -5, +6, -6, +7, -7} | 2 | 6’b110xxs | |
| {+8, -8, +9, -9, +10, -10, +11, -11, +12, -12, +13, -13, +14, -14, +15, -15} | 3 | 8’b1110xxxs | |
| …. | … | …. |
於表二中,x代表0或1,s代表delta值的正負號;另外,delta值的量越大,對應的碼字中的位元數/深度也越大。例如,若”s=+1”代表負號,delta值為-5會被編碼為碼字6’b110011,delta值為+8會被編碼為碼字8’b11100000。各碼字依序包含一階級碼、一索引碼及一符號碼,其中,該階級碼為一元碼。對於一個非零的delta值等於-9,利用一元編碼法來編碼其階級q,會產生一階級碼4’b1110,其中q=
=3;利用q位元且以二進位格式來表示一整數C=
modulo 2
q=1,以產生一索引碼3’b001;最後,附加一符號位元值1至索引碼,以形成碼字8’b11100011。於表二的各碼字中,各階級碼(即各一元碼)採用q個1加上一個0來表示一階級q,以及索引碼被排在階級碼及符號碼之間,然而,此非本發明之限制。於另一實施例中,於各碼字中,各階級碼(即各一元碼)採用q個0加上一個1來表示一階級q,以及符號碼被排在階級碼及索引碼之間。
本發明運行值編碼方法的特色之一是:根據表一及表二的編碼表,以交替的方式對連續零及一非零整數進行編碼。換言之,VLC 230的輸出包含二種標誌,二者一直重複直到區段結束。這二種標誌分別是代表ZR個連續零的第一碼字(由表一決定)及代表非零整數的第二碼字(由表二決定)。例如,在接收如下量化值delta序列(共W個量化值delta):{+2, -3, 0, 0, 0, 1, 4, 0, 0, 0, 0 …., 0}之後,VLC 230將(+2)視為”ZR=0加上(+2)”,並將其編碼為5’b01000(=1’b0+4’b1000);VLC 230將(-3)視為”ZR=0加上(-3)”, 並將其編碼為5’b01011(=1’b0+4’b1011);VLC 230將{0, 0, 0, 1}視為”ER=3、ZR=0加上(+1)”, 並將其編碼為7’b1110000(=4’b1110 + 1’b0 + 2’b00);VLC 230將序列末段中後續/剩餘的零:{0, 0, 0, 0 …., 0}視為EOS,並將其編碼為單一碼字4’1111。
一實施例中,於VLC 230中提供下列程式碼以對量化值delta序列進行編碼:
main(void) {
ZR =p= 0;
while (p<W) { // W 代表區段寬度
if (seq[p]==0) ZR++; // 首先,計算連續零的數目ZR;seq[.] 代表量化值delta序列
else {
encode_ZR(ZR); // 接著,對 ZR編碼
ZR = 0;
encode_value(seq[p]); // 最後,對一非零整數編碼
}
p++;
}
if (ZR>0) output ‘1111’; // 表示有EOS事件
}
encode_ZR(int ZR){
while (ZR>=3){
output ‘1110’; //表示有 ER 事件
ZR-=3; // 每跳三個零檢查一次ZR
}
if (ZR==0) output ‘0’; // 請參考表一的碼字
else if (ZR==1) output ‘10’;
else if (ZR==2) output ‘110’;
}
encode_Value (int value) {
if (value<0) sign=1;
else sign=0;
V = abs(value);
Le = 0; // Le 代表階級
bound = 2;
while (1) {
if (V < bound) break;
bound = bound*2;
Le=Le+1;
}
Base = bound/2;
Index = V – Base;
output Le consecutive ‘1’; //請參考表二的碼字
output ‘0’; // 輸出階級碼
output ‘Index’ with Le bits; // 輸出索引碼
output ‘sign’ with one bit; // 輸出符號碼
}
接著,乘法器270將各delta值乘上Q,以得到一乘積值cp,之後,加法器260將乘積值cp及目前預測值p[k]相加,以得到一總和V。然後,限幅器240根據最小值Mi及最大值Ma,接收該總和V,以產生一目前重建像素r[k],故Mi<=r[k]<=Ma。
一實施例中,於預測器 250中提供下列程式碼以進行預測:p[k]=k<=1? (bx==0? dc : r[W-2+k]) : r[k-2] ;
(bx, by)是上述目前區段的最左側像素於目前LSDR影像中的座標,W是目前區段的寬度,以及dc=2
n-1,其中bx=0~(Wi-1)及by=0~(Hi-1),而Wi及Hi分別代表各LSDR影像的寬度及高度。上述有關預測的程式碼進行下列步驟:(1)當k>1時,目前預測像素p[k]的值等於先前第二個重建像素(the second immediately preceding reconstructed pixel)r[k-2] 的值(若k>1,則p[k]=r[k-2]);(2) 若k<=1,則檢查bx是否等於0;(3)若bx=0,則表示上述目前區段係位在目前LSDR影像的最左側,故設定p[k]=dc=2
n-1;(4)若bx
0且k<=1,則設定p[k]=r[W-2+k],其中r[W]是一個大小為W、共用且可覆蓋的一維陣列。若bx
0,則表示上述目前區段不是位在目前LSDR影像的最左側。
圖5係根據本發明一實施例,顯示拜耳圖像影像之區段解碼器500的示意圖。參考圖5,本發明區段解碼器500包含一可變長度解碼器(variable length decoder,VLD)510、一限幅器240、一預測器520、一加法器260以及一乘法器270。大體來說,區段解碼器500所進行的解碼過程係相反於上述區段編碼器200所進行的編碼過程。VLD 510以交替的方式,比較編碼位元流的前端位元樣式(front/leading bit pattern)與表一及表二中所有的碼字,以在一解碼資料序列中產生一解碼數值delta,該解碼數值delta可以是一組連續零(即一連串的零)或是一個非零整數。換言之,VLD 510先比較編碼位元流的前端位元樣式與表一中所有的碼字以產生一對應解碼數值delta,再比較編碼位元流的下一個前端位元樣式與表二中所有的碼字以產生一對應解碼數值delta。依此方式,重複上述過程直到整個編碼位元流都處理完為止。詳情請參考後面的程式碼。
預測器250及520的結構及運作是類似的。例如,於預測器 520中提供下列程式碼以進行預測:p[k]=k<=1? (ax==0? dc : r[W-2+k]) : r[k-2] ;
(ax, ay)是上述目前重建區段的最左側像素於目前解壓縮/重建LSDR影像中的座標,k代表目前重建像素於該目前重建區段的索引值,W是目前重建區段的寬度,以及dc=2
n-1,其中k=0~(W-1)、ax=0~(Wi-1)及ay=0~(Hi-1),而Wi及Hi分別代表各重建LSDR影像的寬度及高度。上述有關預測器 520預測的程式碼進行下列步驟:(1)當k>1時,目前預測像素p[k]的值等於先前第二個重建像素r[k-2] 的值 (若k>1,則p[k]=r[k-2]);(2) 若k<=1,則檢查ax是否等於0;(3)若ax=0,則表示上述目前重建區段係位在目前重建LSDR影像的最左側,故設定p[k]=dc=2
n-1;(4)若ax
0且k<=1,則設定p[k]=r[W-2+k],其中r[W]是一個大小為W、共用且可覆蓋的一維陣列。若ax
0,則表示上述目前重建區段不是位在目前重建LSDR影像的最左側。
至於區段解碼器500的其餘元件(240、260及270),則與在區段編碼器200的運作方式相同,不再贅述。最後,區段解碼器500輸出目前重建區段的目前重建像素r[k]。32個重建像素(因為W=32)形成一重建區段,而一組重建區段形成一重建LSDR影像。一實施例中,於VLD 510中提供下列程式碼以對編碼位元流進行解碼:
main(void) {
p = 0;
while (p<W) { // W 代表區段寬度
{ZR, EOS} = Decode_Run_EOB(); // 先將”連續零” 解碼出來; 程式回傳 ZR 及 EOS
if (EOS) break; //若EOS 旗標被設定,就跳出while迴圈
for (i=0; i<ZR; i++) { //若ZR>0,解碼數值=連續零
seq[p] = 0;
p++;
}
{value} = Decode_Value(); // 再將 “非零整數” 解碼出來; 程式回傳值value=非零整數
seq[p] = value;
p++;
}
while (p<W) {
seq[p] = 0; //代表有一EOS事件
p++;
}
}
Decode_Run_EOB(){
Z=peep(4, ptr); // 從目前位址ptr讀出4個位元,再將讀出值指定給Z,但不改變ptr;Z是一個4位元變數;ptr 是一指標/位址,指向編碼位元流的最前端
EOS = 0;
ZR = 0;
if (Z==‘1111’) {
fetch(4, ptr); // 從目前位址ptr讀出4個位元,且將ptr 改為(ptr+4)
EOS=1;
exit;
}
else{
do {
if (Z==‘0xxx’)
ZR = ZR+0;
else if (Z==’10xx’)
ZR=ZR+1;
else if (Z==‘110x’)
ZR=ZR+2;
else if (Z==‘1110’) {
ZR=ZR+3;
fetch(4, ptr); // 從目前位址ptr讀出4個位元,且將ptr 改為(ptr+4)
Z=peep(4, ptr); // 從目前位址ptr讀出4個位元,再將讀出值指定給Z,但不改變ptr
return ZR,EOS;
}
} while(Z==‘1110’)
fetch (ZR+1, ptr); // 從目前位址ptr讀出(ZR+1)個位元,且將ptr 改為(ptr+(ZR+1))
}
Decode_Value () {
Level = 0;
do {
X=peep(8, ptr); // 從目前位址ptr讀出8個位元,再將讀出值指定給Z,但不改變ptr; X是一個8位元變數; ptr 是一指標/位址,指向編碼位元流的最前端
if (X==‘0xxxxxxx’)
level=level+0;
else if (X==’10xxxxxx’)
level=level+1;
else if (X==‘110xxxxx’)
level=level+2;
else if (X==‘1110xxxx’)
level=level+3;
else if (X==‘11110xxx’)
level=level+4;
else if (X==‘111110xx’)
level=level+5;
else if (X==‘1111110x’)
level=level+6;
else if (X==‘11111110’)
level=level+7;
else {
level = level+8; // 連續1的數目是大於或等於8
fetch (8, ptr); // 從目前位址ptr讀出8個位元,且將ptr 改為(ptr+8)
}
} while(X==‘11111111’);
index=fetch(level, ptr); // 從目前位址ptr讀出level個位元,再將讀出值指定給index,且將ptr 改為(ptr+level)
sign=fetch(1, ptr); // 從目前位址ptr讀出一個位元,再將讀出值指定給sign,且將ptr 改為(ptr+1)
value = (sign?-1:1)*((1<<level)+index);
return value;
}
在上述程式碼中,函數peep(m, ptr)代表從目前指標/位址ptr讀出m個位元,但不改變ptr;函數fetch(m, ptr)代表從目前指標/位址ptr讀出m個位元,且將ptr 改為(ptr+m),其中,ptr 是一指標/位址,指向編碼位元流的最前端。
簡言之,本發明區段編碼器200的壓縮率是大於或等於2x;此外,區段編碼器200輸出的編碼位元流在區段解碼器500中可以數學方式逆轉以及解壓縮,以產生一高品質重建影像,因此,在人類的眼睛看來,是完全相同於輸入影像(饋入至區段編碼器200)。再者,本發明利用表一及表二的編碼表來進行編碼及解碼的過程是既簡單又準確。
本發明區段編碼器200及區段解碼器500可以軟體、客製化硬體(如現場可程式閘陣列(field programmable gate array)或一特殊應用積體電路(application specific integrated circuit))、或軟體(或韌體)及硬體的組合來實施。一較佳實施例中,區段編碼器200中的VLC 230及預測器250係利用至少一第一儲存裝置以及至少一第一一般用途(general-purpose)處理器來實施;區段解碼器500中的VLD 510及預測器520係利用至少一第二儲存裝置以及至少一第二一般用途處理器來實施。該至少一第一儲存裝置儲存一第一處理器可執行程式,而該至少一第二儲存裝置儲存一第二處理器可執行程式。當該至少一第一一般用途處理器執行該第一處理器可執行程式時,該至少一第一一般用途處理器被組態(configured)以運作有如:VLC 230及預測器250。當該至少一第二一般用途處理器執行該第二處理器可執行程式時,該至少一第二一般用途處理器被組態以運作有如:VLD 510及預測器520。
上述僅為本發明之較佳實施例而已,而並非用以限定本發明的申請專利範圍;凡其他未脫離本發明所揭示之精神下所完成的等效改變或修飾,均應包含在下述申請專利範圍內。
110:影像感應器
120:ISP
130:DRAM
200:區段編碼器
210:減法器
220:量化器
230:可變長度編碼器
240:限幅器
250、510:預測器
260:加法器
270:乘法器
500:區段解碼器
510:可變長度解碼器
[圖1] 係根據本發明一實施例,顯示一編解碼系統100的示例。
[圖2] 係根據本發明一實施例,顯示拜耳圖像影像之區段編碼器200的示意圖。
[圖3]顯示N、Q及A值之間的關係。
[圖4]顯示具相同量化階層/參數Q=3的不同方程式經計算所得出的結果值的一部份(D值範圍從-3到14)。
圖5係根據本發明一實施例,顯示拜耳圖像影像之區段解碼器500的示意圖。
200:區段編碼器
210:減法器
220:量化器
230:可變長度編碼器
240:限幅器
250:預測器
260:加法器
270:乘法器
Claims (28)
- 一種拜耳圖像影像之視訊編碼裝置,包含: 一量化器,用以根據一量化參數Q及一方程式,對一輸入像素及一目前預測像素之間的差值D進行量化,以產生一量化序列中之一量化值 ,其中,該方程式為 ; 一預測器,耦接至該量化器,用以進行一組第一操作,包含:根據一目前區段在一目前拜耳圖像影像中的位置,提供該目前預測像素;以及 一可變長度編碼器,耦接至該量化器,用以進行一組第二操作,包含:(1)計算連續零的數目ZR,其中ZR個連續零是位在該量化序列的下一個非零整數之前,或是位在該量化序列的末段;(2)以一第一碼字組,將該ZR個連續零編碼為一第一碼字;(3)以一第二碼字組,將該下一個非零整數編碼為一第二碼字;以及,(4)重複該些第二操作(1)至(3),直到處理完該量化序列中所有量化值為止,以產生一編碼位元組; 其中,A滿足以下方程式:(Q A +1)=N;以及 其中,N=2 d 2 n,n代表該輸入像素的位元寬度以及d為一整數。
- 如請求項1之裝置,更包含: 一減法器,耦接在該量化器及該預測器之間,用以將該輸入像素的值減去該目前預測像素的值,以產生該差值D。
- 如請求項1之裝置,更包含: 一乘法器,耦接在該量化器及該可變長度編碼器之間,用以將該量化值乘上Q,以得到一乘積值;以及 一加法器,耦接在該預測器及該乘法器之間,用以將該乘積值與該目前預測像素相加,以得到一目前重建像素。
- 如請求項1之裝置,其中該第一碼字組包含一第一一元碼、一第二一元碼、一第三一元碼、一第四一元碼以及一第五一元碼,係分別對應該量化序列中之0個零、1個零、2個零、3個零以及後續的量化值都等於零,以及其中該第一碼字組中各一元碼的長度皆少於5個位元。
- 如請求項4之裝置,其中該(2)以該第一碼字組,將該ZR個連續零編碼為該第一碼字之第二操作包含: 當ZR>=3以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時, (21)產生該第四一元碼當作該第一碼字的一部份, (22)將ZR設定等於(ZR-3),以及 (23)重複該第二操作(21)及(22)直到ZR<3; 當ZR=0以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第一一元碼當作該第一碼字的一部份; 當ZR=1以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第二一元碼當作該第一碼字的一部份; 當ZR=2以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第三一元碼當作該第一碼字的一部份;以及 當ZR>0以及該ZR個連續零係位在該量化序列的末段時,設定該第一碼字等於該第五一元碼。
- 如請求項1之裝置,其中該第二碼字組的各碼字包含一階級碼及一索引碼,其中該(3)以該第二碼字組,將該下一個非零整數編碼為該第二碼字之第二操作包含: 利用一元編碼方式將q編碼,以產生該階級碼,其中q= 以及B代表該下一個非零整數;以及 利用(q+1)個位元及二進位格式來表示一整數C,以形成該索引碼,其中C= modulo 2 q,以及該索引碼之(q+1)個位元中的其一位元為一符號位元係對應至B的符號。
- 如請求項1之裝置,其中該提供該目前預測像素之第一操作包含: 當k>1時,提供該目前預測像素的值等於一先前第二個重建像素的值; 當該目前區段係位在該目前拜耳圖像影像的最左側時,提供該目前預測像素的值等於2 n-1; 當該目前區段不是位在該目前拜耳圖像影像的最左側且k=0時,提供該目前預測像素的值等於對應於上一個區段之最後第二個重建像素的值;以及 當該目前區段不是位在該目前拜耳圖像影像的最左側且k=1時,提供該目前預測像素的值等於對應於上一個區段之最後一個重建像素的值; 其中,k代表該輸入像素於該目前區段中的索引數。
- 一種拜耳圖像影像之視訊編碼方法,包含以下步驟: 根據一量化參數Q及一方程式,對一輸入像素及一目前預測像素之間的差值D進行量化,以產生一量化序列中之一量化值 ,其中,該方程式為 ; 根據一目前區段在一目前拜耳圖像影像中的位置,提供該目前預測像素; 計算連續零的數目ZR,其中該ZR個連續零是位在該量化序列的下一個非零整數之前,或是位在該量化序列的末段; 以一第一碼字組,將該ZR個連續零編碼為一第一碼字; 以一第二碼字組,將該下一個非零整數編碼為一第二碼字;以及 重複該計算步驟、該將該ZR個連續零編碼為該第一碼字步驟以及該將該下一個非零整數編碼為該第二碼字步驟,直到處理完該量化序列中所有量化值為止,以產生一編碼位元組; 其中,A滿足以下方程式:(Q A +1)=N;以及 其中,N=2 d 2 n,n代表該輸入像素的位元寬度以及d為一整數。
- 如請求項8之方法,更包含: 將該輸入像素的值減去該目前預測像素的值,以產生該差值D。
- 如請求項8之方法,更包含: 將該量化值乘上Q,以得到一乘積值;以及 將該乘積值與該目前預測像素相加,以得到一目前重建像素。
- 如請求項8之方法,其中該第一碼字組包含一第一一元碼、一第二一元碼、一第三一元碼、一第四一元碼以及一第五一元碼,係分別對應該量化序列中之0個零、1個零、2個零、3個零以及後續的量化值都等於零,以及其中該第一碼字組中各一元碼的長度皆少於5個位元。
- 如請求項11之方法,其中該將該ZR個連續零編碼為該第一碼字之步驟包含: 當ZR>=3以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時, (a)產生該第四一元碼當作該第一碼字的一部份, (b)將ZR設定等於(ZR-3), (c)重複該步驟(a)及(b)直到ZR<3; 當ZR=0以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第一一元碼當作該第一碼字的一部份; 當ZR=1以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第二一元碼當作該第一碼字的一部份; 當ZR=2以及該ZR個連續零係位在該量化序列的該下一個非零整數之前時,產生該第三一元碼當作該第一碼字的一部份; 當ZR>0以及該ZR個連續零係位在該量化序列的末段時,設定該第一碼字等於該第五一元碼。
- 如請求項8之方法,其中該第二碼字組的各碼字包含一階級碼及一索引碼,其中該將該下一個非零整數編碼為該第二碼字之步驟包含: 利用一元編碼方式將q編碼,以得到該階級碼,其中q= 以及B代表該下一個非零整數; 利用(q+1)個位元及二進位格式來表示一整數C,以形成該索引碼,其中C= modulo 2 q,以及該索引碼之(q+1)個位元中的其一位元為一符號位元係對應至B的符號。
- 如請求項8之方法,其中該提供該目前預測像素之步驟包含: 當k>1時,提供該目前預測像素的值等於一先前第二個重建像素的值; 當該目前區段係位在該目前拜耳圖像影像的最左側時,提供該目前預測像素的值等於2 n-1; 當該目前區段不是位在該目前拜耳圖像影像的最左側且k=0時,提供該目前預測像素的值等於對應於上一個區段之最後第二個重建像素的值;以及 當該目前區段不是位在該目前拜耳圖像影像的最左側且k=1時,提供該目前預測像素的值等於對應於上一個區段之最後一個重建像素的值; 其中,k代表該輸入像素於該目前區段中的索引數。
- 一種拜耳圖像影像之視訊解碼裝置,包含: 一可變長度解碼器,用以進行一組第一操作,包含:以交替的方式,比較一編碼位元組之前端位元樣式與一第一碼字組及一第二碼字組中所有的碼字,以產生一解碼數值,該解碼數值可以是一組連續零或是一個非零整數;以及 一預測器,耦接至該可變長度解碼器,用以進行一組第二操作,包含:根據一目前重建區段在一目前重建拜耳圖像影像中的位置,提供一目前預測像素。
- 如請求項15之裝置,更包含: 一乘法器,耦接至該可變長度解碼器,用以將該解碼數值乘上一量化參數,以得到一乘積值;以及 一加法器,耦接在該預測器及該乘法器之間,用以將該乘積值與該目前預測像素相加,以得到該目前重建區段之一目前重建像素。
- 如請求項15之裝置,其中該第一碼字組包含多個一元碼,其中該些一元碼的長度少於5個位元並對應至該解碼數值之不同數目的連續零,以及其中該第二碼字組包含一階級碼及一索引碼。
- 如請求項17之裝置,其中該第一碼字組包含一第一一元碼、一第二一元碼、一第三一元碼以及一第四一元碼分別對應該解碼數值等於0個零、1個零、2個零以及3個零,以及其中該第一碼字組另包含一第五一元碼對應該目前重建區段中後續的解碼數值均等於零。
- 如請求項18之裝置,其中該比較之第一操作包含: 重置ZR,其中ZR代表連續零的數目; 比較具4個位元的該前端位元樣式與該第一碼字組的五個一元碼; 當該前端位元樣式與該第五一元碼匹配時,設定該目前重建區段中後續的解碼數值均等於零; 當該前端位元樣式與該第四一元碼匹配時, (1)將ZR加3,(2)移除該編碼位元流的前4個位元,以更新該前端位元樣式,以及(3)重複第一操作(1)至(2),直到該前端位元樣式不匹配該第四一元碼為止; 當該前端位元樣式與該第一一元碼匹配時,維持ZR不變; 當該前端位元樣式與該第二一元碼匹配時,將ZR加1; 當該前端位元樣式與該第三一元碼匹配時,將ZR加2;以及 當ZR>0時,提供該解碼數值包含ZR個連續零。
- 如請求項17之裝置,其中該比較之第一操作包含: 計算該前端位元樣式中連續的預設位元值的數目 ,以得到該階級碼,其中,該階級碼為一個一元碼; 移除該編碼位元流的前( +1) 個位元,以提供接下來具( +1) 個位元的前端位元樣式當作該索引碼;以及 根據該階級碼及該索引碼,得到該解碼數值; 其中,該索引碼之( +1)個位元之其一為一符號位元。
- 如請求項15之裝置,其中該提供該目前預測像素之第二操作包含: 當k>1時,提供該目前預測像素的值等於一先前第二個重建像素的值; 當該目前重建區段係位在該目前重建拜耳圖像影像的最左側時,提供該目前預測像素的值等於2 n-1; 當該目前重建區段不是位在該目前重建拜耳圖像影像的最左側且k=0時,提供該目前預測像素的值等於對應於上一個重建區段之最後第二個重建像素的值;以及 當該目前重建區段不是位在該目前重建拜耳圖像影像的最左側且k=1時,提供該目前預測像素的值等於對應於上一個重建區段之最後一個重建像素的值; 其中,k代表該目前重建像素於該目前重建區段中的索引數。
- 一種拜耳圖像影像之視訊解碼方法,包含以下步驟: 以交替的方式,比較一編碼位元組之前端位元樣式與一第一碼字組及一第二碼字組中所有的碼字,以產生一解碼數值,該解碼數值可以是一組連續零或是一個非零整數;以及 根據一目前重建區段相對於一目前重建拜耳圖像影像的位置,提供一目前預測像素。
- 如請求項22之方法,更包含: 將該解碼數值乘上一量化參數,以得到一乘積值;以及 將該乘積值與該目前預測像素相加,以得到該目前重建區段之一目前重建像素。
- 如請求項22之方法,其中該第一碼字組包含多個一元碼,其中該些一元碼的長度少於5個位元並對應至該解碼數值之不同數目的連續零,以及其中該第二碼字組包含一階級碼及一索引碼。
- 如請求項24之方法,其中該第一碼字組包含一第一一元碼、一第二一元碼、一第三一元碼以及一第四一元碼分別對應該解碼數值等於0個零、1個零、2個零以及3個零,其中該第一碼字組另包含一第五一元碼對應至該目前重建區段中後續的解碼數值均等於0。
- 如請求項25之方法,其中該比較步驟包含: 重置ZR,其中ZR代表連續零的數目; 比較具4個位元的該前端位元樣式與該第一碼字組的五個一元碼; 當該前端位元樣式與該第五一元碼匹配時,設定該目前重建區段中後續的解碼數值均等於0; 當該前端位元樣式與該第四一元碼匹配時, (1)將ZR加3,(2)移除該編碼位元流的前4個位元,以更新該前端位元樣式,以及(3)重複步驟 (1)至(2),直到該前端位元樣式不匹配該第四一元碼為止; 當該前端位元樣式與該第一一元碼匹配時,維持ZR不變; 當該前端位元樣式與該第二一元碼匹配時,將ZR加1; 當該前端位元樣式與該第三一元碼匹配時,將ZR加2;以及 當ZR>0時,提供該解碼數值包含ZR個連續零。
- 如請求項24之方法,其中該比較步驟包含: 計算該前端位元樣式中連續的預設位元值數目 ,以得到該階級碼,其中,該階級碼為一個一元碼; 移除該編碼位元流的前( +1)個位元,以提供接下來具( +1)個位元的前端位元樣式當作該索引碼;以及 根據該階級碼及該索引碼,得到該解碼數值; 其中,該索引碼之( +1)個位元之其一為一符號位元。
- 如請求項22之方法,其中該提供之第二操作包含: 當k>1時,提供該目前預測像素的值等於一先前第二個重建像素的值; 當該目前重建區段係位在該目前重建拜耳圖像影像的最左側時,提供該目前預測像素的值等於2 n-1; 當該目前重建區段不是位在該目前重建拜耳圖像影像的最左側且k=0時,提供該目前預測像素的值等於對應於上一個重建區段之最後第二個重建像素的值;以及 當該目前重建區段不是位在該目前重建拜耳圖像影像的最左側且k=1時,提供該目前預測像素的值等於對應於上一個重建區段之最後一個重建像素的值; 其中,k代表該目前重建像素於該目前重建區段中的索引數。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW113101291A TWI903348B (zh) | 2024-01-12 | 2024-01-12 | 用以編碼及解碼拜耳圖像影像之裝置及方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW113101291A TWI903348B (zh) | 2024-01-12 | 2024-01-12 | 用以編碼及解碼拜耳圖像影像之裝置及方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202529441A TW202529441A (zh) | 2025-07-16 |
| TWI903348B true TWI903348B (zh) | 2025-11-01 |
Family
ID=97225097
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113101291A TWI903348B (zh) | 2024-01-12 | 2024-01-12 | 用以編碼及解碼拜耳圖像影像之裝置及方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI903348B (zh) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090067734A1 (en) * | 2007-08-16 | 2009-03-12 | Nokia Corporation | Methods and apparatuses for encoding and decoding an image |
| CN101578769B (zh) * | 2006-11-14 | 2012-11-21 | 高通股份有限公司 | 用于可变长度码的存储器有效译码的方法和装置 |
| CN112889281A (zh) * | 2018-11-26 | 2021-06-01 | 华为技术有限公司 | 对图像中的块进行帧内预测的方法 |
-
2024
- 2024-01-12 TW TW113101291A patent/TWI903348B/zh active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101578769B (zh) * | 2006-11-14 | 2012-11-21 | 高通股份有限公司 | 用于可变长度码的存储器有效译码的方法和装置 |
| US20090067734A1 (en) * | 2007-08-16 | 2009-03-12 | Nokia Corporation | Methods and apparatuses for encoding and decoding an image |
| CN112889281A (zh) * | 2018-11-26 | 2021-06-01 | 华为技术有限公司 | 对图像中的块进行帧内预测的方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202529441A (zh) | 2025-07-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11671599B2 (en) | Data encoding and decoding | |
| EP3588951B1 (en) | Guaranteed data compression | |
| TWI658702B (zh) | 資料編碼及解碼 | |
| CN101816182B (zh) | 图像编码装置、图像编码方法、图像编解码系统 | |
| CN105850125B (zh) | 数据编码和解码 | |
| EP3588961B1 (en) | Guaranteed data compression | |
| EP3588960A1 (en) | Guaranteed data compression | |
| US20220256193A1 (en) | Data encoding and decoding | |
| JP2003032677A (ja) | 動画像圧縮符号化装置 | |
| US20180192051A1 (en) | Method and Device for Digital Data Compression with Sign Bit Removal | |
| JP2526505B2 (ja) | 画像処理装置 | |
| TWI903348B (zh) | 用以編碼及解碼拜耳圖像影像之裝置及方法 | |
| EP0635807B1 (en) | Coding apparatus for image compression | |
| US7643695B2 (en) | Image coding apparatus and its control method, and computer program and computer readable storage medium | |
| US12457348B2 (en) | Apparatus and method for encoding and decoding Bayer pattern images | |
| EP1889486A2 (en) | Compression and decompression using corrections of predicted values | |
| JP6635312B2 (ja) | 画像処理装置および方法 | |
| KR100221337B1 (ko) | Mpeg-2 복호화기의 역양자화기 | |
| JP2924416B2 (ja) | 高能率符号化方法 | |
| JP3845208B2 (ja) | 画像圧縮装置および画像伸張装置 | |
| JPH11338853A (ja) | 画像符号化方法 | |
| Kikuchi et al. | Lossless compression of LogLuv32 HDR images by simple bitplane coding | |
| JP2991767B2 (ja) | 量子化回路 | |
| Syntax | SMPTE REGISTERED DISCLOSURE DOCUMENT | |
| WO2024123474A1 (en) | Extended bit-range in heif |