NGHIÊN cứu THUẬT TOÁN nén ẢNH JPEG và JPEG 2000 ........................... NGHIÊN cứu THUẬT TOÁN nén ẢNH JPEG và JPEG 2000 ........................... NGHIÊN cứu THUẬT TOÁN nén ẢNH JPEG và JPEG 2000 ........................... NGHIÊN cứu THUẬT TOÁN nén ẢNH JPEG và JPEG 2000 ...........................
Trang 1JPEG VÀ JPEG 2000
Trang 4DCT Discrete cosine Transform
DWT Discrete Wavelet Transform
ICT Irreversible Color Transform
IDCT Inverse Discrete Cosine Transform
IDWT Inverse Discrete Wavelet Transform
JPEG Joint Photographic Experts Group
RCT Reversible Color Transform
RGB Red Green Blue
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ NÉN ẢNH
1.1 Giới thiệu đề tài
Có rất nhiều định dạng khác nhau để mô tả việc lưu trữ một file hình ảnh như: png;.tif; gif; jpg Trong số đó jpg (hay jpeg) được sử dụng rộng rãi nhất do khả năngnén ảnh tốt của nó
Có nhiều phương pháp nén ảnh, nhưng đều dựa trên nguyên tắc tìm ra các thông tinphần tử thừa trong dữ liệu và mã hóa chúng theo nhiều mức độ khác nhau Mộtcông nghệ nén ảnh tương đối hiệu quả có thể làm việc với các ảnh kích cỡ lớn,nhiều màu đó là công nghệ JPEG - viết tắt của Joint Photographic Experts Group(Hiệp hội các chuyên gia hình ảnh)
Nén ảnh JPEG2000 sinh ra để khắc phục các nhược điểm của nén JPEG, sự mất mát dữliệu ở JPEG2000 sẽ ít hơn nhưng hệ số nén vẫn như JPEG.Với JPEG2000 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-200lần mà hình ảnh không sai sót bao nhiêu so với hình ảnh gốc
1.1.1 Mục đích nghiên cứu đề tài
Hiểu về ảnh số và nén ảnh
Tìm và hiểu được thuật toán DCT và DWT dùng để nén ảnh JPEG và JPEG2000 trongứng dụng MATLAB
Mô phỏng ứng dụng nén ảnh bằng ứng dụng lập trình GUI trong MATLAB
1.1.2 Hướng phát triển của đề tài
Trong những năm trở lại đây nén ảnh đã trở thành công nghệ chủ yếu cho các máy tính
cá nhân,.v.v… Do sự phát triển mạnh mẽ của Internet đối với các dữ liệu đa phươngtiện cần đặt ra yêu cầu nén ảnh tốt hơn nhằm giảm bớt không gian lưu trữ thông tin vàtruyền thông mà vẫn đảm bảo về mặt hiệu suất và chất lượng
Trang 61.2 Giới thiệu về ảnh số
Ảnh số gồm 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
Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giải càng cao thì càng thểhiện rõ nét các đặt điểm của tấm hình càng làm cho tấm ảnh trở nên thực và sắc néthơn
Điểm ảnh (Pixel) là điểm vật lý hoặc một khối màu rất nhỏ tại toạ độ (x, y) với độ xámhoặ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íchhợ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ột pixel không có kích thước cố định
Hình 1.1: Điểm ảnh (pixel).
Độ phân giải của ảnh (Resolution) là mật độ điểm ảnh được ấn định trên một ảnh sốđược hiển thị Việc lựa chọn khoảng cách của các điểm ảnh sao cho mắt người vẫn thấyđược sự liên tục của một bức ảnh tạo nên mật độ phân bổ Đó chính là độ phân giải vàđược phân bố theo trục x và y trong không gian hai chiều
Ảnh grayscale: Hay còn gọi là ảnh đen trắng Mỗi ảnh được biểu diễn bởi một ma trậnhai chiều, trong đó giá trị của mỗi phần tử cho biết độ sáng (hay mức xám) của điểmảnh đó Ma trận này có thể là một trong các kiểu uint8, uint16 hoặc double Ảnh nếudùng 8 bit (1 byte) để biểu diễn mức xám, thì số các mức xám có thể biểu diễn được là
28 hay 256 Mỗi mức xám được biểu diễn dưới dạng là một số nguyên nằm trongkhoả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ễncho mức cường độ sáng nhất
Trang 7Hình 1.2: Ảnh grayscale
Ảnh màu (RGB) còn gọi là ảnh “truecolor” do tính trung thực của nó Ảnh này đượcbiểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnhtheo pixels Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểmảnh, các phần tử của nó có thể thuộc kiểu uint8, uint16 hoặc double Để biểu diễn chomột điểm ảnh màu cần 24 bit, 24 bit này được chia thành ba khoảng 8 bit Mỗi khoảngnày biểu diễn cho cường độ sáng của một trong các màu chính
Hình 1.3: Ảnh màu (RGB)
Trang 8Ảnh nhị phân: ảnh này được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical Mỗi điểm ảnh chỉ có thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng)
Hình 1.4: Ảnh nhị phân
Ảnh Index: được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (còn gọi là bản đồ màu) map Ma trận dữ liệu có thể thuộc kiểu uint8, uint16 hoặc double Ma trận màu là một ma trận kich thước m x 3 gồm các thành phần thuộc kiểu double có giá trị trong khoảng [0 1] Mỗi hàng của ma trận xác định thành phần red, green, blue của một màu trong tổng số m màu được sử dụng trong ảnh Giá trị của một phần tử trong ma trận dữ liệu ảnh cho biết màu của điểm ảnh đó nằm ở hàng nào trong ma trận màu.
Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hoá ảnh Như vậy một ảnh là một tập hợp các pixel Mỗi pixel là gồm một cặp toạ độ x, y và màu Cặp toạ độ x,y tạo nên độ phân giải (resolution)
VD: 320 x 200, 640x350, 800x600, 1024x768,…
1.3 Giới thiệu về nén ảnh
Ngày nay, việc truyền tải và lưu giữ ảnh số hóa có nhiều ứng dụng trong thực tế như:truyền các văn bản qua đường điện thoại (Fax), nén ảnh trong y tế, truyền ảnh và nhậnảnh qua các mạng xã hội, v.v…
Nén ảnh là một kĩ thuật mã hóa các ảnh số hóa mục đích dùng để giảm số lượng các bit
dữ liệu, giảm đi những chi phí trong việc lưu trữ ảnh và thời gian để truyền ảnh đi xatrong truyền thông những vẫn đảm bảo được chất lượng ảnh
Trang 9Nén ảnh thực hiện được là do thông tin trong bức ảnh không phải là ngẫu nhiên mà cótrật tự, cấu trúc.Vì thế nếu bóc tách được tính trật tự, cấu trúc đó thì sẽ biết phần thôngtin nào quan trọng nhất trong bức ảnh để biểu diễn và truyền đi với số lượng ít bit hơn
so với ảnh gốc mà vẫn đảm bảo tính đầy đủ của thông tin Ở bên nhận quá trình giải mã
sẽ tổ chức, sắp xếp lại được bức ảnh xấp xỉ gần chính xác so với ảnh gốc nhưng vẫnthỏa mãn chất lượng yêu cầu
Nén ảnh đạt được bằng cách loại bỏ các phần dư thừa trong ảnh đã được số hoá Dưthừa có thể là dư thừa thông tin về không gian, dư thừa về cấp xám hay dư thừa về thờigian
Trong nén ảnh có nén tổn hao (lossy) và nén không tổn hao (lossless) Nén ảnh tổn haohoạt động bằng cách loại bỏ thông tin từ file ảnh gốc, làm giảm dung lượng file ảnh.Ngược lại nến ảnh không tổn hao vẫn giữ toàn bộ dữ liệu gốc, nhưng lại khiến cho kích
cỡ file lớn hơn đáng kể
Trang 10CHƯƠNG 2: NÉN ẢNH JPEG VÀ JPEG 2000 SỬ DỤNG THUẬT TOÁN
BIẾN ĐỔI DCT VÀ WAVELET
2.1 Nén ảnh JPEG
2.1.1 Phương pháp biến đổi DCT (Discrete Cosine Transform)
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ácthành phần tần số và biên độ khác nhau của ảnh Hầu hết các thông tin về ảnh chỉ tậptrung trong một vài hệ số của DCT và các hệ số còn lại chỉ chứa rất ít thông tin Vì lý
do trên, DCT thường được sử dụng trong các ứng dụng nén ảnh khác nhau nhờ hiệusuấ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âncận
DCT hai chiều của ma trận A mn có kích thước MxN được định nghĩa như sau :
(2 1) (2 1) cos cos
Trang 111 1
0 0
(2 1) (2 1)cos cos
2.1.2 Nén JPEG bằng biến đổi Cosine (DCT)
Giải thuật nén dùng DCT được cho là giải thuật được biết đến nhiều nhất vì DCT làgiải thuật được chuẩn hóa với tên JPEG Chuẩn JPEG được sử dụng để mã hóa ảnhmàu (RGB) và ảnh đa mức xám (grayscale) Nó không cho kết quả ổn định lắm với ảnhgrayscale hay được gọi là ảnh đen trắng
2.1.2.1 Mã hóa JPEG
Ảnh gốc
Dữ liệu ảnh
Chuyển ảnh gốcsang các khối 8x8
Biến đổiDCT
Lượng
tử hóa
Quét và địnhdạng zigzag
Mã hóaEntropy
Trang 12Hình 2.2: Ảnh RGB chuyển sang không gian màu YCbCr
Mỗi thành phần (YCbCr) của mỗi khối 8x8 được chuyển đến vùng tần số sử dụng biếnđổi cosine rời rạc 2D-DCT Nguyên tắc chính của phương pháp mã hóa này là biến đổitập các giá trị pixel của ảnh trong miền không gian sang một tập các giá trị khác trongmiền tần số sao cho các hệ số trong tập giá trị mới có sự tương quan giữa các điềm ảnhgần nhau
Mỗi khối 8x8 gồm 64 điểm ảnh sau khi biến đổi DCT thuận sẽ nhận tạo ra mảng 2chiều có 64 hệ số thực Hệ số thứ nhất được gọi là hệ số DC (một chiều) có giá trị lớnnhất tương ứng với vùng tần số thấp Các hệ số còn lại được gọi là hệ số AC (hai chiều)
có giá trị rất nhỏ
Tiếp đến mảng 2 chiều được lượng tử hóa sao cho làm giảm được số bit cần thiết Các
hệ số tương ứng với vùng tần số thấp có giá trị lớn Do đó phải lượng tử hóa với độchính xác cao, vì nó biểu thị cho giá trị độ chói trung bình của từng khối phần tử ảnh.Chức năng cơ bản của bộ lượng tử hóa là loại bỏ các thông tin dư thừa trong ảnh Việc
Trang 13lượng tử hóa sẽ tạo ra rất nhiều các giá trị 0 đặc biệt là ở vùng tần số cao Quá trìnhlàm tròn trong lượng tử hóa chính là nguyên nhân chính gây ra sự tổn hao nhưng lại lànhân tố chính đem lại hiệu suất nén.
Sau khi được lượng tử hóa mảng 2 chiều sẽ được sắp xếp theo hình zigzag tạo thànhmảng một chiều các sắp xếp này cho phép giảm thiểu năng lượng tổn hao trung bình vàtạo dãy các giá trị bằng 0 liên tiếp
Bước cuối cùng của bộ mã hóa sử dụng mã hóa entropy nhằm tăng thêm hiệu quả nén
và giảm thiễu lỗi Được thực hiện bằng cách thay thế những chuỗi kí tự dài bằng những
từ mã ngắn Tạo ra chuỗi dữ liệu để truyền đi hoặc lưu trữ
Hình 2.3: Quét và sắp xếp zigzag các hệ số DCT
2.1.2.2 Giải mã JPEG
Dữ liệu ảnh
Ảnh khôi phục
Giải quétzigzag
Giải lượng
tử hóa
Giải mãEntropy
Biến đổiIDCTChuyển ảnh gốc
sang các khối 8x8
Trang 14Hình 2.4: Sơ đồ giải mã DCT
Quá trình giải nén dựa trên cơ sở thực hiện thuật toán ngược với quá trình nén Ở phầngiải mã luồng bit dữ liệu ảnh được giải mã entropy, sau đó các hệ số được giải ma trậnzigzag tạo thành mảng 2 chiều và giải lượng tử Mảng chiều được sau đó được biến đổiDCT ngược tạo thành các khối ảnh con có kích thước 8x8 Sắp xếp các khối ảnh tađược ảnh khôi phục sau khi nén
2.2 Nén ảnh JPEG 2000
2.2.1 Biến đổi wavelet liên tục (CWT – Continuous Wavelet Transform)
Biến đổi wavelet liên tục của một hàm f(t) được bắt đầu từ một hàm wavelet mẹ (mother wavelet) ψ(t) Hàm wavelet mẹ ψ(t) có thể là bất kì một hàm số thực hoặc
phức liên tục nào thõa mãn các tính chất sau:
-Tích phân suy rộng trên toàn bộ trục t của hàm ψ(t) là bằng 0
-Tích phân năng lượng của hàm trên toàn bộ trục t là một số hữu hạn tức là:
Có nghĩa là hàm ψ(t) phải làm một hàm bình phương khả tích.
Sau khi hàm wavelet được lựa chọn, biến đổi wavelet liên tục của một hàm bình
phương khả tích f(t) được tính theo công thức:
Khi a >1 thì hàm wavelet sẽ được trải rộng còn khi 0 < a < 1 thì hàm sẽ được co
lại.
Chúng ta có thể xem biến đổi CWT như là một ma trận 2 chiều các hàng của ma trận tương ứng với các giá trị của a và các cột tương ứng với giá trị của b.
Trang 152.2.2 Biến đổi wavelet rời rạc (DWT- Discrete Wavelet Transform)
2.2.2.1 Wavelet rời rạc một chiều (1D- DWT)
Wavelet là phép biến đổi được sử dụng để phân tích các tín hiệu không ổn định, lànhững tín hiệu có đáp ứng tần số thay đổi theo thời gian Có thể hiểu phép biến đổiDWT là áp dụng một tập các bộ lọc thông cao và thông thấp để phân tích một tín hiệuthành hai thành phần: thành phần xấp xỉ A (Approximation) tương ứng với tần số thấp
và thành phần chi tiết D (Detail) tương ứng với tần số cao Bộ lọc thông cao sử dụnghàm wavelet mẹ và bộ lọc thông thấp sử dụng hàm tỉ lệ
Mối quan hệ giữa hàm tỉ lệ và wavelet mẹ được cho bởi:
Các bộ lọc này được thiết kế phải đáp ứng phổ phẳng, trơn và trực giao Việc tính toánDWT thực chất là sự rời rạc hóa biến đổi wavelet liên tục (CWT) Việc rời rạc hóa thựchiện với sự lựa chọn các hệ số a và b như sau:
a = 2m ; b = 2n n với m, n ∈ Z
Tham số b cho biết khoảng dịch của hàm wavelet mẹ và độ phân giải các tần số khác
nhau của f(t) được minh họa bởi hệ số tỉ lệ chính là a Xử lý tín hiệu ảnh số là xử lý tín
hiệu hai chiều và do đặc điểm của ảnh số bao giờ cũng có tính định hướng và tính định
vị Tính định hướng của một ảnh nghĩa là trong ảnh bao giờ cũng có một số ít các thànhphần tần số nhưng các thành phần tần số này trải rộng trên toàn bộ không gian ảnh còntính định vị của ảnh chính là tính chất biểu thị rằng tại một vùng của ảnh có thể có rấtnhiều thành phần tần số Ảnh biểu thị tính định vị rõ nhất chính là ảnh có nhiều biênvùng phân tách rõ rệt, tại các đường biên bao giờ cũng có nhiều thành phần tần số khácnhau, còn hầu hết các ảnh có tông liên tục đều là những ảnh có tính định hướng
2.2.2.2 wavelet rời rạc hai chiều (2D-DWT)
Để xử lý ảnh hoặc các dữ liệu hai chiều cần sử dụng phép biến đổi wavelet 2 chiều.Gọi x và y là hai trục tọa độ của tín hiệu 2D, Tín hiệu hai chiều S(x,y) được tách thànhnhiều tín hiệu một chiều rồi lấy biến đôi wavelet một chiều Ta gọi L là phép lọc thôngthấp, H là phép lọc thông cao phép biến đổi 2D được tính cụ thể như sau:
Trang 162.2.3 Nén ảnh JPEG 2000 bằng biến đổi wavelet (DWT)
Sự ra đời của JPEG mang lại nhiều lợi ích to lớn về nhiều mặt JPEG có thể giảm nhỏkích thước, giảm thời gian truyền và làm giảm chi phí xử lý ảnh trong khi chất lượngảnh sau khi nén khá tốt Tuy nhiên, cho đến nay người ta chỉ ứng dụng dạng nén tổnthất thông tin của JPEG vì mã hóa không tổn thất của JPEG khá phức tạp Đó là lý do
để JPEG2000 ra đời
JPEG2000 sử dụng biến đổi wavelet và các phương pháp mã hóa đặc biệt để có đượcảnh nén ưu việt hơn JPEG
-Các tính năng của JPEG2000:
• Cho chất lượng ảnh tốt nhất khi áp dụng nén ảnh tĩnh có tổn hao, sử dụng đượcvới truyền dẫn và hiển thị, độ phân giải, các thành phần màu có tính định vịkhông gian
• Nó sử dụng cùng một cơ chế nén ảnh cho cả 2 dạng thức nén
• Truy nhập và giải nén tại mọi thời điểm trong khi nhận dữ liệu
• Giải nén từng vùng trong ảnh mà không cần giải nén toàn ảnh bộ ảnh
• Có khả năng mã hóa ảnh với tỉ lệ nén theo từng vùng khác nhau
• Nén một lần nhưng có thể giải nén với nhiều cấp chất lượng tùy theo yêu cầucủa người sử dụng
Ảnh gốc
Hình 2.5: Sơ đồ quá trình mã hóa (a) và giải mã (b) JPEG2000
Xử lý trước biến đổi là do sử dụng biến đổi Wavelet, JPEG2000 cần có dữ liệu ảnh đầuvào ở dạng đối xứng qua 0 Xử lý trước biến đổi chính là giai đoạn đảm bảo dữ liệu
Giảilượng tử
wavelet ngược
Xử lý saubiến đổi
Dữ liệuảnh nén(a)
Mã hóa Lượng tử
hóa
Biến đổiwavelet thuận
Xử lý trướcbiến đổi
Ảnh đượckhôi phục(b)
Dữ liệu
ảnh nén
Trang 17đưa vào nén ảnh có dạng trên Ở phía giải mã, giai đoạn xử lý sau biến đổi sẽ trả lại giátrị gốc ban đầu cho dữ liệu ảnh
JPEG2000 sử dụng biến đổi màu thuận nghịch (Reversible Color Transform - RCT) vàbiến đổi màu không thuận nghịch (Irreversible Color Transform - ICT) trong đó biếnđổi thuận nghịch làm việc với các giá trị nguyên, còn biến đổi không thuận nghịch làmviệc với các giá trị thực ICT và RCT chuyển dữ liệu ảnh từ không gian màu RGB sangYCrCb
Hình 2.6: Quá trình phân ly băng con
Ở quá trình biến đổi wavelet sử dụng biến đổi wavelet rời rạc DWT Do phép biến đổiwavelet không phải là một phép biến đổi trực giao như biến đổi DCT mà là một phépbiến đổi băng con nên các thành phần sẽ được phân chia thành các băng tần số khácnhau và mỗi băng sẽ được mã hóa riêng lẽ JPEG2000 áp dụng biến đổi waveletnguyên thuận nghịch 5/3 và biến đổi thực không thuận nghịch Daubechies 9/7 Việctính toán biến đổi wavelet 2D suy ra từ biến đổi wavelet 1D theo các phương phápphân giải ảnh tùy chọn Do biến đổi wavelet 5/3 là biến đổi thuận nghịch nên có thể ápdụng cho nén ảnh theo cả 2 phương pháp, không tổn thất và có tổn thất trong khi biếnđổi 9/7 chỉ áp dụng cho nén ảnh theo phương pháp có tổn thất thông tin Ở phía thuchúng ta sử dụng biến đổi ngược của wavelet rời rạc (IDWT) để biến đổi ảnh đưa dữliệu đến bộ giải lượng tử hóa
Các hệ số của phép biến đổi sẽ được tiến hành lượng tử hóa Quá trình lượng tử hóa