Nén ảnh số
202
Hình 13.4.
Hình 13.5.
Để 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ểm ả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 vài hệ số DCT tần số thấp. Đây là cơ sở để ta có thể 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 thông 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ã hoá 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ử hoá
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:
ij
ij
ij
D
C
round
Q
⎛
⎞
=
⎜
⎟
⎜
⎟
⎝
⎠
(13.5)
với D là ma trận các hệ số DCT, Q là ma trận lượng tử (kích thước 8x8).
Thông thường mắt người rất khó phân biệt các thành phần tần số cao của ảnh, do đó các thành
phần này sẽ được chia cho các trọng số lớn hơn. JPEG định nghĩa các ma trận lượng tử tuỳ
theo cấp chất lượng từ 1 đến 100 (cấp 100 có chất lượng tốt nhất). Với cấp chất lượng 50, ma
trận lượng tử được định nghĩa là: