0階指數哥倫布編碼

指數哥倫布編碼

規定語法元素的編解碼模式的描述符如下:
比特串:
b(8):任意形式的8比特字節(就是為了說明語法元素是為8個比特,沒有語法上的含義)
f(n):n位固定模式比特串(其值固定,如forbidden_zero_bit的值恒為0
i(n):使用n比特的有符號整數(語法中沒有采用此格式)
u(n):n位無符號整數

指數哥倫布編碼
ue(v):無符號整數指數哥倫布碼編碼的語法元素
se(v):有符號整數指數哥倫布編碼的語法元素,左位在先
te(v):舍位指數哥倫布碼編碼語法元素,左位在先

以及ce(v):CAVLC和ae(v):CABAC。

指數哥倫布編碼過程:
在表9-1中,比特串格式為“前綴1后綴”。1)1后綴=codeNum+1,如codeNum = 3,則1后綴=4,即為100,后綴為00;2)前綴與后綴的比特數相同,且前綴的各位比特為0,如codeNum=3,則最終編碼所得的比特串為:00100.

對于ue(v),按上述規則進行編碼;

對于se(v),則按照表9-3轉換成codeNum,然后按上述規則進行編碼;
在表9-3中,1)語法元素值為負數,則乘2取反,轉換成codeNum,2)語法元素為正數,則乘2減1,轉換成codeNum;

對于te(v),只有7.3.5.1節“宏塊預測語法”和7.3.5.2節“子宏塊預測語法”中的ref_idx_l0[mbPartIdx]ref_idx_l1[mbPartIdx]用此模式編碼,
如果語法元素值為0,則編碼為1,如果語法元素值為1,則編碼為0,如果為其他大于1的值,則按ue(v)進行編碼。


---------------------------------------------------

用來表示非負整數的k階指數哥倫布碼可用如下步驟生成:

?? 1. 將數字以二進制形式寫出,去掉最低的k個比特位,之后加1
?? 2. 計算留下的比特數,將此數減一,即是需要增加的前導零個數
?? 3. 將第一步中去掉的最低k個比特位補回比特串尾部

0階指數哥倫布碼如下所示:

0 => 1 => 1
1 => 10 => 010
2 => 11 => 011
3 => 100 => 00100
4 => 101 => 00101
5 => 110 => 00110
6 => 111 => 00111
7 => 1000 => 0001000
8 => 1001 => 0001001

小波變換在圖像壓縮中的應用

小波變換在圖像壓縮中的應用

?

施吉鳴

?

摘要:近十幾年來小波理論研究已成為應用數學的一個新方向。作為數學工具,小波被迅速應用到圖像和語音分析等眾多領域。本文試圖從工程和實驗角度出發,較為直觀地探討小波變換在圖像壓縮中的應用。

關鍵詞:小波 變換 重構 圖像壓縮

?

1、小波概述

??? 小波(wavelet)是定義在有限間隔且平均值為0的函數,小波函數多以開發者名字命名,如圖1所示:

?

圖1 部分小波

?


??? 眾所周知,傅立葉分析是把一個信號分解成各種不同頻率的正弦波,因此正弦波是傅立葉變換的基函數。同樣,小波分析是把一個信號分解成由原始小波經過移位和縮放后的一系列小波,因此小波是小波變換的基函數,即小波可用作表示一些函數的基函數。

小波是近十幾年才發展并迅速應用到圖像和語音分析等眾多領域的數學工具,是繼110多年前建立傅立葉(Joseph Fourier)分析之后的一個重大突破。經過十幾年的努力,小波理論基礎已經基本建立并成為應用數學的一個新領域,引起了眾多數學家和工程技術人員的極大關注,是國際上科技學術界高度關注的前沿領域。本文試圖從工程和實驗角度出發,較為直觀地探討小波變換在圖像壓縮中的應用。

?

2、小波變換和重構

??? 小波變換的基本思想是用一組小波或基函數表示一個函數或信號,例如圖像信號。以哈爾(Haar)小波基函數為例,基本哈爾小波函數(Haar wavelet function)定義如下:

