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

Lượng tử hoá vecto trong nén ảnh

19 1,1K 14

Đ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 19
Dung lượng 739,61 KB

Nội dung

Lượng tử hóa vector vector quantization là một phương pháp nén dữ liệu có nhiều ứng dụng trong thực tế, trong báo cáo này chúng em sẽ trình bày các vấn đề cơ bản về lượng tử hóa vector,

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: XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN

Đề tài: Lượng tử hóa vector(Vector Quantization VQ) và áp dụng trong nén

ảnh

GV phụ trách: PGS.TS Nguyên Thị Hoàng Lan

Sinh viên thực hiện:

Bùi Tuấn Sơn shsv: 20092230

Lê Hữu Thành shhv: 20092416

Hoàng Doãn Quân shsv: 20093579 Trần Bảo Long shsv: 20091667

Đỗ Quang Minh shsv: 20091772

Hà Nội 5/2012

Trang 2

Mục lục

Lời nói đầu 3

Phân công 4

I.Tổng quan 5

1 giới thiệu 5

2 một số ví dụ trực quan đơn giản 5

1 Mô hình toán học tổng quát……… 6

II.Quá trình lượng tử hóa vector… 8

1 Huấn luyện 8

2 Thực hiện mã hóa và giải mã……… 9

III.Các phương pháp xây dựng codebook 10

1 Phương pháp phân phối ngẫu nhiên 10

2 Phương pháp phân phối đều……… 12

3 So sánh 2 phương pháp… ……… 13

III.Áp dụng vào nén ảnh 14

1 Thiết kế chương trình……… 14

1 Chạy chương trình và đánh giá kết quả 16

Kết luận 19

Tài liệu tham khảo 19

Trang 3

Lời nói đầu:

Việc lưu trữ và truyền dữ liệu ảnh số ngày càng trở nên quan trọng, tuy nhiên dung lượng một bức ảnh số ở dạng chưa nén là rất cao và cơ sở hạ tầng truyền thông còn nhiều hạn chế, để việc lưu trữ và truyền dữ liệu cần phải nén ảnh nhằm giảm dung lượng nhưng vẫn phải đáp ứng cảm nhận thị giác của con người Lượng tử hóa vector ( vector

quantization) là một phương pháp nén dữ liệu có nhiều ứng dụng trong thực tế, trong báo cáo này chúng em sẽ trình bày các vấn đề cơ bản về lượng tử hóa vector, với trọng tâm là ứng dụng của nó trong nén ảnh số

Trang 4

Phân công:

 I.Tổng Quan: Bùi Tuấn Sơn

 II Quá trình lượng tử hóa vector: Lê Hữu Thành

 III xây dựng codebook: Hoàng Doãn Quân

 IV.Ứng dụng vào nén ảnh:

1 Thiết kế chương trình: Trần Bảo Long

2 Viết code chính, chạy chương trình và đánh giá kết quả: Đỗ Quang Minh

Trang 5

I.Tổng quan

1.Giới thiệu

Lượng tử hóa vector (vector quantization) là một phương pháp nén dữ liệu có tổn hao Năm 1980, Y Linde, A Buzo, và R M Gray, (LBG) đưa ra giải thuật lượng tử hóa vector dựa trên tập huấn luyện Sau này phương pháp lượng tử hóa vector được cải tiến

và áp dụng nhiều hơn

2.Một số ví dụ trực quan đơn giản:

Không gian một chiều:

Xét trên phần trục tọa độ từ -4 đến 4, chọn ra các điểm mẫu -3,-1,1,3 được đánh số dạng nhị phân tương ứng: 00,01,10,11 Các điểm đầu vào trong khoảng -4 đến -2 sẽ được làm tròn về -3, các điểm từ -2 đến 0 sẽ được làm tròn về -1, các điểm từ 0 đến 2 sẽ được làm tròn về 1, các điểm từ 1 đến 4 sẽ được làm tròn về 3 Như vậy ta sẽ tiết kiệm được không gian bộ nhớ khi lưu trữ và đàu ra sẽ là các giá trị gần đúng thay vì giá trị ban đầu

