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

Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh

77 810 1

Đ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 77
Dung lượng 1,44 MB

Nội dung

Tất cả các hình ảnh mà chúng ta xem hoặc sao chép được từ các trang web là các tệp hình ảnh đã được nén, thông thường trong định dạng JPEG hoặc GIF; đa số các modem đều sử dụng tính năng

Trang 1

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Trang 2

MỤC LỤC

Trang

TRANG PHỤ BÌA

LỜI CAM ĐOAN

MỤC LỤC i

LỜI CÁM ƠN iii

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iv

DANH MỤC CÁC BẢNG BIỂU v

DANH MỤC CÁC HÌNH VẼ vi

MỞ ĐẦU 1

Chương 1: CƠ SỞ LÝ THUYẾT 4

1.1 Mã hóa thông tin 4

1.2 Nén dữ liệu 5

1.3 Entropy 5

1.4 Các kết quả cơ bản về nén dữ liệu 8

1.4.1 Phân loại nén dữ liệu 8

1.4.2 Các định lý về nén dữ liệu 9

1.5 Lý thuyết về hình ảnh 14

1.5.1 Giới thiệu về ảnh số và xử lý ảnh số 14

1.5.2 Mục đích và sự cần thiết của nén ảnh 15

1.5.3 Phân loại các phương pháp nén ảnh 16

Chương 2: MỘT SỐ THUẬT TOÁN MÃ HÓA VÀ NÉN DỮ LIỆU 19

2.1 Thuật toán HUFFMAN 19

2.1.1 Ý tưởng của thuật toán 19

2.1.2 Thuật toán 19

2.2 Thuật toán tách đoạn (RLE – Runlength Coding) 22

2.2.1 Ý tưởng của thuật toán 22

2.2.2 Thuật toán 24

2.4 Thuật toán nén ảnh JPEG 25

2.3.1 Ý tưởng của thuật toán 25

2.3.2 Thuật toán nén ảnh JPEG 26

2.4 Thuật toán nén ảnh nâng cao AIC 32

2.4.1 Chuẩn H.264/AVC 34

2.4.2 Thuật toán AIC 40

2.4.3 Các kết quả AIC 55

Chương 3: XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM 56

3.1 Xây dựng chương trình 56

3.2 Một số thủ tục của chương trình chạy thử nghiệm 56 3.2.1 Thủ tục của chương trình nén ảnh và giải nén bằng thuật toán 56

Trang 3

HUFFMAN

3.2.2 Thủ tục của chương trình nén ảnh và giải nén bằng thuật toán RLE 61

3.2.3 Thủ tục của chương trình nén ảnh bằng thuật toán JPEG 62

3.3 Giao diện chính của chương trình 64

3.4 Các bước thực hiện chương trình 66

3.5 So sánh kết quả thử nghiệm 68

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72

TÀI LIỆU THAM KHẢO 74

Trang 4

PHẦN MỞ ĐẦU

Nén dữ liệu hiện đang được sử dụng hầu như ở mọi nơi Tất cả các hình ảnh

mà chúng ta xem hoặc sao chép được từ các trang web là các tệp hình ảnh đã được nén, thông thường trong định dạng JPEG hoặc GIF; đa số các modem đều sử dụng tính năng nén dữ liệu; truyền hình độ phân giải cao (HDTV) sử dụng phương pháp nén theo chuẩn MPEG-2 Một số hệ thống quản lý tệp tin tự động nén các tệp tin khi lưu trữ và chúng ta cũng thường sử dụng các chương trình nén khác nhau để nén tệp dữ liệu Quá trình làm giảm kích thước của một tệp dữ liệu được gọi một cách

phổ biến là nén dữ liệu (data compresion), còn tên gọi trong lý thuyết thông tin là

mã hóa nguồn (source coding) Trong khoa học máy tính và lý thuyết thông tin, nén

dữ liệu (hoặc mã hóa nguồn) là việc mã hóa thông tin bằng số ít bit hơn so với biểu

diễn ban đầu

Có thể chia các phương pháp nén ra hai lớp: nén không mất thông tin và nén

có mất thông tin Nén không mất thông tin làm giảm bit số bít biểu diễn bằng cách

xác định và loại bỏ độ dư thừa thống kê trong cách biểu diễn ban đầu Như tên gọi,

thông tin không bị mất trong quá trình nén không mất thông tin Nén có mất thông

tin cố gắng giảm số bit bằng cách xác định thông tin không quan trọng và loại bỏ chúng Nếu nói ngắn gọn về bản chất nén, đó là tập hợp các thuật toán, bao gồm từ phân loại, hàm băm, cho đến biến đổi Fourier nhanh (FFT), Ngoài ra các thuật toán dựa trên nền tảng lý thuyết vững chắc đóng một vai trò quan trọng trong các ứng dụng thực tế

Nén dữ liệu hữu ích vì giúp giảm tài nguyên sử dụng như không gian lưu trữ

dữ liệu hoặc dung lượng truyền Vì dữ liệu nén phải được giải nén trước khi sử dụng, điều này đòi hỏi thêm chi phí tính toán để giải nén Ví dụ, một chương trình nén cho video có thể yêu cầu phần cứng đắt tiền cho video được giải nén đủ nhanh

để được xem như là nó đang được giải nén, và tùy chọn để giải nén video đầy đủ trước khi xem nó có thể là bất tiện hoặc yêu cầu lưu trữ bổ sung Việc thiết kế các chương trình nén dữ liệu liên quan đến việc dung hòa các yếu tố khác nhau, bao

Trang 5

gồm cả mức độ nén, lượng thông tin bị mất khi sử dụng phương pháp nén dữ liệu có mất thông tin và các nguồn lực tính toán cần thiết để nén và giải nén dữ liệu

Thuật ngữ tương đương thông điệp, bản tin hay dãy tin được sử dụng chung

cho các đối tượng cần nén Nhiệm vụ của nén dữ liệu bao gồm hai thành phần: một

thuật toán mã hóa nhận bản tin ban đầu (mà ta gọi là bản tin gốc) và biểu diễn nó dưới dạng "nén" (hy vọng với ít bit hơn), và thuật toán giải mã được dùng để tái tạo

lại bản tin ban đầu hoặc xấp xỉ của bản tin ban đầu từ bản tin đã được nén Hai thành phần này thường được xây dựng gắn kết với nhau

Nén không mất thông tin và nén có mất thông tin: Nén không mất thông tin

thường được sử dụng cho văn bản và nén có mất thông tin thường được sử dụng để nén các tệp âm thanh và hình ảnh khi việc mất một số bit thông tin về độ phân giải thường là không thể phát hiện được hoặc ít nhất là chấp nhận được Tuy nhiên nén

có mất thông tin không có nghĩa là bị mất các pixel một cách ngẫu nhiên, thay vào

đó có nghĩa là sự mất mát một đại lượng như một thành phần tần số, hoặc nhiễu Chẳng hạn, người ta có thể nghĩ rằng nén văn bản có mất thông tin là không thể chấp nhận được bởi vì họ nghĩ tới việc mất hoặc chuyển đổi các ký tự Thay vì đó ta

có thể nghĩ tới một hệ thống các câu chuẩn, hoặc các từ thay thế bằng từ đồng nghĩa, nhờ đó có thể nén tập tin tốt hơn Về mặt kỹ thuật nén mất dữ liệu có thể gây

ra sự thay đổi của văn bản, nhưng ý nghĩa và tính rõ ràng của văn bản vẫn có thể được giữ nguyên hoặc thậm chí cải thiện

Khi xét các thuật toán nén, điều quan trọng là cần phân biệt giữa hai thành

phần: mô hình và bộ mã hóa Mô hình cho biết phân phối xác suất của các dãy tin

bằng cách nhận biết hoặc phát hiện cấu trúc của đầu vào Bộ mã hóa tạo ra các dãy

mã dựa trên các xác suất tạo ra mô hình Để có hiệu quả nén, bộ mã hóa thường tạo

ra các dãy mã dài cho các dãy tin có xác suất thấp và gán dãy mã ngắn cho các dãy tin có xác suất cao Ví dụ, trong bảng chữ cái của một ngôn ngữ tự nhiên thường có một vài chữ cái xuất hiện trong các văn bản viết với xác suất cao hơn các chữ cái khác, điều này còn rõ ràng hơn với các cặp chữ cái Khi đó bộ mã hóa sẽ gán từ mã

có độ dài ngắn cho chữ cái xuất hiện với xác suất cao và ngược lại Thông thường

Trang 6

sự tách biệt giữa mô hình và thành phần mã hóa không phải luôn luôn được xác định một cách rõ ràng

Lý thuyết thông tin là lĩnh vực có thể gắn mô hình với thành phần mã hóa

Nó cho lý thuyết rất tốt sự liên quan giữa xác suất và độ dài từ mã Lý thuyết này phù hợp với thực tế gần như hoàn hảo, và chúng ta có thể đạt được độ dài mã gần như giống hệt với những gì lý thuyết dự đoán