????????????????????? 1,? 當0≤x<1/2

?????????? Ψ(x) =?? -1,? 當1/2≤x<1

???????????????? 0,? 其他

設有一幅分辨率只有4個像素的一維圖像,對應像素值為:[9? 7? 3? 5]。用哈爾小波變換的過程是:計算相鄰像素對的平均值(averaging,亦可稱之為近似值approximation),得到一幅分辨率為原圖像1/2的新圖像:[8? 4]。這時圖像信息已部分丟失,為了能從2個像素組成的圖像重構出4個像素的原圖像,必須把每個像素對的第一個像素值減這個像素的平均值作為圖像的細節系數(detail coefficient)保存。因此,原圖像可用下面的兩個平均值和兩個細節系數表示:[8? 4? 1? -1]。可以把第一步變換得到的圖像進一步變換,原圖像兩級變換的過程如表1所示:

表1 哈爾小波變換過程

分辨率

平均值

細節系數

4

[9? 7? 3? 5]

?

2

[8? 4]

[1? -1]

1

[6]

[2]

?

哈爾變換過程事實上是用求均值和差值的方法對函數或圖像進行分解,對于f(x)=[9? 7? 3? 5],我們可作最多2層的分解。

對于2維圖像,同樣可以用依次對行列進行小波變換得到2維圖像的分解。這時經過一次小波變換得到是2維圖像的近似值(CA)以及水平(CH)、垂直(CV)和對角(CD)細節分量值。顯然,從2維圖像的CA、CH、CV和CD值可以重構出原來的2維圖像。

?

3、圖像壓縮

事實上,去掉某些經過小波變換得到的細節分量值對重構圖像的質量影響不大。具體的做法是設置一個閾值δ,例如把≤δ的經小波變換得到的水平(CH)、垂直(CV)和對角(CD)細節分量值細節分量值置為0,

?

圖2 小波圖像變換過程

這樣就實現了圖像壓縮。

為了驗證圖像壓縮的效果,筆者使用數學軟件工具MATLAB 6.1設計了3級非標準小波變換和重構圖像程序function [ ] = report(picname),同時以分辨率256×256的真彩色照片為測試圖像,通過執行程序完成了閾值δ分別為0,5,10和20的情況下利用Haar小波進行變換變換和重構過程。

??? 以使用Haar小波,閾值等于10,真彩色圖像G分量為例,小波圖像變換過程如圖2所示。

?

4、實驗結論

??? 用report('jimm')對jimm_org.png真彩圖像文件計算閾值分別為0,5,10和20的情況下進行3級非標準haar小波變換和重構后,系數為“0"的數目和以PNG格式存儲的重構圖像文件大小,實驗結果得到圖像測試表如表2所示:

表2 圖像測試表

圖像名稱

閾值

系數為“0"的數目

PNG文件大小

原始圖像jimm_org.png

103KB

重構圖像 jimm_haar_00.png

δ=0

19527

103KB

重構圖像jimm_haar_05.png

δ≤5

123261

84KB

重構圖像jimm_haar_10.png

δ≤10

155003

61KB

重構圖像jimm_haar_20.png

δ≤20

175655

38KB

?

圖3表示了在不同閾值下的重構圖像:

?

圖3 不同閾值下的重構圖像

?

從圖像測試表和觀察不同閾值下的重構圖像可得出以下結論:

u??????? 可利用小波變換與重構對圖像文件進行壓縮。

u??????? 通常在給定小波基函數條件下,閥值越大,系數為0的數目就越多,重構圖像文件壓縮率也越高,重構的圖像失真程度隨之增加。

u??????? 閥值>0時,利用小波變換與重構進行圖像壓縮是一種有損壓縮方法,可以根據實際需要在圖像失真度允許的范圍內選擇適當的閥值來確定壓縮率。

?

參考文獻

???? [1] 林福宗,《小波與小波變換》,清華大學計算機科學與技術系智能技術與系統國家重點實驗室,2001-9-25.

