1
MỤC LỤC
Contents
LỜI NÓI ĐẦU
2
Từ khi máy ảnh ra đời, cùng với sự phát triển nhanh chóng của internet thì nhu cầu sử
dụng, lưu trữ, truyền tải và chia sẻ hình ảnh, âm thanh hay video chưa bao giờ cao như
vậy. Người dùng chỉ quan tâm tới một điều đơn giản là làm sao họ có thể chia sẻ, truyền
tải những tấm ảnh tâm đắc của họ chỉ sau vài giây mà chất lượng ảnh không có sự khác
biệt quá nhiều. Vì lẽ đó mà việc phát triển các chuẩn phục vụ nén dữ liệu, nén ảnh ngày
càng được chú ý. Tiêu biểu nhất là chuẩn JPEG và JPEG 2000 ra đời như một bước tiến
quan trọng cho hàng loạt ứng dụng sử dụng hình ảnh sau này.
Chúng em, những sinh viên yêu công nghệ và thông tin đã quyết định chọn đề tài: “Nén
ảnh dựa trên phép biến đổi và các chuẩn JPEG, JPEG 2000” để tìm hiểu và báo cáo. Điều
này một phần dựa trên sự yêu thích của bản thân, phần nhiều dựa trên bài giảng chi tiết
của cô Hoàng Lan ở trên lớp.
Nhóm em gồm các thành viên Nguyễn Tuấn Dũng, Nguyễn Xuân Họa, Trần Trọng Dũng
qua quá trình làm việc nghiêm túc và chăm chỉ đã hoàn thiện bản báo cáo này gồm tìm
hiểu công nghệ và minh họa trên ảnh thực tế. Chúng em chân thành cảm ơn cô Nguyễn
Thị Hoàng Lan đã cho chúng em nhiều nhận xét, góp ý để chúng em hoàn thiện bản báo
cáo này.
A. JPEG
1. Sơ đồ chung của phương pháp nén ảnh
3
Hình 1: sơ đồ chung về nén ảnh trong truyền thông.
Trong đó:
- Bộ biến đổi (T): thường dùng phép biến đổi cosin rời rạc (DCT) để tập trung năng
lượng tín hiệu vào một số nhỏ các hệ số triển khai để thực hiện phép nén hiệu quả
hơn là dùng tín hiệu nguyên thủy.
Đặc điểm của phép biến đổi DCT là tín hiệu ảnh trong miền không gian chuyển
sang miền tần số thì các thành phần DC và các thành phần AC mang hầu hết các
Mã
hóa
(E)
Bảng mã hóa
Bảng lượng tử
Biến đổi
thuận (T)
Ảnh gốc
- Bộ mã hóa (E): gán một từ mã, một dòng bit nhị phân cho mỗi kí hiệu.
Các hệ thống nén được phân biệt dựa trên sự kết hợp khác nhau của 3 bộ xử lý trên và
được phân loại là:
- Hệ thống nén không mất mát thông tin: thực hiện tối thiểu tốc độ bit mà không
làm méo ảnh, còn được gọi là nén toàn bit hay có tính chất thuận nghịch.
- Hệ thống nén có mất mát thông tin: đạt được độ trung thực tốt nhất đối với tốc độ
bit cho trước, phù hợp áp dụng cho âm thanh và hình ảnh vì có hệ số nén cao.
Trong sơ đồ trên, bộ biến đổi và bộ mã hóa là nơi tín hiệu xử lý không bị tổn thất, tầng
lượng tử có tổn thất.
Hiệu quả ảnh nén được xác định bằng: độ mất mát thông tin nhiều hay ít, tỉ lệ nén thông
qua độ phức tạp của thuật toán nén (số bước tính toán trong 2 quá trình mã hóa và giải
mã).
2. Giới thiệu chung về chuẩn nén JPEG
- Là Join Photographic Experts Group, một trong những phương pháp nén ảnh hiệu
quả có tỷ lệ nén ảnh tới vài chục lần.
- Chất lượng ảnh sau nén sẽ suy giảm và phụ thuộc vào hệ số nén. Sự mất mát này
là có thể chấp nhận được và được loại bỏ dựa trên những nghiên cứu về hệ nhãn
thị của mắt người.
- Chuẩn nén ảnh này là cần thiết để cho phép khả năng tương tác của các thiết bị từ
những nhà sản xuất khác nhau.
- Là chuẩn nén ảnh số đầu tiên trên thế giới cho tông màu liên tục ( cả màu xám và
các màu khác).
trong đó: X(k) là chuỗi kết quả, x(m) là giá trị của mẫu m, k là chỉ số của hệ số khai triển,
m là chỉ số của mẫu, N là số mẫu có trong tín hiệu
3.1.2 DCT hai chiều (FDCT &IDCT).
Tại đầu vào, mẫu ảnh nguồn là tập hợp các khối block 8x8, chuyển đổi từ số nguyên
không dấu với phạm vi [0, 2
P
– 1] đến số nguyên có dấu với phạm vi [-2
P-1
, 2
P-1
– 1] và đi
vào Forward DCT (FDCT). Chuẩn JPEG phân ảnh thành các khối 8x8 để giảm thời gian
tính toán cũng như làm tăng độ chính xác khi tính toán.
Đầu ra của bộ giải mã, Inverse DCT (IDCT) cho đầu ra là các khối 8x8 blocks để tái tạo
lại hình ảnh. Biến đổi DCT là một trong những công đoạn quan trọng trong JPEG. Nhiệm
vụ của nó là tập trung năng lượng vào một số các giá trị để giải tương quan tốt nhất nhằm
nâng cao tỉ số nén. Dưới đây là công thức toán học của FDCT 8x8 (1)và IDCT 8x8 (2):
7
Và biến đổi ngược:
f(x,y) là các mẫu gốc trong khối 8x8 pixel và F(u,v) là các hệ số của khối DCT 8x8.
DCT giống như chuyển đổi Fourier rời rạc (DFT). Nó biểu diễn phổ tần tín hiệu thông
qua các mẫu f(x,y). Bản thân phép biến đổi DCT không nén được số liệu, từ 64 mẫu ta có
64 hệ số. Tuy nhiên phép biến đổi DCT thay đổi phân bố giá trị các giá trị hệ số so với
các giá trị mẫu.
Khi nén ảnh JPEG, ma trận các hệ số triển khai sau DCT phải được nhân với bảng trọng
số Q(u,v) để loại bỏ một phần các hệ số có biên độ nhỏ (thường là các thành phần cao
tần). Đây là bảng trọng số Q(u,v).
Như vậy ta sẽ có kết quả khai triển DCT như sau:
Chuẩn JPEG có 2 phương pháp mã hóa entropy là: mã Huffman và mã hóa số học.
Mã hóa entropy gồm 2 bước. Bước 1 là chuyển đổi trình tự các hệ số lượng tử hóa thành
một chuỗi trung gian các biểu tượng. Bước 2 là chuyển các biểu tượng này thành một
dòng dữ liệu. Hình thức và định nghĩa của các biểu tượng trung gian là phụ thuộc vào cả
hai chế độ DCT based và các phương pháp mã hóa entropy.
Mã Huffman đòi hỏi một hoặc nhiều bộ bảng mã Huffman, các bảng sẽ cùng sử dụng để
nén một hình ảnh và giải nén nó. Bảng mã Huffman có thể xác định trước và được sử
dụng trong một ứng dụng mặc định hoặc tính toán cụ thể cho một hình ảnh được đưa ra
trong một số liệu thống kê ban đầu thu thập thông tin trước nén. Sự lựa chọn như vậy để
phù hợp với các ứng dụng có sử dụng chuẩn JPEG để nén ảnh.
Ngược lại, mã hóa số học không cần bảng để có đầu vào từ bên ngoài, bởi nó có thể thích
ứng với các số liệu thống kê hình ảnh cần mã hóa. Mã hóa số học cho sản phẩm nén tốt
hơn 510% so với mã Huffman, tuy nhiên nó cũng đòi hỏi nhiều độ phức tạp hơn cho việc
triển khai nhất định, ví dụ như triển khai phần cứng hiệu năng cao.
1.1.2 RLC – Run Length Entropy Coding.
Sau quá trình quét zig-zag ở trên, RLC sẽ được thực thi. Một hệ số khác 0 sau giá trị DC
được mã hóa bằng 1 từ mã bao gồm 2 thông số: số lượng 0 chạy trước 1 hệ số riêng khác
0 và mức của nó sau khi lượng tử hóa. RLC thực chất là việc thay thế các hệ số có giá trị
11
0 bằng số lượng các chữ số 0 xuất hiện. Hình dưới biểu diễn ví dụ về RLC : Ở đây, giá trị
10 không có giá trị 0 nào trước đó được biễu diễn bằng <0,10>; giá trị –2 có hai giá trị 0
đứng trước được biễu diễn bằng <2,-2>v.v Riêng một dấu đặc biệt là End of Block
(EOB) được dùng để cho biết tất cả các hệ số tiếp theo trong khối bằng 0. Trong ví dụ
này, ta có một chuỗi 49 từ mã với giá trị 0. Như vậy chỉ xét riêng 49 từ mã giá trị 0 được
nén xuống chỉ còn 3 từ mã. Điều này chứng tỏ hiệu suất nén rất cao của mã hóa RLC.
Nén bằng mã RLC là quá trình nén không tổn hao.
1.1.3 VLC – Variable Length Entropy Coding
Các từ mã RLC tiếp tục được mã hóa bằng cách đặt các từ mã ngắn cho các mức có xác
suất xuất hiện cao và các từ mã dài cho các mức có xác suất xuất hiện thấp. Trong ví dụ
trên, số liệu tương ứng với khối DCT ban đầu (8x8x8 bit =512 bit) được giảm thành 48
hành trong giới chuyên gia hình ảnh. Sau đó nó đã được công nhận là tiêu chuẩn quốc
tế vào tháng 12/2000 và được ISO hợp thức hóa để cho phép ứng dụng vào các hệ xử
lý, phân phối.
Với JPEG 2000 kỹ thuật xử lý hình ảnh sẽ đạt được những kết quả rất ngoạn mục
vì có thể nén nhỏ tự 100-200 lần mà hình ảnh không sai sót bao nhiêu so với hình ảnh
gốc.
JPEG 2000 là hệ thống mã hóa hình ảnh kỹ thuật nén dựa trên kỹ thuật sóng ngắn.
Là một tiện ích toán học cho phép mô tả bằng một công thức đơn giản những gì xảy
ra tại một thời điểm chính xác của tín hiệu. Chỉ cần biểu diễn bằng vài công thức ,
đường biểu diễn không đều mà không cần phải mô tả đặc tính của từng điểm một. Đắc
lực khi phân tích tỉ mỉ một file ảnh kỹ thuật số.
Thuật toán trong JPEG 2000 là chọn một số nhỏ các sóng ngắn, các sóng này được
lập lại ở những nơi khác nhau, tỷ lệ khác nhau đã mô tả chính xác tín hiệu của hình
ảnh. File nén không chứa nhiều hơn số lượng chỉ vị trí và giãn nở của từng sóng ngắn.
Và kỹ thuật mã hóa theo từng khối, theo từng khu vực ưu tiên của hình ảnh được áp
dụng cũng là một tiến bộ đáng kể trong thuật toán mã hóa JPEG 2000.
14
Được ISO công nhận, có thể nói JPEG 2000 sẽ được thương mại hóa thông qua
nền công nghiệp kỹ thuật số mà lợi ích mạng lại phù hợp nhất là chuẩn đoán hình ảnh
Y khoa, hình ảnh trên internet, và cả phim kỹ thuật số. Tương lai là cho các thiết bị di
động như máy tính cầm tay và điện thoại di động
2. Sơ đồ chung của phương pháp nén ảnh JPEG 2000
Sơ đồ chung của nén ảnh:
Sơ đồ của nén ảnh JPEG
Sơ đồ của nén ảnh JPEG 2000
Giống như JPEG , JPEG 2000 các nén ảnh chuẩn bao gồm 4 bước cơ bản trong các
kỹ thuật gồm 4 bước cơ bản:
Tiền xử lý ( Original image )
Chuyển đổi ( Transformation –DWT )
Lượng tử hóa ( Quantization )
Tùy thuộc ta thực hiện việc DWT bao nhiêu lần thì sẽ thu được bao nhiêu khối ảnh
cho việc đưa vào lượng tử hóa.
2.3 Lượng tử hóa ( Quantization)
Ta sẽ thực hiện mã hóa từng khối theo gần giống với chuẩn JPEG
Các hệ số của phép biến đổi DWT sẽ được lượng tử hóa để đạt được tỉ lệ nén cao hơn
bằng cách thể hiện giá trị biến đổi với độ chính xác cần thiết với mức chi tiết của ảnh
18
cần nén. Ta thực hiện phép toán :
V(x,y) : giá trị sau lượng tử hóa
U(x,y) : giá trị đầu vào
∆ : bước lượng tử co thể thay đổi tùy vào giá trị đầu vào U
Bước giải lượng tử :
Với r là tham số xác địn dấu và làm tròn
Sau khi xác định được các giá trị của V(x,y) sẽ được mã hóa thành các bit bắt đầu từ bit
MSB ( Most Significant Bit ) đến bit LSB ( Least Significant Bit ) tạo nên các mặt phẳng
bit.
2.4 Mã hóa ( Encoding )
Mỗi mặt phẳng bit được tạo từ bước lượng tử hóa riêng bằng mã hóa số học thích
nghi => khác với JPEG là sử dụng chung 1 thuật toán mã hóa, thì ở đây JPEG 2000
mềm dẻo và linh hoạt hơn cho phép mã hóa riêng thích nghi.
Mã hóa mỗi mặt phẳng bit được chia thành các khối.
Mỗi mặt phẳng bit của mỗi khối mã hóa dựa theo nguyên tắc tuyền lan bit từ bit
MSB đến bit LSB
19
Ngoài ra : JPEG 2000 còn có tổ chức dòng bit ( Bit stream Organization )
3. Ưu điểm so sánh JPEG 2000 với JPEG
Mềm dẻo hơn : JPEG 2000 đưa ra các kỹ thuật nén có tẩn thất và không tổn
thất theo cùng một cơ chế mã hóa duy nhất trong khi JPEG thì nén tỏn thất và
không tổn thất là theo 2 cơ chế mã hóa khác nhau và nén không tổn thất là rất
khó thực hiện.
cũng có thể tùy chỉnh các mức khác nhau để quan sát sự thay đổi của chất lượng
ảnh.
Giao diện phần mềm Advanced JPEG Compressor.
1.3 Phân tích tình huống.
- Ta sử dụng một bức ảnh ban đầu (raw image) được chụp từ máy ảnh lưu dưới
dạng ảnh .bmp (Bitmap).
- Nén ảnh theo định dạng JPEG, tiếp đó xác định dung lượng tệp ảnh.
- So sánh kết quả về dung lượng của ảnh sau khi được nén.
21
1.4 Quá trình thực hiện.
- Ảnh ban đâu là một bức ảnh kích thước 960x1280 ở hệ màu RBG với dung
lượng 374 KB.
Ảnh ban đầu.
- Nén ảnh theo định dạng .jpeg ở các tỉ số nén khác nhau sử dụng hệ màu
YcrCb:
22
Ảnh ban đầu
Dung lượng : 374 KB
Ảnh JPEG
Tỉ số nén kém
nhất có thể 1:11.6
Dung lượng : 310KB
23
Ảnh JPEG
Tỉ số nén 1:27.5
Dung lượng : 131KB
Ảnh JPEG
Tỉ số nén 1:89.5
Dung lượng : 40KB
24