Trong trường hợp mã hóa có mất thông tin, ta có thể lấy tiêu chuẩn đánh giá

là thời gian nén, thời gian để tái tạo lại dãy tin ban đầu (giải mã) kích thước của tệp nén Trong trường hợp nén có mất thông tin, các tiêu chuẩn thường là phức tạp hơn, chẳng hạn xấp xỉ dãy tin ban đầu như thế nào được gọi là chấp nhận được Thông thường cần dung hòa giữa kích thước nén, thời gian chạy, và chất lượng dãy tin được giải mã

Nội dung luận văn bao gồm 3 chương:

Chương 1: CƠ SỞ LÝ THUYẾT

Trình bày các khái niệm cơ bản, lý thuyết chung về mã hóa, nén dữ liệu, các

định lý cơ bản về nén dữ liệu, lý thuyết về xử lý ảnh số

Chương 2: MỘT SỐ THUẬT TOÁN MÃ HÓA VÀ NÉN DỮ LIỆU

Chương này trình bày ý tưởng và các thuật toán mã hóa và nén dữ liệu như:

RLE, HUFFMAN, JPEG, H.264/ACV, AIC

Chương 3: XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM

Chương này trình bày các kết quả cài đặt và chạy thử nghiệm của các thuật toán mã hóa và nén dữ liệu như: RLE, HUFFMAN, JPEG Các kết quả so sánh với

các phần mềm hiện có

Trang 7

Chương 1

CƠ SỞ LÝ THUYẾT 1.1 Mã hóa thông tin

Để tìm hiểu về mã hóa thông tin, ta bắt đầu từ những khái niệm cơ bản sau: Bảng chữ cái: Bảng chữ cái là tập bất kỳ hữu hạn các phần tử, khác rỗng Mỗi phần tử của bảng chữ cái gọi là kí tự

Bản tin: Cho bản chữ cái A = {a 1 ,a 2 , a n}, dãy X gồm các kí tự của A gọi là bản tin Bản tin theo nghĩa rộng nó có thể là bức ảnh, có thể là băng ghi âm thanh v.v…, tuy nhiên khi thực hiện số hóa để lưu trữ hay truyền đi vẫn phải sử dụng bảng chữ cái nào đó

Mã hoá: Giả sử có bảng chữ cái A = {a 1 ,a 2 , ,a n}, X là một bản tin trên bảng

chữ cái A Ta gọi bản tin Y trên bảng chữ cái B = {b 1 ,b 2 ,…,b m} là bản mã của bản tin X nếu tồn tại ánh xạ f sao cho Y = f(X) Khi đó f được gọi là phép mã hóa Cách ghi mã: Có nhiều cách ghi mã, giả sử mã văn bản người ta hay sử dụng

những nhóm ký hiệu được phân cách bởi một dấu Space, cách mã như vậy gọi là mã

bằng phương pháp từ Mã chỉ sử dụng hai ký tự "0" và "1" để biểu diễn gọi là mã nhị phân Loại mã dùng ký hiệu bằng một nhóm ký tự có độ dài nhất định cho mỗi

từ mã là mã có độ dài cố định Loại mã này ta luôn giải mã được Nhưng nếu lưu trữ như vậy sẽ rất tốn kém, nên người ta thường dựa vào tần suất xuất hiện các chữ cái

để mã, với tần suất càng nhiều mã càng ngắn Mã như vậy gọi là mã có độ dài thay đổi Tuy nhiên nếu độ dài của từ mã thay đổi thì không phải với ánh xạ mã nào cũng

có thể giải mã được

Xét ví dụ ánh xạ mã: a  100; b  1000; c  0

Mã của "ac" và "b" đều là dãy bit "1000" Như vậy khi nhận được chuỗi bit

1000 chúng ta không thể biết được rằng văn bản ban đầu là "b" hay là "ac" Cho nên khi mã hoá sử dụng mã có độ dài thay đổi cần có tính chất là giải mã được, đó là tính phân tách Tính phân tách được đưa ra dưới đây sẽ đảm bảo cho tính giải được của mã

Trang 8

Xét A và B là hai đoạn mã tạo ra từ các bít 0/1 Ta nói A là đầu của B nếu như có một đoạn C sao cho B = A + C Một tập hợp M tạo ra được gọi là phân tách nếu không có đoạn nào là đầu của đoạn khác

Như vậy, mã có độ dài từ mã cố định là mã phân tách

1.2 Nén dữ liệu

Dữ liệu: Giả sử có bảng chữ cái A = {x 1 ,x 2 , x n}, X là một bản tin trên bảng

chữ cái A Ta gọi bản tin Y trên bảng chữ cái nhị phân B = {0,1} là bản mã của bản

tin X, nếu tồn tại ánh xạ f sao cho Y = f(X) Khi đó Y được gọi là dữ liệu của bản tin X

Nén dữ liệu: Ta kí hiệu L(Y) là số bít của bản tin Y Giả sử Lf (Y) là dung tích

dữ liệu của bản tin X với phép mã hóa f, việc tìm phép mã hóa g sao cho Lg(Y) 

Lf(Y) gọi nén dữ liệu

Từ các khái niệm, định nghĩa nêu trên chúng ta dễ dàng nhận ra bản chất của việc nén dữ liệu là đi tìm phép mã hóa bản tin sao cho dung tích dữ liệu của nó càng nhỏ càng tốt Một file dữ liệu không thể nén đến bao nhiêu tuỳ ý vẫn cần đảm bảo

sự tồn tại của dữ liệu đó Một file dữ liệu chỉ có thể nén đến một giới hạn nhất định,

giới hạn ấy gọi Entropy Entropy chỉ phụ thuộc vào dữ liệu, không phụ thuộc vào

thuật toán

1.3 Entropy

* Độ đo Logarit của thông tin: Giả sử có hai biến ngẫu nhiên X và Y; X có thể

nhận các giá trị trong tập {x 1 ,x 2 , ,x n} và Y có thể nhận giá trị trong tập

{y 1 ,y 2 ,…,y m} Chúng ta cần xác định về mặt định lượng thông tin của sự kiện X = xikhi đã biết Y = yj Rõ ràng là nếu X và Y là hai biến độc lập thì việc biết trước

Y = yj thì không cho lượng thông tin nào về việc xảy ra X = xi Mặt khác nếu X và

Y phụ thuộc nhau đầy đủ thì khi Y = yj xác định được X = xi thì nội dung thông tin (Information Content) đơn giản được cho bởi X = xi Khi đó thông tin có được về việc xảy ra sự kiện X = xi nhờ đã xảy ra sự kiện Y = yj được tính bằng:

Trang 9

) ( ) / (

log )

