Tải bản đầy đủ (.doc) (34 trang)

mã hóa nguồn JPEG

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 (917.26 KB, 34 trang )


BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ

ĐỒ ÁN: TRUYỀN SỐ LIỆU
ĐỀ TÀI: Mã Hóa Nguồn - JPEG.
Giáo viên hướng dẫn : Th.s Tống Văn Luyên
Sinh viên thực hiện : Đoàn Văn Lợi
Nguyễn Văn Quảng
Đỗ Trường Sơn
Lớp : Điện tử 4 – K5
1

2

1

MỤC LỤC:
LỜI NÓI ĐẦU 1
Phần 1: TỔNG QUAN VỀ TRUYỀN SỐ LIỆU 2
1.1. Hiểu về thông tin số 2
Phần 4 : MÔ PHỎNG HỆ THỐNG NÉN ẢNH SỐ (NÉN DCT) 20
1

LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển không ngừng của nền khoa học kỹ thuật thế giới
là sự phát triển vượt bậc của ngành Công nghệ Thông tin nói chung và ngành Truyền số
dữ liệu nói riêng. Các hệ thống thông tin giúp ích rất nhiều trong công việc hàng ngày của
các cơ quan, đơn vị tập thể hay mỗi cá nhân có liên quan. Các hệ thống tin còn giúp ta lưu
trữ các thông tin cần thiết có liên quan đến công việc và đời sống hàng ngày. Mà ngày


càng khối lượng thông tin cần lưu trữ tăng lên gấp bội chúng ta không còn không gian để
lưu giữ chúng nữa. Một yêu cầu đặt ra là ta phải làm nhỏ lại không gian dành cho các
thông tin đó. Vì vậy, khi lưu trữ hay truyền gửi người ta mong muốn giảm đến mức thấp
nhất dung lượng bộ nhớ mà các tập tin này chiếm dụng để dễ tổ chức, quản lý và tiết kiệm
về kinh phí.
Đã có rất nhiều phương pháp nén được phát minh và sử dụng trong nhiều năm qua.
Khi thực hiện giải pháp nén số liệu chúng ta cần phải xem xét đến hai vấn đề trái ngược
nhau: các thuật toán nén số liệu thực hiện trước hết phải đảm bảo giảm chi phí lưu trữ mà
lại không sử dụng quá nhiều thời gian. Nguyên tắc chung của các phương pháp mã hoá
đều dựa trên nhận xét loại bỏ việc lưu lại các thông tin trùng lặp. Các kỹ thuật nén không
tổn hao thường được áp dụng cho các tập tin văn bản vì nó chứa các ký tự xuất hiện
thường xuyên hơn các ký tự khác, và các thuật toán nén tổn hao thường áp dụng cho các
tập tin ảnh vì nó có thể là các vùng đồng nhất, hay cho mô tả số của âm thanh và các ký
hiệu tương tự khác. Một trong những phương pháp nén ảnh được biết sớm và đã thành
công là nén ảnh JPEG.Nhận thấy tầm quan trọng đó với sự hướng dẫn tận tình của GVHD.
Th.s Tống Văn Luyên để tìm hiểu rõ hơn về công nghệ nén ảnh JPEG nhóm chúng em
chọn đề tài: “MÃ HÓA NGUỒN – JPEG” Quá trình nén ảnh JPEG gồm có những quá
trình biến đồi DCT, lượng tử và mã hóa Entropy. Trong đồ án này em đi sâu nghiên cứu
về phương pháp biến đổi cosin rời rạc - DCT.
Trong phần Báo cáo này cáo này vẫn còn nhiều sai sót, em mong các thầy cô chỉ
dạy tần tình để chúng em hiểu sâu hơn.
Chúng em xin chân thành cảm ơn!
Nhóm sinh viên thực hiện:
Đoàn Văn Lợi
Nguyễn Văn Quảng
Đỗ Trường Sơn
1

Phần 1: TỔNG QUAN VỀ TRUYỀN SỐ LIỆU
1.1. Hiểu về thông tin số

