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

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

Đ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

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: Nguyễn Hữu Đông 20121533 Nguyễn Mạnh Cường 20121365 Trần Việt Anh 20121242 Nguyễn Như Nai Lan 20122096 Giảng viên hướng dẫn: PGS.TS Nguyễn Thị Hoàn Hà Nội, tháng năm 2016 Contents PHÂN CÔNG CÔNG VIỆC NỘI DUNG THỰC HIỆN Tìm hiểu chung phương pháp lượng tử hoá vector Nguyễn Mạnh Cường Tìm hiểu chung phương pháp xây dựng codebook trình bày thuật toán xây dựng codebook Nguyễn Như Nai Trình bày sơ đồ áo dụng VQ nén ảnh thuật toán mã hóa ảnh dùng VQ Trần Việt Anh Xây dựng cài đặt ứng dụng thử nghiệm Xây dựng cài đặt ứng dụng thử nghiệm Phân tích đo lường hiệu Nguyễn Hữu Đông 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 trình ánh xạ tập liệu lớn sang tập liệu nhỏ Do đó, làm tảng nhiều thuật toán nén liệu Trong xử lí tín hiệu số trình rời rạc hóa mặt biên độ sau rời rạc hóa mặt thời gian cách xấp xỉ giá trị tín hiệu ban đầu giá trị đơn giản lựa chọn từ trước Quá trình lượng tử hóa tín hiệu liệu ban đầu gây sai số gọi sai số lượng tử hóa Thiết bị hàm thuật toán dùng để lượng tử hóa gọi lượng tử hóa (quantizer) Do lượng tử hóa phép ánh xạ từ tập lớn sang tập nhỏ nên trình không tuyến tính tính thuận nghịch- tức với liệu đầu ta thu lại (recover) cách xác liệu ban đầu Trong lượng tử hóa, tập liệu đầu vào vô hạn,liên tục không đếm tập liệu đầu hữu hạn vô hạn đếm 1.2 Lượng tử hóa vector (VQ) 1.2.1Các khái niệm Lượng tử hóa vector cách thức nén liệu có gây mát dựa nguyên tắc mã hóa khối Đây kĩ thuật sử dụng nhiều ứng dụng nén ảnh, nén âm thanh, nhận dạng âm thanh… Trước việc thiết kế lượng tử hóa vector xem vấn đề nan giải cần phải tích hợp đa chiều Vào năm 1980, Linde, Buzo Gray đưa thuật toán thiết kế lượng tử hóa vector (LBG) dựa tập học nhờ tránh việc phải tích hợp đa chiều Phép lượng tử hóa vector phép ánh xạ vector k chiều không gian vector k chiều sang tập xác định vector Y = {yi: i=1, 2,…, N} Mỗi vector yi gọi codevector hay gọi codeword tập codevector gọi codebook Đối với codeword yi, vector nằm gần so với tất codeword lại tạo thành vùng (Vi) gọi vùng mã hóa (encoding regions hay voronoi region): Tập encoding region gọi phân vùng không gian Rk: Một phân vùng không gian Như thấy, phép lượng tử hóa vector gần cách lấy xấp xỉ giá trị đầu vào Ví dụ ta xét phép lượng tử hóa vector chiều: Ở đây, giá trị xấp xỉ mã hóa bit, số nhỏ -2 lấy xấp xỉ -3 mã hóa 00 , số thuộc khoản từ -2 đến lấy xấp xỉ -1 mã hóa 01, số nằm khoảng từ đến lấy xấp xỉ mã hóa 10, số khoảng lại lấy xấp xỉ mã hóa 11.Tập số nguyên trục số tập vector đầu vào chiều; -3,-1,1,3 codeword tập {-3,-1,1,3} codebook Không gian xét tập số nguyên Z Đây gọi phép lượng tử hóa vector 2bits, chiều (1-dimensional, 2-bit VQ) Một ví dụ phép lượng tử hóa vector bits, chiều: Các (chính codeword) kết việc lấy xấp xỉ cặp số khu vực (encoding region) chứa hình vẽ Mỗi mã hóa bit (16 sao) 1.2.2 Vấn đề thiết kế lượng tử hóa vector (vector quantizator) a Đặt vấn đề Như trình bày phần lý thuyết lượng tử hóa mục đích lượng tử giá trị đầu phải có độ lệch giới hạn tái lại nguồn ban đầu, độ lệch bé tín hiệu giống tín hiệu nguồn Để đạt điều sai số trình lượng tử phải quan tâm Đối với phương pháp VQ mục đích phải chọn codevector cho độ lệch trung bình codevector với vector vùng mã hóa định codevector thấp Xét tập học T gồm M phần tử: Tập học thu từ số sở liệu lớn Ví dụ nguồn tín hiệu tiếng nói, tập nguồn thu từ việc ghi âm vài hội thoại dài điện thoại Ở đây, M giả thiết đủ lớn để tập T thể hết thuộc tính nguồn giả thiết vector nguồn có k chiều Gọi N số lượng codevector, tập codebook C: Trong đó, cn (n=1,2,…,N) codevector k chiều: Số vùng mã hóa N Gọi Sn (n=1,2,…,N) encoding region định từ codevector cn , P phân vung không gian chứa Sn Như tất vector xn nằm vùng Sn lấy xấp xỉ gần cn Ta có hàm lượng tử hóa: Và độ lệch trung bình phép lượng tử là: Như vậy, vấn đề cho tập học T định số lượng codevector N, cần phải tìm tập C, P để có giá trị nhỏ b Tiêu chuẩn tối ưu Các tập C, P thỏa mãn vần đề nêu phải thỏa mãn điều kiện sau: - Nearest Neighbor Condition: Khoảng cách vector nằm vùng Sn với codevector cn so với codevector khác phải nhỏ - Centroid Condition: Codevector cn có giá trị giá trị trung bình vector nằm vùng Sn Trong thực nghiệm, vùng có vector tập học ban đầu (do mẫu biểu thức khác 0) 1.2.3 Quá trình lượng tử hóa vector giai đoạn(2 pha):  Giai đoạn 1: Huấn luyện (trainning)  Giai đoạn 2: Thực mã hóa giải mã o A Huấn luyện Huấn luyện dựa theo mô hình toán học, bước thực hiện: • Không gian liệu nguồn k chiều: • X= {x1, x2, … , xi} với xi vector k chiều • Chọn tập liệu huấn luyên T ( T 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 tiêu chuẩn tối ưu: • Láng giềng gần Khoảng cách vector nằm vùng Sn với codevector cn so với codevector khác phải nhỏ • Điều kiện trọng tâm: Codevector cn có giá trị giá trị trung bình vector nằm vùng Sn Trong thực nghiệm, vùng có vector tập học ban đầu (do mẫu biểu thức khác 0) 10 o B Thực mã hóa giải mã o Sơ đồ mã hóa giải mã: o Mã hóa:  Không gian liệu nguồn X ( tập huấn luyện nhiều vector liệu khác)  Với vector xm, tìm code-vector cn thỏa mãn điều kiện khoảng cách gần từ xm đến cn  Q(xm) = cn Thay giá trị xm số cn codebook o Giải mã: Từ số cn, tái tạo liệu X ta đặt giá trị Cn vào vị trí tương ứng xm Tìm hiểu chung phương pháp xây dựng codebook 2.1 Giới thiệu Nén ảnh sử dụng VQ thực cách so sánh liệu ảnh ban đầu (gọi vector training) với giá trị codebook Kết đưa số codeword có sai số bé so với liệu ảnh ban đầu Chỉ số sử dụng thay cho giá trị cần lượng tử Điều làm giảm không gian lưu trữ làm tăng tỉ số nén Vấn đề cần tạo codebook với codevector cho trình lượng tử hóa nén ảnh có sai số tối thiểu Ta có thuật toán mạnh mẽ để giải vấn đề Lloyd, vấn đề khó khăn quan trọng thuật toán Lloy chọn N vector khởi đầu, điều giải thuật toán mở rộng cụ thể thuật toán LBG 11 Ví dụ từ ảnh nguồn ban đầu với kích thước (512x512), Ta phân chia ảnh thành block nhỏ có kích thước (4x4) ta 16384 block Mỗi block ánh xạ sang miền không gian 16 chiều tương ứng với vector (1x16) gọi training vector Ta muốn lấy 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 thuật toán LBG Từ tập training vector ta xây dựng codebook: 12 Thuật toán xuất phát với vector mã ban đầu nhân đôi dần lên đủ số lượng vector mã cần thiết, sau bước cụ thể thuật toán: Cho tập training vector T, chọn > nhỏ định, (ví dụ = 0,001) Chọn số lượng vector từ mã Chọn số chiều vector từ mã (có thể suy từ kích thước block) Đặt N = tính: Tách: Cho i = 1,2, ,N đặt Và N = 2N Lặp: = Đặt số lặp i = a Cho m = 1,2, M, tìm giá trị nhỏ Với n = 1, 2, N, 13 n* số mà đạt giá trị nhỏ xét Đặt Q(Xm)= b Cho n = 1, 2, , N Ta cập nhật vector mã c Đặt i = i + d Tính: e Nếu: >, quay lại bước 4a f Đặt = Cho n = 1, 2, , N Đặt = giá trị cuối vector mã Lặp lại bước 3, đạt số lượng vector mã mong muốn Sơ đồ áo dụng Vector quatization nén ảnh 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) chuyển thành dạng ma trận số, phần tử ma trận từ  255 x, s, cbookleng Với: x ma trận số ảnh đầu vào, - s tham số độ lớn khối điểm ảnh (ví dụ khối 4x4 s=4), 14 - cbookleng số vector mã codebook Đầu ra: Ảnh sau giải nén Bước 1: + Biến đổi ma trận ban đầu thành ma trận cho vector k chiều biểu diễn dạng ma trận hàng N cột Mỗi vector tương ứng với khối điểm ảnh gần (2*2, 4*4, 8*8, ) +Tạo codebook : Sử dụng thuật toán LBG tạo ma trận vector mã cbook Bước 2: Mã hóa +Chia nhỏ ma trận số ảnh thành khối kích thước s*s +Chuyển khối thành vector s*s chiều +So sánh vector với codebook từ rút ma trận số index tương ứng với code vector Bước 3: Giải mã + Đầu vào: file nén file codebook + Đầu ra: tái tạo lại ma trận ban đầu vector mã (trong file codebook) tương ứng với số index (được lưu file nén) hiển thị hình Xây dựng ứng dụng thử nghiệm phân tích đo lường hiệu 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 codebook, giải nén ta ả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 tập vector nguồn o Các tham số khác 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 Tính PSNR(peak signal to noise ratio): Dựa vào ma trận số ảnh đầu vào ma trận số ảnh sau giải nén 15 Tính tỉ số nén: tỉ số dung lượng ảnh đầu vào file nén Sử dụng hàm ratio() Ảnh đầu vào: ả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: 16 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 = length of codebook:128 17 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 = length of codebook:64 MSE:134.5395 PSNR: 26.8423 TH2: side of block (s*s): s = length of codebook:64 18 compression ratio: 21.3195 MSE: 228.0960 PSNR: 24.5496compression ratio: 85.1117 TH3: side of block (s*s): s = length of codebook:128 MSE: 104.1995 19 PSNR: 27.9521compression ratio: 18.2755 Bảng phân tích đo lường hiệu Ảnh đa màu RGB 256*256 Side of block Length of 64 64 128 codebook MSE 179.8183 289.4978 143.9052 PSNR 25.5825 23.5144 26.5500 Tỉ số nén 63.9584 255.3351 54.8265 Ảnh đa mức xàm 256*256 8 64 64 128 134.5395 26.8423 21.3195 228.0960 24.5496 85.1117 104.1995 27.9521 18.2755 Nhận xét: giảm độ lớn vector nguồn (số chiều) tăng số vector từ mã codebook, chất lượng ảnh sau giải nén tăng lên tỉ số nén giảm ngược lại 20 [...]... 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. .. 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 15 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... 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)... 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 đề... 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 11 Ví dụ từ ảnh nguồn ban đầu với kích thước (512x512), Ta phân chia ảnh. .. 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... 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), 14 - 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. ..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... 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: 12 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... hiệu năng Ảnh đa màu RGB 256*256 Side of 4 8 4 block Length of 64 64 128 codebook MSE 179.8183 289.4978 143.9052 PSNR 25.5825 23.5144 26.5500 Tỉ số nén 63.9584 255.3351 54.8265 Ảnh đa mức xàm 256*256 4 8 8 64 64 128 134.5395 26.8423 21.3195 228.0960 24.5496 85.1117 104.1995 27.9521 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

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

Từ khóa liên quan

Mục lục

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

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

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

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

      • 1.2.1Các khái niệm

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

        • a. Đặt vấn đề

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

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

          • A. Huấn luyện

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

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

            • 2.1 Giới thiệu

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

            • 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

            • 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

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

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

Tài liệu cùng người dùng

Tài liệu liên quan