Trọng tâm ban đầu của các nỗ lực nghiên cứu trong lĩnh vực này theo các phương pháp tương tự để giảm băng thông truyền tín hiệu video, đó là một quy trình được gọi là nén băng thông.. Đá
Trang 13.3 Kỹ thuật nén ảnh
3.3.1 Tổng quan về nén ảnh
Mỗi ngày, một lượng thông tin khổng lồ được lưu trữ lại, truy cập và truyền dẫn dưới dạng số Các công ty cung cấp cho các đơn vị liên quan, các nhà đầu tư, và khách hàng, tiềm năng dữ liệu về tài chính, các báo cáo thường niên, kiểm kê đánh giá và thông tin về sản phẩm thông qua mạng Internet Với yêu cầu tiếp nhận và tìm kiếm, hai trong số hầu hết các cách giao dịch cơ bản trực tuyến, thông thường được thực hiện tại nhà với sự thoải mái tiện nghi Bước đầu của chính phủ điện tử (còn gọi là chính phủ số) của Hoa
Kỳ là thiết lập ra toàn bộ danh sách (hoặc nội dung) của thư viện Quốc hội, đó là thư viện lớn nhất thế giới, có thể truy cập điện tử và các chương trình truyền hình cáp theo yêu cầu
sẽ trở thành hiện thực trong tương lai gần Do hầu hết các thông tin trực tuyến được diễn đạt dưới dạng đồ họa hoặc hình ảnh tự nhiên, các yêu cầu về lưu trữ và truyền thông là rất lớn Nên các phương pháp nén dữ liệu trước khi lưu trữ và truyền dẫn là mối quan tâm mang tính chất thương mại và thực tiễn rất quan trọng
Việc nén ảnh đưa đến vấn đề về giảm thiểu số lượng dữ liệu yêu cầu để tái hiện lại một ảnh số Cốt lõi của quá trình rút gọn là loại bỏ dữ liệu dư thừa Dưới quan điểm toán học, số lượng để chuyển đổi chuỗi điểm ảnh 2-D thành một bộ dữ liệu không tương quan
về mặt thống kê Việc chuyển đổi được ứng dụng trước tiên cho việc lưu trữ hoặc truyền hình ảnh Tại một thời điểm sau đó, hình ảnh đã nén được giải nén để tái tạo lại hình ảnh gốc hoặc gần đúng của nó
Mối quan tâm về việc nén ảnh đã có từ hơn mấy chục năm nay Trọng tâm ban đầu của các nỗ lực nghiên cứu trong lĩnh vực này theo các phương pháp tương tự để giảm
băng thông truyền tín hiệu video, đó là một quy trình được gọi là nén băng thông Việc
đạt đến máy tính số và sự phát triển sau đó của các mạch tích hợp tân tiến đưa đến yêu cầu phải thay đổi các phương thức nén từ tương tự sang số Với một vài khóa quốc tế của chuẩn nén ảnh mới được thông qua gần đây, phạm vi này đã trải qua sự phát triển rất ý nghĩa thông qua các ứng dụng thực tế của lý thuyết bắt đầu từ những năm 1940, khi C.E.Shannon và những nhà khoa học khác đưa ra công thức đầu tiên theo xác suất của thông tin và các quá trình tái tạo, truyền dẫn và nén
Hiện nay, nén ảnh được thừa nhận như là: “công nghệ hỗ trợ” Thêm vào phạm vi vừa được đề cập, nén ảnh là một công nghệ tự nhiên để trình bày cho giải pháp tăng về không gian của cảm biến ảnh ngày nay và tiến triển đến các chuẩn quảng bá vô tuyến Hơn nữa, nén ảnh còn nắm vai trò lớn hơn trong nhiều ứng dụng khác nhau, bao gồm cả thoại hội nghị video, khả năng phán đoán từ xa (việc sử dụng hình ảnh từ vệ tinh các ứng dụng trong dự báo thời tiết hoặc về các tài nguyên khác của trái đất), các ảnh tài liệu, các ảnh y học, truyền dẫn kiểu sao chép (FAX), các phương tiện điều khiển từ xa trong quân đội, không gian và các ứng dụng quản lý còn đang bị bỏ ngỏ khác Nói tóm lại, số lượng các ứng dụng luôn phát triển không ngừng phụ thuộc vào hệ số thao tác, bộ nhớ và sự
Trang 2Nén ảnh số là một đề tài nghiên cứu rất phổ biến trong lĩnh vực xử lý dữ liệu đa phương tiện Mục đích là làm thế nào để lưu trữ bức ảnh dưới dạng có kích thước nhỏ hơn hay dưới dạng biểu diễn mà chỉ yêu cầu số bit mã hoá ít hơn so với bức ảnh gốc Nén ảnh thực hiện được là do một thực tế: thông tin trong bức ảnh không phải ngẫu nhiên mà
có trật tự, có tổ chức Vì thế, nếu bóc tách được tính trật tự, cấu trúc đó thì sẽ biết được phần thông tin nào quan trọng nhất trong bức ảnh để biểu diễn và truyền đi với số lượng bit it hơn ảnh gốc mà vẫn đảm bảo tính đầy đủ thông tin Ở phía thu, 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ẫn thoả mãn chất lượng yêu cầu, đảm bảo đủ thông tin cần thiết
Độ dư thừa số liệu là vấn đề trung tâm trong nén ảnh số Đánh giá cho quá trình thực hiện giải thuật nén là tỉ lệ nén ( ) được xác định như sau: Nếu và là lượng số liệu trong hai tập hợp số liệu cùng được dùng để biễu diễn lượng thông tin cho trước thì
độ dư thừa số liệu tương đối của tập số liệu thứ nhất so với tập số liệu thứ hai có thể được định nghĩa như sau:
(3.30) trong đó:
(3.31) Trong trường hợp thì và có nghĩa là so với tập số liệu thứ hai thì tập số liệu thứ nhất không chứa số liệu dư thừa Khi thì tiến tới vô cùng và tiến tới một, có nghĩa là độ dư thừa số liệu tương đối của tập số liệu thứ nhất là khá lớn hay tập số liệu thứ hai đã được nén khá nhỏ
Ở đây có sự kết hợp giữa tỉ lệ nén và chất lượng hình ảnh Tỉ lệ nén càng cao sẽ làm giảm chất lượng hình ảnh và ngược lại Chất lượng và quá trình nén có thể thay đổi tùy theo đặc điểm của hình ảnh nguồn và nội dung ảnh Đánh giá chất lượng ảnh được đề
Trang 3nghị tính số bit cho một điểm trong ảnh nén ( ) Nó được xác định là tổng số bit ở ảnh nén chia cho tổng số điểm:
Trong nén ảnh số, ba loại dư thừa số liệu có thể được nhận dạng và phân biệt
• Dư thừa mã (Coding Redundancy)
Nếu các mức của tín hiệu video được mã hóa bằng càc symbol nhiều hơn cần thiết (tuyệt đối) thì kết quả là có độ dư thừa mã Để giảm độ dư thừa mã, trong nén ảnh thường
sử dụng các mã VLC như mã Huffman, mã RLC v.v Lượng thông tin về hình ảnh có xác suất thấp hơn
• Dư thừa trong pixel (Interpixel Redundancy)
Vì giá trị của bất kỳ một pixel nào đó, cũng có thể được dự báo từ giá trị của các lân cận của nó, nên thông tin từ các pixels riêng là tương đối nhỏ Sự tham gia của một pixel riêng vào một ảnh là dư thừa Nhiều tên (bao gồm: dư thừa không gian, dư thừa hình học, dư thừa trong ảnh) được đặt ra để phân biệt sự phụ thuộc này của các pixels Ta dùng độ dư thừa trong pixel để chỉ tất cả các tên trên Để giảm độ dư thừa trong pixel của một ảnh, dãy pixel hai chiều dùng cho việc nhìn và nội suy, phải được biến đổi thành một dạng có hiệu quả hơn Trong các phương pháp nén ảnh được trình bày, ta dùng phép biến đổi cosin rời rạc (DCT) biến đổi pixel từ miền không gian sang miền tần số, bằng cách này sẽ giảm được độ dư thừa số liệu trong pixel ở miền tần số cao
• Dư thừa tâm sinh lý
Bằng trực quan ta thấy, sự thu nhận cường độ sáng thay đổi chỉ giới trong một phạm vi nhất định Hiện tượng này xuất phát từ sự thật là mắt không đáp ứng với cùng độ nhậy của tất cả các thông tin nhìn thấy Thông tin đơn giản có tầm quan trọng ít hơn thông tin khác trong vùng nhìn thấy Thông tin này được gọi là độ dư thừa tâm lý nhìn
Nó có thể được loại bỏ mà không ảnh hưởng đáng kể đến chất lượng thu nhận ảnh Khác với độ dư thừa mã và dư thừa trong pixel, độ dư thừa tâm sinh lý có liên quan đến thông tin theo định lượng, nó có quan hệ tới việc lượng tử hóa Điều đó có nghĩa là ánh xạ một khoảng rộng các giá trị đầu vào lên một số hữu hạn các giá trị đầu ra Đó là toán tử không đảo ngược (mất thông tin) cho kết quả nén số liệu có tổn hao
3.3.1.2 Mô hình nén
Trong lĩnh vực truyền thông video, kỹ thuật xử lý tín hiệu chủ yếu tập trung vào mục đích nén Người ta thường sử dụng 3 phương pháp nén đối với hình ảnh dựa vào các loại độ dư: dư thừa không gian, dư thừa phổ và dư thừa tâm sinh lý nhìn
Nén về cơ bản là một quá trình trong đó số lượng số liệu (data) biểu diễn lượng thông tin của một ảnh hoặc nhiều ảnh được giảm bớt bằng cách loại bỏ những số liệu dư thừa trong tín hiệu video Các chuỗi ảnh truyền hình có nhiều phần ảnh giống nhau Vậy tín hiệu truyền hình có chứa nhiều dữ liệu dư thừa, ta có thể bỏ qua mà không làm mất thông tin hình ảnh Đó là các phần xóa dòng, xóa mành, vùng ảnh tỉnh hoặc chuyển động rất chậm,vùng ảnh nền giống nhau, mà ở đó các phần tử liên tiếp hoặc khác nhau rất ít
Trang 4Ngoài ra, để tăng hệ số nén ảnh động, chuyển động trong ảnh truyền hình phải được dự báo, khi đó, ta chỉ cần truyền các thông tin về hướng và mức độ (vector) chuyển động của các vùng ảnh khác nhau Các phần tử lân cận trong ảnh thường giống nhau, do đó chỉ cần truyền các thông tin biến đổi Các hệ thống nén sử dụng đặc tính này của tín hiệu video
và các đặc trưng của mắt người (là kém nhạy với sai số trong hình ảnh có nhiều chi tiết
và các phần tử chuyển động) Quá trình giải nén ảnh là quá trình xấp xỉ để khôi phục ảnh gốc (thường thực hiện ở phía thu)
Một hệ thống nén video tiêu biểu (hay bộ mã hoá nguồn) bao gồm: bộ chuyển đổi,
bộ lượng tử hoá, bộ mã hoá (hình 3.38)
Hình 3.38: Sơ đồ khối hệ thống nén ảnh tiêu biểu
- Bộ chuyển đổi: thường dùng phép biến đổi Cosin rời rạc để tập trung năng lượng tín hiệu vào một số lượng nhỏ các hệ số khai triển để thực hiện phép nén hiệu quả hơn là dùng tín hiệu nguyên thủy
- Bộ lượng tử hoá: tạo ra một lượng ký hiệu giới hạn cho ảnh nén với hai kỹ thuật: lượng
tử vô hướng (thực hiện lượng tử hoá cho từng phần dữ liệu) và lượng tử vectơ (thực hiện lượng tử hoá một lần một khối dữ liệu) Quá trình này không thuận nghịch
- Bộ mã hoá: 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 giữa 3 bộ xử lý trên và được phân loại như sau:
- Hệ thống nén không mất thông tin (lossless data reduction): thực hiện tối thiểu tốc độ bit mà không làm méo ảnh, hệ thống còn 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 thông tin (loss data reduction): đạt được độ trung thực tốt nhất đối với tốc độ bit cho trước, hệ thống phù hợp áp dụng cho tín hiệu âm thanh và hình ảnh vì
có hệ số nén cao
Trong sơ đồ hình 3.38, tầng chuyển đổi và tầng mã hoá là nơi tín hiệu xử lý không
bị tổn thất, tầng lượng tử là có tổn thất Ngoài ra, dựa trên quan điểm về tổn thất chúng ta
có thể phân biệt hai loại mã hoá như sau: mã hoá Entropy (mã hoá không tổn thất) và mã hoá nguồn (mã hoá có tổn thất)
Trang 53.3.2 Hiệu quả của quá trình nén và chất lượng ảnh
Hiệu quả nén được xác định bằng tỉ lệ nén, nghĩa là tỉ số giữa số lượng dữ liệu của ảnh gốc trên số liệu của ảnh nén
Độ phức tạp của thuật toán nén, được xác định bằng số bước tính toán trong cả hai quá trình mã hóa và giải mã Thông thường thì thuật toán nén càng phức tạp bao nhiêu thì hiệu quả nén càng cao nhưng ngược lại giá thành và thời gian để thực hiện lại tăng Đối với thuật toán nén có tổn thất thì độ sai lệch được xác định bằng số thông tin bị mất đi khi
ta tái tạo lại hình ảnh từ dữ liệu nén Với nén không tổn thất thì chúng ta có thể có những thuật toán mã hóa càng gần với Entropy của thông tin nguồn bởi vì lượng Entropy của nguồn chính là tốc độ nhỏ nhất mà bất cứ một thuật toán nén không tổn thất nào cũng có thể đạt được
Ngược lại, trong nén có tổn thất thì mối quan hệ giữa tỉ lệ nén và độ sai lệch thông tin được Shannon nghiên cứu và biểu diễn dưới dạng hàm (hàmvề độ sai lệch thông tin) Lý thuyết của ông cũng chỉ ra rằng với thuật toán nén có tổn thất thì chúng ta sẽ có hiệu quả nén cao nhất nhưng ngược lại ta lại bị mất thông tin trong quá trình tái tạo lại nó
từ dữ liệu nén Trong khi đó nén không tổn thất, mặc dù đạt được hiệu quả thấp, nhưng ta lại không bị mất thông tin trong quá trình tái tạo lại nó Vì vậy ta phải tìm ra một giải pháp nhằm trung hòa giữa hai thuật toán nén này để tìm ra một thuật toán nén tối ưu sao cho hiệu quả cao mà lại không bị mất mát thông tin
Phương pháp đánh giá chất lượng ảnh nén thông dụng nhất là dựa trên mức sai
lệch bình phương trung bình so với ảnh gốc - rms (Root Mean Square) được tính bởi biểu
Thông thường, khi giá trị rms thấp, chất lượng ảnh nén sẽ tốt Tuy nhiên, trong một
số trường hợp chất lượng hình ảnh nén không nhất thiết phải tỷ lệ thuận với giá trị rms
Trang 63.3.3 Phân loại các phương pháp nén ảnh
Có nhiều cách phân loại các phương pháp nén khác nhau Cách 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 loại chính:
• Nén không mất thông tin: 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 thông tin: 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ố sai số 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à độ sai lệch 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 phương pháp:
• Phương pháp không gian (Spatial Data Compression): 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 gốc
• Phương pháp sử dụng biến đổi (Transform Coding): tác động lên sự biến đổi của ảnh gốc mà không tác động trực tiếp
Quá trình nén và giải nén có thể được mô tả tóm tắt theo hình vẽ dưới đây:
Hình 3.39: Sơ đồ quá trình nén và giải nén dữ liệu
Sau đây ta tập trung giới thiệu về các phương pháp nén theo cách phân loại thứ nhất
3.3.3.1 Nén không mất thông tin
Nén không mất thông tin cho phép phục hồi đúng tín hiệu ban đầu sau khi giải nén Đây là một quá trình mã hoá có tính thuận nghịch Hệ số nén không mất thông tin nhỏ hơn Các kỹ thuật nén không mất thông tin có thể là:
Quá trình nén
Quá trình giải nén
Trang 7Mã hoá với độ dài từ mã thay đổi VLC: Đây là phương pháp mã hoá Huffman và
mã hoá Entropy dựa trên khả năng xuất hiện của các biên độ trùng hợp trong một bức ảnh, thiết lập một từ mã ngắn cho các giá trị có tần suất xuất hiện cao nhất và từ mã dài cho các giá trị còn lại Khi giải nén sử dụng các băng tìm kiếm
Mã hóa LZW: Phương pháp nén LZW được phát minh bởi Lempel - Zip và Welch Nó hoạt động dựa trên một ý tưởng rất đơn giản là người mã hóa và người giải
mã cùng xây dựng bảng mã
Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng bé hơn Nhược điểm của nó là phải chứa cả bảng mã vào tập tin nén thì phía nhận mới có thể giải mã được do đó hiệu suất nén chỉ cao khi ta thực hiện các tập tin lớn Thuật toán LZW thì có ưu điểm là hệ số nén tương đối cao, trong tập tin nén không cần chứa bảng
mã, nhược điểm của thuật toán này là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (<64KB)
3.3.3.2 Nén có tổn thất
Sau khi nén một số thông tin bị mất chất lượng hình ảnh giảm do quá trình làm tròn và loại bỏ giá trị trong phạm vi khung hình hay giữa các khung hình Nếu nén nằm trong giới hạn sự cảm nhận của mắt người thì chất lượng suy hao không nghiêm trọng Với việc nén có tổn hao này, nén tín hiệu mới thật sự có ý nghĩa đối với truyền hình
Nén mất thông tin đạt tới hệ số nén Tốc độ dòng số liệu đạt được trong hệ thống nén phụ thuộc vào yêu cầu chất lượng ảnh cần có Các kỹ thuật nén có tổn thất bao gồm:
Mã hóa dự đoán tổn hao, các giá trị mang thông tin đã được gửi hay đang sẵn có
sẽ được sử dụng để dự đoán các giá trị khác, và chỉ mã hóa sự sai lệch giữa chúng Phương pháp này đơn giản và rất phù hợp với việc khai thác các đặc tính cục bộ của bức ảnh Kỹ thuật DPCM chính là một ví dụ điển hình của phương pháp này
Mã hóa dựa trên phép biến đổi thì lại thực hiện như sau: trước tiên thực hiện phép biến đổi thường dùng là DCT – Biến đổi Cosin rời rạc, DWT – biến đổi Wavelet rời rạc, tiếp đó thực hiện mã hóa đối với các hệ số biến đổi Phương pháp này có hệ số cao hơn rất nhiều so với phương pháp dự đoán bởi vì chính các phép biến đổi (sử dụng các thuộc tính nén năng lượng của mình) đã gói gọn toàn bộ năng lượng bức ảnh chỉ bằng một ít các hệ số, số lớn các hệ số còn lại ít có ý nghĩa hơn sẽ bị loại bỏ sau khi lượng tử hóa và như vậy lượng dữ liệu phải truyền nhỏ đi rất nhiều Còn trong phương pháp mã hóa dự đoán, sai lệch giữa ảnh gốc và ảnh dự đoán vẫn còn có ý nghĩa (còn sử dụng ở các bước tiếp theo) sau khi lượng tử hóa, chính điều này làm cho phương pháp mã hóa dự đoán có nhiều dữ liệu được truyền đi hơn so với phương pháp biến đổi
Trang 83.3.4 Các phương pháp mã hoá dùng trong kỹ thuật nén không tổn thất
Trong một vài ứng dụng nén không tổn thất nghĩa là chỉ có thể chấp nhận được sự giảm bớt dữ liệu Một ứng dụng ví dụ như nơi lưu trữ những tài liệu y học hay doanh nghiệp, nơi mà việc nén có tổn thất thường là không được phép vì những lý do bắt buộc Một ví dụ khác là việc xử lý các hình ảnh vệ tinh, bất kỳ một sự mất mát nào đều không thích hợp cho cả việc sử dụng lẫn chi phí của việc tập hợp dữ liệu Tuy thế, việc chụp X quang số, thì mất mát thông tin có thể được thoả hiệp sự chính xác trong chuẩn đoán Trong một vài trường hợp khác, nhu cầu việc nén không tổn thất được thúc đẩy bởi việc xem xét hoàn cảnh sử dụng hoặc tính tự nhiên của ảnh sau khi nén
Trong phần này, chúng ta sẽ tập trung vào những kế hoạch của việc nén không tổn thất hiện thời đang được sử dụng Thông thường chúng cung cấp hệ số nén từ 2-10 Hơn nữa, chúng cũng thích hợp với cả ảnh nhị phân và mức độ xám Kỹ thuật nén error-free thường bao gồm 2 thao tác tương đối độc lập: (1) việc sắp xếp một biểu diễn ảnh thay thế ảnh cũ trong đó sự dư thừa interpixel của nó được giảm bớt và (2) mã hoá lại biểu diễn ảnh đó để loại trừ tối đa sự dư thừa Những bước này tương ứng với việc ánh xạ và mã hoá ký tự của kiểu mã hoá nguồn
3.3.4.1 Mã hoá với độ dài từ mã thay đổi
Để đạt được tốc độ bít thấp hơn, các hệ số biến đổi và các tọa độ của các véc tơ chuyển động được mã với độ dài thay đổi (VLC) Trong VLC, các từ mã ngắn được gán tương ứng các giá trị xác suất cao và các từ mã dài ứng với các giá trị xác suất thấp Độ dài của các mã nên biến đổi nghịch đảo với xác suất xuất hiện của các kí hiệu trong VLC Tốc độ bít cần để mã hóa các kí hiệu này là nghịch đảo của logarit của xác suất, tức là log2p Do đó, entropy của các kí hiệu là số bít trung bình tối thiểu cần để biểu diễn các kí hiệu:
2 1
Có hai loại VLC được ứng dụng trong mã hóa ảnh chuẩn, đó là mã hóa Huffman
và mã hóa số học Mã hóa Huffman được sử dụng trong tất cả các bộ mã hóa (CODEC) chuẩn để giải mã các hệ số biến đổi cosin rời rạc (DCT) đã được lượng tử hóa cũng như giải mã các vec tơ chuyển động
Trang 9Các ký hiệu H E L O
Các bước của thuật toán mã hóa Shannon-Fano có thể được trình bày theo cách từ trên xuống:
1 Phân loại các ký hiệu theo tần xuất xuất hiện của chúng
2 Phân chia theo đệ quy các ký hiệu thành hai phần, với mỗi khoảng cùng số lượng của
số lần xuất hiện, cho đến khi tất cả các phần có chứa chỉ có một ký hiệu
Một cách tự nhiên của việc thực hiện các thủ tục trên là xây dựng một cây nhị phân Theo quy ước, chúng ta gán bit 0 cho nhánh trái của nó và bit 1 cho các nhánh phải
Hình 3.40: Cây mã hóa cho từ HELLO bởi thuật toán Shannon-Fano
Ban đầu, các ký hiệu được sắp xếp là LHEO Hình 3.40 cho thấy, việc chia đầu tiên tạo ra làm 2 phần: (a) L với tần suất xuất hiện là 2, ký hiệu là L: (2) ; và (b) H, E và
O với tổng số lần xuất hiện là 3, ký hiệu là H, E, O: (3) Lần phân chia thứ hai sinh ra H: (1) và E, O: (2) và lần phân chia cuối cùng là E: (l) và O: (1)
Bảng 3.3 tóm tắt kết quả, hiển thị mỗi ký hiệu, tần xuất xuất hiện của chúng, nội dung thông tin ( 1
H=
Trang 10= 0.4 x 1.32 + 0.2 x 2.32 + 0.2 x 2.32 + 0.2 x 2.32 = 1.92
2log
Bảng 3.3: Kết quả thực hiện bởi thuật toán Shannon-Fano cho từ HELLO
Điều này cho thấy số bit trung bình tối thiểu của để mã mỗi ký hiệu trong từ HELLO là 1,92 Trong ví dụ này, các thuật toán Shannon-Fano sử dụng một giá trị trung bình là 10 / 5 = 2 bit để mã mỗi ký tự, khá gần với giới hạn thấp là1,92 Rõ ràng, kết quả
là thỏa đáng
Lưu ý rằng kết quả của thuật toán Shannon-Fano không nhất thiết là duy nhất Ví
dụ, nếu cách chia đầu tiên trong ví dụ trên thành hai phần L, H: (3) và E, 0: (2) Điều này
sẽ cho kết quả mã hóa ở hình 3.41 Bảng 3.4 cho thấy các từ mã thu được khác với trước (Bảng 3.3) Các thuật toán Shannon-Fano đạt yêu cầu mã hóa cho nén dữ liệu, nhưng việc nén này sẽ được thực hiện tốt hơn bởi phương pháp mã hóa Huffman
Hình 3.41: Một dạng cây mã hóa khác cho từ HELLO theo thuật toán Shannon-Fano
Trang 112 Mã hoá Huffman
Mã hóa Huffman là một phương pháp mã hóa độ dài thay đổi được sử dụng phổ biến Nó dựa trên bảng tần xuất xuất hiện các kí hiệu cần mã hóa để xây dựng một bộ mã nhị phân cho các kí hiệu đó sao cho dung lượng (số bít) sau khi mã hóa là nhỏ nhất Số bít tối ưu sử dụng để mã hóa cho mỗi kí hiệu là -log2p , trong đó p là xác suất của một kí
hiệu
Tuy nhiên, vì các từ mã được gán phải là một số nguyên các bít, khiến cho mã hóa Huffman trở nên kém tối ưu Ví dụ, nếu xác suất của một kí hiệu là 0.33 thì số bít tối ưu dùng để mã hóa kí hiệu đó là 1.6 bit, nhưng với mã hóa Huffman thì ta phải gán hoặc 1 bít hoặc 2 bit cho mã Tính trung bình thì cả hai trường hợp này đều phải dùng nhiều bit hơn so với entropy của nó Khi xác suất của một kí hiệu càng lớn thì mã hóa Huffman càng trở nên kém tối ưu Ví dụ, với kí hiệu có xác suất là 0.9, kích cỡ mã tối ưu nên là 0.15 bít, nhưng với mã hóa Huffman thì phải gán ít nhất 1 bít cho một kí hiệu, tức là lớn gấp khoảng 6 lần so với mức cần thiết
Để tạo ra mã Huffman cho các kí hiệu với xác suất xuất hiện đã biết, ta thực hiện các bước sau:
- Sắp xếp các kí hiệu theo thứ tự xác xuất xuất hiện của chúng
- Lần lượt hợp nhất hai kí hiệu với xác suất nhỏ nhất để hình thành nên một kí hiệu hợp mới, và lại tiến hành sắp xếp các kí hiệu này để tạo ra một cây mà mỗi node của cây đó mang xác suất của tất cả các node dưới nó
- Lần theo đường đi tới mỗi lá, ghi lại hướng tại mỗi node
Hình 3.42 cho ta một ví dụ của mã hóa Huffman cho 7 kí hiệu: A đến G Cột thứ 3
là các xác suất xuất hiện của chúng theo thứ tự giảm dần Ở cột tiếp theo, ta kết hợp hai xác suất nhỏ nhất để tạo ra một xác suất hợp Tiếp tục thực hiện như vậy cho tới khi đạt tới xác suất bằng 1 Bắt đầu từ cột cuối cùng, ta gán ‘0’ cho nhánh cao và gán ‘1’ cho nhánh thấp Từ mã tương ứng (ở cột 1) có được bằng cách đọc ngược theo thứ tự từ phải qua trái Như vậy, với độ dài từ mã cố định thì mỗi mẫu được biểu diễn bởi 3 bít, trong khi trong VLC chúng được biểu diễn bởi từ hai đến bốn bit
Trang 12Hình 3.42: Ví dụ về mã Huffman cho 7 kí hiệu
Số bít trung bình trên một kí hiệu là:
Mô hình là cách tính toán phân bố các xác suất cho kí hiệu tiếp theo sẽ được mã hóa, sao cho bộ giải mã tìm ra được phân bố xác suất y hệt như thế Có hai loại mô hình được sử dụng trong mã hóa số học:
- Mô hình cố định: Trong mô hình này, cả bộ mã hóa và bộ giải mã biết được xác suất đã gán cho mỗi kí hiệu Những xác suất này có thể được xác định bằng cách đo đạc các tần số trong các mẫu đại diện sắp được mã và các tần số
kí hiệu
- Mô hình thích nghi: xác suất được gán có thể thay đổi khi mỗi kí hiệu được mã hóa, dựa trên các tần số kí hiệu thấy được
Trang 13Để hiểu nguyên lý hoạt động của mã hóa số học, ta xét mã hóa số học mô hình
tĩnh Giả sử các chữ cái là {a, e, i, o, u, !} và mô hình tĩnh được sử dụng với các xác suất
như biểu diễn ở Bảng 3.5
Kí hiệu Xác suất Dải
Bảng 3.5: Ví dụ Mô hình tĩnh cho các chữ cái {a, e, i, o, u, !}
Một khi biết được xác suất tín hiệu, thì mỗi kí hiệu riêng lẻ cần được gán một đoạn của dải [0, 1) mà đoạn đó tương ứng với xác suất xuất hiện của kí tự đó trong hàm mật độ
xác suất tích lũy Chẳng hạn, chữ cái u với xác suất là 0.1, được định nghĩa trong dải tích
lũy của [0.8, 0.9) có thể lấy bất cứ giá trị nào từ 0.8 đến 0.8999
Phần quan trọng nhất của một bản tin được mã hóa số học là việc mã hóa kí tự đầu
tiên Giả sử ta cần mã hóa bản tin eaii!, kí tự đầu tiên cần được mã hóa là e Do đó, bản
tin được mã hóa cuối cùng phải là một số lớn hơn hoặc bằng 0.2 và nhỏ hơn 0.5 Sau khi
kí hiệu đầu tiên đã được mã hóa, ta biết được giá trị biên trên và biên dưới cho dải bản tin đầu ra Mỗi giá trị mới được mã hóa sẽ càng làm cho dải này hẹp lại
Kí tự tiếp theo cần được mã hóa là kí tự a nằm trong dải 0-0.2 trong khoảng mới
Đây không phải là kí tự đầu tiên được mã hóa nên nó nằm trong dải tương ứng với 0-0.2 nhưng ở dải con mới [0.2, 0.5) Trong dải con mới có độ dài 0.5 – 0.2 = 0.3 này, dải cho
a là [0.2, 0.26) Tiếp theo, kí tự i được mã hóa, tương tự nó phải nằm trong dải [0.23,
0.236) Cứ tiếp tục như vậy, ta sẽ xây dựng được quá trình mã hóa bản tin như Bảng 3.6 sau đây
Trang 14Bảng 3.6: Biểu diễn quá trình mã hóa số học
Hình 3.43 minh họa một cách biểu diễn khác của quá trình mã hóa
Hình 3.43: Biểu diễn quá trình mã hóa số học với các khoảng chia tại mỗi giai đoạn cho
bản tin eaii!
Dải cuối cùng thu được, tức là dải [0.23354, 0.2336), biểu diễn bản tin eaii! Điều
đó có nghĩa là nếu ta truyền bất cứ số nào nằm trong dải này, thì số đó đều biểu diễn toàn
bộ bản tin eaii!
Giải mã
Với sơ đồ mã hóa này, tương đối đơn giản để giải mã từng thành phần riêng lẻ của
bản tin eaii! Giả sử ta truyền đi số x = 0.23355 (nằm trong dải 0.23354 <= x <0.2336)
Bộ giải mã sẽ sử dụng các khoảng xác suất giống như bộ mã hóa và thực hiện quá trình tương tự Bắt đầu với khoảng khởi đầu [0,1), giá trị 0.23355 nằm trong khoảng [0.2, 0.5)
của e Do vậy, kí hiệu đầu tiên chỉ có thể là e Tương tự như quá trình mã hóa, các
khoảng kí hiệu bây giờ được xác định trong khoảng mới [0.2, 0.5) Điều này tương đương với việc định nghĩa mã đó trong dải khởi tạo [0, 1) nhưng offset mã này bởi giá trị dưới
và sau đó lấy tỉ lệ trong dải ban đầu của nó Như thế, mã mới sẽ là
Trang 15(0.23355-0.2)/(0.5-0.2)=0.11185 Dễ thấy mã này nằm trong khoảng [0, 0.2) của kí hiệu a Do đó, kí hiệu thứ hai được giải mã là kí hiệu a Để tìm kí hiệu thứ ba, ta phải tìm mã mới trong dải này,
tức là (0.11185-0)/(0.2-0)=0.55925 Giá trị này nằm trong khoảng [0.5, 0.6), ứng với kí
hiệu i, tức là kí hiệu thứ ba được giải mã ra là kí hiệu i Tiếp tục, ta tìm được mã mới sau
khi giải mã kí hiệu thứ ba là (0.55925-0.5)/(0.6-0.5)=0.5925, giá trị này cũng nằm trong
khoảng [0.5, 0.6), do đó kí hiệu thứ tư sẽ là i Lặp lại trình tự như trên, ta được mã mới (0.5925-0.5)/(0.6-0.5)=0.925, nằm trong khoảng [0.9, 1), tương ứng với kí hiệu ! , đây là
kí hiệu cuối cùng cần giải, và quá trình giải mã kết thúc Bảng 3.7 minh họa toàn bộ quá
trình giải mã của bản tin eaii!
Số được mã hóa Kí hiệu đầu
Bảng 3.7: Biểu diễn quá trình giải mã của mã hóa số học
Tổng quát, quá trình giải mã có thể được công thức hóa như sau:
1
n n n
Trong đó R n là mã nằm trong dải giá trị dưới L n và giá trị trên U n của kí hiệu thứ n
và R n+1 là mã cho kí hiệu tiếp theo
3.3.4.4 Mã hoá dự đoán không tổn hao
Bây giờ chúng ta quay lại với một phương pháp nén mà nó không yêu cầu việc phân tích một ảnh thành một loạt các mặt phẳng bit Với cách này quy chung lại là mã hoá dự đoán không tổn hao, được dựa trên cơ sở sự rút gọn đa điểm dư thừa của các điểm trong không gian gần nhau bằng cách rút ra và mã hoá chỉ với các thông tin mới trong mỗi điểm ảnh Thông tin mới của một điểm ảnh mô tả sự khác nhau giữa các giá trị dự đoán và thực tế của điểm ảnh đó
Trang 16Đầu ra của bộ dự đoán sau đó được làm tròn thành giá trị nguyên gần nhất, biểu thị bởi , và được sử dụng để tạo ra sự khác biệt hoặc lỗi dự đoán
(3.42)
Hình 3.44: Mã hoá dự đoán không tổn hao: (a) Bộ mã hoá (b) Bộ giải mã
Sự khác biệt được mã hoá sử dụng mã hoá loạt dài thay đổi (bằng bộ mã hoá biểu tượng) để tạo ra thành phần tiếp theo của dòng dữ liệu đã nén Bộ giải mã trong hình 3.44 (b) tái tạo từ các từ mã loạt dài thay đổi nhận được và thực hiện quá trình đảo:
(3.43)
Các phương pháp thích hợp khác nhau giữa các miền hoặc toàn cầu (xem 3.3.5.1)
có thể được sử dụng để tạo ra Tuy nhiên, trong hầu hết các trường hợp, bộ dự đoán được cấu tạo bởi sự kết hợp tuyến tính của điểm ảnh trước đó:
(3.44)
là bậc của bộ dự đoán tuyến tính, là một hàm số sử dụng để biểu thị quá trình làm tròn tới giá trị nguyên gần nhất, với là các hệ số dự đoán Trong vạch quét của quá trình quét, chỉ số mô tả các đầu ra dự đoán phù hợp với khoảng thời gian mà nó xảy ra Có nghĩa là , và trong biểu thức (3.42) tới (3.44)
có thể được thay thế bởi các ký hiệu rõ ràng hơn và với biểu thị khoảng thời gian Trong các trường hợp khác, được sử dụng như một chú dẫn trong toạ độ không gian và/hoặc khung số( trong chuỗi thời gian của ảnh) của một ảnh Trong mã hoá
dự đoán tuyến tính 1-D, ví dụ, biểu thức (3.44) có thể viết thành:
Bộ dự đoán
Làm tròn với số nguyên gần nhất
Trang 17(3.45)
Với mỗi ký hiệu thay đổi bây giờ được biểu diễn rõ ràng như một hàm số của toạ
độ không gian và y Chú ý rằng biểu thức (3.45) chỉ ra dự đoán tuyến tính 1-D
là hàm số của các điểm ảnh trước trên dòng đơn hiện tại Trong mã hoá dự đoán 2-D, dự đoán là một hàm số của các điểm ảnh trước trong dòng quét từ trái qua phải, từ trên xuống dưới của một ảnh Với 3-D, cơ bản là các điểm ảnh này và các điểm ảnh trước của khung trước Biểu thức (3.45) không thể tạo ra giá trị cho điểm ảnh đầu tiên của mỗi dòng, những điểm ảnh này phải được mã hoá sử dụng điều kiện khác (như bảng mã Huffman chẳng hạn) và coi như một sự vượt quá của quá trình mã hoá dự đoán Một chú giải tương tự ứng dụng cho các trường hợp có kích cỡ lớn hơn
3.3.5 Các phương pháp mã hoá dùng trong kỹ thuật nén có tổn thất
Không như phương pháp nén không tổn thất được đưa ra ở phần trước, nén tổn thất được xây dựng trên cơ sở độ chính xác của việc khôi phục lại ảnh trong lúc trao đổi nhằm tăng hiệu quả nén Nếu kết quả không chính xác (có thể được hiển thị rõ ràng hoặc không) có thể chấp nhận được, sự tăng dần trong việc nén là đáng kể Trong thực tế, nhiều kỹ thuật mã hoá tổn thất có khả năng tái tạo lại ảnh đơn sắc từ dữ liệu được nén nhiều hơn 100:1 và ảnh gần như không phân biệt được so với ảnh gốc từ 10:1 đến 50:1
Mã hoá không tổn thất của ảnh đơn sắc hiếm khi lớn hơn 3:1 khi nén dữ liệu Như đã chỉ
ra tại phần 3.3.4, sự khác nhau cơ bản của hai phương pháp là sự có mặt của khối lượng
tử
3.3.5.1 Mã hoá dự đoán có tổn thất
Trong phần này, chúng ta thêm một bộ lượng tử vào phần đầu trong phần 3.3.4.4
và kiểm tra kết quả giữa việc tái hiện lại một cách chính xác và quá trình thực hiện nén Như 3.45 chỉ ra, bộ lượng tử, bộ thu toàn bộ chức năng của bộ mã hoá lỗi tự nhiên, được chèn vào giữa bộ mã hoá biểu tượng và điểm mà lỗi dự đoán được tạo ra Nó ánh xạ lỗi
dự đoán tới khoảng giới hạn đầu ra, biểu thị là ėn, điều thiết lập sự liên đới giữa nén và kết hợp méo với mã hoá dự đoán tổn hao
Trang 18Hình 3.45: Mô hình mã hóa dự đoán có tổn thất (a): bộ mã hoá, (b): bộ giải mã
Nhằm cung cấp sự liên kết của bước lượng tử, bộ mã hoá không tổn thất (hình 3.44 (a)) phải biến đổi để dự đoán sinh ra bởi bộ mã hoá và giải mã là tương tự như hình 3.45 (a) chỉ ra, điều này đạt tới bằng cách đặt vào bộ dự đoán mã hoá tổn thất trong vòng lặp tại đầu vào của nó, biểu hiện bằng được tạo ra bởi một hàm giữa dự đoán trước và lỗi lượng tử tương ứng Đó là :
(3.46) được chỉ rõ trong phần 3.3.4.4 Nó kết thúc vòng lặp ngăn cản việc tạo ra lỗi tại
bộ giải mã đầu ra Chú thích trong hình 3.45 (b) có ý đầu ra của bộ giải mã cũng có thể đưa ra bằng (3.46)
Mã hóa DPCM (Differential Pulse Code Modulation)
Đây là phướng pháp mã hóa dự đoán có tổn thất dựa trên nguyên tắc phát hiện
sự giống nhau và khác nhau giữa các điểm ảnh (pixels) gần nhau để tìm cách loại bỏ các thông tin thừa Phân tích thống kê về phân bố biên độ tín hiệu video, ta thấy phân
bố biên độ các mẫu tương ứng với các điểm ảnh về nguyên tắc là phân bố đều, ngược lại phân bố về độ chênh lệch biên độ các điểm ảnh có đồ thị hình chuông xung quanh điểm 0 Nếu dựa trên các đặc trưng thống kê ảnh, thì sự khác nhau này là không lớn lắm và để mã hóa nó chỉ cần giảm số bit là đủ (so với việc mã hóa toàn bộ biên độ các mẫu)
Phương pháp DPCM còn sử dụng đặc điểm của mắt người (kém nhạy với mức lượng tử có chênh lệch về độ chói giữa điểm ảnh gần nhau, so với mức lượng tử hóa