Trước hết ta cần hiểu khái niệm “số” (digital) ở đây có nghĩa là giá trị rời rạc
và có hàm ý rằng tín hiệu có một biến giá trị nguyên độc lập. Thông tin số
bao gồm các con số và các ký hiệu (ví dụ như các ký tự trên bàn phím). Máy
tính dựa trên dạng thể hiện số (digital) của thông tin để xử lý. Các ký hiệu
(symbols) không có giá trị số và mỗi ký hiệu được máy tính biểu diễn bởi
một số duy nhất. Ví dụ như mã ASCII biểu diễn ký tự “a” tương ứng với giá
trị số (97)
10
và ký tự “A” tương ứng với giá trị số (65)
10.
1.2. Hệ thống thông tin số
Mô hình hệ thống thông tin số được mô tả như hình sau:
Hình 1.1: Các thành phần cơ bản của một hệ thống thông tin số
Trong hình 1.2 đầu ra của nguồn phát tin cũng có thể là tín hiệu tương tự như tín
hiệu audio hay video hoặc tín hiệu số chẳng hạn như đầu ra của máy điện báo đánh chữ
(teletype). Trong hệ thống thông tin số, các bản tin được tạo ra từ các nguồn phát tin được
chuyển thành chuỗi ký hiệu nhị phân (binary digits). Một cách lý tưởng là chúng ta mong
muốn bản tin ở đầu ra nguồn phát tin là có ít hay không có thành phần dư thừa.
Quá trình chuyển đổi hiệu quả các bản tin đầu ra của nguồn phát tin tương tự hay
số thành một chuỗi các ký hiệu nhị phân được gọi là mã hóa nguồn hay nén dữ liệu. Chuỗi
ký hiệu nhị phân tạo ra bởi bộ mã hóa nguồn mà chúng ta còn gọi là chuỗi thông tin, được
đưa qua bộ mã hóa kênh. Chuỗi nhị phân tại đầu ra của bộ mã hóa kênh lại được cho qua
bộ điều chế số để tạo dạng thích hợp với kênh truyền thông.
2

1.3. Hệ thống Truyền số liệu
Ngày nay với sự phát triển của kỹ thuật và công nghệ đã tạo ra một bước tiến dài
trong lĩnh vực truyền số liệu. Sự kết hợp giữa phần cứng, các giao thức truyền thông các
thuật toán nhưng chúng được xử lý tinh vi hơn. Về cơ bản một hệ thống truyền số liệu
hiện đại mô tả như hình 1.2:

a) DTE (Data Terminal Equipment – Thiết bị đầu cuối dữ liệu)
Đây là thiết bị lưu trữ và xử lý thông tin. Trong hệ thống truyền số liệu hiện đại thi
DTE thường là máy tính hoặc máy Fax hoặc là trạm cuối (terminal). Như vậy tất cả các
ứng dụng của người sử dụng (chương trình, dữ liệu) đều nằm trong DTE Chức năng của
DTE thường lưu trữ các phần mềm ứng dụng, đóng gói dữ liệu rồi gửi ra DCE hoặc nhận
gói dữ liệu từ DCE theo một giao thức ( protocol) xác định DTE trao đổi với DCE thông
qua một chuẩn giao tiếp nào đó . Như vậy mạng truyền số liệu chính là để nối các DTE lại
cho phép chúng ta phân chia tài nguyên, trao đổi dữ liệu và lưu trữ thông tin dùng chung.
b) DCE (Data Circuit terminal Equipment- Thiết bị cuối kênh dữ liệu)
Đây là thuật ngữ dùng để chỉ các thiết bị dùng để nối các DTE với các đường
(mạng) truyền thông nó có thể là một Modem, Multiplexer, Card mạng hoặc một thiết bị
số nào đó như một máy tính nào đó trong trường hợp máy tính đó là một nút mạng và
DTE được nối với mạng qua nút mạng đó. DCE có thể được cài đặt bên trong DTE hoặc
đứng riêng như một thiết bị độc lập. Trong thiết bị DCE thường có các phần mềm được
ghi vào bộ nhớ ROM phần mềm và phần cứng kết hợp với nhau để thực hiện nhiệm vụ
của nó vẫn là chuyển đổi tín hiệu biểu diễn dữ liệu của người dùng thành dạng chấp nhận
được bởi đường truyền. Giữa 2 thiết bị DTE việc trao đổi dữ liệu phải tuân thủ theo chuẩn,
3

dữ liệu phải gửi theo một Format xác định. Thí dụ như chuẩn trao đổi dữ liệu tầng 2 của
mô hình 7 lớp là HDLC ( High level Data Link Control) Trong máy Fax thì giao tiếp giữa
DTE và DCE đã thiết kế và được tích hợp vào trong một thiết bị, phần mềm điều khiển
được cài đặt trong ROM.
c) Kênh truyền tin
Kênh truyền tin là môi trường mà trên đó 2 thiết bị DTE trao đổi dữ liệu với nhau
trong phiên làm việc

Trong môi trường thực này 2 hệ thông được nối với nhau bằng một đoạn cáp đồng
trục và một đoạn cáp sợi quang, modem C để chuyển đổi tín hiệu số sang tín hiệu tương tự
để truyền trong cáp đồng trục modem D lại chuyển tín hiệu đó thành tín hiệu số và qua

