1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lượng tử hóa vector và áp dụng trong nén ảnh

20 1,2K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 627,94 KB

Nội dung

Vào năm 1980, Linde, Buzo và Gray đã đưa ra thuật toán thiết kế bộ lượng tử hóa vector LBG dựa trên một tập học nhờ đó tránh được việc phải tích hợp đa chiều.. Một phân vùng không gianNh

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ────────

BÁO CÁO TRUYỀN THÔNG ĐA PHƯƠNG TIỆN

ĐỀ TÀI:

LƯỢNG TỬ HÓA VECTOR VÀ ÁP DỤNG

TRONG NÉN ẢNH

Sinh viên thực hiện:

Giảng viên hướng dẫn: PGS.TS Nguyễn Thị Hoàn Lan

Trang 2

Hà Nội, tháng 5 năm 2016

Trang 3

Contents

Trang 4

PHÂN CÔNG CÔNG VIỆC

Tìm hiểu chung về phương pháp lượng tử

Tìm hiểu chung các phương pháp xây dựng

bộ codebook và trình bày một thuật toán xây

dựng codebook

Nguyễn Như Nai

Trình bày sơ đồ áo dụng VQ trong nén ảnh và

thuật toán mã hóa ảnh dùng VQ

Xây dựng cài đặt ứng dụng thử nghiệm

Trần Việt Anh

Xây dựng cài đặt ứng dụng thử nghiệm Phân

Trang 5

1 TÌM HIỂU CHUNG VỀ KỸ THUẬT VQ

1.1 Lý thuyết lượng tử hóa

Lượng tử hóa là quá trình ánh xạ một tập dữ liệu lớn sang một tập dữ liệu nhỏ hơn

Do đó, nó được làm nền tảng trong rất nhiều thuật toán nén dữ liệu Trong xử lí tín hiệu số

nó chính là quá trình rời rạc hóa về mặt biên độ sau khi rời rạc hóa về mặt thời gian bằng cách xấp xỉ giá trị tín hiệu ban đầu về một giá trị đơn giản hơn đã lựa chọn từ trước Quá trình lượng tử hóa tín hiệu hoặc dữ liệu ban đầu sẽ gây ra một sai số gọi là sai số lượng tử hóa Thiết bị hoặc một hàm thuật toán dùng để lượng tử hóa được gọi là bộ lượng tử hóa (quantizer)

Do lượng tử hóa là một phép ánh xạ từ một tập lớn sang một tập nhỏ hơn nên nó là một quá trình không tuyến tính và không có tính thuận nghịch- tức là với dữ liệu đầu ra ta không thể thu lại (recover) một cách chính xác dữ liệu ban đầu

Trong lượng tử hóa, tập dữ liệu đầu vào có thể là vô hạn,liên tục và không đếm được còn tập dữ liệu đầu ra có thể hữu hạn hoặc vô hạn đếm được

1.2 Lượng tử hóa vector (VQ)

1.2.1Các khái niệm

Lượng tử hóa vector là cách thức nén dữ liệu có gây mất mát dựa trên nguyên tắc mã hóa khối Đây là kĩ thuật được sử dụng trong nhiều ứng dụng như nén ảnh, nén âm thanh,

Trang 6

nhận dạng âm thanh… Trước đây việc thiết kế một bộ lượng tử hóa vector được xem là một vấn đề nan giải do cần phải tích hợp đa chiều Vào năm 1980, Linde, Buzo và Gray đã đưa ra thuật toán thiết kế bộ lượng tử hóa vector (LBG) dựa trên một tập học nhờ đó tránh được việc phải tích hợp đa chiều

Phép lượng tử hóa vector là một phép ánh xạ các vector k chiều trong không gian vector k chiều sang một tập xác định các vector Y = {yi: i=1, 2,…, N} Mỗi vector yi được gọi là một codevector hay còn gọi là một codeword và tập các codevector này gọi là một codebook

Đối với mỗi một codeword yi, các vector nằm gần nó nhất so với tất cả các codeword còn lại tạo thành một vùng (Vi) gọi là vùng được mã hóa (encoding regions hay voronoi region):

Tập các encoding region được gọi là phân vùng không gian Rk:

Trang 7

Một phân vùng không gian

Như vậy có thể thấy, phép lượng tử hóa vector gần như là một cách lấy xấp xỉ các giá trị đầu vào Ví dụ ta xét một phép lượng tử hóa vector 1 chiều:

Ở đây, các giá trị xấp xỉ được mã hóa bằng 2 bit, các số nhỏ hơn -2 được lấy xấp xỉ là -3 và được mã hóa là 00 , các số thuộc khoản từ -2 đến 0 được lấy xấp xỉ bằng -1 và được mã hóa là 01, các số nằm trong khoảng từ 0 đến 2 được lấy xấp xỉ là 1 và được mã hóa là 10, các

số trong khoảng còn lại lấy xấp xỉ là 3 và được mã hóa là 11.Tập các số nguyên trên trục số là tập các vector đầu vào 1 chiều; -3,-1,1,3 là các codeword và tập {-3,-1,1,3} là codebook Không gian xét ở đây chính là tập các số nguyên Z Đây gọi là phép lượng tử hóa vector 2bits,

1 chiều (1-dimensional, 2-bit VQ)

Một ví dụ về phép lượng tử hóa vector 4 bits, 2 chiều:

Trang 8

Các ngôi sao (chính là các codeword) là kết quả của việc lấy xấp xỉ các cặp số trong các khu vực (encoding region) chứa nó trên hình vẽ Mỗi ngôi sao này sẽ được mã hóa bằng

4 bit (16 ngôi sao)

1.2.2 Vấn đề thiết kế bộ lượng tử hóa vector (vector quantizator)

a. Đặt vấn đề

Như đã trình bày trong phần lý thuyết về lượng tử hóa thì mục đích của các bộ lượng

tử là các giá trị đầu ra phải có độ lệch trong giới hạn có thể tái hiện lại nguồn ban đầu, độ lệch càng bé thì tín hiệu ra càng giống tín hiệu nguồn Để đạt được điều này thì các sai số trong quá trình lượng tử cũng phải được quan tâm Đối với phương pháp VQ thì mục đích là phải chọn ra được các codevector sao cho độ lệch trung bình giữa codevector với các vector trong cùng một vùng mã hóa được định ra bởi codevector đó là thấp nhất

Xét một tập học T gồm M phần tử:

Tập học này có thể thu được từ một số cơ sở dữ liệu lớn Ví dụ nếu nguồn là một tín hiệu tiếng nói, khi đó tập nguồn có thể thu được từ việc ghi âm một vài cuộc hội thoại dài trên điện thoại Ở đây, M được giả thiết là đủ lớn để tập T thể hiện được hết các thuộc tính của nguồn và giả thiết rằng các vector nguồn có k chiều

Trang 9

Gọi N là số lượng codevector, tập codebook là C:

Trong đó, cn (n=1,2,…,N) là một codevector k chiều:

Số vùng mã hóa là N Gọi Sn (n=1,2,…,N) là một encoding region được định ra từ codevector cn , P là phân vung không gian chứa các Sn

Như vậy tất cả các vector xn nằm trong vùng Sn được lấy xấp xỉ gần đúng bởi cn Ta

có hàm lượng tử hóa:

Và độ lệch trung bình của phép lượng tử là:

Như vậy, vấn đề ở đây là khi cho tập học T và định ra số lượng các codevector là N, cần phải tìm ra tập C, P để có giá trị nhỏ nhất

b. Tiêu chuẩn tối ưu

Các tập C, P thỏa mãn vần đề nêu trên phải thỏa mãn 2 điều kiện sau:

- Nearest Neighbor Condition:

Khoảng cách giữa các vector nằm trong vùng Sn với codevector cn so với các codevector khác phải là nhỏ nhất

- Centroid Condition:

Trang 10

Codevector cn có giá trị bằng giá trị trung bình của các vector nằm trong vùng Sn Trong thực nghiệm, mỗi vùng sẽ có ít nhất một vector trong tập học ban đầu (do đó mẫu của biểu thức trên luôn khác 0)

1.2.3 Quá trình lượng tử hóa vector

2 giai đoạn(2 pha):

 Giai đoạn 1: Huấn luyện (trainning)

 Giai đoạn 2: Thực hiện mã hóa và giải mã

o A Huấn luyện

Huấn luyện dựa theo mô hình toán học, các bước thực hiện:

• Không gian dữ liệu nguồn k chiều:

• X= {x1, x2, … , xi} với xi là vector k chiều

• Chọn ra tập dữ liệu huấn luyên T ( T là con của X):

 T={x1, … , xn}

• Theo thuật toán huấn luyên , tạo codebook :

• C={C1,C2,….CN} với Ci = {Ci1, Ci2, …, Cik} (code-vector)

• Phân hoạch P chia tập T thành N tập con:

• P={S1, S2, … , SN}

Yêu cầu thỏa mãn 2 tiêu chuẩn tối ưu:

• Láng giềng gần nhất

Khoảng cách giữa các vector nằm trong vùng Sn với codevector cn so với các codevector khác phải là nhỏ nhất

• Điều kiện trọng tâm:

Codevector cn có giá trị bằng giá trị trung bình của các vector nằm trong vùng Sn Trong thực nghiệm, mỗi vùng sẽ có ít nhất một vector trong tập học ban đầu (do đó mẫu của biểu thức trên luôn khác 0)

Trang 11

o B Thực hiện mã hóa và giải mã

o Sơ đồ mã hóa và giải mã:

o Mã hóa:

 Không gian dữ liệu nguồn X ( ngoài tập huấn luyện còn nhiều vector

dữ liệu khác)

 Với mỗi vector xm, tìm code-vector cn thỏa mãn điều kiện khoảng cách gần nhất từ xm đến cn

 Q(xm) = cn Thay giá trị của xm bằng chỉ số của cn trong codebook

o Giải mã: Từ chỉ số của cn, khi tái tạo dữ liệu X ta đặt giá trị của Cn vào vị trí tương ứng của xm

2 Tìm hiểu chung về phương pháp xây dựng codebook

2.1 Giới thiệu

Nén ảnh sử dụng VQ được thực hiện bằng cách so sánh các dữ liệu trong ảnh ban đầu (gọi là các vector training) với các giá trị trong codebook Kết quả là sẽ đưa ra chỉ số của codeword có sự sai số bé nhất so với dữ liệu ảnh ban đầu Chỉ số này sẽ được sử dụng thay cho giá trị cần lượng tử Điều này làm giảm không gian lưu trữ và làm tăng tỉ số nén Vấn đề

ở đây cần tạo ra được codebook với các codevector sao cho quá trình lượng tử hóa trong nén ảnh có sai số tối thiểu

Ta có thuật toán rất mạnh mẽ để giải quyết vấn đề ở trên là Lloyd, nhưng vấn đề khó khăn và quan trọng nhất của thuật toán Lloy là làm sao chọn ra được N vector khởi đầu, điều này đã được giải quyết bởi thuật toán mở rộng và cụ thể hơn là thuật toán LBG

Trang 12

Ví dụ từ ảnh nguồn ban đầu với kích thước (512x512),

Ta phân chia ảnh thành các block nhỏ có kích thước (4x4) ta sẽ được 16384 block Mỗi block sẽ được ánh xạ sang miền không gian 16 chiều tương ứng với 1 vector (1x16) gọi

là training vector Ta muốn lấy ra codebook có kích thước (256x16)

Bảng 1:Training vector (16384x16)

Bảng 2: Codebook (256x16)

2.2 Xây dựng codebook bằng thuật toán LBG

Từ tập training vector ta xây dựng codebook:

Trang 13

Thuật toán này xuất phát với một vector mã ban đầu và nhân đôi dần lên cho đến khi

đủ số lượng vector mã cần thiết, sau đây là các bước cụ thể của thuật toán:

1. Cho tập training vector T, chọn > 0 rất nhỏ nhất định, (ví dụ = 0,001)

Chọn số lượng vector từ mã

Chọn số chiều của vector từ mã (có thể được suy ra từ kích thước block)

2. Đặt N = 1 và tính:

3. Tách: Cho i = 1,2, ,N đặt

Và N = 2N

4. Lặp: = Đặt chỉ số lặp i = 0

a. Cho m = 1,2, M, tìm giá trị nhỏ nhất của

Với n = 1, 2, N, n* là chỉ số mà tại đó đạt được giá trị nhỏ nhất đang xét

Trang 14

Đặt Q(Xm)=

b. Cho n = 1, 2, , N Ta cập nhật các vector mã

c. Đặt i = i + 1

d. Tính:

e. Nếu: >, quay lại bước 4a

f. Đặt = Cho n = 1, 2, , N Đặt = là giá trị cuối cùng của vector mã

5. Lặp lại các bước 3, 4 cho đến khi đạt được số lượng vector mã mong muốn

