Tải bản đầy đủ (.docx) (12 trang)

Chương 3 : Nén văn bản và hình ảnh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (270.98 KB, 12 trang )

Chương 3 : Nén văn bản và hình ảnh
1.Các nguyên tắc nén.
Các nguyên tắc nén :
- Source encoder and destination decoders.
- Nén mất mát thông tin và không mất mát thông tin.
- Mã hóa entropy
- Mã hóa dữ liệu nguồn.
1. Source encoder và destination decoders.
- Source endcoder : là nơi thông tin đầu vào được nén.
- Destination decoders : là nơi thông tin sau khi nén được giải nén
2. Nén mất mát thông tin và nén không mất mát thông tin.
Thuật toán nén có thể được chia thành 2 loại :
- Nén mất mát thông tin :dữ liệu trước khi nén và sau khi giải nén không giống nhau
hoàn toàn nhưng vẫn đảm bảo thông tin không bị ảnh hưởng đến chất lượng thông
tin . Ứng dụng trong nén âm thanh , hình ảnh.
- Nén không mất mát thông tin : dữ liệu trước khi nén và sau khi giải nén giống nhau
hoàn toàn.Ứng dụng trong nén văn bản.
3. Mã hóa entropy.
- Là loại nén không mất mát thông tin.
- Nguyên tắc nén : Trong văn bản gốc, tìm những đoạn kí tự giống nhau và thay thế
chúng bằng các codeword mới có độ dài ngắn hơn.
- 2 thuật toán điển hình là : Run-length-encoding(RLE) và statistical encoding.
a. Run-length-encoding.
- Nguyên tắc nén : Đầu tiên tìm trong thông tin nguồn một loạt các kí tự/bit nhị phân
giống nhau. Sau đó thay thế chuỗi các kí tự/bít đó bởi 1 codeword mới bao gồm 2
thông tin :chiều dài của chuỗi con và kí tự/bít lặp.
- Đặc điểm : độ dài của codeword cố định.
- Một ứng dụng điển hình sử dụng kĩ thuật này là việc truyền các chuỗi nhị phân sinh
ra từ bộ quyét của máy fax.
b. Statistical encoding.
- Statiscal encoding sử dụng 1 tập từ mã có độ dài thay đổi với từ mã ngắn được sử


dụng để biểu diễn cho ký tự có tần suất xuất hiện lớn.
- Đặc điểm : độ dài của codeword thay đổi nên độ dài của các codeword ngắn hơn
không bao giờ là dạng bắt đầu của các codeword dài hơn.
- Để tính số bít tối thiểu của 1 codeword ta sử dụng(H) công thức shanon :
H= -

i=1
n
P
i
log
2
P
i
Trong đó : n là tổng số kí tự khác nhau trong chuỗi nguồn.
Pi là tần suất xuất hiện của kí tự tứ i.
- Số bít trung bình của một codeword =

i=1
n
N
i
P
i
Trong đó : Ni là số bít của codeword thứ i
Pi là tần suất xuất hiện của kí tự thứ i.
Hiệu suất (tính hoàn hảo) của một bộ codeword cụ thể thường được tính là tỷ lệ của
Entropy của nguồn với số lượng trung bình của các bit cho mỗi codeword. Nếu hiệu suất
=1 thì bộ codeword trên là hoàn hảo.
4. Mã hóa dữ liệu nguồn.

a. Mã hóa vi sai.
- Mã hóa vi sai được sử dụng rộng rãi trong các ứng dụng khi biên độ của 1 giá trị/tín
hiệu nằm trong một phạm vi rộng nhưng sự sai khác trong biên độ giữa các giá
trị/tín hiệu kế tiếp là tương đối nhỏ.Vì vậy lượng thông tin để mã hóa tương đối đơn
giản.
- Trong thực tế mã hóa vi sai có thể là không mất mát thông tinh hoặc mất mát thông
tin và phụ thuộc vào số bit được sử dụng để mã hóa giá trị sai khác . Nếu số bit đã
sử dụng đủ để phục vụ cho giá trị sai khác lớn nhất thì đó là không mất dữ liệu.
Ngược lại, nếu giá trị khác biệt vượt quá số bit tối đa được sử dụng thì kết quả là
mất mát thông tin.
b. Mã hóa biến đổi.
- Nguyên tắc : biến đổi dữ liệu trước khi nén sang 1 dạng khác dễ nén hơn. Nó sử
dụng một phép biến đổi để chuyển từ miền không gian sang miền tần số. Nhìn
chung , là loại nén mất mát thông tin và được sử dụng trong một số ứng dụng liên
quan đến cả ảnh và video.
- Tần số không gian (spatial frequency) :
- DTC (discrete cosine transform) : là kĩ thuật dùng để chuyển đổi một ma trận 2
chiều của các giá trị điểm ảnh thành một ma trận tương đương của các thành phần
tần số không gian. Hành động chuyển đổi này là không mất dữ liệu.
2. Nén văn bản.
- Các thuật toán nén liên quan tới văn bản đề là nén không mất mát thông tin.
- Về cơ bản, có 2 phương pháp mã hoá thống kê được sử dụng với dạng văn bản :
 Nén từng kí tự trong văn bản. Ví dụ : 2 thuật toán là nén huffman và nén số