Tranducer E để chuyển đổi từ tín hiệu điện sang tín hiệu quang để truyền trên cáp sợi
quang cuối cùng Tranducer F lại chuyển tín hiệu quang thành tín hiệu điện để tới DTE.
4

Phần 2: TỔNG QUAN VỀ KỸ THUẬT MÃ HÓA NGUỒN – JPEG
2.1: Mã hóa nguồn.
2.1.1: Khái niệm.
Mã hóa nguồn là phương thức mã hóa tín hiệu thành các bít thông tin
để có thể truyền đi, đồng thời cũng để làm tối đa dung lượng kênh truyền.
Trong mã hóa nguồn, có thể chia theo các loại thông tin khác nhau: thoại, số
liệu hoặc hình ảnh.
2.1.2: Mục đích.
Mục đích của mã hóa nguồn là giảm dư thừa dữ liệu cần thiết để truyền
thông tin.
2.1.3: Lý thuyết thông tin.
-Lý thuyết Entropy: Entropy là lượng tin trung bình tối thiểu để không
mất thông tin.
H(X) .
-Chúng ta mã hóa khi phát hiện trong thông tin có dư thừa về không
gian, thời gian.
-Các phương pháp mã hóa:
+ Mất thông tin: khi số bit trung bình mã hóa < Entropy.
+ Không mất thông tin: khi số bit trung bình mã hóa > Entropy.
2.1.4: Kỹ thuật thực hiện mã hóa:
- Mã hóa Shannon_Fano.
- Mã hóa Huffman.
- Biến đổi DCT.
- Biến đổi VLC.
2.2: Mã hóa nguồn – JPEG.
2.2.1: Định nghĩa về JPEG.

JPEG viết tắt của Joint Photographic Experts Group, một nhóm các
nhà nghiên cứu đã phát minh ra định dạng này để hiể thị các hình ảnh đầy
đủ màu hơn (full-color) cho định dạng di động mà các kích thước file lại
nhỏ hơn. Đây là 1 phương pháp nén ảnh hiệu quả, nó cho phép làm việc
với các ảnh có nhiều màu và kích cỡ lớn, tỷ lệ nén ảnh đạt mức so sánh tới
vài chục lần (chứ không phải phần trăm).
2.2.2: Phương pháp nén ảnh JPEG.
2.2.2.1: Khái quát về phương pháp nén ảnh tĩnh.
Có nhiều cách để nén ảnh, nhưng dựa vào yếu tố bảo toàn thông tin
có thể phân chia thành 2 phương pháp nén ảnh tĩnh, đó là:
5

- Nén không mất mát thông tin: sử dụng các phương pháp mã hóa
dữ liệu.
- Nén không mất mát thông tin: Phương pháp nén dựa trên sự biến đổi ảnh.
Quá trình nén ảnh được mô tả theo sơ đồ:



6

Phần 3: LÝ THUYẾT NÉN ẢNH JPEG (SỬ DỤNG BIỀN ĐỔI DCT)
3.1 Các khái niệm về ảnh
3.1.1 Điểm ảnh (Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng. Để xử
lý bằng máy tính (số), ảnh cần phải được số hoá. Số hoá ảnh là sự biến đổi gần
đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí và độ sáng
(mức xám). Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người
không phân biệt được ranh giới giữa chúng. Mỗi một điểm như vậy gọi là điểm ảnh
(PEL: Picture Element) hay gọi tắt là Pixel. Trong khuôn khổ ảnh hai chiều, mỗi

pixel ứng với cặp tọa độ (x, y).
Hình 2.1 Hình minh họa của pixel
Định nghĩa:
Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc
màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích
hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu)
của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được gọi là một phần tử
ảnh.
3.1.2 Mức xám của ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và
độ xám của nó. Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường
dùng trong xử lý ảnh.
a) Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán
bằng giá trị số tại điểm đó.
7
1 pixel

Hình 2.2 Hình biểu diễn mức xám của ảnh số
b) Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256
là mức phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức
xám: Mức xám dùng 1 byte biểu diễn: 2
8
=256 mức, tức là từ 0 đến 255).
c) Ảnh đen trắng:
Ảnh đen trắng chỉ bao gồm 2 màu: màu đen và màu trắng (không chứa màu
khác) với mức xám ở các điểm ảnh có thể khác nhau. Người ta phân mức đen trắng
đó thành L mức Nếu sử dụng số bit B=8 bit để mã hóa mức đen trắng (hay mức
xám) thì L được xác định:
L=2
B

