Những yếu điểm cơ bản của các phương pháp này là sự mất mát thông tin và hiệu quả nén không cao đối với những hình ảnh phức tạp.. Với các phương pháp này bạn có thể nén ảnh tới tỷ lệ 20:
Trang 1CHƯƠNG 1
TỔNG QUAN VỀ KĨ THUẬT NÉN ẢNH 1.1 Giới thiệu chung
Cùng với sự phát triển mạnh mẽ của máy tính và sự ra đời của Internet thì việc tìm một phương pháp nén ảnh để giảm bớt không gian lưu trữ thông tin và truyền thông tin trên mạng nhanh chóng đang là một yêu cầu cần thiết Trong những năm gần đây, có rất nhiều các phương pháp đã và đang được nghiên cứu rộng rãi để thực hiện nén ảnh Tất cả đều với một mục đích chung là làm thế nào để biểu diễn một ảnh với ít bit nhất để có thể tối thiểu hoá dung lượng kênh truyền và không gian lưu trữ trong khi vẫn giữ được tính trung thực của ảnh Điều này tương đương với việc biểu diễn ảnh có độ tin cậy cao nhất với tốc độ bit nhỏ nhất.Tốc độ bit được đo bằng số bit trên một điểm ảnh (pixel) Tốc độ bit đối với ảnh đen trắng khi chưa được nén là 8 bit/pixel và đối với ảnh màu là 24 bit/pixel Các kỹ thuật nén hiênnay cho phép dung lượng ảnh được nén giảm 30 đến 50 lần so với ảnh gốc mà ảnh vẫn giữ được độ trung thực cao Độ trung thực của ảnh được đánh giá dựa trên tiêu chí như lỗi trung bình, bình phương (MSE: Mean Square Error) hoặc tỷ số tín hiệu trên tạp âm (SNR: Signal-to-Noise ratio) giữa ảnh gốc và ảnh nén
Các nhà sản xuất máy tính đang quảng cáo những sản phẩm mới nhất nhằm đáp ứng lĩnh vực đồ họa Trong khi đó các nhà lập trình thì biết rất rõ là những máy tính hiện nay chưa thể làm việc với các loại ảnh màu thực bởi lẽ lượng thông tin quá lớn của từng ảnh Chẳng hạn như để có bộ phim trên máy vi tính tương đương chất lượng với chương trình vô tuyến cần phải lưu một lượng thông tin là 22 MB trong 1 giây
Để giải quyết khó khăn này, người ta cần đến các kỹ thuật nén dữ liệu Những phương pháp thường (như Compress trong hệ UNIX) không đem lại hiệu quả: tỷ lệ nén dữ liệu cho hình ảnh không quá 2:1 Nhưng với những phương pháp chuyên dụng có thể đạt tới 30:1 Hai phương pháp nén hình ảnh nổi tiếng nhất hiện nay là của nhóm chuyên gia về hình ảnh động (MotionPicture Experts Group - MPEG) và liên hiệp các nhóm chuyên gia về hình ảnh (Joint PhotoGraphic Experts Group - JPEG) Những phương pháp này đã trở thành chuẩn công nghiệp Những yếu điểm cơ bản của các phương pháp này là sự mất mát thông tin và hiệu quả nén không cao đối với những hình ảnh phức tạp
Một chuyên gia giải thích kỹ thuật nén lossless như sau: "Giả sử bạn có một ngăn kéo với
2 chiếc tất màu trắng, 2 chiếc tất màu đen Thay vì nói: "Tôi có 1 tất trắng, 1 tất trắng
Trang 2Tất cả các phương pháp nén ảnh đều dựa trên một nguyên lý đơn giản: trong dữ liệu có nhiều phần tử thừa và nén ảnh dựa trên cơ sở tìm ra những phần tử đó và mã hóa chúng
Ví dụ, như số 9999997777 có thể mã hóa thành 6947 Các hình ảnh trên màn hình máy vi tính đặc trưngbởi số điểm (pixel) và số bit dành cho mã mầu của mỗi điểm (bit/pixel)
Phần lớn các hình ảnh (nhất là có độ phân giải cao) không có quy luật giữa các điểm gần nhau, do đó các phương pháp thông dụng hiện nay như biến đổi cosin rời rạc, Wavelet Image Compession (WIC) (theo chuẩn JPEG và MPEG) phải dùng đến biến đổi toán học và xấp xỉ cácmối tương quan giữa các pixel Với các phương pháp này bạn có thể nén ảnh tới tỷ lệ 20:1
- 30:1.Nhưng những ảnh này (vì bị mất thông tin) chỉ là những ảnh gần đúng với ảnh ban đầu, ngoài ra còn có thể xuất hiện biến dạng hình ảnh như đối với phương pháp biến đổi cosin rời rạc
1.2 Nén ảnh:
Nhằm giảm thiểu không gian lưu trữ Thường được tiến hành theo cả hai khuynh hướng là nén có bảo toàn và không bảo toàn thông tin Nén không bảo toàn thì thường có khả năng nén cao hơn nhưng khả năng phục hồi thì kém hơn
Nén ảnh sử dụng phép biến đổi: đây là kỹ thuật tiếp cận theo hướng nén không bảo toàn và do vậy kỹ thuật thường nén hiệu quả hơn JPG chính là tiếp cận theo kỹ thuật nén này
1.3 Các nguyên tắc khi nén ảnh
Một tính chất chung nhất của tất cả các ảnh số đó là tương quan giữa các pixel ở cạnh nhau lớn, điều này dẫn đến dư thừa thông tin để biểu diễn ảnh Dư thừa thông tin sẽ làm cho việc mã hoá không tối ưu Do đó công việc cần làm để nén ảnh là phải tìm được các biểu diễn ảnh với tương quan nhỏ nhất để giảm thiểu độ dư thừa thông tin của ảnh Thực tế, có hai kiểu
dư thừa thông tin được phân loại như sau:
- Dư thừa trong miền không gian: tương quan giữa các giá trị pixel của ảnh, điều này có nghĩa rằng các pixel lân cận của ảnh có giá trị gần giống nhau (trừ những pixel ở giápđường biên ảnh)
- Dư thừa trong miền tần số: Tương quan giữa các mặt phẳng màu hoặc dải phổ khác nhau
Trọng tâm của các nghiên cứu về nén ảnh là tìm cách giảm số bit cần để biểu diễn ảnh bằng việc loại bỏ dư thừa trong miền không gian và miền tần số càng nhiều càng tốt
Các kỹ thuật nén ảnh được sử dụng:
- Nén ảnh không mất thông tin : với phương pháp này sau khi giải nén ta khôi phục đượcchính xác ảnh gốc Các phương pháp nén này bao gồm mã hoá Huffman, mã hoá
Trang 3- Nén ảnh có mất thông tin: ảnh giải nén có một sự sai khác nhỏ so với ảnh gốc Các phương pháp này bao gồm:
• Lượng tử hoá vô hướng: PCM và DPCM
• Lượng tử hoá vector
• Mã hoá biến đổi: biến đổi cosin rời rạc (DCT), biến đổi Fourier nhanh (FFT)
• Mã hoá băng con
Sơ đồ khối một hệ thống nén ảnh điển hình
Hai phương pháp nén ảnh tĩnh hiện đang được nghiên cứu rộng rãi hiện nay là
- Biến đổi cosin rời rạc DCT (Discrete Cosin Transform): đang được dùng trong chuẩn nén ảnh JPEG hiện nay
- Mã hoá băng con SBC (Subband Coding): được kết hợp với bi n ế đổi wavelet dùng làm chuẩn nén ảnh JPEG 2000
Trang 4CHƯƠNG 2
CHUẨN NÉN ẢNH JPEG 2.1 Giới thiệu chung:
JPEG (phát âm là JAY-peg) viết tắt từ Joint Photographic Experts Group của ủy ban xác lập các định dạng chuẩn, từ năm 1986 nhóm hiệp hội các tiêu chuẩn đã đưa ra chuẩn nén ảnh JPEG và đến năm 1994 JPEG được khẳng định với tiêu chuẩn ISO 10918-1 JPEG là định dạngnén ảnh có tổn thất, mặc dầu có sự thay đổi của các biến thể nhưng nó vẫn giữ được nguyên lý của chuẩn nén cơ bản JPEG (các định dạng mở rộng khác như jpg, jpeg, jpe, jfif và jif)
Định dạng JPEG/JFIF được sử dụng để lưu trữ ảnh và truyền qua mạng Internet (WorldWide Web) cùng với định dạng GIF gồm 256 màu JPEG là định dạng nén để lưu trữ ảnh màu và ảnh trắng đen bằng nhiều độ phân giải, định dạng nén JPEG làm suy giảm nhỏ về chất lượng Chuẩn nén JPEG là phương pháp nén ảnh tĩnh với tỉ lệ nén lên đến 20-1 mà không làm mất thông tin đáng kể, mỗi ảnh có 3 kênh màu (đỏ, lục, lam) với giới hạn 8 bit/kênh Định dạng nén JPEG được sử dụng trong tất cả máy ảnh kỹ thuật số có kích thước rất nhỏ nên thường chụpđược nhiều ảnh trên một thẻ nhớ, JPEG dễ hiển thị trên màn hình, ảnh có thể chuyển nhanh qua thư điện tử (dung lượng từ 300KB đến 700KB), ảnh JPEG chất lượng cao
có dung lượng khoảng vài MB hay lớn hơn, khuyết điểm chính của ảnh JPEG là ảnh có chất lượng thấp, ảnh thường bị suy giảm nếu so với ảnh gốc
Nén theo chuẩn JPEG là một tiến trình nhiều bước Trước hết là bước qui tắc hóa
(regularizing stage) để làm cho ảnh có nhiều đoạn giống nhau hơn thực tế Ảnh màu
được chuyển sang dạng YUV hoặc CIELAB, trong đó thông tin về độ sáng (luminance) được tách rờivới thông tin về độ màu (chrominance) Một yếu tố được tính tới là mắt người ta nhạy cảm vớinhững thay đổi nhỏ về độ sáng hơn là những thay đổi về màu sắc, đặc biệt ở đầu xanh của phổ Ngoài ra cách làm này còn khai thác thực tế là ảnh thường có nhiều vùng lớn tại đó các điểm kế nhau rất giống nhau về kênh màu
Bước tiếp theo là lấy mẫu cho các kênh màu (gọi là “downsampling” hoặc
“chromasubsampling”) Đây là 1 trong 2 công đoạn làm mất thông tin và chỉ thực hiện khi bạn chọn xác lập high compression/low quality (tỉ lệ nén cao/chất lượng thấp) của JPEG Lấy mẫu(subsampling) nghĩa là loại bỏ có hệ thống các thông tin màu sắc đối với các hàng hoặc cột điểm ở tỉ lệ cho trước Nếu bạn thực hiện cứ hai hàng loại bỏ một hàng và hai cột loại bỏ một cột, giảm được dữ liệu màu đi 75% Khi tời ảnh, trị của các điểm loại bỏ trước đó
Trang 5Transform) Làm việc với các khối điểm 8x8, hàm DCT phân tích các tần số vùng theo
cả chiều ngang lẫn chiều dọc Công đoạn này được gọi là lượng tử hóa (quantization) - cách
gọi kỹ thuậtcủa bước làm giảm số bit cần thiết để biểu diễn mổi giá trị tần suất Các trị này được nén trung thực trước hết bằng RLE sau đó mã hóa theo kỹ thuật Huffman Đây là công đoạn của JPEG chophép đạt tỉ số nén rất cao
Quá trình tời (decompres s ion) là quá trình ngược lại Dữ liệu được giải mã bằng thuật toán Huffman, các trị kết quả được nhân lên, hàm DCT ngược được áp dụng, các vùng luminance và chrominance được chuyển trở lại RGB
2.2 Mã hóa JPEG
Có một miêu tả ngắn cho một hoặc nhiều phương pháp chung của sự mã hoá khi áp dụngvào trường hợp 24 bit/pixel (8 cho mỗi màu: đỏ, xanh dương, xanh lá cây) Đây là phương pháp nén giảm dữ liệu
Sự chuyển đổi không gian màu:
Trước tiên ảnh nên được chuyển đổi từ RGB tới một không gian màu khác gọi là YcbCr
Nó có 3 thành phần Y, Cb, Cr: thành phần Y miêu tả ánh sáng của điểm ảnh, thành phần Cb vàCr miêu tả “chrominance” (phân loại thành phần xanh lá cây và đỏ) Sự chuyển đổi không gianmàu YcbCr cho phép nén lớn nhất và cho ra cùng một chất lượng ảnh( hoặc chất lượng ảnh lớn Icho ra cùng một sự nén)
Sự chuyển đổi đến YcbCr được chỉ rõ trong chuẩn JFIF, và nên thực hiện cho kết quả file JPEGđể có sự tương thích là lớn I Tuy nhiên , nhiều ảnh JPEG chất lượng cao không áp dụng trườnghợp này và thay vì giữ chúng trong không gian màu sRGB, mỗi vùng màu được nén và lượng tửhoá tách biệt với những giới hạn cùng chất lượng
Downsampling
Mắt người có thể nhìn thấy nhiều chi tiết trong thành phần Y( ánh sáng) hơn trong Cb(xanh lá cây) và Cr(xanh dương) Sử dụng sự hiểu biết này, giải mã có thể được thiết kế để nén ảnh có hiệu quả hơn
Nó làm giảm thành phần Cb và Cr (gọi là “downsampling” hoặc “chroma subsampling”)
Tỉ sốmà tại việc lấy mẫu xuống có thể được thực hiện trên LPEG 4:4:4(không lấy mẫu xuống), 4:2:2( giảm bởi chia 2 theo hướng nằm ngang.), và thường sử dụng I là 4:2:0( giảm bởi chia 2theo hướng nằm ngang và đứng) Ngưng quá trình lấy mẫu, Y, Cb và Cr được xử lý tách biệt và trong cùng 1 loại Lấy mẫu xuống thành phần chroma lưu giữ 33% hoặc 50% không gian được lấy bởi ảnh
Chia khối
Trang 6Sau khi “subsampling” mỗi kênh phải bị tách ra đặt trong khối 8x8(của pixel) Nếu như
dữ liệu cho mỗi kênh không mô tả được số nguyên của các khối thì việc giải mã phải làm đầynhững vùng còn lại của những khối không đầy đủ với một số hình thức của dữ liệu giả: Làm đầy nền của pixel với màu qui định (màu đen) tạo ra vùng tối dọc phần nhìn thấy rõ của khung Lập lại nền pixel thì phổ biến nhưng kĩ thuật không tối ưu đễ tránh những khung nhìn thấy rõ, nhưng nó vẫn tạo ra những vùng với màu của những ô làm đầy
Cách tốt nhất là làm đầy pixel bởi sử dụng màu sắc mà nó qui định hệ số DCT của pixel nhìnthấy rõ, tại tần số thấp I(ví dụ làm đầy với trung bình màu của phần nhìn thấy sẽ giữ dược hệ số DC đầu tiên, nhưng thích hợp nhất là 2 hệ số AC kế tiếp sẽ tạo ra những kế quả tốt
I với ít nhất 8x8 ô những cạnh dọc theo khung)
Miêu tả hàm truyền cosine
8x8 ảnh nhỏ trình bày trong mặt xám 8 bit
Trang 78x8 ảnh nhỏ cho thấy sau khi có biểu đồ phương trình của nó (chẳng hạn 154 trở thành trắng, 55 trở thành đen).
Tiếp đến là mỗi thành phần (Y,Cb,Cr) của mỗi khối 8x8 được chuyển đổi đến vùng tần
số sử dụng biến đổi cosine rời rạc 2-D (DCT).- 8
Và sau đó lấy DCT và nhóm các kết quả số nguyên gần nhất
Giá trị lớn nhất ở đầu gốc trái gọi là hệ số DC, 63 giá trị còn lại gọi là hệ số AC Biến dổi cosine rời rạc làm tăng kích cỡ ảnh DCT chuyển đổi 64 pixel tới 1 sự kết hợp tuyến tính của
64 ô vuông Đường nằm ngang là u, đường thẳng đứng là v
Trang 8Lượng tử hoá : Mắt người nhìn thấy rõ sự khác nhau rất nhỏ của ánh sáng khi qua những vùng tương đối lớn, nhưng không phân rõ chiều dài chính xác của sự biến đổi ánh sáng ở tần
số cao Điều này được thực hiện bởi việc chia mỗi thành phần trong vùng tần số cho một hằng
số của thành phần đó, và sau đó nhóm các số nguyên gần nhất
Lượng tử hoá ma trận:
Trang 9Mật mã entropy : Mật mã entropy là 1 hình thức đặc biệt của sự nén dữ liệu giảm bớt sự mất mát Nó bao gồm sự sắp xếp các thành ảnh trong “zigzag” để dùng thuật toán “run-lengthencoding” nhóm các tần số tương tự với nhau, chèn vào chiều các mã zero, và sử dụng mật mã Huffman đối với phía trái.
Bảng zigzag của các thành phần ảnh JPEG
Chuẩn JPEG cũng được cho phép, nhưng không đòi hỏi, sử dụng mật mã số học, đó là toán học cao cấp tới mật mã Huffman Tuy nhiên nét đặc trưng này hiếm khi được sử dụng bởi vì sự giải mã và mã hoá chậm hơn so với mật mã Huffman Đặc trưng của mật mã số học làm những file nhỏ hơn khoảng 5%
Chuổi zigzag cho hệ số lượng tử hoá được trình bày ở bên dưới
Nếu như một khối thứ I được miêu tả bởi Bi và vị trí ở bên trong mỗi khối được miêu tả bởi (p,q) với p = 0,1,…,7 và q = 0,1,…,7, bất kì một hệ số nào trong ảnh DCT có thể được miêu tả như Bi(p,q) vì vậy, trong hệ thống ở trên, bậc của sự mã hoá pixel là Bi(0,0),Bi(0,1), Bi(1,0),Bi(2,0), Bi(1,1), Bi(0,2), Bi(0,3), Bi(1,2),.v.v
Trang 10Sơ đồ mã hóa và giải mã dùng biến đổi DCT
Phương thức mã hoá được gọi là mã hoá chuỗi “baseline” Ranh giới JPEG cũng được chấp nhận nén mã hoá Trong khi những chuỗi mã hoá này mã hoá hệ số của khối đơn tại 1 lần, sự nén đã mã hoá các hệ số có vị trí giống nhau của tất cả các khối, theo sau bởi các hệ số
vị trí tiếp theo của tất cả các khối,… vì vậy, nếu ảnh được chia tới N khối 8x8 {B0,B1,B2,…Bn-1}, sau đó sự nénmã hoá Bi(0,0) cho tất cả các khối, với I = 0,1,2,…N-1 tiếp theo mã hoá
hệ số Bi(0,1), hệ số Bi(1,0), sau đó là Bi(0,2) Chú ý ở đây có những hệ số cùng vị trí đã được mã hoá, vị trí tiếp theo để mã hoá thì nó phải xuất hiện kế đến trong hàng ngang zigzag
Để mã hoá hệ số mẫu JPEG sử dụng mã hoá Huffman JPEG có mật mã Huffman đặc biệt cho việc kết thúc sớm chuỗi khi những hệ số còn lại là zero
Kí tự mã số đặc biệt là “EOB”, chuỗi trở thành
Mật mã khác của JPEG tương ứng với sự kết hợp của (a) số bit quan trọng của hệ số, bao gồm dấu, và (b) số hệ số zero liền nhau (Bạn biết có bao nhiêu bit được mong đợi, lấy 1 bittương ứng {-1, +1}, 2 bit tương ứng {-3, -2, +2, +3},…)
Chuẩn JPEG cung cấp bảng Huffman, mã hoá có thể chọn bảng Huffman ngẫu nhiên cho việc phân phối tần số thật trong ảnh đã được mã hoá
Tỉ số và dụng cụ nén
Trang 11Ảnh này trình bày những pixel mà nó khác nhau giữa ảnh không nén và ảnh nén JPEG với chất lượng 50% Những vùng mờ có sự khác nhau rất lớn Chú ý nhất là sự thay đổi xuấthiện gần những cạnh nhọn và có hình dạng giống khối.
Nén theo kiểu 8x8 hình vuông có thể nhìn thấy những lớp vãy trong ảnh
Kết quả tỉ số nén có thể thay đổi theo yêu cầu trong ước số được sử dụng trong pha lượng tử hoá Nén từ 10/1 thường kết quả trong ảnh thì mắt không thể phân biệt so với nguyên thuỷ Nén 100/1 thường có thể, nhưng sẽ nhìn vào dụng cụ riêng để so sánh với nguyên thuỷ Giới hạn sắp xỉ của sự nén phụ thuộc vào việc sử dụng nơi ảnh được đặt
2.3 Giải mã JPEG
Giải mã để hiển thị ảnh bao gồm những công việc ngược lại ở trên
Lấy ma trận hệ số DCT( sau khi cộng hệ số DC khác)
Và nhân nó với ma trận lượng tử hoá từ kết quả ở trên
Trang 12Nó gần giống với ma trận hệ số DCT nguyên thuỷ cho nữa trên phía trái Lấy nghịch đảoDCT (DCT loại III) kết quả trong ảnh với các giá trị (vẫn dịch xuống 128)
Chú ý có sự khác nhau rất ít giữa ảnh nguyên thuỷ và ảnh giảm nén, có thể nhìn rõ ở gócdưới phía bên trái
Trang 13Đây là những ảnh nhỏ không bị nén và có thể so sánh với ảnh nhỏ nguyên thuỷ, bằng cách lấy kết quả khác nhau trong những giá trị sai số với trị tuyệt đối trung bình của sai số khoảng 5/pixel.
2.4 So sánh JPEG với các chuẩn nén ảnh khác JPEG
Chuẩn này thường được áp dụng cho các hình chụp, nhưng khi xuất bạn nên chọn chất lượng High, thông số 60 (Đừng tham chọn cao quá 80 hay 100, mặc dù nhìn có vẻ đẹp nhưng khi tải lên web, sẽ rất lâu Và cũng đừng chọn thông số 30 hay 15, hình sẽ vỡ hết!)
GIF Dạng này cho ra kích thước nhỏ đến tuyệt vời, thích hợp cho các dạng hình minh hoạ, bảng biểu hay các hình chụp đen trắng Đối với các hình chụp màu, file Gif thường tạo ra