ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
******
TIỂU LUẬN
MẬT MÃ VÀ AN TOÀN DỮ LIỆU
Đề tài: “NÉN DỮ LIỆU DẠNG VĂN BẢN SỐ (TEXT
DATA)”
Giảng viên: PGS.TS Trịnh Nhật Tiến
Học viên thực hiện: Hoàng Việt Hải
Ngày sinh: 07/07/1983
Mã HV: 13025199
Chuyên ngành: K20TDL&MMT
Lớp MH: INT 6010 2
Điện thoại: 0982.568.151
0948.074.536
Hà Nội, 04/2014
CHƯƠNG I: TỔNG QUAN VỀ NÉN DỮ LIỆU
I.1 TỔNG QUAN VỀ NÉN DỮ LIỆU
Trong khoa học máy tính và lí thuyết thông tin, nén dữ liệu là quá trình mã
hóa thông tin dùng ít bit hơn so với thông tin chưa được mã hóa bằng cách dùng
một hoặc kết hợp của các phương pháp nào đó. Dựa theo nguyên tắc này
giúptránh các hiện tượng kênh truyền bị quá tải và việc truyền tin trở nên kinh tế
hơn. Nén dữ liệu giúp tiết kiệm các tài nguyên như dung lượng bộ nhớ, băng
thông, thời gian. Ngược lại, dữ liệu đã được nén cần phải được giải nén để đọc
(thực thi, nghe, xem v.v…), quá trình này cũng đòi hỏi các tài nguyên nhất định.
Một ví dụ điển hình là việc nén video đòi có thể đòi hỏi phần cứng đắt tiền để
quá trình giải nén đủ nhanh để ta có thể xem được. Do đó việc thiết kế một
chương trình nén dữ liệu phụ thuộc nhiều yếu tố như mức độ nén, độ méo (đối
với nén có tổn hao), tài nguyên hệ thống dùng để thực hiện quá trình nén và giải
nén dữ liệu.
I.2 TỔNG QUAN CÁC CHƯƠNG TRÌNH NÉN DỮ LIỆU
file khá rườm rà, chính bởi lý do này mà các chương trình nén đĩa như Stacker
hoặc Super Store được sử dụng tương đối rộng rãi. Các chương trình nén đĩa
cũng hoạt động trên nguyên tắc giống như nén file, chỉ khác là chúng tự động
nén và bung mà người dùng không phải quan tâm đến. Thời gian và tỷ lệ nén
của các chương trình nén loại này khác nhau. Để bung 3,5 Mb dữ liệu, chương
trình này hết 12 giây, chương trình khác 40 giây. Tỷ số nén đối với file văn bản
cũng khác: từ 2:1 đến 3:1. Tóm lại khi dùng chương trình nén đĩa, người dùng
yên tâm là dung lượng trống của ổ cứng dường như tăng khoảng 2 lần.
Việc bung và nén khi làm việc với file sẽ làm công việc chậm lại đôi chút.
Đối với các file dữ liệu lớn, điều này thể hiện khá rõ. Khi làm việc, các chương
trình nén đĩa hoạt động ở dạng thường trú, bởi thế một mặt nó chiếm dụng bộ
nhớ RAM, một mặt có thể gây xung đột với các chương trình thường trú khác.
Các chương trình nén file khi có sự cố chỉ hỏng một vài file, còn chương trình
nén đĩa làm hỏng cả ổ đĩa. Tuy điều này rất ít khi xảy ra nhưng nó cũng làm cho
nhiều người e ngại không dám dùng.
Để cài đặt chương trình nén đĩa cần phân chia lại ổ cứng vì máy tính cần
được khởi động bằng đĩa nén trước khi chương trình nén hoạt động. Nếu dùng
Windows thì phần không nén cần khá lớn (thông thường cần dành 10 Mb cho
vùng không nén, chỉ nén vùng đĩa còn lại).
Một điều có thể làm người dùng đau đầu là phải quyết định tỷ lệ nén là bao
nhiêu. Với tỷ lệ nén 10:1 chẳng hạn, chương trình nén sẽ dành nhiều "con trỏ"
để trỏ đến các dữ liệu, mỗi con trỏ chiếm 2 byte, khi đó dễ xảy ra trường hợp
không đủ con trỏ, chương trình báo đĩa đầy mà thực ra không phải như vậy.
Cuối cùng, việc loại bỏ chương trình nén đĩa khi đã cài đặt cũng là một vấn
đề hơi phiền toái. Nhiều chương trình - chẳng hạn Double Density có chức năng
loại bỏ. Đối với các chương trình khác cần tóm các file ẩn của chương trình nén
và xóa bỏ chúng đi. Có khi phải format lại ổ cứng.
Tóm lại, dù một số hạn chế, nén dữ liệu là cách thức kinh tế nhất để mở rộng
dung lượng ổ cứng. Ngoài ra còn tiết kiệm được khá nhiều thời gian và kinh phí
khi nén dữ liệu trước khi truyền đi
lặp đi lặp lại một số lần. Kỹ thuật nén dùng trong trường hợp này là thay dãy lặp
đó bởi dãy mới gồm 2 thành phần: số lần lặp và kí hiệu dùng để mã hóa. Phương
pháp mã hoá kiểu này có tên là mã hóa loạt dài RLC (Run Length Coding).
I.2.3.3 Những mẫu sử dụng tần suất
Có thể có dãy ký hiệu nào đó xuất hiện với tần suất tương đối cao. Do vậy,
có thể mã hoá bởi ít bít hơn. Đây là cơ sở của phương pháp mã hoá kiểu từ điển
do Lempel-Ziv đưa ra và có cải tiến vào năm 1977, 1978 và do đó có tên gọi là
phương pháp nén LZ77, LZ78. Năm 1984, Terry Welch đã cải tiến hiệu quả hơn
và đặt tên là LZW (Lempel-Ziv- Welch). Thuật toán nén dữ liệu dựa vào mẫu sử
dụng tần suất hiệu quả phải kể đến phương pháp nén dữ liệu của Shannon-Fano
và Huffman.
I.2.3.4 Độ dư thừa vị trí
Do sự phụ thuộc lẫn nhau của dữ liệu, đôi khi biết được ký hiệu (giá trị) xuất
hiện tại một vị trí, đồng thời có thể đoán trước sự xuất hiện của các giá trị ở các
vị trí khác nhau một cách phù hợp. Chẳng hạn, ảnh biểu diễn trong một lưới hai
chiều, một số điểm ở hàng dọc trong một khối dữ lệu lại xuất hiện trong cùng vị
trí ở các hàng khác nhau. Do vậy, thay vì lưu trữ dữ liệu, ta chỉ cần lưu trữ vị trí
hàng và cột. Phương pháp nén dựa trên sự dư thừa này gọi là phương pháp mã
hoá dự đoán.
Cách đánh giá độ dư thừa như trên hoàn toàn mang tính trực quan nhằm biểu
thị một cái gì đó xuất hiện nhiều lần. Đối với dữ liệu ảnh, ngoài đặc thù chung
đó, nó còn có những đặc thù riêng. Thí dụ như có ứng dụng không cần toàn bộ
dữ liệu thô của ảnh mà chỉ cần các thông tin đặc trưng biểu diễn ảnh như biên
ảnh hay vùng đồng nhất. Do vậy, có những phương pháp nén riêng cho ảnh dựa
vào biến đổi ảnh hay dựa vào biểu diễn ảnh.
I.3 PHÂN LOẠI CÁC CHƯƠNG TRÌNH NÉN
I.3.1 Dựa vào nguyên lý nén:
Theo cách này người ta phân thành 2 họ:
I.3.1.1 Các thuật toán (chương trình) nén không tổn hao:
Trong phương pháp nén không tổn hao, dữ liệu được nén sau khi giải nén sẽ
nên một lượng lớn dung lượng có thể được tiết kiệm bằng cách loại bỏ các phần
dư thừa, trong khi chất lượng hầu như không thay đổi.
Trong thực tế, các file hình ảnh âm thanh hay là video được lưu trữ trên máy
tính đều đã được nén có tổn hao để tiết kiệm dung lượng và băng thông. Đối lập
với nén không tổn hao các phương pháp nén có tổn hao thường gây giảm chất
lượng rất nhanh khi thực hiện nén và giải nén đệ qui nhiều lần.Các mẫu hình ảnh
âm thanh sẽ được chia thành các phần nhỏ và được biến đổi qua miền khác. Các
hệ số biến đổi này sẽ được lượng tử hóa sau đó được mã hóa bằng mã huffman
hoặc mã hóa số học.
Các mẫu hình ảnh âm thanh trước được sử dụng để dự đoán các mẫu tiếp
theo. Sai số giữa dữ liệu dự đoán và dữ liệu thực sẽ được lượng tử hóa rồi mã
hóa
Ưu điểm của nén tổn hao so với nén không tổn hao đó là nén tổn hao trong
nhiều trường hợp cho tỉ lệ nén cao hơn rất nhiều so với bất cứ thuật toán nén
không tổn hao được biết, trong khi vẫn đảm bảo được chất lượng. Nén tổn hao
thường được sử dụng để nén ảnh, âm thanh, video. Âm thanh có thể nén với tỉ lệ
10:1 mà hầu như không giảm chất lượng. Video có thể nén với tỉ lệ 300:1 với
chất lượng giảm ít.
I.3.2 Dựa vào cách thức thực hiện nén
Theo cách này, người ta cũng phân thành hai họ:
• Phương pháp không gian (Spatial Data Compression): các phương pháp
thuộc họ 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.
• 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 mà không tác động trực tiếp như họ
trên.
CHƯƠNG II: CÁC PHƯƠNG PHÁP NÉN DỮ LIỆU
DẠNG VĂN BẢN SỐ
II.1 PHƯƠNG PHÁP MÔ HÌNH THỐNG KÊ
II.1.1 Thuật toán Shannon-Fano:
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.
Nguyên lý:
Nguyên lý của phương pháp Huffman là mã hóa các bytes trong tệp
dữ liệu nguồn bằng biến nhị phân. Nó tạo mã độ dài biến thiên là một tập hợp
các bits. Đây là phương pháp nén kiểu thống kê, những ký tự xuất hiện nhiều
hơn sẽ có mã ngắn hơn (gần giống Shannon-Fano).
Thuật toán:
Thuật toán nén:
-Bước 1: Tìm hai ký tự có trọng số nhỏ nhất ghép lại thành một, trọng số
của ký tự mới bằng tổng trọng số của hai ký tự đem ghép.
-Bước 2: Trong khi số lượng ký tự trong danh sách còn lớn hơn một thì
thực hiện bước một, nếu không thì thực hiện bước ba.
-Bước 3: Tách ký tự cuối cùng và tạo cây nhị phân với quy ước bên trái
mã 0, bên phải mã 1.
Thuật toán giải nén:
- Bước 1: Đọc lần lượt từng bit trong tập tin nén và duyệt cây nhị
phân đã được xác định cho đến khi hết một lá. Lấy ký tự ở lá đó ghi
ra tệp giải nén.
- Bước 2: Trong khi chưa hết tập tin nén thì quay lại thực hiện bước
một, ngược lại thì thực hiện bước tiếp theo.
- Bước 3: Khi hết tập tin, kết thúc thuật toán.
II.1.3 Thuật toán Run-length:
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, điều này thường thấy trong các tập tin đồ họa bitmap, 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
Ví dụ, xét chuỗi sau:
AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD
Ðể có thể dùng vài chữ cái để biểu diễn các số và các kí tự khác biểu diễn
các phần tử của chuỗi sẽ được mã hoá, ta phải chọn một kí tự được gọi là kí tự
"Escape". Mỗi một sự xuất hiện của kí tự đó báo hiệu rằng hai chữ cái tiếp theo
sẽ tạo thành một cặp (số đếm, kí tự) với các số đếm được biểu diễn bằng cách
dùng kí tự thứ i của bảng chữ cái để biểu diễn số i. Vì vậy, chuỗi ví dụ của
chúng ta sẽ được biểu diễn như sau với Q được xem là các kí tự
Escape"QDABBBAABQHCDABCBAAAQDBCCCD
Tổ hợp của kí tự "Escape", số đếm và một kí tự lặp lại được gọi là một dãy
Escape. Chú ý rằng không đáng để mã hoá các đường chạy có chiều dài ít hơn
bốn kí tự, vì ít nhất là cần đến ba kí tự để mã hoá bất kì một loạt chạy nào.
Trong trường hợp bản thân kí tự "Escape" xuất hiện trong dãy kí tự cần mã
hoá ta sử dụng một dãy "Escape" với số đếm là 0 (kí tự space) để biểu diễn kí tự
"Escape". Như vậy trong trường hợp kí tự "Escape" xuất hiện nhiều thì có thể
làm cho tập tin nén phình to hơn trước.
Các loạt chạy dài có thể được cắt ra để mã hoá bằng nhiều dãy Escape, ví dụ,
một loạt chạy gồm 51 chữ A sẽ được mã hoá như QZAQYA bằng cách dùng
trên.
Phương pháp mã hoá độ dài loạt thường được áp dụng cho các tập tin đồ hoạ
bitmap vì ở đó thường có các mảng lớn cùng màu được biểu diễn dưới dạng
bitmap là các chuỗi bit có đường chạy dài. Trên thực tế, nó được dùng trong các
tập tin .PCX, .RLE.
II.2 MÔ HÌNH TỪ ĐIỂN
II.2.1 Thuật toán LZ78 (Lempel - Ziv – 1978)
Là một thuật toán nén được phát minh bởi Lempel - Zip vào những năm
1977 và 1978.
Thay vì thông báo vị trí đoạn văn lặp lại trong quá khứ, mã LZ78 đánh số tất
cả các đoạn văn sao cho mỗi đoạn ghi nhận số hiệu đoạn văn lặp lại trong quá
khứ cộng với một ký tự mà nó làm cho đoạn đó khác với đoạn trong quá khứ.
Như vậy mỗi đoạn mới là một đoạn ký tự trong quá khứ cộng với một ký tự
trong quá khứ. Chính vì thế đoạn mới khác với đoạn cũ trong quá khứ.
Begin
Ghi s ra tệp giải nén Thêm s vào từ điển
End
Else Begin
ww:=s;
End;
End;
Bước 3: Dừng chương trình.
Đánh giá: Nói chung thuật toán LZ78 là một thuật toán nén văn bản
khá tốt, có thời gian chạy chương trình tương đối nhanh tuy nhiên khả
năng tiết kiệm chưa được khai thác.
II.2.2 Thuật toán LZW (Lempel - Zip - Welch)
Là một thuật toán nén được phát minh bởi Lempel - Zip và Welch.
Giải thuật nén LZW xây dựng một từ điển lưu các mẫu có tần suất xuất hiện
cao trong ảnh. Từ điển là tập hợp những cặp từ vựng và nghĩa của nó. Trong đó,
từ vựng sẽ là các từ mã được sắp xếp theo thứ tự nhất định. Nghĩa là một chuỗi
con trong dữ liệu ảnh. Từ điển được xây dựng đồng thời với quá trình đọc dữ
liệu. Sự có mặt của một chuỗi con trong từ điển khẳng định rằng chuỗi đó đã
từng xuất hiện trong phần dữ liệu đã đọc. Thuật toán liên tục “tra cứu” và cập
nhật từ điển sau mỗi lần đọc một ký tự dữ liệu đầu vào.
Do kích thước bộ nhớ không phải vô hạn và để đảm bảo tốc độ tìm kiếm, từ
điển chỉ giới hạn 4096 ở phần tử dùng để lưu lớn nhất là 4096 giá trị của các từ
mã. Như vậy độ dài lớn nhất của từ mã là 12 bits (4096 = 2
12
). Cấu trúc từ điển
như sau.
0 0
… …
255 255
256 256| Clear Code
biểu diễn bằng 9 bit. Các từ mã từ 512 đến 1023 biểu
diễn bởi 10 bit, từ 1024 đến 2047 biểu diễn bởi 11 bit và
từ 2048 đến 4095 biểu diễn bởi 12 bit.
Nguyên tắc hoạt động của nó như sau:
• Một xâu kí tự là một tập hợp từ hai kí tự trở lên.
• Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu
hiệu (token) riêng.
• Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay
thế bằng dấu hiệu của nó.
• Phần quan trọng nhất của phương pháp nén này là phải
tạo một mảng rất lớn dùng để lưu giữ các xâu kí tự đã
gặp (Mảng này được gọi là "Từ điển"). Khi các byte dữ
liệu cần nén được đem đến, chúng liền được giữ lại trong
một bộ đệm chứa (Accumulator) và đem so sánh với các
chuỗi đã có trong "từ điển". Nếu chuỗi dữ liệu trong bộ
đệm chứa không có trong "từ điển" thì nó được bổ sung
thêm vào "từ điển" và chỉ số của chuỗi ở trong "từ điển"
chính là dấu hiệu của chuỗi. Nếu chuỗi trong bộ đệm
chứa đã có trong "từ điển" thì dấu hiệu của chuỗi được
đem ra thay cho chuỗi ở dòng dữ liệu ra.
Quá trình nén:
LZW bắt đầu bởi 1 từ điển 256 kí tự (trong trường hợp sử dụng bảng mã 8
bits) và sử dụng chúng như tập kí tự chuẩn. Sau đó mỗi lần đọc nó đọc 8 bits (ví
dụ 't', 'r', ) và mã hóa thành con số tương ứng với chỉ mục của kí tự đó trong từ
điển.
Mỗi khi LZW đi qua 1 chuỗi con mới (giả sử "tr") thì nó thêm chuỗi con đó
vào từ điển;
Mỗi khi nó đi qua 1 chuỗi con mà nó đã thấy trước đó, nó chỉ đọc thêm 1 kí
tự mới nữa và cộng với chuỗi con đã biết để tạo ra 1 chuỗi con mới. Lần tiếp
theo LZW bắt gặp một chuỗi con đã có, nó chỉ có việc sử dụng số chỉ mục tương
• Đầu ra kích thước là: 5 x 8 + 3 x 9 = 67 bits
• Tỉ lệ nén là: 96 /67 =1.43
CHƯƠNG III: MỘT SỐ PHUƠNG PHÁP NÉN DỮ LIỆU
CÁC DẠNG DỮ LIỆU KHÁC
III.1Phương pháp nén ảnh MPEG.
MPEG (Moving Picture Expert Group) được ra đời vào năm 1988 nhằm mục
đích chuẩn hoá cho nén tín hiệu âm thanh và video. MPEG - 1 có thể nén tín
hiệu video tới 1.5Mbit/s với chất lượng VHS và âm thanh lập thể (stereo audio)
với tốc độ 192 bit/s. Nó được dùng để lưu trữ video và âm thanh trên CD-ROM.
Vào những năm 1990, MPEG-2 đã ra đời nhằm đáp ứng các tiêu chuẩn nén
video cho truyền hình. MPEG-2 có khả năng mã hoá tín hiệu truyền hình ở tốc
độ 3-15Mbit/s và truyền hình độ nét cao ở tốc độ tới 15-30Mbit/s. MPEG-2 cho
phép mã hoá tín hiệu video với nhiều mức độ phân giải khác nhau, chúng có khả
năng đáp ứng cho nhiều ứng dụng khác nhau. Nhiều thuật toán tương ứng với
nhiều các ứng dụng khác nhau đã phát triển và được tập hợp lại thành một bộ
tiêu chuẩn đầy đủ của MPEG. Việc áp dụng toàn bộ các đặc điểm của chuẩn
MPEG-2 trong tất cả các bộ mã hoá và giải mã là không cần thiết do sự phức tạp
của thiết bị cũng như sự tốn kém về dải thông của đường truyền Vì vậy trong
hầu hết các trường hợp ta chỉ sử dụng một phần nhất định trong toàn bộ các đặc
điểm của chuẩn MPEG-2, chúng thường được gọi là profiles và levels. Một
profile sẽ xác định một thuật toán (điều chỉnh bitstream và độ phân giải màu) và
một level sẽ xác định một số tiêu chí bắt buộc cho các tham số của bức ảnh (ví
dụ như kích thứơc ảnh và số lượng bit).
MPEG-4 trở thành một tiêu chuẩn cho nén ảnh kỹ thuật truyền hình số, các
ứng dụng về đồ hoạ và video tương tác hai chiều (games, videoconferencing) và
các ứng dụng multimedia tương tác hai chiều (World Wide Web hoặc các ứng
dụng nhằm phân phát dữ liệu video như truyền hình cáp, Internet video ) vào
năm 1999. Ngày nay, MPEG-4 đã trở thành một tiêu chuẩn công nghệ trong quá
trình sản xuất, phân phối và truy cập vào các hệ thống video. Nó đã góp phần
phía bộ mã hoá, ta chỉ cần gửi những bức ảnh có thay đổi so với những ảnh
trước, sau đó ta lại dùng phương pháp nén về không gian để loại bỏ sự dư thừa
về không gian trong chính bức ảnh sai khác này. Nén về không gian dựa trên
nguyên tắc là phát hiện sự giống nhau của các điểm ảnh (pixels) lân cận nhau
(Intra-frame coding techniques). JPEG chỉ áp dụng phương pháp nén theo không
gian vì nó được thiết kế để xử lý và truyền các ảnh tĩnh. Tuy nhiên nén tín hiệu
theo phương pháp của JPEG cũng có thể được dùng để nén các bức ảnh một
cách độc lập trong dãy tín hiệu video. ứng dụng này thường được gọi là JPEG
động (Motion JPEG). Trong một chu kỳ gửi một dãy các bức ảnh theo kiểu
JPEG động, ảnh đầu tiên được nén nhờ sự loại bỏ độ dư thừa về không gian, sau
đó các ảnh tiếp theo được nén nhờ sự loại bỏ độ dư thừa về thời gian (nén liên
ảnh). Quá trình được lặp đi lặp lại cho một dãy các bức ảnh trong tín hiệu video.
Thuật toán nén MPEG cũng dựa trên phép biến đổi DCT cho các khối ảnh
8x8 picxels để tìm ra sự thừa về không gian một cách có hiệu quả giữa các điểm
ảnh trong cùng một bức ảnh. Tuy nhiên, trong trường hợp có mối tương quan
chặt chẽ giữa các điểm ảnh trong các bức ảnh kế tiếp nhau tức là trong trường
hợp hai bức ảnh liên tiếp có nội dung trùng nhau, kỹ thuật Inter-frame coding
techniques sẽ được dùng cùng với việc tiên đoán sự dư thừa về không gian để
tạo thành kỹ thuật tiên đoán bù chuyển động giữa các bức ảnh (Motion
compesated prediction between frames). Trong nhiều sơ đồ nén MPEG, người ta
thường kết hợp cả việc tiên đoán bù chuyển động theo thời gian và phép biến
đổi thông tin theo không gian để đạt hiệu quả nén cao (Hybrid DPCM/DCT
coding of video).
Hầu hết các sơ đồ nén MPEG đều dùng kỹ thuật lấy mẫu bổ xung
(Subsampling) và lượng tử hoá (Quantization) trước khi mã hoá. Lấy mẫu bổ
xung nhằm mục đích để làm giảm kích thước bức ảnh đầu vào theo cả theo
chiều ngang và chiều dọc, như vậy sẽ giảm số lượng các điểm ảnh trước mã hoá.
Cũng nên nhớ rằng trong một số trường hợp người ta còn lấy mẫu bổ xung theo
thời gian để làm giảm số lượng các bức ảnh trong dãy ảnh trước khi mã hoá.
Đây được xem như là một kỹ thuật rất cơ bản nhằm loại bỏ sự dư thừa dựa vào
khối ảnh, bộ mã hoá sẽ chọn các phương pháp tiên đoán thích hợp, cố gắng đảm
bảo chất lượng ảnh tốt nhất khi được giải mã trong điều kiện yêu cầu khắt khe
về số bit. Các thông số liên quan tới chọn phương pháp tiên đoán cũng được
truyền tới bộ giải mã cùng với dự đoán sai số nhằm khôi phục gần chính xác ảnh
gốc.
Trong MPEG, có 3 kiểu ảnh khác nhau được dùng để mã hoá cho các khối
ảnh. Kiểu ảnh ‘Intra’ (I-pictures) là ảnh được mã hoá một cách độc lập mà
không cần tham khảo tới các ảnh khác. Hiệu quả nén tín hiệu đạt được do loại
bỏ sự thừa về không gian mà không có yếu tố thời gian tham gia vào quá trình.
I-pictures được dùng một cách tuần hoàn để tạo thành các điểm tựa cho dòng dữ
liệu trong quá trình giải mã.
Ảnh ‘Predictive’ (P-pictures) có thể sử dụng các ảnh I hoặc P ngay sát phía
trước nó để bù chuyển động và chính nó cũng có thể được dùng để tham khảo
cho việc tiên đoán các ảnh khác tiếp theo. Mỗi khối ảnh trong P-picture có thể
hoặc được mã theo kiểu tiên đoán (predicted) hoặc được mã một cách độc lập
(intra-coded). Do sử dụng cả nén theo không gian và thời gian, hiệu quả nén của
P-pictures được tăng lên một cách đáng kể so với I-pictures.
Ảnh ‘Bidirectionally-Predictive’ pictures hay B- Pictures có thể sử dụng các
ảnh I hoặc P phía trước hoặc phía sau nó cho việc bù chuyển động và do vậy cho
kết quả nén cao nhất. Mỗi khối trong B-pictures có thể được tiên đoán theo
chiều ngược, xuôi, cả hai hướng hoặc được mã một cách độc lập. Để có thể tiên
đoán ngược từ một bức ảnh phía sau nó, bộ mã hoá sẽ tiến hành sắp xếp lại các
bức ảnh từ thứ tự xuất hiện một cách tự nhiên sang một thứ tự khác của các ảnh
trên đường truyền. Do vậy từ đầu ra của bộ mã hoá, B-pictures được truyền sau
các ảnh dùng để tham khảo ở phía trước và phía sau của nó. Điều này sẽ tạo ra
độ trễ do phải sắp xếp lại thông tin, độ trễ này lớn hay nhỏ là tuỳ thuộc vào số
các bức ảnh B-pictures liên tiếp nhau được truyền.
Các ảnh I, P, B-pictures thường xuất hiện theo một thứ tự lặp đi lặp lại một
cách tuần hoàn, do đó ta có khái niệm về nhóm các bức ảnh GOP (Group of
Pictures). Một ví dụ của GOP ở dạng ảnh tự nhiên xuất hiện theo thứ tự như sau:
P
6
B
4
B
5
P
9
B
7
B
8
P
12
B
10
B
11
Cấu trúc của một GOP có thể được mô tả bởi hai tham số: N là số các ảnh
trong GOP và M là khoảng cách giữa các ảnh P-pictures. Nhóm GOP này được
miêu tả như N = 12 và M = 3.
SƠ ĐỒ CỦA BỘ MÃ HOÁ VÀ GIẢI MÃ DÙNG MPEG-2
Hình 1. Sơ đồ bộ mã hoá và giải mã dùng MPEG
Mã hoá MPEG-2
Quá trình mã hoá cho P pictures và B pictures được giải thích như sau:
Dữ liệu từ các khối ảnh (macroblocks) cần được mã hoá sẽ được đưa đến cả
bộ trừ (Subtractor) và bộ đoán chuyển động (Motion Estimator). Bộ đoán
chuyển động sẽ so sánh các khối ảnh mới được đưa vào này với các khối ảnh đã
được đưa vào trước đó và được lưu lại như là các ảnh dùng để tham khảo
(Reference Picture). Kết quả là bộ đoán chuyển động sẽ tìm ra các khối ảnh
khối tiên đoán (predicted macroblock) để tạo thành các ảnh tham khảo.
III.2 Phương pháp nén âm thanh
• Mục đích:
Biểu diễn chuỗi số ngắn gọn.
Tốc độ bit thấp.
Chất lượng cao
• Động cơ:
Giảm tốc độ dữ liệu.
Giảm chi phí truyền dẫn (BW).
Giảm các yêu cầu lưu trữ.
• Các yêu cầu:
Cảm nhận trong suốt.
Độc lập nguồn.
Có khả năng đa kênh.
Độ trễ hợp lý.
Kỹ thuật nén MPEG1:
MPEG-1
Lớp I
Lớp II
Lớp III
Mono và Stereo
32, 44.1, 48kHz
Hình 2. Phân lớp mã hóa MPEG 1
• Giới thiệu
Được phát triển trên cơ sở phối hợp chuẩn ISO/IEC 11172.
Sử dụng tần số lấy mẫu của CD-DA, với fs=32;44.1;48kHz, mã hoá
16bits/mẫu tín hiệu.
Tốc độ bít: 32 - 768 kbps/channel.
Các kiểu: Mono, dual-mono, dual-stereo, joint-stereo.
Xác định các tham số khác nhau về tốc độ, dòng số sau khi nén, số mẫu