Không gian hai chiều

Trang 6

Trên một phần mặt phẳng, chọn ra 16 điểm như trong hình Mỗi điểm ban đầu trong mặt phẳng là một vector 2 chiều,, tùy vào vùng mà nó nằm, điểm đó sẽ được làm tròn về một trong 16 điểm này và được mã hóa bởi 4 bit tương tự như trường hợp một chiều, ta cũng

sẽ tiết kiệm được không gian lưu trữ và dữ liệu đàu ra sẽ là các giá trị gần đúng so với ban đầu

3 Mô hình toán học tổng quát:

 Từ tập dữ liệu nguồn ban đầu, chọn ra tập dữ liệu huấn luyện gồm M vector

 Mỗi vector huấn luyện gồm k chiều:

 Codebook (C) là tập các vector mã, mỗi vector mã là một điểm mà một số vector nguồn được làm tròn về nó trong quá trình nén, trong 2 ví dụ ở trên codebook chinh là tập các điểm màu đỏ Codebook gồm N vector:

Trang 7

 Mỗi vector code book k chiều:

 Không gian được phân hoạch thành N vùng:

 Mỗi vector nguồn xác định vùng của nó bằng hàm Q:

 Tham số quan trong để đánh giá hiệu quả và điểu chỉnh thuật toán nén là độ lệch trung bình Dave được tính theo công thức:

 Vấn đề đặt ra: cho T và N, tìm C và P để Dave min

Trang 8

II 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ã

1.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

Sn là tập các vector x gần với code-vector c n hơn các code- vector khác

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

c n là trọng tâm của phân hoạch S i

Trang 9

2 thực hiện mã hóa và giải mã

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

 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

 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

Trang 10

III Các Phương pháp xây dựng codebook

2 phương pháp chính:

 Phân phối ngẫu nhiên: xây dựng vector mã phân phối ngẫu nhiên theo tiêu chí tối ưu

 Phân phối đều: xây dựng các vector mã phân phối đều

1.Phương pháp phân phối ngẫu nhiên

Trường hợp đơn giản nhất với vector một chiều, thuật toán cơ bản Lloyd:

 T={ti} i=[1,…M] vector huấn luyện

 Thuật toán tổng quát:

 Khởi đầu chọn ra tập các vector mã C={C1,C2,….CN} ,

 Lặp:

• Dựa vào tập C, Phân hoạch P chia tập T thành N tập con:

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

• Với mỗi Ci, có l vector huấn luyện nằm trong phân hoạch Si chứa

Ci, tìm Ci mới theo công thức: Ci(new)= (t1(i) +…+tp(i))/l

o Ta thu đươc tập codebook mới C={C1,C2,….CN}

Bước lặp diễn ra cho đến khi codebook tìm được thỏa mãn yêu câu nào đó cho trước Lloyd có thể dễ dàng mở rộng cho vector nhiều chiều với các bước tương tự như trên Vấn đề quan trọng nhất của thuật toán Lloyds là làm thế nào để chọn ra N vector khởi đầu, điều này được giải quyết bởi các thuật toán khác mạnh mẽ và cụ thể hơn

LBG : thuật toán đươc Linde, Buzo và Gray đưa ra từ năm 1980, có thể coi đây là một sự mở rộng của thuật toán Lloyds:

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, trong quá trình nhân đôi đó các vector mã được săp xếp lại theo thuật toán Lloys, sau đây là cac bước cụ thể của thuật toán Lloyds:

Trang 11

1 Cho T, đặt ϵ > 0 là một số nhỏ ( chẳng hạn 0,001)

2 Đặt N = 1 và

Tính

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

Và N = 2N

4 Lặp : Dave(0) = Dave* đặt chỉ số lặp lại i = 0

a Với m = 1, 2, …, M , tìm giá trị nhỏ nhất của ||xm – cn(i)||2

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

b Đối với 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 4.a

f Đặt Dave* = Dave(i) với n = 1, 2, …, N thì c n(*) = c n(i)

Là giá trị cuối cùng của các codevector

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

Trang 12