(trong ví dụ của ta L=2
8
= 256 mức)
Nếu L bằng 2, B=1, nghĩa là chỉ có 2 mức: mức 0 và mức 1, còn gọi là ảnh nhị
phân. Mức 1 ứng với màu sáng, còn mức 0 ứng với màu tối. Nếu L lớn hơn 2 ta có
ảnh đa cấp xám. Nói cách khác, với ảnh nhị phân mỗi điểm ảnh được mã hóa trên 1
bit, còn với ảnh 256 mức, mỗi điểm ảnh được mã hóa trên 8 bit. Như vậy, với ảnh
đen trắng: nếu dùng 8 bit (1 byte) để biểu diễn mức xám, số các mức xám có thể
biểu diễn được là 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.
Ảnh nhị phân khá đơn giản, các phần tử ảnh có thể coi như các phần tử
logic. Ứng dụng chính của nó được dùng theo tính logic để phân biệt đối tượng ảnh
với nền hay để phân biệt điểm biên với điểm khác.
d) Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo
nên thế giới màu) trong đó R, G, B là một giá trị xám và được biểu biểu diễn bằng
1 byte, khi đó các giá trị màu: 2
8*3
=2
24
≈ 16,7 triệu màu.
8

Mỗi màu cũng phân thành L cấp màu khác nhau (thường L=256). 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. Do đó, để
lưu trữ ảnh màu người ta có thể lưu trữ từng màu riêng biệt, mỗi màu lưu trữ như
một ảnh đa cấp xám. Do đó, không gian nhớ dành cho một ảnh màu lớn gấp 3 lần
một ảnh đa cấp xám cùng kích cỡ.
P(x, y) = (R, G, B)
- Hệ màu CMY: là phần bù của hệ màu

RGB (C, M, Y) = (1, 1, 1)-(R, G, B)
Hay
C+R=M+G=Y+B=1
=> Hệ màu này thường được dùng trong máy in.
- Hệ màu CMYK: trong đó K là độ đậm nhạt của màu K= min (C, M, Y)
P(x, y) = (C-K, M-K, V-K, K).
+ Ví dụ:
Với (C1, M1, Y1) ta sẽ có K=min (C1, M1, Y1)
vậy CMYK = (C1-K, M1-K, Y1-K, K)
Hình 2.3 Hệ tọa độ RGB
3.1.3 Định nghĩa ảnh số
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh
gần với ảnh thật.
9

Một ảnh số giả sử được biểu diễn bằng hàm f(x, y). Tập con các điểm ảnh là
S; cặp điểm ảnh có quan hệ với nhau ký hiệu là p, q.
3.2 Một số khái niệm nén ảnh số
3.2.1. Nén dữ liệu (Data Compression)
Nén dữ liệu là quá trình làm giảm lượng thông tin "dư thừa" trong dữ liệu
gốc và do vậy, lượng thông tin thu được sau nén thường nhỏ hơn dữ liệu gốc rất
nhiều. Với dữ liệu ảnh, kết quả thường là 10:1. Một số phương pháp còn cho kết
quả cao hơn. Theo kết quả nghiên cứu được công bố gần đây tại viện kỹ thuật
Georgie, kỹ thuật nén fractal cho tỉ số nén là 30 trên 1.
Ngoài thuật ngữ "nén dữ liệu”, do bản chất của kỹ thuật này nó còn có một
số tên gọi khác như: giảm độ dư thừa, mã hoá ảnh gốc.
3.2.2. Tỷ lệ nén (Compression rate)
Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi phương pháp
nén. Tuy nhiên, về cách đánh giá và các kết quả công bố trong các tài liệu cũng cần
được quan tâm xem xét. Nhìn chung, người ta định nghĩa tỷ lệ nén như sau:

Tỷ lệ nén =
1
r
x %
Với r: là tỷ số nén được định nghĩa: r = kích thước dữ liệu gốc/ kích thước dữ liệu
thu được sau nén. Như vậy hiệu suất của nén là: (1-tỷ lệ nén) x %.
Khi nói đến kết quả nén, chúng ta dùng tỷ số nén, thí dụ như 10 trên 1 có
nghĩa là dữ liệu gốc là 10 phần sau khi nén chỉ có 1 phần.
Tuy nhiên, cũng phải thấy rằng những số đo của một phương pháp nén chỉ
có giá trị với chính sự nén đó, vì rằng hiệu quả của nén còn phụ thuộc vào kiểu dữ
liệu định nén. Tỷ lệ nén cũng chỉ là một trong các đặc trưng cơ bản của phương
pháp nén. Nhiều khi tỷ lệ nén cao cũng chưa thể nói rằng phương pháp đó là hiệu
quả hơn các phương pháp khác, vì còn các chi phí khác như thời gian, không gian
và thậm chí cả độ phức tạp tính toán nữa. Thí dụ như nén phục vụ trong truyền dữ
liệu: vấn đề đặt ra là hiệu quả nén có tương hợp với đường truyền không.
Cũng cần phân biệt nén dữ liệu với nén băng truyền. Mục đích chính của
nén là giảm lượng thông tin dư thừa và dẫn tới giảm kích thước dữ liệu. Tuy vậy,
đôi khi quá trình nén cũng làm giảm băng truyền tín hiệu số hoá thấp hơn so với
truyền tín hiệu tương tự.
10