3 Sơ đồ áo dụng Vector quatization trong nén ảnh và thuật toán mã hóa-giải mã ảnh dùng Vector quatization

Đầu vào: Dữ liệu ảnh vào( VD: ảnh đa mức xám kích thước 256*256) được chuyển

thành dạng ma trận số, mỗi phần tử ma trận từ 0  255

x, s, cbookleng Với: - x là ma trận số của ảnh đầu vào,

- s là tham số chỉ ra độ lớn của khối điểm ảnh (ví dụ khối 4x4 thì s=4),

Trang 15

- cbookleng là số vector mã trong codebook

Đầu ra: Ảnh sau giải nén

Bước 1:

+ Biến đổi ma trận ban đầu thành một ma trận mới sao cho mỗi vector k chiều được biểu diễn dưới dạng một ma trận 1 hàng N cột Mỗi vector tương ứng với một khối các điểm ảnh gần nhau (2*2, 4*4, 8*8, )

+Tạo codebook : Sử dụng thuật toán LBG tạo ra ma trận các vector mã cbook

Bước 2: Mã hóa

+Chia nhỏ ma trận số của ảnh thành các khối kích thước s*s +Chuyển mỗi khối thành một vector s*s chiều

+So sánh các vector trên với codebook từ đó rút ra ma trận chỉ số index tương ứng với code vector

Bước 3: Giải mã

+ Đầu vào: file đã nén và file codebook

+ Đầu ra: tái tạo lại ma trận ban đầu bằng các vector mã (trong file codebook) tương ứng với chỉ số index (được lưu trong file đã nén) rồi hiển thị ra màn hình

4 Xây dựng ứng dụng thử nghiệm và phân tích đo lường hiệu năng

4.1 Ứng dụng

• Công cụ sử dụng: matlab

• Dữ liệu ảnh trước mã hóa: ảnh số

• Dữ liệu sau nén:

o File ảnh nén: nhị phân

o Codebook: nhị phân

• Dữ liệu ảnh sau giải nén: dựa vào file ảnh nén và codebook, giải nén ta được ảnh số

• Phương pháp xây dựng codebook: phương pháp tạo codebook sử dụng thuật toán LBG

• Lựa chọn tham số:

o Tập vector huấn luyện: toàn bộ tập vector nguồn

o Các tham số khác có thể thay đổi linh hoạt theo yêu cầu người dùng

4.2 Phân tích đo lường hiệu năng.

Tính PSNR(peak signal to noise ratio): Dựa vào ma trận số của ảnh đầu vào và ma trận số của ảnh sau giải nén

Trang 16

Tính tỉ số nén: tỉ số của dung lượng ảnh đầu vào và file nén Sử dụng hàm ratio()

Ảnh đầu vào: là ảnh màu RGB , kích thước 256*256

TH1: side of block (s*s): s =4

length of codebook:64

MSE:179.8183 PSNR:25.5825 compression ratio: 63.9584

TH2:

Trang 17

side of block (s*s): s =8

length of codebook:64

MSE: 289.4978 PSNR: 23.5144 compression ratio: 255.3351

TH3:

side of block (s*s): s = 4

length of codebook:128

Trang 18

MSE: 143.9052 PSNR: 26.5500compression ratio: 54.8265b Ảnh đầu vào : đa mức xám kích thước 256*256

TH1: side of block (s*s): s = 4

length of codebook:64

MSE:134.5395 PSNR: 26.8423 compression ratio: 21.3195

TH2: side of block (s*s): s = 8

length of codebook:64

Trang 19

MSE: 228.0960 PSNR: 24.5496compression ratio: 85.1117

TH3:

side of block (s*s): s = 4

length of codebook:128

MSE: 104.1995 PSNR: 27.9521compression ratio: 18.2755

Trang 20

Bảng phân tích đo lường hiệu năng

Ảnh đa màu RGB 256*256 Ảnh đa mức xàm 256*256 Side of

Length of

MSE 179.8183 289.4978 143.9052 134.5395 228.0960 104.1995

Tỉ số nén 63.9584 255.3351 54.8265 21.3195 85.1117 18.2755

Nhận xét: khi giảm độ lớn của vector nguồn (số chiều) hoặc tăng số vector từ mã trong codebook, chất lượng ảnh sau giải nén sẽ tăng lên nhưng tỉ số nén sẽ giảm đi và ngược lại.

Ngày đăng: 08/06/2016, 23:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w