??? [2] The MathWorks, Inc., Wavelet Toolbox. Version 2.1 (R12.1), MATLAB 6.1 06-Apr-2001.



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453966.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TensorFolw 報錯

1、報錯1&#xff1a;ValueError: Only call softmax_cross_entropy_with_logits with named arguments (labels..., logits..., ...) 提示出錯如下&#xff1a; Traceback (most recent call last):File "/MNIST/softmax.py", line 12, in <module>cross_en…

CentOS7種搭建FTP服務器

安裝vsftpd 首先要查看你是否安裝vsftp [rootlocalhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 #顯示也就安裝成功了&#xff01; 如果沒有則安裝vsftpd [rootlocalhost/]# yum install -y vsftpd 完成后再檢查一遍 [rootlocalhost /]# whereis vsftpd vsf…

js循環

順序——要加分號結束 分支&#xff1a;讓程序根據條件不同執行不同的代碼 if else語句用來做分支的 if&#xff08;條件&#xff09;{代碼} if&#xff08;條件&#xff09;{代碼}else{代碼} else if&#xff08;條件&#xff09;{代碼} if是嵌套。 switch...case&#xff1…

x264函數調用關系圖

1 encoder 2 slice write 3 analyse FFMPEG中MPEG-2編解碼函數調用關系圖 1 Encoder &#xff08;函數調用從左到右&#xff0c;下同&#xff1b;圖片顯示不全時&#xff0c;請下載顯示&#xff09; 2 P幀運動估計流程圖 3 B幀運動估計流程圖 4 decoder ffmpeg的mpeg2編碼I幀代…

Tensorflow 加載預訓練模型和保存模型

使用tensorflow過程中&#xff0c;訓練結束后我們需要用到模型文件。有時候&#xff0c;我們可能也需要用到別人訓練好的模型&#xff0c;并在這個基礎上再次訓練。這時候我們需要掌握如何操作這些模型數據。看完本文&#xff0c;相信你一定會有收獲&#xff01; 一、Tensorfl…

在 ActiveReports 中嵌入 Spread 控件

Spread 是一款很出色的表格控件&#xff0c;Spread 可以使開發人員把具有兼容 Microsoft Excel 的電子表格添加到程序中。ActiveReports 提供了一個非常靈活的、簡單的報表環境。下面將展示怎樣在 ActiveReports 中使用 Spread for WinForm。和其他三方控件一樣&#xff0c;Spr…

sort()函數、C++

Sort&#xff08;&#xff09;函數是c一種排序方法之一&#xff0c;它使用的排序方法是類似于快排的方法&#xff0c;時間復雜度為n*log2(n) &#xff08;1&#xff09;Sort函數包含在頭文件為#include<algorithm>的c標準庫中。 II&#xff09;Sort函數有三個參數&#x…

python waitkey_python中VideoCapture(),read(),waitKey()的使用

有以下程序import cv2cap cv2.VideoCapture(0)while cap.isOpened():ret,frame cap.read()cv2.imshow(frame,frame)c cv2.waitKey(1)if c 27:breakcap.release()cv2.destroyAllWindows()說明&#xff1a;程序段里&#xff0c;1、cv2.VideoCapture()函數&#xff1a;cap cv…

深度學習案例之 驗證碼識別

本項目介紹利用深度學習技術&#xff08;tensorflow&#xff09;&#xff0c;來識別驗證碼&#xff08;4位驗證碼&#xff0c;具體的驗證碼的長度可以自己生成&#xff0c;可以在自己進行訓練&#xff09; 程序分為四個部分 1、生成驗證碼的程序&#xff0c;可生成數字字母大…

windows下使用pthread庫

最近在看《C多核高級編程》這本書&#xff0c;收集了些有用的東西&#xff0c;方便在windows下使用POSIX標準進行Pthread開發&#xff0c;有利于跨平臺。 -------------------------------------------------- windows下使用pthread庫時間:2010-01-27 07:41來源:羅索工作室 作…

day 05 多行輸出與多行注釋、字符串的格式化輸出、預設創建者和日期

msg"hello1 hello2 hello3 " print(msg) 顯示結果為&#xff1a; # " "只能進行單行的字符串 多行字符串用 ,前面設置變量&#xff0c;可以用 表示多行 msghello1 hello2 hello3print(msg) 顯示結果為&#xff1a; 當然如果沒有設置變量&#xff0c;…

python數值計算guess_【python】猜數字game,旨在提高初學者對Python循環結構的使用...

import random #引入生成隨機數的模塊需求&#xff1a;程序設定生成 1-20 之間的一個隨機數&#xff0c;讓用戶猜日期&#xff1a;2019-10-21作者&#xff1a;xiaoxiaohui目的&#xff1a;猜數字game&#xff0c;旨在提高初學者對Python 變量類型以及循環結構的使用。secretNu…

調試九法-總體規則

調試規則規則1 理解系統規則2 制造失敗規則3 不要想&#xff0c;而要看規則4 分而治之規則5 一次只改一個地方規則6 保持審計跟蹤規則7 檢查插頭規則8 獲得全新觀點規則9 如果你不修復bug&#xff0c;它將依然存在轉載于:https://www.cnblogs.com/uetucci/p/7987805.html

深度學習之循環神經網絡(Recurrent Neural Network,RNN)

遞歸神經網絡和循環神經網絡 循環神經網絡&#xff08;recurrent neural network&#xff09;&#xff1a;時間上的展開&#xff0c;處理的是序列結構的信息&#xff0c;是有環圖遞歸神經網絡&#xff08;recursive neural network&#xff09;&#xff1a;空間上的展開&#…

從北京回來的年輕人,我該告訴你點什么?

前言 就在上周末&#xff0c;我與公眾號里的一個當地粉絲見面了&#xff0c;一起吃了頓飯&#xff0c;順便聊了聊。先來簡單交代下我們這位粉絲&#xff08;以下簡稱小L&#xff09;的經歷以及訴求。 小L之前在北京八維研修學院培訓的PHP&#xff0c;因為家庭原因&#xff0c;沒…

Linphone編譯【轉載】

Linphone依賴太多的庫&#xff0c;以致于稍有疏失&#xff0c;就會在編譯&#xff0c;運行出錯&#xff0c;都是由于依賴庫安裝的問題。 1 基礎知識 1.1 動態庫的連接 很多人安裝完庫后&#xff0c;configure依然報告這個庫沒有。這是對linux動態庫知識匱乏造成&#xff0c;也就…

python助教的面試題_python面試題----持續更新中

為什么學習Python&#xff1f;通過什么途徑學習的Python&#xff1f;Python和Java、PHP、C、C#、C等其他語言的對比&#xff1f;python 解釋型語言&#xff0c;語法簡潔優雅。C C 編譯型語言&#xff0c;先編譯后運行&#xff0c;偏底層。簡述解釋型和編譯型編程語言&#xff1…

python3模塊: requests

Python標準庫中提供了&#xff1a;urllib等模塊以供Http請求&#xff0c;但是&#xff0c;它的 API 太渣了。它是為另一個時代、另一個互聯網所創建的。它需要巨量的工作&#xff0c;甚至包括各種方法覆蓋&#xff0c;來完成最簡單的任務。 發送GET請求 import urllib.requestf…

SUSE12系統安裝及LVM設置詳解

SUSE12自定義安裝跟以往版本差不多&#xff0c;只是調整了一些功能安裝順序&#xff0c;例如網絡設置放到很靠前&#xff0c;SUSE11的時候幾乎是在后半部分&#xff0c;自定義分區也調整到網絡設置之后&#xff0c;入口設置也隱秘&#xff0c;如果是熟悉suse11安裝&#xff0c;…

在windows下編譯FFMPEG-最新2009版本

轉】在windows下編譯FFMPEG-最新2009版本2010-11-17 18:50大家可以看到&#xff0c;此篇之前有很多個版本的“在windows下編譯FFMPEG”&#xff0c;那些都是我在網上搜羅來的&#xff0c;在看了無數篇那些過期的、有借鑒價值的文章后&#xff0c;我終于成功在windows下編譯出了…