, (

i j i x p y x p j

Đơn vị của I(xi,yj) được xác định bởi cơ số của Logarit người ta thường lấy là

2 hoặc e, nếu cơ số là 2 ta gọi đơn vị của I là bit, nếu là e ta gọi là đơn vị tự nhiên

Công thức chuyển đổi giữa các đơn vị là :

lna = ln2log 2 a = 0,69315log 2 a

Trường hợp X và Y là hai biến độc lập thì p(xi|yj) = p(xi) khi đó từ công thức

1.1 suy ra I(xi,yj) = 0 Khi sự kiện Y = yj xảy ra, mà chắn chắn sự kiện X = xi xảy ra thì: p(xi|yj) = 1 Khi đó công thức 1.1 có dạng:

I(x i ,y j ) = log 1/p(x i ) hay I(x i ,y j ) = - log p(x i )

Công thức 1.3 chính là thông tin của sự kiện X = xi, có thể viết công thức 1.3

ở dạng:

I(x i ) = - log p(x i )

Cần chú ý rằng từ 1.4 suy ra sự kiện có xác suất càng cao thì lượng thông tin

mang lại ít hơn sự kiện có xác suất thấp Rõ ràng với sự kiện x bất kỳ mà p(x) = 1 thì I(x) = 0, nghĩa là việc xảy ra sự kiện x không mang lại lượng thông tin nào Xét ví dụ sau: Giả sử có nguồn rời rạc phát đi các bit 0, 1 với xác suất bằng nhau bằng 1/2 trong t giây thông tin đưa ra từ nguồn là:

I(xi) = - log2 1/2 = 1 bit, ở đây x i = 0 hoặc x i = 1

Hoặc ví dụ khác: Giả sử xét mô hình thống kê độc lập Xét dãy k bít của nguồn phát đi, rõ ràng có tất cả M = 2k dãy k bit khác nhau do vậy các dãy này có xác suất xuất hiện bằng nhau và bằng 1/2k

. Khi đó:

I(xi) = - log2 1/2k = k bit trong khoảng thời gian k.t Như vậy có thể thấy độ đo Logarit của thông tin có tính chất cộng khi ta coi đầu ra của nguồn ra là một dãy

1.1

1.2

1.3

1.4

Trang 10

()()

(

1 1

i n

i

i n

i

i

x P X

,(

1 1

j i n

1 1

) , ( )

, (

j i j i

y p x p y x P n

Từ đây suy ra: I(x i ,y j ) = I(y j ,x i )

Như vậy thông tin về sự kiện X = xi khi xảy ra sự kiện Y = yj đã xảy ra bằng thông tin về sự kiện Y = yj khi sự kiện X = xi đã xảy ra

Ngoài ra từ định nghĩa thông tin phụ thuộc lẫn nhau (Mutual Information) và thông tin độc lập (Self Information) được dùng để xác định thông tin có điều kiện (Condition self - Information)

I(x i |y j ) = log [1/ p(x i |y j )] = -log p(x i |y j )

Kết hợp các đẳng thức 1.1 và 1.4 ta có:

I(x i ,y j ) = I(x i )- I(x i |y j )

Từ 1.7 có thể suy ra thông tin phụ thuộc lẫn nhau giữa các cặp sự kiện có thể

dương, bằng 0 hoặc âm

Trung bình của thông tin phụ thuộc: Từ định nghĩa thông tin phụ thuộc lẫn nhau của các cặp sự kiện (xi, yj) của hai biến ngẫu nhiên X và Y, khi đó ta có thể nhận được giá trị trung bình của thông tin phụ thuộc của hai biến ngẫu nhiên X, Y

Trang 11

(

1

i n

i

x P X

Giả sử có không gian xác suất X = {x 1 ,x 2 , ,x n}, xác suất xuất hiện các sự kiện

tương ứng là P = {p 1 ,p 2 , ,p n} Khi đó giá trị trung bình thông tin H(X) của xi  X làm xuất hiện sự kiện pi  P được gọi là Entropy Công thức tính Entropy là:

Trong trường hợp đặc biệt, khi mã các kí tự trong nguồn có xác suất như nhau p(xi) = 1/n với i = 1, 2, … n Khi đó:

n n

n n

n X

H( )(1log1 1log1)logNói chung H(X)  logn cho tập nguồn gồm các chữ cái Nói một cách khác Entropy của nguồn rời rạc là cực đại khi các kí tự trong bảng chữ cái có xác xuất bằng nhau

1.4 Các kết quả cơ bản về nén dữ liệu

1.4.1 Phân loại nén dữ liệu

Kỹ thuật nén dữ liệu có thể được phân theo 2 hướng chính: Nén dữ liệu không mất thông tin, nén dữ liệu có mất thông tin

1.4.1.1 Nén dữ liệu không mất thông tin

Nén dữ liệu không mất thông tin được dùng với bản tin dạng văn bản Do tính chất quan trọng của dữ liệu, sau khôi phục dữ liệu phải giống hoàn toàn với dữ liệu gốc Ta định nghĩa như sau:

Gọi X là tệp dữ liệu gốc, Y là tệp dữ liệu được nén qua phép mã f với

Lf(Y)  L(X) Nếu tồn tại một ánh xạ f-1 sao cho X= f-1(Y) thì phép mã f gọi là nén không mất thông tin

1.4.1.2 Nén dữ liệu có mất thông tin

Nén dữ liệu có mất thông tin thường sử dụng cho các bản tin là hình ảnh, âm thanh hay video Trong các bản tin này người ta thực hiện mã bằng cách loại bỏ đi các yếu tố mà con người không thể nhận biết Sau khi khôi phục, dữ liệu thu được khác dữ liệu gốc, nhưng sự sai khác đó có thể chấp nhận được

1.11

1.12

Trang 12

Định nghĩa:

Gọi X là tệp dữ liệu gốc, Y là tệp dữ liệu được nén qua phép mã f sao cho

Lf(Y)  L(X) Không tồn tại một ánh xạ f-1sao cho X = f-1(Y), thì phép mã f gọi là nén có mất thông tin

Sử dụng kỹ thuật nén có mất thông tin trong nén ảnh, người ta thực hiện chuyển từ ảnh Bitmap sang ảnh Jpeg, ở đây sẽ chuyển từ hệ màu này sang hệ màu khác mà hệ màu mới sẽ giảm bớt các mà mà mắt người ít cảm nhận thấy Đối với Video, thực chất là tập hợp của các ảnh liên tiếp thành các frame với số lượng thích hợp mà mắt người không phân biệt sự thay đổi Như vậy các ảnh gần nhau sẽ có nhiều thông tin giống nhau Do vậy khi nén, ngoài việc sử dụng kỹ thuật nén ảnh, người ta quan tâm yếu tố nữa là giảm tốc độ chuyển động của các frame Đối với

âm thanh, người ta thực hiện mã bằng cách tính toán tín hiệu gốc đưa ra bộ tham số đặc trưng sau khi đã loại bỏ những yếu tố mà con người ít cảm nhận được Việc lưu trữ, truyền tin và khôi phục dữ liệu được thực hiện trên bộ tham số này

Điều kiện đầu tiên để nén được văn bản là các văn bản khác nhau thì có cá c file nén khác nhau Bởi nếu không thì ta không thể khôi phục lại văn bản nguồn Mọi văn bản không thể nén lại thành một file chỉ có 1 bit vì số lượng các file có 1

Trang 13

bit là 2 Một qui trình nén như vậy thì chỉ có thể dùng để nén 2 văn bản mà thôi đến văn bản thứ 3 là nội dung của file nén sẽ bị trùng lặp Vậy thì không thể nén một

văn bản nhỏ tùy ý được Giới hạn nén của một văn bản là bao nhiêu ? Shannon là

người đầu tiên chứng minh được sự tồn tại một giới hạn né n cho mỗi văn bản Một văn bản thực ra chỉ có thể nén đến một giới hạn nhất định , giới hạn ấy gọi là lượng tin của văn bản Lượng tin chỉ phụ thuộc vào bản thân văn bản chứ không phụ thuộc vào thuật toán nào Mọi thuật toán đều không thể nén một văn bản đế n một file nhỏ

hơn lượng tin mà văn bản có Lượng tin còn được gọi là Entropy

Đối với văn bản được sinh ra từ mô hình rời rạc thì:

Định lý Shannon

Xét các văn bản được tạo ra theo cách chọn ngẫu nhiên các chữ cái của bảng

chữ cái A = {a 1 ,a 2 , ,a m} với xác suất xuất hiện tương ứng p1  p2   pm > 0

1 Với mọi mã nhị phân

(a) Bit trung bình của mã thoả mãn 

theo bất cứ cách nào

Định lý đã được chứng minh trong tài liệu tham khảo [1]

Ví dụ: Cho văn bản sau

adbadacbdcbacbdbacbacdcdacbadacbdbacbacbacdbadacbacbacbadacbacbacbadcd bacbadbacdbdcbacdacbacbacbacdda

1.13

Trang 14

)(

19 101

26 log 101

26 101

26 log 101

26 101

30 log 101

1.4.2.2 Mã Huffman

Định nghĩa

Cho bảng chữ cái A = {a 1 , a 2 , ., a m } với xác suất xuất hiện tương ứng là

p 1 p 2 p m > 0

 Xét mã trên A với các từ mã tương ứng dài (a 1 ), (a 2 ), , (a m )

Một mã được gọi là tối ưu nếu bít trung bình của mã là nhỏ nhất có thể

Chúng ta sẽ xét một loại mã cho mã tối ưu Đó là mã Huffman

 Cách tạo mã Huffman:

Nếu bảng chữ cái chỉ có 2 chữ cái thì ta đánh mã chúng là "0" và "1"

Ta định nghĩa mã Huffman cho bảng có m chữ cái bằng đệ qui như sau :

 Xếp bảng chữ cái theo thứ tự xác suất xuất hiện của nó giảm dần

(p1p2 pm>0) Như vậy chữ cái ở cuối bảng là chữ cái có xác suất xuất hiện nhỏ nhất

 Ghép 2 chữ cái với xác suất nhỏ nhất lại thành một chữ cái kép với xác suất xuất hiện là tổng của hai xác suất ấy Như vậy trong bảng chữ cái mới 2 chữ cái này bị loại nhưng chữ cái kép được thêm vào

 Tạo mã Huffman cho bảng chữ cái mới này (có m - 1 chữ)

 Tạo 2 từ mã mới bằng cách thêm "0" và thêm "1" vào mã của chữ cái kép Gán 2 mã này cho 2 chữ cái bị ghép lại

Ví dụ 1: Với không gian xác suất các sự kiện {e, a, i, o, u, ô} các xác suất tương

ứng là (e,0.3) (a,0.2) (o,0.2) (i,0.1) (u,0.1) (ô,0.1) thì ta cần ghép 5 lần như sau:

Trang 15

e  0.3 e  0.3 e  0.3 {a,o}  0.4 {{{u,ô},i,

e}  0.6

{{{{u,ô},i},e, {a,o}}  1.0

o Mã Huffman là mã tối ưu

o Đối với mã tối ưu thì 

1log

m

i i i

1log

Bất đẳng thức thứ nhất đúng cho mã giải được bất kỳ

Định lý đã được chứng minh trong tài liệu tham khảo [1]

{{{{u,«},i},e},{a, o}}

{a,o} {{{u,ô},i},e}

Trang 16

k k

1 2

5 1 5 1

1

1

1 log

2 2

2

1 log 

i i

p1 log2

1 3

log

1 log2  2  i

i

i i

log2

Ví dụ 2:

Nếu bảng có n chữ cái thì từ mã Huffman dài nhất có thể là bao nhiêu? Từ

mã dài nhất sẽ xảy ra cây nhị phân Huffman luôn lệch về một phía như sau:

Xét bảng chữ cái có tần xuất tương ứng {1,1,1,2,3,5,8, ,fm} Trừ số hạng đầu tiên còn lại là các số của dãy Fibonaci

Công thức tổng quát là fk = fk-1 + fk-2 Ta đã biết

Tổng các tần xuất là fm+2 Trong quá trình đệ quy thì từ kép bao giờ cũng đứng ở vị trí áp chót Cần m bước đệ quy nên từ mã ứng với xác suất dài m + 1 Đối với mã Shannon thì độ dài từ mã xấp xỉ - log2fm+2 Như vậy, độ dài từ mã của chữ cái này trong mã Huffman dài gấp lần độ dài từ mã của nó trong mã

Shannon (do tỷ số tiến tới < 1 khi m  )

Như vậy không nhất thiết từ mã cho các chữ cái của mã tối ưu luôn phải ngắn nhất có thể Thậm chí cũng không thể coi độ dài từ mã, ngay cả khi là mã tối

ưu, là thước đo lượng tin của phần tử

Chú ý:

Mặc dù chúng ta đã biết được rằng với mọi mã giải được thì

Thế nhưng đối với từng ký tự thì không có bất đẳng thức

Ta có thể lấy ví dụ như sau: bảng chữ cái gồm 3 chữ “a”, “b”, “c” với xác suất là 1/3, 1/3 và 1/3 thì mã hóa Huffman của chúng ta là “a”  “0”, “b”  “10”,

“c”  “11” Như vậy, đối với chữ cái “a”, ta có tức là Nhưng đối với mã Shannon thì ta có

Trang 17

ảnh tại vị trí đó Mỗi phần tử trong ma trận được gọi là một phần tử ảnh, thông thường kí hiệu là PEL (Picture Element) hoặc là điểm ảnh (Pixel)

- Với ảnh đa cấp xám: Nếu dùng 8 bit (1 byte) để biểu diễn mức xám, thì số

các mức xám có thể biểu diễn được là 28 hay 256 Mỗi mức xám được biểu diễn dưới dạng là một số nguyên nằm trong khoảng từ 0 đến 255, với mức 0 biểu diễn cho mức cường độ đen nhất và 255 biểu diễn cho mức cường độ sáng nhất

- Với ảnh màu: Cách biểu diễn cũng tương tự như với ảnh đen trắng, chỉ khác

là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng rẽ gồm: đỏ (red), lục (green) và lam (blue) Để biểu diễn cho một điểm ảnh màu cần 24 bit, 24 bit này được chia thành ba khoảng 8 bit Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính

1.5.1.2 Xử lý ảnh số

Xử lý ảnh là một khoa học mặc dù còn tương đối mới so với nhiều ngành khoa học khác, nhất là trên quy mô công nghiệp Xử lý ảnh số có rất nhiều ứng

Pixel or PEL

or

PEL

Độ sáng trung bình trong mỗi hình chữ nhật = giá trị một điểm ảnh

Hình 1.1: Biểu diễn một mức xám của ảnh số

Trang 18

dụng như làm nổi các ảnh trong y học, khôi phục lại ảnh do tác động của khí quyển trong thiên văn học, tăng cường độ phân giải của ảnh truyền hình mà không cần thay đổi cấu trúc bên trong của hệ thống chuyển tải, nén ảnh trong khi truyền đi xa hoặc lưu trữ Các giai đoạn chính trong xử lý ảnh có thể được mô tả trong hình sau:

1.5.2 Mục đích và sự cần thiết của nén ảnh

Nén ảnh là một kỹ thuật mã hoá các ảnh số hoá nhằm giảm số lượng các bit

dữ liệu cần thiết để biểu diễn ảnh Mục đích là giảm đi những chi phí trong việc lưu trữ ảnh và chi phí thời gian để truyền ảnh đi xa trong truyền thông nhưng vẫn đảm bảo được chất lượng của ảnh Nén ảnh thực hiện được là do một thực tế: thông tin trong bức ảnh không phải là ngẫu nhiên mà có trật tự, tổ chức Vì thế nếu bóc tách được tính trật tự, cấu trúc đó thì sẽ biết phần thông tin nào quan trọng nhất trong bức ảnh để biểu diễn và truyền đi với số lượng ít bit hơn so với ảnh gốc mà vẫn đảm bảo tính đầy đủ của thông tin Ở bên nhận quá trình giải mã sẽ tổ chức, sắp xếp lại được bức ảnh xấp xỉ gần chính xác so với ảnh gốc nhưng vẫn thỏa mãn chất lượng yêu cầu

Dưới đây là ví dụ về lưu trữ ảnh số và truyền đi xa với đường truyền 9600 baud (9600 bps) để thấy rõ sự cần thiết của việc nén ảnh:

 Ảnh đa cấp xám hay ảnh 256 màu có kích thước 800x600, 8 bit/điểm ảnh, cần 3.840.000 bit lưu trữ và mất 6.67 phút để truyền

Hình 1.2: Các giai đoạn chính trong xử lý ảnh

Trang 19

 Ảnh màu RGB (24 bit/điểm ảnh) cùng độ phân giải như vậy cần hơn 10 triệu bit để lưu trữ và 20 phút để truyền

 Một phim âm bản có kích thước 24x36 mm (35 mm) chia bằng các khoảng cách nhau 12 âm, vào khoảng 3000x2000 điểm, 8 bit/pixel, yêu cầu 48 triệu bit cho lưu giữ ảnh và 83 phút để truyền

Qua ví dụ trên ta thấy nhiều vấn đề trong việc lưu trữ và truyền tải ảnh số hoá Nén ảnh có nhiều ứng dụng trong thực tế như: truyền các văn bản đồ hoạ qua đường điện thoại (Fax), nén ảnh trong y tế và truyền hình cáp, Chính sự ứng dụng trong nhiều lĩnh vực của nén ảnh cùng với sự tiến bộ trong lĩnh vực vi điện tử dẫn đến sự ra đời các chuẩn nén ảnh

Nén ảnh đạt được bằng cách loại bỏ các phần dư thừa trong ảnh đã được số hoá Dư thừa có thể là dư thừa thông tin về không gian, dư thừa về cấp xám hay dư thừa về thời gian:

 Dư thừa thông tin về không gian: trong một bức ảnh luôn tồn tại sự tương quan giữa các điểm ảnh cạnh nhau

 Dư thừa thông tin về cấp xám: là dư thừa dựa vào sự tương quan giữa các màu sắc cạnh nhau

 Dư thừa thông tin về thời gian: Trong một chuỗi ảnh video, tồn tại sự tương quan giữa các điểm ảnh của các frame khác nhau

1.5.3 Phân loại các phương pháp nén ảnh

1.5.3.1 Các khái niệm cơ bản

 Pixel (picture element): phần tử ảnh

Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng Để

có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hoá ảnh

Như vậy một ảnh là một tập hợp các pixel, mỗi pixel là gồm một cặp toạ độ

x, y và màu, cặp toạ độ x, y tạo nên độ phân giải (resolution), màn hình máy tính có nhiều loại với độ phân giải khác nhau: 320x200, 640x350, 800x600, 1024x768, …

Trang 20

r = kích thước dữ liệu gốc/kích thước dữ liệu nén

Như vậy hiệu suất nén = (1- tỷ lệ nén)*100%

+ Đối với ảnh tĩnh, kích thước chính là số bit biểu diễn toàn bộ bức ảnh + Đối với ảnh video, kích thước chính là số bit để biểu diễn một khung hình

video (video frame)

1.5.3.2 Phân loại dựa vào nguyên lý nén

Nén bảo toàn thông tin (losses compression): bao gồm các phương pháp nén

mà sau khi giải nén sẽ thu được chính xác dữ liệu gốc Tuy nhiên nén bảo toàn

thông tin chỉ đạt hiệu quả nhỏ so với phương pháp nén không bảo toàn thông tin

Nén không bảo toàn thông tin (lossy compression): bao gồm các phương

pháp nén sau khi giải nén sẽ không thu được dữ liệu như bản gốc Các phương pháp này được gọi là “tâm lý thị giác” đó là lợi dụng tính chất của mắt người chấp nhận một số vặn xoắn trong ảnh khi khôi phục lại Phương pháp này luôn đem lại hiệu

quả cao do loại bỏ đi những thông tin dư thừa không cần thiết

1.5.3.3 Phân loại dựa vào cách thức thực hiện nén

Phương pháp không gian (Spatial Data Compression): các phương pháp này

thực hiện nén bằng cách tác động trực tiếp lên việc lấy mẫu của ảnh trong miền

không gian

Trang 21

Phương pháp sử dụng biến đổi (Transform Coding): gồm các phương pháp tác động lên sự biến đổi của ảnh gốc chứ không tác động trực tiếp

1.5.3.4 Phân loại dựa vào lý thuyết mã hóa

Các phương pháp nén thế hệ thứ nhất: gồm các phương pháp có mức độ tính

toán đơn giản như lấy mẫu, gán từ mã,

Các phương pháp nén thế hệ thứ hai: gồm các phương pháp dựa vào mức độ

bão hoà của tỷ lệ nén bằng cách sử dụng các phép toán tổ hợp đầu ra một cách hợp

lý hoặc sử dụng biểu diễn ảnh như: phương pháp kim tự tháp Laplace, phương pháp dựa vào vùng gia tăng, phương pháp tách hợp

1.5.3.5 Quá trình nén và giải nén

Gồm 2 công đoạn:

Nén: dữ liệu gốc qua bộ mã hoá dữ liệu, bộ mã hoá này thực hiện nén dữ liệu

đến một mức thích hợp cho việc lưu trữ và truyền dẫn thông tin Quá trình này sẽ thực hiện việc loại bỏ hay cắt bớt những dư thừa của ảnh để thu được thông tin cần thiết nhưng vẫn đảm bảo được chất lượng ảnh

Giải nén: dữ liệu nén đi qua bộ giải mã dữ liệu, bộ giải mã sẽ thực hiện giải

nén để thu được dữ liệu gốc ban đầu Việc giải nén này thường phải dựa vào các thông tin đi kém theo dữ liệu nén, tuỳ thuộc vào kiểu nén hay phương pháp nén mà

dữ liệu giải nén được có hoàn toàn giống với dữ liệu gốc ban đầu hay không

Tóm lại quá trình nén và giải nén dữ liệu có thể mô tả một cách tóm tắt theo

sơ đồ dưới đây:

Hình 1.3: Quá trình nén và giải nén

Quá trình nén Quá trình giải nén

Dữ liệu nén

Dữ liệu gốc

Trang 22

Chương 2 MỘT SỐ THUẬT TOÁN MÃ HÓA VÀ NÉN DỮ LIỆU

2.1 Thuật toán HUFFMAN

2.1.1 Ý tưởng của thuật toán

Ý tưởng của thuật toán mã hoá HUFFMAN là dựa vào mô hình thống kê Người ta tính tần suất xuất hiện của các ký tự bằng cách duyệt tuần tự từ đầu tệp gốc đến cuối tệp Việc xử lý ở đây tính theo bit Trong phương pháp này các ký tự

có tần suất cao thì được gán một từ mã ngắn, các ký tự có tần suất thấp thì được gán một từ mã dài Như vậy với cách thức này ta đã làm giảm chiều dài trung bình của

từ mã hoá bằng cách dùng các từ mã có độ dài khác nhau

- Bước hai:

Duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép hai phần tử có tần suất thấp thành một phần tử duy nhất có tần suất bằng tổng hai tần suất thành phần Cập nhật phần tử này vào vị trí phù hợp trong bảng và loại bỏ hai phần tử đã xét Thực hiện cho đến khi bảng chỉ có một phần tử Đây là quá trình tạo cây nhị phân HUFFMAN, phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái Sau khi cây

đã tạo xong người ta tiến hành gán mã cho các nút lá Việc mã hoá thực hiện theo quy định: mỗi lần xuống bên phải ta thêm một bit „1‟ vào từ mã, mỗi lần xuống bên trái ta thêm một bit „0‟ vào từ mã

Quá trình giải nén cũng khá đơn giản được tiến hành theo chiều ngược lại Người ta cũng phải dựa vào bảng mã tạo ra trong giai đoạn nén (bảng này được lưu

Trang 23

trữ trong cấu trúc đầu của tệp nén cùng với dữ liệu nén)

Ví dụ: Một tệp bất kỳ có tần suất xuất hiện của các kí tự số nhƣ bảng sau:

Trang 24

Mô tả: Ta tiến hành hợp nhất hay cộng 2 tần suất nhỏ nhất ở cuối bảng để

thu được giá trị tần suất mới sau đó đưa giá trị này trở lại bảng tần suất ban đầu đã

bỏ đi 2 tần suất thành phần tạo thành nó Sau khi đưa giá trị mới vào bảng ta phải tiến hành sắp xếp lại toàn bộ bảng, lúc này số lượng tần suất chỉ còn là (n – 1) nếu ban đầu số lượng tần suất là n Tiếp tục thực hiện lần lượt theo thứ tự như trên cho đến khi nào số lượng tần suất chỉ còn lại duy nhất 1 giá trị

 Việc tạo cây nhị phân được thực hiện theo một thuật toán sau:

1 Tất cả những ký tự ban đầu được xem như là những ký tự giao điểm tự do

2 Hai nút tự do với tần số xuất hiện thấp nhất được phân công tới một nút gốc với giá trị bằng với tổng của hai nút con tự do

3 Hai nút con được chuyển khỏi danh sách nút tự do Chuyển nút gốc mới tạo thành công vào danh sách

4 Bước hai sang bước ba được lặp cho đến khi chỉ có 1 nút tự do về phía trái Nút tự do này là gốc của cây

Trong thuật toán mã HUFFMAN, mã của ký tự là duy nhất và không mã nào

là phần bắt đầu của mã trước Vì vậy khi đọc theo từng bit từ đầu đến cuối tệp nén

ta có thể duyệt cây mã cho đến một lá, tức là ký tự đã được giải mã Việc giải mã chắc chắn phải sử dụng cây nhị phân giống như trong mã hoá Để đọc, giải mã được yêu cầu phải sử dụng theo đúng tiêu chuẩn nhất định

Trang 25

Ưu điểm: của thuật toán mã hoá HUFFMAN là đạt được hệ số nén cao (Hệ

số nén tuỳ thuộc vào cấu trúc của các tập tin)

Nhược điểm: bên nhận muốn giải mã được thông điệp thì phải có một bảng

mã giống như bảng mã ở bên gửi, do đó khi nén các tập tin bé hệ số nén không được cao

2.2 Thuật toán tách đoạn RLE (Run-length Coding)

Mã hoá theo độ dài loạt RLE (Run-Length Encoding) là một thuật toán nén dựa trên sự cắt bớt các dư thừa về không gian (loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự lặp lại, một vài hình ảnh có vùng màu lớn không đổi đặc biệt đối với ảnh nhị phân), các vùng dữ liệu hằng của các tập tin chương trình, một số tập tin văn bản, Loạt được định nghĩa là dãy các phần tử điểm ảnh (pixel) liên tiếp có cùng chung một giá trị.

2.2.1 Ý tưởng của thuật toán

Ý tưởng của thuật toán này là phát hiện một loạt các điểm ảnh lặp lại liên tiếp, ví dụ: 110000000000000011 Ta thấy điểm ảnh có giá trị 0 xuất hiện nhiều lần liên tiếp thay vì phải lưu trữ toàn bộ các điểm ảnh có giá trị 0 ta chỉ cần lưu trữ chúng bằng cách sử dụng các cặp (độ dài loạt, giá trị)

Trang 26

Cho một chuỗi nguồn d:

Như vậy chuỗi sau khi mã hoá đã lớn hơn nhiều chuỗi nguồn ban đầu

Do đó cần phương pháp cải tiến để xử lý những trường hợp như trên tránh làm mở rộng chuỗi dữ liệu nguồn nghĩa là chỉ mã hoá độ dài loạt dữ liệu lặp lại Người ta đã đưa ra cách đó là thêm kí tự tiền tố vào trước độ dài loạt, việc giải mã được thực hiện nếu gặp kí tự tiền tố với độ dài loạt và giá trị điểm ảnh theo sau

Tuy nhiên trong một số trường hợp các điểm ảnh có độ tương quan với nhau

về giá trị mức xám như trong ví dụ dưới đây ta có thể tiến hành xử lý như sau

Trang 27

Thuật toán như sau:

 Tiến hành duyệt trên từng hàng cho đến khi kết thúc vùng dữ liệu ảnh, trong quá trình duyệt tiến hành kiểm tra để tìm ra những loạt có cùng giá trị đồng thời chú ý những kí hiệu xuống dòng (hay kết thúc dòng), kết thúc ảnh Bitmap, …

 Khi gặp loạt có độ dài > 1 thì nhảy đến chế độ nén, ngược lại nhảy đến chế độ không nén tuy nhiên nếu loạt > 255 thì sẽ tách ra chỉ mã < 255 sau

đó mã tiếp phần còn lại

 Kết thúc khi gặp kí hiệu kết thúc file

Ưu điểm: Thuật toán RLE đạt hiệu quả khi chuỗi lặp lớn hơn 1 ngưỡng nhất

định nào đó hay nói các khác trong ảnh cần nén phải có nhiều điểm ảnh kề nhau có cùng giá trị màu

Nhược điểm: Thuật toán này không đem lại cho ta kết quả một cách ổn định

vì nó phụ thuộc hoàn toàn vào ảnh nén và chỉ thích hợp cho những ảnh đen trắng hay ảnh đa cấp xám

Tóm lại:

Qua hai thuật toán nén được tìm hiểu bên trên, ta thấy thuật toán nén độ dài loạt RLE không thể áp dụng cho nhiều loại tập tin được, ví dụ như tập tin chương trình, tập tin cơ sở dữ liệu, vì ở đó các loạt chạy là rất ngắn, do đó nếu áp dụng

Trang 28

thuật toán này không những không làm bé tập tin mà còn làm lớn tập tin đó Thuật toán HUFFMAN có thể áp dụng được để nén nhiều loại tập tin trên các máy vi tính

Thuật toán HUFFMAN có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng

bé hơn 64KB Nhược điểm của nó là phải chứa cả bảng mã vào tập tin nén thì phía nhận mới có thể giải mã được do đó hiệu suất nén chỉ cao khi ta thực hiện nén các tập tin lớn

Từ các ưu và nhược điểm trên, ta thấy phương pháp nén HUFFMAN là tốt

và có hệ số nén lại cao Nhược điểm của thuật toán nén này có thể khắc phục bằng cách thực hiện nén một lần nhiều tập tin chuẩn bị truyền, làm như vậy coi như chúng ta đang thực hiện nén một tập tin lớn

2.3 Thuật toán nén ảnh JPEG

JPEG là viết tắt của Joint Photographic Expert Group (nhóm các chuyên gia

đồ hoạ phát triển chuẩn này) Chuẩn này được phát triển từ giữa thập niên 80 bởi sự hợp tác của tổ chức ISO và ITU và đến 1992 được công nhận là chuẩn ảnh quốc tế, phục vụ các ứng dụng về ảnh cho các lĩnh vực như mạng, y học, khoa học kỹ thuật, ảnh nghệ thuật, …

2.3.1 Ý tưởng của thuật toán

Chuẩn JPEG được sử dụng để mã hoá ảnh đa mức xám, ảnh màu JPEG không cho kết quả ổn định lắm với ảnh đen trắng, nó cung cấp cả 2 chế độ nén: nén mất mát thông tin và nén không tổn thất Do độ phức tạp và hiệu suất nén của JPEG không mất mát thông tin mà nó không được sử dụng phổ biến Dưới đây chỉ trình bày chi tiết về một trong các dạng nén biến đổi chấp nhận mất mát thông tin dùng biến đổi Cosin rời rạc (DTC - Discrete Cosin Transform) của chuẩn JPEG

Trang 29

2.3.2 Thuật toán nén ảnh JPEG

Nén ảnh JPEG bao gồm nhiều công đoạn, sơ đồ thuật toán nén và giải nén được mô tả như dưới đây:

Quá trình giải nén sẽ được thực hiện ngược lại, người ta dựa vào các thông tin liên quan ghi trong phần Header của file nén để giải mã từng phần ảnh nén ứng với phương pháp nén Kết quả thu được là hệ số đã lượng tử

Căn cứ vào bảng lượng tử sẽ khôi phục lại giá trị trước khi lượng tử hoá của các hệ số này Cuối cùng là biến đổi Cosin ngược để thu lại được ảnh như ban đầu

Lượng

tử hóa

Bảng lượng tử

Mã hóa

Bảng

Ảnh nén

Hình 2.1: Quá trình nén ảnh theo chuẩn JPEG

DCT ngược

Ảnh giải nén

Hình 2.2: Quá trình giải nén ảnh theo chuẩn JPEG

Trang 30

M l

N k

M

' '

+ 16 + 8 + 4 + 2 +1 =509 Như vậy thời gian tính các hệ số Cij cho ảnh 512x512 lớn

gấp 72 lần so với thời gian tính toán các hệ số này cho từng khối 8x8, nếu kích thước ảnh lớn hơn thì chi phí thời gian sẽ còn tăng gấp nhiều lần đồng thời còn giúp việc tính toán trong khi biến đổi Cosin chính xác hơn

Ảnh sẽ chia làm B khối với:

Các khối được xác định bởi bộ số (m,n) với m = [0 MB-1] và n=[0 NB-1]

Trong đó :

 m: thứ tự của khối theo chiều rộng

 n: thứ tự của khối theo chiều dài

Phân khối thực chất là xác định tương quan giữa toạ độ riêng trong khối với tạo độ thực của điểm ảnh trong ảnh ban đầu Nếu ảnh ban đầu ký hiệu Image[i,j] thì

ma trận biểu diễn khối (m,n) là x[u,v] được tính: x[u,v] = Image[mk + u, nl + v]

2.3.2.2 Biến đổi

Đây là công đoạn quan trọng của các phương pháp nén sử dụng phép biến đổi, nhiệm vụ của công đoạn này là tập trung năng lượng vào một số ít các hệ số biến đổi Trước khi vào phần chính của phương pháp biến đổi em xin trình bày phần biến đổi Cosin rời rạc (DCT) như sau:

Biến đổi Cosin rời rạc (DCT) thuận và ngược một chiều gồm N mẫu được

định nghĩa như sau:

Trang 31

Cả DCT và IDCT đều là biến đổi trực giao, tách biệt và thực Tính chất phân tách (separable) ở đây nghĩa là biến đổi nhiều chiều của nó có thể phân tách thành các biến đổi một chiều Tính chất trực giao ở đây nghĩa là nếu các ma trận của DCT

và IDCT là không bất thường (non-singular) và thực thì biến đổi ngược của chúng

có thể đạt được bằng cách áp dụng toán tử hoán vị Cũng như biến đổi FT, DCT

cũng coi dữ liệu đầu vào là tín hiệu ổn định (bất biến)

Trong các chuẩn nén ảnh tĩnh vào video, người ta thường sử dụng DCT và IDCT có kích thước 8 mẫu Bức ảnh hoặc khung ảnh video kích thước NxN được

chia thành các khối không chồng chéo nhau hai chiều gọi là các ảnh con kích thước

8x8 rồi áp dụng biến đổi DCT hai chiều ở bộ mã hoá và áp dụng biến đổi IDCT ở bộ

giải mã

Biến đổi DCT và IDCT 8 mẫu tạo thành các ma trận 8x8 theo công thức:

Thuật toán để tính 2-D DCT và IDCT là: thực hiện phép biến đổi 1-D lần lượt

cho hàng rồi đến cột của ma trận

Như vậy ở mỗi khối ảnh hai chiều kích thước 8x8, áp dụng biến đổi DCT để tạo ra mảng hai chiều các hệ số biến đổi Hệ số có tương ứng với tần số không gian thấp nhất nhưng lại có giá trị lớn nhất được gọi là hệ số DC (một chiều), nó tỉ lệ với

độ chói trung bình của cả khối ảnh 8x8 Các hệ số còn lại gọi là các hệ số AC (xoay chiều) Theo lý thuyết, biến đổi DCT không đem lại sự mất mát thông tin ảnh, mà đơn giản nó chỉ chuyển thông tin ảnh sang miền không gian mới thuật lợi hơn cho

mã hoá ở bước tiếp theo

Trang 32

j j j

y y

Khối lượng tử hoá trong sơ đồ nén đóng vai trò quan trọng và quyết định tỷ

lệ nén của chuẩn nén JPEG Đầu vào của khối lượng tử hoá là các ma trận hệ số biến đổi Cosin của các khối điểm ảnh Như ta đã biết ảnh được chia làm nhiều khối, ứng mỗi khối là các hệ số xác định Trước khi thực hiện bước lượng tử hoá ta có thể loại bỏ vài hệ số Ngoài hệ số (0,0) (được coi là thành phần DC) biểu diễn mức sáng trung bình của một khối ta có thể loại một số hệ số khác trong khối mang thông tin chi tiết về ảnh Ta có thể bắt đầu loại bỏ từ hệ số có độ lệch chuẩn thấp nhất Việc nên giữ lại bao nhiêu hệ số còn tuỳ thuộc vào việc ta muốn tỷ lệ nén cao hay thấp và những yêu cầu về chất lượng của ảnh nén

Để giảm số bộ lượng tử, người ta tìm cách quy các hệ số ở các khối về cùng một khoảng phân bố Chuẩn nén JPEG chỉ sử dụng một bộ lượng tử hoá Giả sử rằng các hệ số đều có hàm tính xác suất xuất hiện như nhau Ta sẽ căn chỉnh lại hệ

số yj bằng phép gán:

Với: μj là trung bình cộng của hệ số thứ j

j là độ lệch cơ bản của hệ số thứ j Như vậy chúng ta sẽ đồng nhất được mức quyết định và mức tạo lại cho tất

cả các hệ số Do đó, các hệ số sẽ được biểu diễn bằng cùng một số lượng bit Có nhiều cách tiếp cận để tính được các mức quyết và mức tạo lại Lloyd – Max đưa ra giải thuật sau:

Bước 1: Chọn giá trị khởi tạo:

d0 = yL

dn = yH

r0 = d0

N là số mức lượng tử

Trang 33

ij ij ij

C C

y y

dy y p

dy y p y r

1

1

) (

) (

Bước 2: Cho i biến thiên từ 1 đến N-1 thực hiện các công việc sau:

Bước 3: Nếu rN-1 ≠ r‟ điều chỉnh lại r0 và lặp lại từ bước 2 đến bước 3

Trong quá trình cài đặt thủ tục tạo ra bộ lượng tử hoá, Lloyd và Max đã có nhiều cải tiến để tính toán dễ dàng hơn

Sau đây là các bước mô tả toàn bộ công việc của khối lượng tử hoá tác động lên các hệ số biến đổi Cosin:

Bước 1: Tính trung bình cộng μ và độ lệch cơ bản σ cho từng hệ số ở

mỗi vị trí trong khối:

Bước 2: Lựa chọn tỷ lệ hệ số giữ lại trong mỗi khối

Bước 3: Giữ lại các hệ số có độ lệch cơ bản lớn hơn

Bước 6: Tính phân bố của các giá trị xoay chiều đã căn chỉnh

Bước 7: Tính độ lệch cơ bản σs của các phân bố vừa tính

Bước 8: Lượng tử hoá các hệ số xoay chiều bằng cách sử dụng bộ

lượng tử Lloyd – Max sau khi đã điều chỉnh mức quyết định và mức tạo lại của nó theo cách sau:

di  di x σs

ri  ri x σs

dN = - d0

Trang 34

Thành phần một chiều sẽ không lượng tử hoá (phần tử (0,0) của khối 8x8 được coi là thành phần một chiều, 63 phần tử còn lại được coi là các thành phần xoay chiều) Đến đây ta chuyển sang bước nén

di có giá trị nhỏ hơn hiều so với Ci nên trong biểu diễn dấu phẩy động có nhiều chuỗi bít 0 cho hiệu suất nén cao hơn Giá trị C0(0,0) và các độ lệch di được ghi ra một tệp tạm thời Tệp này được nén bằng phương pháp nén Huffman

Thành phần các hệ số xoay chiều Ci(m,n) với 1 = m  7, 1  n  7 chứa các thông tin chi tiết của ảnh Để nâng cao hiệu quả nén cho mỗi bộ hệ số trong một khối người ta xếp chúng lại theo thứ tự Zig-Zag Việc sắp xếp này giúp tạo ra nhiều loạt hệ số giống nhau do năng lượng của khối hế số giảm dần từ góc trên bên trái xuống góc dưới bên phải

Dưới đây là một minh hoạ về khối Zig-Zag :

Trang 35

Mỗi khối Zig - Zag này được mã hoá theo phương pháp RLE Cuối mỗi khối đầu ra của RLE, ta đặt dấu kết thúc khối EOB (End Of Block)

Sau đó các khối được dồn lại và lại mã hoá một lần bằng phương pháp mã HUFFMAN Nhờ có dấu kết thúc khối nên có thể phân biệt hai khối cạnh nhau khi giải mã HUFFMAN Hai bảng mã HUFFMAN cho hai thành phần hệ số tất nhiên

sẽ khác nhau

Để có thể giải nén được, chúng ta phải ghi lại các thông tin như: kích thước ảnh, kích thước khối, ma trận T, độ lệch tiêu chuẩn, các mức tạo lại, hai bảng mã HUFFMAN, kích thước khối nén một chiều, kích thước khối nén xoay chiều, … và ghi nối tiếp vào hai tệp nén của hai thành phần hệ số

Cài đặt giải thuật cho nén JPEG thực sự phức tạp, chúng ta phải nắm được các kiến thức về nén RLE, HUFFMAN, biến đổi Cosin, xây dựng bộ lượng tử hoá Lloyd – Max, … Tuy nén và giải nén JPEG hơi chậm nhưng bù lại cho kích thước tệp nén nhỏ

2.4 Thuật toán nén ảnh AIC (Advanced Image Coding)

Nén ảnh nâng cao AIC là sự kết hợp giữa nén hình ảnh từ các tiêu chuẩn

H.264/AVC (Advanced Video Coding) và thuật toán nén ảnh JPEG để tạo ra một

phương pháp nén ảnh tĩnh mới có chất lượng nén tốt với độ phức tạp không cao Cụ

thể hơn, nó kết hợp khối dự đoán trong ảnh (Intra frame block prediction) của

chuẩn H.264/AVC với phép biến đổi Cosin rời rạc (DCT) phương pháp JPEG, sau

đó sẽ sử dụng mã số học nhị phân thích nghi ngữ cảnh CABAC (Context adaptive binary arithmetic coding) giống như thuật toán được sử dụng trong chuẩn H.264

Chương trình mã hóa (nén ảnh) AIC cho kết quả tốt hơn so với JPEG và gần tương đồng với nén ảnh JPEG-2000 Để so sánh một cách nhanh hơn, ta có thể nhìn

vào hình 2.4, nén ở khoảng 0,95 bit cho mỗi điểm ảnh (tỉ lệ nén 25:1) bằng cách sử

dụng các chương trình nén ảnh JPEG, JPEG-2000 và chương trình AIC

Trang 36

Ta có thể nhìn thấy hình ảnh của JPEG-2000 có chất lượng tốt hơn, mặc dù

nó có xu hướng mịn và làm mờ hình ảnh đi một chút, dẫn đến mất chi tiết Hình ảnh JPEG là rõ ràng cho thấy là kém nhất và với chương trình AIC cho chất lượng nằm

ở khoảng giữa JPEG và JPEG-2000 Mục tiêu của nén ảnh AIC là chất lượng ảnh

tốt, thể hiện là tỷ số tín hiệu đỉnh trên nhiễu PSNR (Peak Signal to Noise Ratio),

thậm chí còn cao hơn của chuẩn nén ảnh JPEG-2000 Điều này là do AIC bảo tồn các chi tiết tốt hơn, như ta có thể thấy rõ từng chi tiết nhỏ trong ảnh AIC

Nén và chất lượng ảnh AIC khi so sánh với JPEG và JPEG-2000:

- Đối với hình ảnh chụp (photographic images), AIC thực hiện tốt hơn so với JPEG và gần bằng JPEG-2000 Đối với tốc độ bít điển hình (typical bit rates), AIC thậm chí còn làm tốt hơn so với JPEG-2000

PSNR: 29,36 db

JPEG-2000: 0,95 bpp PSNR: 31,17 db

AIC: 0,93 bpp PSNR: 31,30 db

Hình 2.4: Ảnh so sánh các kết quả sau khi nén từ ảnh gốc

Trang 37

- Đối với các hình ảnh đồ họa (Graphic images) thì khoảng cách giữa

JPEG-2000 và AIC tăng lên, theo chiều hướng tốt hơn thuộc về JPEG-JPEG-2000

- Đối với các ảnh nhỏ thì khoảng cách giữa AIC và JPEG-2000 cũng tăng lên, tuy nhiên chiều hướng tốt hơn thuộc về AIC Với các kích thước hình ảnh lên đến 100x100 (hoặc 10.000 điểm ảnh) thì AIC thực hiện tốt hơn cho tốc độ nhanh và hình ảnh ổn định Điều này sẽ làm cho phương pháp AIC lý tưởng cho các ảnh trên trang web

- Thời gian thực hiện của thuật toán AIC có phần chậm hơn so với JPEG, nhưng nhanh hơn so với JPEG-2000, thậm chí ngay cả khi không cần tối ưu hóa trong chương trình

Trước khi vào thuật toán AIC em xin trình bày chuẩn H.264 lý do trong thuật

toán AIC là sự kết hợp giữa chuẩn H.264 và chuẩn JPEG (đã tìm hiểu mục 2.3)

2.4.1 Chuẩn H.264/AVC

H.264/AVC (Advanced Video Coding) là một tiêu chuẩn cho việc nén video,

quá trình biến đổi dữ liệu video kỹ thuật số thành một định dạng mà chiếm ít dung lượng hơn khi nó được lưu trữ hoặc truyền đi Nén video (hay mã hóa video) là một công nghệ vô cùng quan trọng cho các ứng dụng bao gồm truyền hình dữ liệu số, video DVD, TV di động, họp hội nghị qua video và truyền video Internet Tiêu chuẩn hóa nén video giúp các sản phẩm từ các nhà sản xuất khác nhau (ví dụ các bộ

mã hóa, các bộ giải mã và phương tiện lưu trữ) có thể vận hành qua lại Một bộ mã hóa chuyển video thành một định dạng nén và một bộ giải mã chuyển video nén ngược lại thành một định dạng không nén

H.264/AVC - “Advanced Video Coding” là một tài liệu được công bố bởi cơ

quan tiêu chuẩn quốc tế ITU-T (liên hiệp viễn thông quốc tế) và ISO/IEC (tổ chức tiêu chuẩn hóa quốc tế và Ủy ban kỹ thuật điện tử quốc tế) ban hành Nó định nghĩa một định dạng cho video được nén và một phương pháp giải mã cú pháp này để tạo

ra một chuỗi video có thể hiển thị được Tài liệu tiêu chuẩn không thực sự chỉ cách

mã hóa (nén) video dữ liệu số - điều này trái với các nhà sản xuất của bộ mã hóa

Trang 38

video Trong thực tế, bộ mã hóa chắc chắn phản ánh những thao tác của quá trình giải mã

Các tiêu chuẩn H.264/AVC được công bố lần đầu tiên vào năm 2003 Nó xây dựng dựa trên các khái niệm về các tiêu chuẩn trước đó như MPEG-2, MPEG-4 và cung cấp một khả năng nén tiên tiến và hiệu quả (tức là chất lượng nén video tốt hơn) và linh hoạt hơn trong nén, truyền tải và lưu trữ video

2.4.4.1 Ý tưởng của chuẩn H.264

Một bộ mã hóa video H.264 thực hiện các quá trình mã hóa, biến đổi và dự

báo (xem trong hình

2.5) để tạo ra một

dòng bit được nén

Một bộ giải mã video

H.264 thực hiện các

quá trình bổ sung bao

gồm giải mã, biến đổi

Khối dự đoán (Prediction):

Bộ mã hóa xử lý một khung hình của

video trong các đơn vị của một Macroblock -

MB (16x16 pixel) Nó tạo thành một dự đoán

của MB dựa trên dữ liệu đã mã hóa trước đó,

hoặc từ khung hình hiện tại (dự đoán Intra)

hoặc những khung hình khác để được mã hoá

và truyền (dự đoán Inter) Bộ mã hóa khử dự đoán từ MB hiện tại để tạo ra một phần dư

Hình 2.5: Quá trình mã hóa và giải mã video H.264

Hình 2.6: Dự đoán Intra

Ngày đăng: 09/11/2014, 19:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Lê Anh , Trần Duy Lai , Phạm Thế Long , Nguyễn Văn Xuất (2001), Lý thuyết mã nén, Học viện KTQS, Hà Nội Sách, tạp chí
Tiêu đề: Lý thuyết mã nén
Tác giả: Nguyễn Lê Anh , Trần Duy Lai , Phạm Thế Long , Nguyễn Văn Xuất
Năm: 2001
[2] Đỗ Năng Toàn, Phạm Việt Bình (2007), Giáo trình xử lý ảnh, Nhà xuất bản Đại học Thái Nguyên.Tiếng nước ngoài Sách, tạp chí
Tiêu đề: Giáo trình xử lý ảnh, "Nhà xuất bản Đại học Thái Nguyên
Tác giả: Đỗ Năng Toàn, Phạm Việt Bình
Nhà XB: Nhà xuất bản Đại học Thái Nguyên. "Tiếng nước ngoài
Năm: 2007
[3] Donald Samuel Ornstein and Benjamin Weiss (1993), Entropy and Data Compression Schemes, IEEE Transactions on Information Theory, Vol.39, No.1, January Sách, tạp chí
Tiêu đề: Entropy and Data Compression Schemes
Tác giả: Donald Samuel Ornstein and Benjamin Weiss
Năm: 1993
[4] Gyula O.H. Katona, Tibor O.H. Nemetz (1976), Huffman Codes and Self- Information, IEEE Transactions on Information Theory, Vol.22, No.3, May Sách, tạp chí
Tiêu đề: Huffman Codes and Self-Information
Tác giả: Gyula O.H. Katona, Tibor O.H. Nemetz
Năm: 1976
[5] Iain E.G. Richardson (2010), H.264 and MPEG-4 video compression: Video coding for Next-generation MultiMedia. Explains the details of the H.264 and MPEG-4 standards Sách, tạp chí
Tiêu đề: H.264 and MPEG-4 video compression: Video coding for Next-generation MultiMedia
Tác giả: Iain E.G. Richardson
Năm: 2010
[6] I.E. Witten, R.M. Neal, J.G. Cleary (1990), Text Compression, Prentice Hall Sách, tạp chí
Tiêu đề: Text Compression
Tác giả: I.E. Witten, R.M. Neal, J.G. Cleary
Năm: 1990
[7] Michael David Adams (2002), JPEG2000 - The Next Standard for Still Image Compressing Khác

HÌNH ẢNH LIÊN QUAN

Bảng mã của các  chữ cái. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Bảng m ã của các chữ cái (Trang 15)
Hình 1.1: Biểu diễn một mức xám của ảnh số. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 1.1 Biểu diễn một mức xám của ảnh số (Trang 17)
Hình 1.2: Các giai đoạn chính trong xử lý ảnh. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 1.2 Các giai đoạn chính trong xử lý ảnh (Trang 18)
Sơ đồ dưới đây: - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Sơ đồ d ưới đây: (Trang 21)
Bảng  lƣợng tử - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
ng lƣợng tử (Trang 29)
Hình 2.3: Hình minh họa về khối Zig-Zag. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.3 Hình minh họa về khối Zig-Zag (Trang 34)
Hình ảnh ban đầu, 24 bpp JPEG: 0,94 bpp - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
nh ảnh ban đầu, 24 bpp JPEG: 0,94 bpp (Trang 36)
Hình 2.5: Quá trình mã hóa và giải mã video H.264 - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.5 Quá trình mã hóa và giải mã video H.264 (Trang 38)
Hình 2.7: Dự đoán Inter. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.7 Dự đoán Inter (Trang 39)
Hình 2.8:  Biến đổi ngược: Kết hợp các cấu trúc gốc được gắn trọng số để - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.8 Biến đổi ngược: Kết hợp các cấu trúc gốc được gắn trọng số để (Trang 40)
Hình 2.9: Một khung video được nén tại cùng một tỉ lệ bít dùng MPEG-2 - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.9 Một khung video được nén tại cùng một tỉ lệ bít dùng MPEG-2 (Trang 42)
Hình 2.10: Sơ đồ khối nén AIC và giải nén AIC. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.10 Sơ đồ khối nén AIC và giải nén AIC (Trang 43)
Sơ đồ mã hóa AIC  Sơ đồ giải mã AIC - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Sơ đồ m ã hóa AIC Sơ đồ giải mã AIC (Trang 43)
Hình ảnh YCbCr  Kênh Y  Kênh Cb  Kênh Cr - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
nh ảnh YCbCr Kênh Y Kênh Cb Kênh Cr (Trang 44)
Hình 2.13: Khối 8x8 với 25 điểm ảnh. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.13 Khối 8x8 với 25 điểm ảnh (Trang 46)
Hình ảnh gốc  Hình ảnh phỏng đoán - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
nh ảnh gốc Hình ảnh phỏng đoán (Trang 49)
Hình 2.15: Ảnh độ chói dư thừa. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 2.15 Ảnh độ chói dư thừa (Trang 50)
Hình ảnh ban đầu 24bpp  JPEG: 0,50 bpp - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
nh ảnh ban đầu 24bpp JPEG: 0,50 bpp (Trang 58)
Hình 3.1: Giao diện màn hình chính của chương trình. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 3.1 Giao diện màn hình chính của chương trình (Trang 67)
Hình 3.3: Giao diện màn hình của chương trình nén ảnh HUFFMAN. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 3.3 Giao diện màn hình của chương trình nén ảnh HUFFMAN (Trang 68)
Hình 3.5: Giao diện màn chính khi chạy chương trình. - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 3.5 Giao diện màn chính khi chạy chương trình (Trang 69)
Hình  chính  (VD:  muốn - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
nh chính (VD: muốn (Trang 69)
Hình 3.7: Giao diện chương trình nén ảnh RLE  sau khi thực hiện xong quá trình nén ảnh - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 3.7 Giao diện chương trình nén ảnh RLE sau khi thực hiện xong quá trình nén ảnh (Trang 70)
Hình 3.6: Giao diện màn hình khi chạy chương trình - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Hình 3.6 Giao diện màn hình khi chạy chương trình (Trang 70)
Bảng 3.1: Kết quả chương trình thử nghiệm với ảnh đơn sắc của file ảnh *.bmp - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Bảng 3.1 Kết quả chương trình thử nghiệm với ảnh đơn sắc của file ảnh *.bmp (Trang 71)
Bảng 3.5: Kết quả so sánh chương trình thử nghiệm với chương trình hiện có dạng ảnh - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Bảng 3.5 Kết quả so sánh chương trình thử nghiệm với chương trình hiện có dạng ảnh (Trang 72)
Bảng 3.6: Kết quả so sánh chương trình thử nghiệm với chương trình hiện có dạng ảnh - Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh
Bảng 3.6 Kết quả so sánh chương trình thử nghiệm với chương trình hiện có dạng ảnh (Trang 72)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w