3.2.3. Các loại dư thừa dữ liệu
Như trên đã nói, nén nhằm mục đích giảm kích thước dữ liệu bằng cách loại
bỏ dư thừa dữ liệu. Việc xác định bản chất các kiểu dư thừa dữ liệu rất có ích cho
việc xây dựng các phương pháp nén dữ liệu khác nhau. Nói một cách khác, các
phương pháp nén dữ liệu khác nhau là do sử dụng các kiểu dư thừa dữ liệu khác
nhau. Nên có 4 kiểu dư thừa chính:
a. Sự phân bố ký tự
Trong một dãy ký tự, có một số ký tự có tần suất xuất hiện nhiều hơn một số
dãy khác. Do vậy, ta có thể mã hoá dữ liệu một cách cô đọng hơn. Các dãy ký tự có

tần suất cao được thay bởi một từ mã nhị phân với số bít nhỏ; ngược lại các dãy có
tần suất thấp sẽ được mã hoá bởi từ mã có nhiều bít hơn. Đây chính là bản chất của
phương pháp mã hoá Huffman.
b. Sự lặp lại của các ký tự
Trong một số tình huống như trong ảnh, 1 ký hiệu (bit "0" hay bit "1") được
lặp đi lặp lại nhiều 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ã. Phương pháp mã
hoá kiểu này có tên là mã hoá loạt dài RLC (Run Length Coding).
c. 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 bit 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).
d. Độ 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.
11

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.
3.2.4. Phân loại các phương pháp nén

Có nhiều cách phân loại các phương pháp nén khác nhau.
• Cách phân loại thứ nhất: dựa vào nguyên lý nén. Cách này phân các phương
pháp nén thành 2 họ lớn:
• Nén chính xác hay nén không mất thông tin: Họ này bao gồm các phương
pháp nén mà sau khi giải nén ta thu được chính xác dữ liệu gốc.
• Nén có mất mát thông tin: Họ này bao gồm các phương pháp mà sau khi
giải nén ta không thu được dữ liệu như bản gốc. Trong nén ảnh, người ta gọi là các
phương pháp" tâm lý thị giác". Các phương pháp này 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. Tất nhiên, các
phương pháp này chỉ có hiệu quả khi mà độ vặn xoắn là chấp nhận được bằng mắt
thường hay với dung sai nào đó.
• Cách phân loại thứ hai: 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.
• Cách phân loại thứ ba: dựa vào triết lý của sự mã hoá. Cách này cũng phân
các phương pháp nén thành 2 họ:
• Các phương pháp nén thế hệ thứ nhất: Gồm các phương pháp mà mức độ
tính toán là đơn giản, thí dụ như việc lấy mẫu, gán từ mã,
12

• Các phương pháp nén thế hệ thứ hai: Dựa vào mức độ bão hoà của tỷ lệ
nén. Trong các phần trình bày dưới đây, ta sẽ theo cách phân loại này. Cũng còn
phải kể thêm một cách phân loại thứ tự do Anil. K. Jain nêu ra. Theo cách của Jain,
các phương pháp nén gồm 4 họ chính:
• Phương pháp điểm.
• Phương pháp dự đoán.

• Phương pháp dựa vào biến đổi.
• Các phương pháp tổ hợp (Hybrid).
Thực ra cách phân loại này là chia nhỏ của cách phân loại thứ ba và dựa vào cơ chế
thực hiện nén. Xét một cách kỹ lưỡng nó cũng tương đương cách phân loại thứ ba.
Nhìn chung, 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.
Quá trình nén
Dữ liệu gốc Dữ liệu nén
Quá trình giải nén
Hình 2.4 Sơ đồ chức năng quá trình nén dữ liệu.