2.Phương pháp Phân phối đều

Các vector mã được phân phối đêu trong không gian nguồn

Không gian dữ liệu nguồn là X (k chiều), Để dễ biểu diễn, ta ánh xạ các vector trong không gian X sang một không gian Y( k chiều) dạng lưới đều (grid)

 Ma trận L (không suy biến) để ánh xạ các vector nguồn vào không gian này

 yi= L*xi (ánh xạ vector xi trong không gian X thành vector yi trong không gian V)

 xi = L-1*yi(ánh xạ vector yi trong không gian Y thành vector xi trong không gian X)

Các vector mã trong không gian X khi được ánh xạ sang không gian Y sẽ nằm tại các điểm nguyên (ta kí hiệu ci trong X ánh xạ sang pi trong Y) Mỗi vùng Si chứa ci được phân hoạch trong không gian X sẽ được ánh xạ thành một vùng(gọi là voronoi zone) trong không gian Y bao đều xung quanh trọng tâm pi của nó, ví dụ với không gian 2 chiều mỗi voronoi zone là một hình vuông, không gian 3 chiều mỗi voronoi zone là một hình lập phương

Minh họa trong không gian 2 chiều:

Trang 13

3 so sánh 2 phương pháp

 Phân phối ngẫu nhiên:

• tính toán phức tạp, tốn tài nguyên để xử lý dữ liệu

• Hiệu quả cao

 Phân phối đều:

• Tính toán đơn giản, tốn ít tài nguyên để xử lý dữ liệu

• Hiệu quả thấp, chỉ phù hợp nếu các vector nguồn trải đều trong một phần không gian

Trang 14

IV Áp dụng vào nén ảnh

1 thiết kế chương trình:

Đặc trưng: tốc độ nén chậm (do bước tạo codebook), tốc độ giải nén nhanh, đặc biệt rất linh hoạt trong việc lựa chọn thuật toán tạo codebook và các tham số đầu vào

Các vấn đề cơ bản:

 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ố có dung lượng bằng với ánh gốc

 Chọn phương pháp tạo codebook: do dữ liệu ảnh không phân phối đều nên phải lựa chọn phương pháp tạo codebook phân phối ngẫu nhiên theo tiêu chí tối ưu, cụ thể trong chương trình này sẽ sử dung LBG

 Lựa chọn tham số:

o Tâp vector huấn luyên: chọ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 dung:

 Số giá trị dữ liệu trong một khối điểm ảnh: chọn block 2*2*3,4*4*3,… Từ đó chọn được số chiều vector dữ liệu( ví dụ nếu chọn nén theo block 2*2*3 thì vector dữ liệu sẽ có 12 chiều

 Số lượng vector mã trong codebook

Trang 15

Quá trình xử lý dữ liệu:

Sơ đồ chương trình:

 Dữ liệu ảnh được chuyển thành dạng ma trận số ( ảnh xám là 2 chiều, ảnh màu BMP là 3 chiều), mỗi phần tử ma trận từ 0->256

 Mỗi vector tương ứng với một khối các điểm ảnh gần nhau (2x2,4x4,8x8,…)

 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ảng N phần tử)

 Tạo codebook - hàm makecb(x,s,cbookleng): x là ma trận số cảu ảnh đầu vào, s là tham số chỉ ra độ lớn của khối điểm ảnh ( ví dụ khối 4*4 thì s=4), cbookleng là số vector mã trong codebook

 Mã hóa -hàm vqencode(x,cbook,s), x là ma trận số của ảnh đầu vào, cbook là ma trận các vector mã, s là tham số chỉ ra độ lớn của khối điểm ảnh

 Giải mã- hàm vqdecode(): đầu vào là file đã nén và file codebook, hàm này sẽ tái tạo lại ma trận ban đầu bằng các vector mã tương ứng với chỉ số được lưu rồi xuất

ra màn hình

Đánh giá kết quả:

Đánh giá kết quả bằng 2 hàm:

 Hàm psnr(x,y) :x là ma trận số cảu ảnh đầu vào, y là ma trận só cảu ảnh sau giải nén Hàm này trả về một giá trị là tỉ số tín hiệu cực đại trên nhiều (Peak signal-to-noise ratio), nó cho ta biết chất lượng của chương trình nén ảnh, giá trị này càng cao càng tốt

 Hàm ratio(): tính tỉ số giữa ảnh đầu vào và file nén để trả về tỉ số nén

Trang 16

2 Chạy chương trình và đánh giá kết quả:

Ta sẽ chạy thử chương trình với các tham số đầu thay đổi : kích thước khối điểm ảnh(dẫn đến thay đổi số chiều vector) và số lượng vector mã trong codebook, từ đó ra ảnh hưởng của các tham số đầu vào đó tới chất lượng chương trình nén

Sử dụng bức ảnh gốc: lena.bmp, kích thước 256*256

Lần thứ nhất: lấy tham số đầu vào làm mốc cho các lần chạy sau:

 Khối điểm ảnh tạo thành một vector nguồn: 4*4*3

 Số lượng vector mã: 64

Thu được ảnh sau giải nén:

Trang 17

 PSNR = 25.5825

 Tỉ số nén: 63.9584

Nhận xét: Chất lượng ảnh giải nén khá kém, tỉ số nén cao

Lần thứ 2: giảm kích thước khối điểm ảnh ( giảm số chiêu vector nguồn), giữ nguyên số

vector mã trong code book so với lần thứ nhất

 Khối điểm ảnh tạo thành một vector nguồn: 2*2*3

 Số lượng vector mã: 64

Thu được ảnh sau giải nén:

 PSNR = 28.6109

 Tỉ số nén = 15.9974

Nhận xét: So với lần thứ nhất, chất lượng ảnh đã tăng lên nhiều, đổi lại tỉ số nén giảm xuống thấp hơn hẳn

Lần thứ 3: giữ nguyên kích thước khối điểm ảnh (giữ nguyên số chiêu vector nguồn),

tăng số vector mã trong codebook so với lần thứ nhất

 Khối điểm ảnh tạo thành một vector nguồn: 4*4*3

 Số lượng vector mã: 256

Trang 18

Thu được ảnh sau giải nén:

 PSNR = 27.7434

 Tỉ số nén = 47.9766

Nhận xét: So với lần thứ nhất, chất lượng ảnh đã tăng lên đáng kể, đổi lại tỉ số nén giảm xuống thấp hơn nhưng không quá thấp như lần thứ 2

Nhận xét chung: Thực nghiệm cho kết quả phù hợp với lý thuyết, khi giảm độ lớn (số

chiều) của vector nguồn hoặc tăng số vector mã trong codebook, chất lượng ảnh nén sẽ tăng lên nhưng tỉ số nén sẽ giảm đi và ngược lại

Trang 19

Kết luận:

Dữ liệu lưu trữ và truyền tải trên mạng máy tính ngày càng gia tăng, đặc biệt là dữ liệu hình ảnh và video, với ưu điểm về sự linh hoạt của mình phương pháp lượng tử hóa vector đang được sử dụng nhiều trong thực tế (ví dụ: Twin vector quantization – một dạng cải tiến của lượng tử hóa vector dùng trong MPEG-4 ) và hứa hẹn sẽ tiếp tục được cải tiến và sử dụng trong tương lai Trong quá trình thực hiện đề tài này, do thiếu sót về kiến thức cũng như kinh nghiệm thực tế nên khó tránh khỏi những sai sót Chúng em mong nhận được sự đóng góp ý từ cô và các bạn để có thể hoàn thiện tốt hơn.Chúng em xin chân thành cám ơn!

Tài liệu tham khảo

 Bài giảng môn xử lý dữ liệu đa phương tiện – PGS.TS Nguyễn Thị Hoàng Lan

 Digital audio and video compression – Stephen J.Solari

``An Algorithm for Vector Quantizer Design,'' IEEE Transactions on

Communications - Y Linde, A Buzo, R M Gray

 Image Compression with Vector Quantization- Ivan Assen Ivanov

Ngày đăng: 01/06/2014, 22:58

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w