học(arithmetic coding).
 Nén từng từ trong văn bản. Ví dụ : thuật toán nén LZ và LZW.
- Có 2 loại mã hóa được sử dụng cho văn bản :
 Static coding : Dành cho các ứng dụng trong các văn bản biết được các đặc
điểm của kí tự và tần suất xuất hiện của chúng. Thay vì sử dụng các từ mã có
chiều dài cố định, ta sử dụng bộ từ mã tối ưu có chiều dài thay đổi. Từ mã
ngắn nhất sử dụng để biểu diễn cho các kí tự xuất hiện thường xuyên nhất.

 Dynamic hoặc adaptive coding : dành cho các ứng dụng tổng quát hơn
trong các văn bản có thể bị chuyển từ dạng này sang dạng khác và bộ từ mã
tối ưu cũng thay đổi từ dạng này sang dạng khác.Với phương pháp này thì
người nhận có thể tự động tính toán trên cùng một bộ codeword đang được
sử dụng tại mỗi điểm chuyển giao.
a. Static Huffman coding
- Là phương pháp dựa vào mô hình thống kê.
- Để thực hiện mã hóa, người ta tạo ra một cây Huffman. Nó là một cây nhị phân với
các nhánh được phân các giá trị là 0 hoặc 1 và có:
 Root node :là cơ sở của cây nhị phân.
 Branch node :là các điểm ở trên nhánh.
 Leaf node :là điểm kết thúc của mỗi nhánh biểu diễn cho các kí tự.
- Các bước thực hiện nén :
 Bước 1 : Phân tích văn bản đầu vào, phân loại các kí tự và tính tần suất xuất
hiện của các kí tự đó.
 Bước 2 : Sắp xếp lại bảng mã theo thứ tự tần suất xuất hiện giảm dần.
 Bước 3 : Duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có
tần suất xuất hiện thấp nhất thành một phần tử duy nhất. Tiến hành cập nhật
lại bảng và loại bỏ 2 phần tử vừa xét. Quá trình lặp đi lặp lại cho đến khi
bẳng chỉ còn lại một phần tử.
 Bước 4 : Tiến hành gán mã cho các nút lá với nhánh bên phải là 1 và nhánh
bên trái là 0. Từ mã được sử dụng cho mỗi kí tự được xác định bằng cách tìm
đường đi từ gốc cho đến nút lá.
- Cây tối ưu nếu trọng số của các nút lá và nút nhánh trên cây (liệt kê từ trái qua phải,
từ dưới lên trên) sắp xếp theo chiều tăng dần.
- Prefix property :Mã của kí tự ngắn hơn không bao giờ là tiền tố của các mã dài
hơn nó.
- Sơ đồ giải mã :
- Cây mã Huffman thay đổi cho các tập các kí tự được truyền vì vậy để bên nhận thực
hiện hành động giải mã thì nó phải biết được bảng các codeword liên quan tới dữ

liệu được truyền.Nhược điểm của phương pháp này là chi phí phải gửi các tập từ
mã mới (và kí tự tương ứng) bất cứ khi nào 1 loại dữ liệu mới được gửi và tốn băng
thông để truyền.
b. Dynamic Huffman coding(mã hóa huffman động)
- Với phương pháp này thì cả người gửi(nén) và người nhận(giải nén) cùng xây dựng
cây Huffman động cho các kí tự được truyền.
- Các bước thực hiện hành động nén :
 Bước 1 : Cả người gửi và người nhận bắt đầu xây dựng một cây bao gồm 1
nút và 1 nút lá rỗng(empty leaf node-e0-tần suất xuất hiện là 0 và nhánh
được chỉ định là 0).
 Bước 2 : Cập nhật từng kí tự vào trong cây theo quy tắc :
o Nếu kí tự đang xét chưa xuất hiện trong cây thì thêm mới một nút lávà
nút lá e0 ở trên cây bị chuyển xuống một nhánh mới, nút lá rỗng được chỉ
định là nhánh 0 và và kí tự là nhánh 1.

×