3.3 Biến đổi cosine rời rạc (DCT- Discrete cosine Transform)
3.3.1 Phương pháp biến đổi
Biến đổi cosine rời rạc (DCT) biểu diễn ảnh dưới dạng tổng của các cosine
của các thành phần biên độ và tần số khác nhau của ảnh. Hàm dct2 tính DCT hai
chiều của một ảnh. DCT có tính chất mà với các ảnh điển hình, hầu hết các thông
tin về ảnh chỉ tập trung trong một vài hệ số của DCT, trong khi các hệ số còn lại
chỉ chứa rất ít thông tin. Vì lý do này, DCT thường được sử dụng trong các ứng
dụng nén ảnh khác nhau nhờ hiệu suất gần như tối ưu của nó đối với các ảnh có độ
tương quan cao giữa các điểm ảnh lân cận. Chẳng hạn, DCT là trung tâm của giải
thuật nén ảnh theo chuẩn quốc tế thường được biết với tên JPEG (tên này do nhóm
phát triển đặt ra: Joint Photographic Experts Group)
13

DCT hai chiều của ma trận A có kích thước MxN được định nghĩa như sau:
1 1
0 0
(2 1) (2 1)
cos cos
2 2

M N
pq p q mn
m n
m p n q
B A
M N
π π
α α
− −
= =
+ +
=
∑∑
với
0 1
0 1
p M
q N
≤ ≤ −
≤ ≤ −
Trong đó:
1/
(2/ )
p
M
M
α


=





0
0 1
p
p M
=
≤ ≤ −

1/
(2/ )
q
N
N
α


=




0
0 1
q
q N
=
≤ ≤ −

Các giá trị B
pq
được gọi là các hệ số của biến đổi DCT. DCT có thể biến đổi ngược
được và biến đổi ngược của nó cho bởi công thức :
1 1
0 0
(2 1) (2 1)
cos cos
2 2
M N
mn p q pq
p q
m p n q
A B
M N
π π
α α
− −
= =
+ +
=
∑∑
với
0 1
0 1
m M
n N
≤ ≤ −
≤ ≤ −
Trong đó:

1/
(2/ )
p
M
M
α


=




0
0 1
p
p M
=
≤ ≤ −

1/
(2/ )
q
N
N
α


=





0
0 1
q
q N
=
≤ ≤ −
Biểu thức DCT ngược có thể được xem xét khi coi rằng mọi ma trận A kích thước
MxN như là tổng của MN hàm có dạng:
(2 1) (2 1)
cos cos
2 2
p q pq
m p n q
B
M N
π π
α α
+ +
Những hàm này đựơc gọi là những hàm cơ sở của DCT. Hệ số DCT B
pq

thể được xem như trọng số cho mỗi hàm cơ sở. Với các ma trận 8x8, 64 hàm cơ sở
được minh hoạ bởi ảnh sau:
Hình minh họa ma trận 8x8
3.3.2 Nén tổn hao dựa vào DCT
14


Giải thuật nén có tổn hao được biết đến nhiều nhất có lẽ là giải thuật dùng
DCT. Đây là giải thuật được chuẩn hóa với tên gọi JPEG (lấy từ tên gọi của tổ chức
đã định ra tiêu chuẩn nén này: Joint Photographic Experts Groups (Nhóm lien kết
các chuyên gia xử lý ảnh). Chuẩn JPEG được sử dụng để mã hoá ảnh đa mức xám,
ảnh màu. Nó không cho kết quả ổn định lắm với ảnh đen trắng. Chuẩn JPEG cung
cấp giải thuật cho cả hai loại nén là nén không mất mát thông tin và nén mất mát
thông tin.
Sơ đồ khối của giải thuật nén và giải nén ảnh JPEG:
Sơ đồ khối của giải thuật nén và giải nén ảnh JPEG
Để nén ảnh theo giải thuật JPEG, ta chia ảnh thành các khối 8x8 (hoặc
16x16). Mỗi khối 8x8 này sẽ được xử lý riêng biệt qua các bước của quá trình nén
ảnh. Đầu tiên, ta thực hiện biến đổi DCT thuận đối với mỗi khối. Như chúng ta đã
biết, do các điển ảnh kế cận nhau thường có tính tương quan rất cao, phép biến đổi
DCT thuận có xu hướng tập trung hầu hết năng lượng của bức ảnh vào trong một
15
ẢNH
GỐC
P

n

k
h

i
8x8
8x8
8x8
Lượng
tử hoá

Bảng
lượng
tử


hoá
Bảng

ẢNH
NÉNDCT

vài hệ số DCT tần số thấp. Đây là cơ sở để ta thực hiện nén ảnh. Với một khối ảnh
kích thước 8x8 trích từ ảnh nguồn, hầu hết các hệ số của nó đều bằng 0 hoặc gần
bằng 0. Như vậy, ta có thể không cần biểu diễn các hệ số này khi truyền dữ liệu ảnh
đi. Lưu ý rằng bản thân biến đổi DCT không làm mất mát thong tin của ảnh gốc, nó
chỉ chuyển các thông tin này về một dạng khác mà ta có thể mã hóa một cách hiệu
quả hơn.
Sau khi qua bộ biến đổi DCT, mỗi hệ số trong số 64 hệ số biến đổi DCT
được lượng tử hóa dựa vào một bảng giá trị lượng tử được thiết kế kỹ lưỡng. Một
phương pháp lượng tử đơn giản có thể dùng là chỉ giữ lại một vài hệ số DCT tần số
thấp (các hệ số có giá trị lớn) còn tất cả các hệ số còn lại gán bằng 0. trong chuẩn
nén JPEG, mỗi hệ số DCT sẽ được chia cho một trọng số ở vị trí tương ứng trong
một ma trận lượng tử 8x8, sau đó làm tròn về số nguyên gần nhất. Sau khi lượng tử
hóa, các hệ số biến đổi DCT sẽ được sắp xếp theo một chuỗi zig-zag bắt đầu từ
thành phần DC, rồi đến thành phần AC… Cuối cùng các hệ số này được chuyển
thành chuỗi bit nhị phân bằng kỹ thuật mã hóa đưa ra ảnh nén.
Ở công đoạn giải mã, bộ giải mã sẽ thự hiện quá trình ngược lại: Giải mã
entropy, sau đó nhân các hệ số thu được với phần tử tương ứng của ma trận lượng
tử, rồi biến đổi ngược DCT để tái tạo lại ảnh ban đầu.
a. Phân khối

Chuẩn nén JPEG phân ảnh ra các khối 8x8. Công đoạn biến đổi nhanh Cosin
hai chiều cho các khối 8x8 tỏ ra hiệu quả hơn. Biến đổi Cosin cho các khối có cùng
kích cỡ có thể giảm được một phần các tính toán chung như việc tính hệ số C
j
i
. Khi
n=8 chúng ta chỉ cần tính hệ số C
j
i
cho 3 tầng (8= 2
3
), số các hệ số là: 4 + 2 + 1 = 7.
Nếu với một ảnh 1024x1024, phép biến đổi nhanh Cosin một chiều theo
hàng ngang hoặc hàng dọc ta phải qua 10 tầng (1024 = 2
10
). Số các hệ số C
j
i
là: 512
+ 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 1021. Thời gian tính các hệ số C
j
i
với
toàn bộ ảnh 1024x1024 lớn gấp 150 lần so với thời gian tính toán các hệ số này cho
các khối.
Biến đổi Cosin đối với các khối có kích thước nhỏ sẽ làm tăng độ chính xác
khi tính toán với số dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra.
16

Do các điểm ảnh kề cận có độ tương quan cao hơn, do đó phép biến đổi

Cosin cho từng khối nhỏ sẽ tập trung năng lượng hơn vào một số ít các hệ số biến
đổi. Việc loại bớt một số hệ số năng lượng thấp trong các khối chỉ tạo ra mất mát
thông tin cục bộ giúp nâng cao chất lượng ảnh.
Ảnh sẽ được chia làm B khối với:

B
N
B
M
l
N
k
M
B
×=×=












''
Các khối được xác định bởi bộ số (m, n) với m = [0 M
B

-1] và n=[0 N
B
-1], ở
đây m chỉ thứ tự của khối theo chiều rộng, n chỉ 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 toạ độ
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:
[ ]
vnlumkagevux
++=
,Im],[
b. Biến đổi
Biến đổi là một công đoạn lớn trong 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 biến đổi là tập trung năng lượng vào một số ít các
hệ số biến đổi.
Công thức biến đổi cho mỗi khối là:
Trong đó
)80(
0
0
2
1
1
1
1
<<
=






=
k
k
khi
khi
k
ε
)80(
0
0
2
1
2
2
2
<<
=





=
k
k
khi
khi

k
ε
Thuật toán biến đổi nhanh Cosin hai chiều cho mỗi khối trong trường hợp
này sẽ bao gồm 16 phép biến đổi nhanh Cosin một chiều. Đầu tiên, người ta biến
17
16
)12(
16
)12(
),
7
0
7
0
(
4
),(
2211
21
1 2
21
21
Π+Π+

=

=
=
kn
Cos

kn
Cosnn
n n
xkkX
kk
εε
16
)12(
16
)12(
),
7
0
7
0
(
4
),(
2211
21
1
2
21
21
Π+Π+

=

=
=

kn
Cos
kn
Coskn
k
k
kXnnx
εε

đổi nhanh Cosin một chiều cho các dãy điểm ảnh trên mỗi hàng. Lần lượt thực hiện
cho 8 hàng. Sau đó đem biến đổi nhanh Cosin một chiều theo từng cột của ma trận
vừa thu được sau 8 phép biến đổi trên. Cũng lần lượt thực hiện cho 8 cột. Ma trận
cuối cùng sẽ là ma trận hệ số biến đổi của khối tương ứng.
Trong sơ đồ giải nén ta phải dùng phép biến đổi Cosin ngược. Công thức
biến đổi ngược cho khối 8x8:
Trong đó:
)80(
0
0
2
1
2
2
2
<<
=






=
k
k
khi
khi
k
ε
c. Lượng tử hóa
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.
Để 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. Chúng ta sẽ căn chỉnh lại hệ
số y
j
bằng phép gán:
j
jj
j
y
y
σ
µ

=
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.
d. Nén
Đầu vào của khối nén gồm hai thành phần: thành phần các hệ số một chiều
và thành phần các hệ số xoay chiều.
18

Thành phần các hệ số một chiều C
i
(0,0) với i = 0,1, , 63 chứa phần lớn
năng lượng tín hiệu hình ảnh. Người ta không nén trực tiếp các giá trị C
i
(0,0) mà
xác định độ lệch của C
i
(0,0):
)0,0()0,0(
1 iii
CCd
−=
+
d
i
có giá trị nhỏ hơn nhiều so với C
i
nên trong biểu diễn dấu phẩy động theo chuẩn
IEEE754 thường chứa nhiều chuỗi bit 0 nên có thể cho hiệu suất nén cao hơn. Giá
trị C
0

(0,0) và các độ lệch d
i
được ghi ra một tệp tạm. 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 C
i
(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 lại chúng theo thứ tự ZigZag. Có thể hình dung hình ZigZag
như bảng trang bên.
Tác dụng của sắp xếp lại theo thứ tự ZigZag là tạo ra nhiều loạt hệ số giống
nhau. Chúng ta biết rằng 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 nên việc sắp xếp lại các hệ số theo thứ tự ZigZag sẽ tạo
điều kiện cho các hệ số xấp xỉ nhau (cùng mức lượng tử) nằm trên một dòng.
Mỗi khối ZigZag 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).
19
0 2 3 9 10 20 21 35
1 4 8 11 19 22 34 36
5 7 12 18 23 33 37 48
6 13 17 24 32 38 47 49
14 16 25 31 39 46 50 57
15 26 30 40 45 51 56 58
27 29 41 44 52 55 59 62
28 42 43 53 54 60 61 63

Sau đó, các khối được dồn lại và 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 được 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 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 file nén của hai thành phần hệ số.
Tóm lại, DCT làm giảm độ tương quan không gian của thông tin trong block
(khối). Điều đó cho phép biễu diễn thích hợp ở miền DCT do các hệ số DCT có xu
hướng có phần dư thừa ít hơn. Điều này có nghĩa là DCT gói một phần lớn năng
lượng tín hiệu vào các thành phần biến đổi có tần số tương đối thấp để lưu trữ hoặc
truyền dẫn, tạo 0 và các giá trị rất thấp đối với thành phần tần số cao. Nhờ đặc tính
của hệ thống nhìn của mắt người, các hệ số DCT có thể được mã hóa phù hợp, chỉ
các hệ số DCT quan trọng nhất mới được mã hóa và truyền đi. DCT thuận kết hợp
với DCT nghịch sẽ không cho tổn thất nếu độ dài từ mã của hệ số là 13 đến
14 bits cho tín hiệu video đầu vào được số hóa bằng các mẫu dài 8 bit. Nếu hệ số
được lượng tử hóa bằng 11 bit (hoặc ngắn hơn), thì nén bằng DCT sẽ có tổn hao.
Phần 4 : MÔ PHỎNG HỆ THỐNG NÉN ẢNH SỐ (NÉN DCT)
4.1 Giao diện chương trình
20

Giao diện chương trình
4.2 Mô hình nén
4.3 Quá trình nén và giải nén DCT
Khi chọn ảnh gốc đưa vào nén DCT, trước khi nén ta kiểm tra ảnh đó có
phải là ảnh xám không. Nếu không phải thì chuyển nó về dạng ảnh xám sau đó
thực hiện các bước nén ảnh như sau:
B1: Chuyển dữ liệu ảnh sang kiểu “double”.
21
Lượng tử
hóa
Ảnh Gốc
Ảnh con 8x8

Ảnh con 8x8
Ảnh con 8x8
Ảnh con 8x8
DCT
Mã hóa
Ảnh nén
Bảng lượng tử hóa

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×