1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên ứu và thử nghiệm giải thuật nén ảnh tiên tiến (advanced image conding) trong truyền thông

127 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Và Thử Nghiệm Giải Thuật Nén Ảnh Tiên Tiến (Advanced Image Coding) Trong Truyền Thông
Tác giả Nguyễn Thị Hoa
Người hướng dẫn PGS.TS Nguyễn Thị Hoàng Lan
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại luận văn thạc sĩ
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 127
Dung lượng 12,02 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ NÉN ẢNH TRONG TRUYỀN THÔNG (16)
    • 1.1 Khái quát về phương pháp nén ảnh (16)
      • 1.1.1 Phân loại ảnh số (16)
        • 1.1.1.1 Phân loại ảnh theo dữ liệu (16)
        • 1.1.1.2 Phân loại ảnh theo tông màu (16)
      • 1.1.2 Nhu cầu nén ảnh trong truyền thông (17)
      • 1.1.3 Các phương pháp nén ảnh (18)
      • 1.1.4 Các bước xử lý của một hệ thống nén ảnh trong truyền thông (18)
        • 1.1.4.1 Các bước xử lý cơ bản của quá trình nén ảnh trong truyền thông (19)
        • 1.1.4.2 Các bước xử lý của quá trình giải nén trong truyền thông (20)
    • 1.2 Một số độ đo về chất lượng nén ảnh (21)
      • 1.2.1 Tỷ số nén và tốc độ bit (21)
      • 1.2.2 Độ phức tạp và thời gian thực hiện (22)
      • 1.2.3 Các độ đo tổn hao (22)
    • 1.3 Phương pháp nén ảnh theo chuẩn JPEG (24)
      • 1.3.1 Giới thiệu chung về chuẩn nén ảnh JPEG (24)
      • 1.3.2 Các kiểu nén ảnh theo chuẩn JPEG (25)
      • 1.3.3 Kỹ thuật nén ảnh JPEG cơ sở (Baseline JPEG) (28)
        • 1.3.3.1 Chuyển đổi không gian màu (28)
        • 1.3.3.2 Sắp xếp dữ liệu ảnh gốc (29)
        • 1.3.3.3 Thuật toán nén ảnh JPEG cơ sở (30)
        • 1.3.3.4 Ví dụ minh họa thuật toán nén ảnh JPEG cơ sở (35)
      • 1.3.4 Nén và chất lượng ảnh JPEG (39)
    • 1.4 Phương pháp nén ảnh theo chuẩn JPEG2000 (40)
      • 1.4.1 Giới thiệu chung về chuẩn nén ảnh JPEG2000 (40)
      • 1.4.2 Các phần của chuẩn JPEG2000 (JPEG2000 part) (42)
      • 1.4.3 Tìm hiểu kỹ thuật nén theo chuẩn JPEG2000 Phần 1 (43)
        • 1.4.3.1 Biến đổi wavelet (44)
        • 1.4.3.2 Lượng tử hoá (47)
        • 1.4.3.3 Mã hóa Entropy (47)
      • 1.4.4 Nén và chất lượng ảnh JPEG2000 (48)
    • 1.5 Phương pháp nén ảnh theo chuẩn H.264 (49)
      • 1.5.1 Giới thiệu chung về chuẩn nén ảnh H.264 (49)
      • 1.5.2 Tìm hiểu thuật toán nén ảnh theo chuẩn H.264 (50)
        • 1.5.2.1 Quá trình nén theo chuẩn H.264 (50)
        • 1.5.2.2 Quá trình giải nén theo chuẩn H.264 (52)
      • 1.5.3 Nén và chất lượng nén theo chuẩn H.264 (0)
  • CHƯƠNG 2: PHƯƠNG PHÁP NÉN ẢNH TIẾN TIẾN (ADVANCED IMAGE CODING) (53)
    • 2.1 Giới thiệu phương pháp nén ảnh tiên tiến (Advanced Image Coding) (53)
      • 2.1.1 Khái niệm (53)
      • 2.1.2 Đặc điểm của phương pháp nén ảnh tiên tiến (54)
    • 2.2 Nghiên cứu thuật toán nén ảnh theo phương pháp tiên tiến (54)
      • 2.2.1 Giới thiệu thuật toán được nghiên cứu (54)
        • 2.2.1.1 Đặc điểm của thuật toán AIC (54)
        • 2.2.1.2 Sơ đồ khối của thuật toán AIC (55)
      • 2.2.2 AIC – Chuyển đổi màu (Color conversion) (56)
      • 2.2.3 AIC – Dự đoán khối (Block Prediction) (58)
        • 2.2.3.1 Các kiểu dự đoán khối (Prediction mode) (59)
        • 2.2.3.2 Các khối phần dư (Residual Blocks) (62)
      • 2.2.4 AIC Biến đổi Cosine rời rạc và lượng hóa (0)
        • 2.2.4.1 DCT một chiều (1 -Dimensional DCT) (63)
        • 2.2.4.2 DCT 2- Chiều (2 Dimensional DCT) (66)
        • 2.2.4.3 Lượng hóa (Quantisation) (67)
      • 2.2.5 AIC – Mã hóa số học nhị phân thích nghi ngữ cảnh (67)
        • 2.2.5.1 cabAC – mã hóa số học (Arithmetic Coding) (67)
        • 2.2.5.2 caBac – nhị phân (Binary) (71)
        • 2.2.5.3 CAbac – Thích nghi ngữ cảnh (Context Adaptive) (72)
    • 2.3 Nén và chất lượng ảnh AIC (73)
  • CHƯƠNG 3: THỬ NGHIỆM, CÀI ĐẶT VÀ ĐÁNH GIÁ THUẬT TOÁN NÉN ẢNH TIÊN TIẾN (75)
    • 3.1 Tìm hiểu công cụ thử nghiệm (75)
      • 3.1.1 Môi trường và công cụ phát triển chương trình (75)
        • 3.1.1.1 Ngôn ngữ lập trình Delphi (75)
        • 3.1.1.2 Môi trường lập trình tích hợp Borland Delphi Enterprise 7 (76)
      • 3.1.2 Đặc tả chức năng gốc của chương trình “AIC.exe” (76)
      • 3.1.3 Tìm hiểu kiến trúc cài đặt của chương trình (79)
      • 3.1.4 Tìm hiểu cài đặt chi tiêt dự đoán khối (0)
    • 3.2 Thử nghiệm và phân tích kết quả thực hiện các thuật toán (90)
      • 3.2.1 Tiêu chí đánh giá các thuật toán được thử nghiệm (90)
      • 3.2.2 Kịch bản thử nghiệm (96)
        • 3.2.2.1 Kịch bản 1 (96)
        • 3.2.2.2 Kịch bản 2 (97)
        • 3.2.2.3 Kịch bản 3 (98)
        • 3.2.2.4 Kịch bản 4 (100)
        • 3.2.2.5 Kịch bản 5 (100)
      • 3.2.3 Tiến hành cài đặt chương trình để thực hiện theo các kịch bản thử nghiệm (101)
        • 3.2.3.1 Yêu cầu cài đặt để thử nghiệm chương trình theo kịch bản (101)
        • 3.2.3.2 Cài đặt chương trình theo yêu cầu thử nghiệm (102)
      • 3.2.4 Tiến hành thử nghiệm theo các kịch bản (105)
        • 3.2.4.1 Các file ảnh gốc dùng để thử nghiệm (105)
        • 3.2.4.2 Thử nghiệm theo kịch bản 1 (107)
        • 3.2.4.3 Thử nghiệm theo kịch bản 2 (109)
        • 3.2.4.4 Thử nghiệm theo kịch bản 3 (112)
        • 3.2.4.5 Thử nghiệm theo kịch bản 4 (114)
        • 3.2.4.6 Thử nghiệm theo kịch bản 5 (118)
      • 3.2.5 Tổng hợp kết quả phân tích, đánh giá (122)
  • KẾT LUẬN (125)
  • TÀI LIỆU THAM KHẢO (127)

Nội dung

Với hiệu quả nộn cao, nộn ảnh cú tổn hao phự hợp với mụi trường truyền thụng như cỏc ảnh trờn web.1.1.4 Cỏc bước xử lý của một hệ thống nộn ảnh trong truyền thụng Trang 19 Hỡnh 1-1: Sơ

TỔNG QUAN VỀ NÉN ẢNH TRONG TRUYỀN THÔNG

Khái quát về phương pháp nén ảnh

1.1.1.1 Phân loại ảnh theo dữ liệu Ảnh nhị phân (bi-level image/ binary image): mỗi điểm ảnh chỉ biểu diễn bởi một bit và chỉ cho phép phân biệt 2 màu khác nhau Ví dụ: các ảnh được quét bởi máy scanner sử dụng mức mật độ chỉ là hai: một cho thông tin và một cho nền Các ứng dụng thường bao gồm:

• Văn bản, các đường kẻ hay hình minh họa

Ảnh đa mức xám (greyscale image) được biểu diễn bởi 8 bit màu, cho phép mỗi điểm ảnh có 256 mức giá trị độ xám, phù hợp cho ảnh y học và đồ họa đen trắng Ngược lại, ảnh màu (color image) được chụp bởi máy scanner màu, sử dụng nhiều mức cường độ để ghi lại các màu chính như đỏ (R), xanh dương (G) và xanh lục (B) Một số hệ thống máy tính sử dụng 16 bit, 24 bit, 36 bit hay 48 bit để biểu diễn các giá trị màu, trong đó 24 bit là thông dụng nhất.

1.1.1.2 Phân loại ảnh theo tông màu Ảnh có tông màu liên tục (continuous-tone image): Loại ảnh này tương tự ảnh tự nhiên có chứa các vùng màu Các màu này được coi như liên tục khi mắt người di chuyển theo các vùng của ảnh Điều này là do ảnh thường có nhiều màu hay các mức xám tương tự nhau và mắt người không dễ dàng phân biệt những thay đổi nhỏ về màu sắc của các điểm ảnh kề nhau Các ví dụ về loại ảnh này là ảnh chụp bởi máy ảnh số hay các ảnh đồ họa hay ảnh vẽ được quét từ máy scanner Ảnh có tông màu rời rạc (discrete-tone image): còn gọi là ảnh đồ họa

Ảnh nhân tạo, còn được gọi là ảnh tổng hợp, là loại ảnh không có nhiễu và mờ như ảnh tự nhiên Đặc điểm của loại ảnh này là các điểm ảnh kề nhau thường giống hệt nhau hoặc khác nhau đáng kể về giá trị, và có thể chứa các đặc điểm hay điểm ảnh giống nhau lặp đi lặp lại trong ảnh Ví dụ về ảnh nhân tạo bao gồm các đối tượng đồ họa, ảnh nhân tạo, trang văn bản, biểu đồ và nội dung màn hình máy tính Ngoài ra, còn có loại ảnh tựa hoạt hình, bao gồm các vùng màu đồng nhất nhưng các vùng liền kề có thể có màu rất khác nhau, và các vùng màu đồng nhất này là đặc điểm rất tốt cho nén ảnh.

1.1.2 Nhu cầu nén ảnh trong truyền thông

Các file ảnh thường có kích thước lớn do yêu cầu 24 bit cho mỗi điểm ảnh trong ảnh bitmap Điều này dẫn đến việc tốn kém dung lượng lưu trữ và khó khăn trong việc truyền tải qua mạng, đặc biệt với băng thông hạn chế Ví dụ, một file ảnh kích thước 4”x4” quét ở độ phân giải 300dpi sẽ cần hơn 4MB dung lượng bộ nhớ và mất hơn một phút để truyền trên đường truyền 64k bit/giây Vì vậy, nhu cầu lưu trữ và truyền tải file ảnh ngày càng cao, khiến việc tìm kiếm các phương pháp nén để giảm kích thước file ảnh trở nên cấp thiết trong lĩnh vực truyền thông.

Các phương pháp nén ảnh có thể lưu trữ, biểu diễn các file ảnh với kích thước nhỏ hơn ảnh gốc là do hai nguyên nhân chính sau:

Trong file ảnh thường có dữ liệu dư thừa, và việc loại bỏ những dữ liệu này có thể giúp giảm kích thước file mà không làm ảnh hưởng đến nội dung thông tin trong ảnh.

Khả năng cảm nhận của mắt người có giới hạn, nên trong một mức độ sai số cho phép, mắt không thể phân biệt rõ ràng giữa ảnh nén và ảnh gốc, mặc dù ảnh nén có thể mất một phần thông tin so với ảnh gốc Do đó, trong truyền thông, ảnh chủ yếu phục vụ cho việc nhìn, nên việc chấp nhận nén với mất mát thông tin là điều khả thi.

Mỗi loại ảnh có một lượng dư thừa riêng, do đó nguyên nhân dẫn đến dư thừa cũng khác nhau Điều này giải thích vì sao nhiều phương pháp nén ảnh đã được phát triển để xử lý các loại dư thừa này một cách hiệu quả.

1.1.3 Các phương pháp nén ảnh

Căn cứ vào đặc điểm ảnh khôi phục sau khi nén, người ta chia thành hai phương pháp nén ảnh chính sau:

Nén không tổn hao (lossless compression) là phương pháp nén ảnh cho phép khôi phục chính xác ảnh gốc mà không mất mát thông tin Mặc dù hiệu quả nén của phương pháp này thường nhỏ, nhưng nó rất cần thiết trong các trường hợp mà thông tin trong ảnh gốc là cực kỳ quan trọng, chẳng hạn như trong ảnh y tế hoặc ảnh văn bản.

Nén có tổn hao (lossy compression) là phương pháp nén ảnh mà không thể khôi phục chính xác ảnh gốc từ ảnh đã nén Phương pháp này mang lại hiệu quả nén cao hơn so với nén không tổn hao, trong khi vẫn giữ được mức độ mất mát thông tin chấp nhận được, do mắt người không nhận thấy sự khác biệt rõ rệt giữa

1.1.4 Các bước xử lý của một hệ thống nén ảnh trong truyền thông

Hệ thống nén ảnh trong truyền thông bao gồm hai quá trình chính: nén (compression) và giải nén (de-compression) Hình dưới đây minh họa các bước xử lý của hệ thống này, cho thấy cách thức dữ liệu hình ảnh được nén để tiết kiệm băng thông và sau đó được giải nén để hiển thị lại hình ảnh gốc.

Hình 1-1: Sơ đồ khối một hệ thống nén ảnh truyền thông: nén (a) và giải nén (b)

Hình (a) minh họa quá trình nén ảnh điển hình, trong khi hình (b) thể hiện quá trình giải nén Đầu tiên, dữ liệu ảnh được chia thành các khối nhỏ (thường là 8x8 pixel) để bắt đầu quá trình nén Trong quy trình này, bước xử lý lượng hóa là nguyên nhân gây mất mát thông tin; vì vậy, phương pháp mã hóa không tổn hao sẽ bỏ qua bước này trong quá trình nén và cũng không thực hiện giải lượng hóa khi giải nén ảnh.

1.1.4.1 Các bước xử lý cơ bản của quá trình nén ảnh trong truyền thông

Khối biến đổi có nhiệm vụ thực hiện các phép biến đổi trên dữ liệu đầu vào trong không gian quan sát nhằm tạo ra không gian dữ liệu mới, từ đó nâng cao hiệu quả nén Các phép biến đổi này đóng vai trò quan trọng trong việc nén ảnh, giúp tối ưu hóa dung lượng lưu trữ mà vẫn giữ được chất lượng hình ảnh.

Bảo toàn thông tin trong phép biến đổi không gian là yếu tố quan trọng, đảm bảo rằng thông tin của ảnh trước và sau khi biến đổi vẫn giữ nguyên, không bị mất mát Phép biến đổi này là song ánh, nghĩa là có một phép biến đổi ngược tương ứng, cho phép thu hồi dữ liệu chính xác như trong miền không gian ban đầu từ dữ liệu đã qua biến đổi.

• Giảm tương quan trong dữ liệu ảnh để giảm dư thừa dữ liệu.

Tập trung năng lượng thông tin của hình ảnh vào các yếu tố dữ liệu cụ thể trong một miền không gian mới giúp tối ưu hóa việc sử dụng thông tin, thay vì phân tán năng lượng thông tin như trong miền không gian ban đầu của hình ảnh.

Một số độ đo về chất lượng nén ảnh

Để lựa chọn thuật toán nén hiệu quả, việc đánh giá các độ đo như tỷ số nén, chất lượng ảnh khôi phục (cả khách quan lẫn chủ quan), độ phức tạp của thuật toán và thời gian thực hiện là rất quan trọng Những yếu tố này giúp xác định chất lượng ảnh nén và hiệu suất của các thuật toán khác nhau.

1.2.1 Tỷ số nén và tốc độ bit

Tỷ số nén (compression ratio) là chỉ số quan trọng để đánh giá hiệu suất của thuật toán nén ảnh Nó được tính bằng tỷ lệ giữa số bit của ảnh gốc và số bit của ảnh đã nén.

Trong đó, R: tỷ số nén

Co: Số bít biểu diễn ảnh gốc

Cc: Số bit biểu diễn ảnh nén

Lưu trữ một bức ảnh kích thước 256x256 yêu cầu 65536 Byte khi mỗi điểm ảnh được biểu diễn bằng 1 byte Nếu ảnh được nén chỉ cần 4096 Byte, tỷ số nén đạt 16:1.

Tỷ số nén của phương pháp nén không tổn hao hoàn toàn phụ thuộc vào đặc tính của ảnh đầu vào Mặc dù sử dụng cùng một thuật toán nén không tổn hao, nhưng nếu ảnh đầu vào khác nhau, sẽ dẫn đến các tỷ số nén khác nhau.

Tốc độ bit (bit rate hay bit per sample) là một biến thể của tỉ số nén, đo lường số bit trung bình cần thiết để biểu diễn một điểm ảnh Công thức tính tốc độ bit như sau:

Trong đó, Br: Tốc độ bit Đơn vị: bpp (bit per pixel)

C c: Số bit biểu diễn ảnh

Ví dụ, một ảnh có 65536 điểm ảnh, biểu diễn bằng 4096 Byte = 4096 * 8 bit 32768 bit, thì tốc độ bít là: Br = 32768 / 65536 = 0.5 (bpp)

Mối liên hệ giữa tỷ số nén và tốc độ bit: o

Trong đó, Brolà số bit biểu diễn một điểm ảnh gốc

1.2.2 Độ phức tạp và thời gian thực hiện Độ phức tạp của thuật toán nén ảnh thường được đo bằng số phép toán số học và yêu cầu bộ nhớ để thực hiện thuật toán Số phép toán số học được đo bằng đơn vị triệu phép toán trên giây MOPS (Million of Operatrions Per Second), nhưng trong nén ảnh thường dùng thuật ngữ triệu lệnh trên giây MIPS (Million of Instructions Per Second) Thông thường, khi độ phức tạp thuật toán càng lớn thì hiệu quả nén càng cao, nhưng giá thành và thời gian thực hiện lại tăng

Thời gian thực hiện của thuật toán nén và giải nén ảnh là một chỉ số quan trọng trong việc đánh giá hiệu quả nén, đặc biệt trong các ứng dụng thời gian thực như hội thảo truyền hình, duyệt ảnh trực tuyến và truyền thông thoại Mặc dù một thuật toán nén phức tạp có thể mang lại tỷ lệ nén tốt hơn, nhưng nó cũng có thể làm tăng thời gian thực hiện, dẫn đến giảm hiệu suất của hệ thống nén.

1.2.3 Các độ đo tổn hao

Mục tiêu của nén ảnh có tổn hao là đạt được tỉ số nén tốt, tuy nhiên điều này đồng nghĩa với việc mất một số thông tin so với ảnh gốc Các thuật toán và hệ thống nén có tổn hao thường được đánh giá dựa trên độ đo chất lượng của ảnh khôi phục so với ảnh gốc ban đầu.

Mặc dù việc hỏi một người quen với việc quan sát ảnh để đánh giá tính trung thực của ảnh khôi phục là phương pháp tốt nhất, nhưng cách này lại không thực tế từ góc độ toán học.

Độ đo méo hiệu (difference distortion measure) là công cụ toán học dùng để xác định sai số giữa hai biến Trong lĩnh vực nén ảnh có tổn hao, thuật toán thường sử dụng một ma trận chuẩn để so sánh sự khác biệt giữa ảnh khôi phục và ảnh gốc Khi giá trị sai khác nhỏ, chất lượng ảnh thường sẽ được cải thiện.

Gọi Pi là các điểm ảnh khôi phục và Qi là các điểm ảnh gốc, trong đó i = 1, ,

N Chúng ta có các độ đo hay được dùng sau [7]:

Ma trận độ đo sai số bình phương (squared error measure matrix): đây là một độ đo hiệu:

Ma trận độ đo sai phân tuyệt đối: i i - i

D = P Q ( 1-5 ) Độ đo sai số bình phương trung bình (MSE – Mean squared error measure): là một độ đo trung bình:

Tỷ số tín hiệu trên nhiễu (SNR – Signal- -to noise ratio): là tỉ số của giá trị - bình phương trung bình của đầu ra và MSE:

=σ ( 1-7 ) Độ đo này thường được tính trong thang đo decibel (dB)

Tỷ số tín hiệu mức đỉnh trên nhiễu (PSNR) là một chỉ số quan trọng để đo lường sai số liên quan đến giá trị bình quân của tín hiệu, thường được biểu thị theo thang decibel (dB).

Ma trận sai phân tuyệt đối trung bình:

Ma trận giá trị tối đa của độ lớn sai số: max - i n i i i

Phương pháp nén ảnh theo chuẩn JPEG

1.3.1 Giới thiệu chung về chuẩn nén ảnh JPEG

JPEG là chuẩn nén ảnh tĩnh màu và đa mức xám đầu tiên trên thế giới, được phát triển bởi Joint Photographic Expert Group vào năm 1991 Chuẩn này tối ưu cho ảnh quang cảnh tự nhiên và không phù hợp với ảnh nhân tạo như ảnh hoạt hình hay ảnh vẽ JPEG hoạt động hiệu quả nhất với các ảnh có tông màu liên tục và không hỗ trợ nén ảnh nhị phân hay ảnh động.

JPEG thường là định dạng nén mất mát, có nghĩa là ảnh sau khi giải nén không hoàn toàn giống với ảnh gốc Thuật toán nén JPEG khai thác sự hạn chế trong khả năng nhìn của con người, đặc biệt là khả năng cảm nhận màu sắc kém hơn so với độ tương phản sáng tối Do đó, khi phân tích bằng máy, có thể thấy sự khác biệt rõ rệt trong ảnh nén JPEG, nhưng mắt người khó có thể nhận ra những sai khác này.

Các đặc điểm của thuật toán nén ảnh theo chuẩn JPEG:

Công nghệ này tập trung vào tốc độ nén và độ trung thực của ảnh, đặc biệt là duy trì độ trung thực cao so với ảnh gốc, được đánh giá là "rất tốt" Ngoài ra, quá trình mã hóa cần được tham số hóa để người dùng có thể tự thiết đặt độ thỏa hiệp giữa độ nén và chất lượng ảnh, đáp ứng nhu cầu ứng dụng.

Có thể áp dụng thực tế cho mọi loại ảnh số với tông màu liên tục, không bị giới hạn bởi chiều của ảnh hay không gian màu.

và cũng không giới hạn cho các loại ảnh có sự hạn chế về nội dung cảnh như độ phức tạp, khoảng màu hay các đặc điểm thống kê

Độ phức tạp tính toán có thể được kiểm soát dễ dàng, cho phép cài đặt hiệu quả với khả năng thực hiện tối ưu trên CPU Điều này cũng đảm bảo rằng phần cứng có thể được lắp đặt với chi phí hợp lý, đáp ứng nhu cầu cho các ứng dụng yêu cầu hiệu suất cao.

1.3.2 Các kiểu nén ảnh theo chuẩn JPEG

JPEG định nghĩa bốn kiểu hay kỹ thuậtnén ảnh sau:

Nén tuần tự không tổn hao (Sequential Lossless ode) cho phép nén ảnh trong một M lần quét, với khả năng khôi phục chính xác ảnh gốc mà không mất mát thông tin Phương pháp này áp dụng mã hóa dự đoán để giảm thiểu dư thừa không gian dữ liệu, kết hợp với mã hóa Huffman, một dạng mã hóa entropy, nhằm tối ưu hóa biểu diễn dữ liệu dòng bit của ảnh Đặc biệt, phương pháp này không sử dụng khối xử lý lượng tử hóa, đảm bảo không gây mất mát thông tin trong dữ liệu ảnh.

Hình 1-2 N JPEG : én tuần tự không tổn hao [8]

Nén tuần tự dựa trên DCT (Sequential DCT-based Mode) là kỹ thuật nén ảnh có tổn hao sử dụng biến đổi cosin rời rạc (DCT) để nén ảnh trong một lần quét Kết quả thu được là ảnh giải mã không hoàn toàn giống hệt ảnh gốc mà chỉ là một xấp xỉ Phương pháp nén này được áp dụng rộng rãi trong các kiểu nén ảnh JPEG, thường được gọi là nén JPEG cơ sở (Baseline JPEG).

Nén lũy tiến dựa trên DCT (Progressive DCT based Mode) cho phép nén và giải nén ảnh qua nhiều lần quét, tạo ra hình ảnh chất lượng cao hơn mỗi lần Phương pháp này cho phép hiển thị ảnh mà không cần chờ hoàn tất toàn bộ dòng bit, phù hợp với các ứng dụng cho phép người dùng xem ảnh từ thô đến tinh và chuyển đổi giữa các ảnh mà không phải đợi Trong quá trình này, ảnh được mã hóa liên tục, với phiên bản thô được truyền trước, sau đó chất lượng ảnh được cải thiện nhờ dữ liệu bit nén từ các lần quét sau Các khối DCT của toàn bộ ảnh được tính toán và mã hóa entropy, với hai phương pháp bổ sung: chọn phổ và xấp xỉ dần Phương pháp xấp xỉ dần thường mang lại chất lượng ảnh cao hơn so với chọn phổ Chuẩn JPEG định nghĩa tám loại nén lũy tiến dựa trên DCT.

Hình 1-3: Nén JPEG lũy tiến chọn phổ (a) và xấp xỉ dần (b) [8]

Nén phân cấp (Hierarchical Mode) cho phép nén ảnh ở nhiều độ phân giải khác nhau, phù hợp với các thiết bị có độ phân giải thấp hơn mà không cần giải nén ảnh đầy đủ Phương pháp này lọc và giảm mẫu ảnh gốc theo bội số của hai, tạo ra các phiên bản có độ phân giải thấp hơn, sau đó mã hóa chúng bằng một trong ba kiểu mã hóa của chuẩn JPEG Các ảnh nén này được giải mã và nội suy lên độ phân giải cao hơn, với phần bù so với ảnh độ phân giải cao tiếp theo được mã hóa bằng một trong ba phương pháp của chuẩn JPEG Quá trình này lặp lại cho đến khi tất cả các độ phân giải được mã hóa, với chuẩn JPEG định nghĩa 14 phương pháp khác nhau cho nén phân cấp.

Hình 1-4 : Nén JPEG đa phân giải phân cấp [8]

1.3.3 Kỹ thuật nén ảnh JPEG cơ sở (Baseline JPEG )

Kỹ thuật nén ảnh JPEG cơ sở là phương pháp nén ảnh phổ biến nhất trong truyền thông, nhờ vào tính dễ cài đặt và chất lượng ảnh nén tốt Phương pháp này cho phép nén ảnh có từ một đến bốn thành phần màu với các tông màu liên tiếp, hỗ trợ cả ảnh xám và ảnh màu trong các hệ màu như RGB và CMYK Đặc biệt, ảnh RGB sẽ được chuyển đổi sang không gian độ chói – màu như YCbCr, YUB hay CIELAB, giúp tăng hiệu quả nén nhờ vào cách mắt người cảm nhận sự khác biệt trong độ chói tốt hơn so với màu sắc Việc này cho phép giảm mẫu thành phần màu mà không làm giảm chất lượng ảnh, vì mắt người không nhận thấy sự khác biệt này.

1.3.3.1 Chuyển đổi không gian màu

Công thức chuyển đổi không gian màu từ RGB sang YCbCr như sau:

Công thức này đảm bảo giá trị của Y, Cb, Cr sẽ là các số nguyên không dấu 8- bit, có giá trị thuộc khoảng [0, 255]

Công thức chuyển đổi ngược từ không gian màu YCbCr sang RGB như sau:

Khi mã hóa JPEG cơ sở, không gian màu được chuyển sang YCbCr, trong đó thông tin chủ yếu tập trung vào thành phần độ chói Y, trong khi hai thành phần màu Cb và Cr chứa thông tin dư thừa JPEG cơ sở cho phép giảm mẫu (subsampling) hai thành phần màu này theo chiều ngang và/hoặc chiều dọc mà chỉ làm mất mát rất ít thông tin, dẫn đến các định dạng màu 4:4:4, 4:2:2 và 4:2:0 Định dạng 4:4:4 không giảm mẫu thành phần màu, 4:2:2 giữ độ phân giải thành phần màu theo chiều dọc nhưng giảm một nửa theo chiều ngang, và 4:2:0 giảm một nửa độ phân giải cả theo chiều dọc và ngang so với thành phần độ chói Việc giảm mẫu sẽ dẫn đến mất mát thông tin, đặc biệt là trong ảnh màu, trong khi ảnh xám không cần chuyển đổi không gian màu do chỉ có một thành phần màu.

1.3.3.2 Sắp xếp dữ liệu ảnh gốc

Sau khi chuyển đổi không gian màu, kích thước các thành phần Y, Cb, Cr có thể khác nhau tùy thuộc vào định dạng lấy mẫu màu Mỗi thành phần màu được chia thành các khối dữ liệu 8x8, với đơn vị mã hóa nhỏ nhất là MCU (Minimum Coded Unit) trong mã hóa JPEG MCU được hình thành từ việc chọn một hoặc nhiều khối dữ liệu theo thứ tự quét xen kẽ hoặc không xen kẽ Trong quét không xen kẽ, các khối dữ liệu của mỗi thành phần màu được lưu trữ và xử lý riêng theo thứ tự quét mành, từ trái sang phải và từ trên xuống dưới Ngược lại, trong quét xen kẽ, khối dữ liệu của tất cả các thành phần màu sẽ thuộc cùng một MCU.

Hình 1-5: Thứ tự MCU: YCbCr 4:4:4 (a), YCbCr 4:2:2 (b), YCbCr 4:2:0 (c) [8]

1.3.3.3 Thuật toán nén ảnh JPEG cơ sở

Hình 1-6: JPEG cơ sở: nén (a) và giải nén (b) [8]

Kỹ thuật nén JPEG cơ sở được mô tả qua các bước xử lý chính, đặc biệt là trong trường hợp nén ảnh một thành phần màu như ảnh đa mức xám Cốt lõi của nén ảnh JPEG cơ sở là quá trình nén các khối 8x8 điểm ảnh xám Nén ảnh màu có thể được coi như việc nén nhiều ảnh xám, thông qua việc nén từng ảnh riêng lẻ hoặc nén xen kẽ các khối 8x8 điểm ảnh của mỗi ảnh.

Biến đổi cosine rời rạc (FDCT và IDCT) là quá trình quan trọng trong mã hóa hình ảnh Tại đầu vào bộ mã hóa, các điểm ảnh nguồn được chia thành các khối 8x8, chuyển đổi từ giá trị số nguyên không dấu trong khoảng [0, 2^p – 1] sang số nguyên có dấu trong khoảng [-2^(p-1), 2^(p-1) – 1] Sau đó, các khối này được đưa vào biến đổi cosin rời rạc thuận (FDCT) Tại đầu ra của trình giải mã, biến đổi cosin rời rạc đảo (IDCT) phục hồi các khối 8x8 điểm ảnh, tạo ra hình ảnh khôi phục Các biểu thức toán học liên quan đến FDCT và IDCT 8x8 cung cấp định nghĩa lý thuyết cho quy trình này.

Trong đó, f(j,k): các điểm ảnh gốc trong khối dữ liệu 8x8

F(u, v): các hệ số khối DCT 8x8

Mỗi khối 8x8 điểm ảnh trong ảnh gốc thực tế là một tín hiệu rời rạc 64 điểm, tương ứng với hàm của không gian hai chiều x và y Quá trình DCT thuận phân tích tín hiệu này thành 64 tín hiệu cơ sở trực giao, mỗi tín hiệu chứa một trong 64 tần số không gian hai chiều, tạo thành phổ của tín hiệu đầu vào Đầu ra của DCT thuận là chuỗi 64 biên độ tín hiệu cơ sở, hay còn gọi là các hệ số DCT, với giá trị được xác định duy nhất bởi tín hiệu đầu vào 64 điểm.

Phương pháp nén ảnh theo chuẩn JPEG2000

1.4.1 Giới thiệu chung về chuẩn nén ảnh JPEG2000

JPEG2000 là chuẩn nén ảnh tĩnh được tổ chức JPEG công bố vào năm 2000, khuyến nghị thay thế chuẩn JPEG Khác với JPEG sử dụng biến đổi DCT, JPEG2000 dựa trên biến đổi wavelet, nhằm cải thiện hiệu năng nén và bổ sung các chức năng như khả năng co dãn và điều chỉnh Chuẩn này cho phép người dùng linh hoạt kiểm soát chuỗi xử lý ảnh, ví dụ như truyền tải ảnh đã được chia thành các cấp (layers) để người dùng lựa chọn tải về theo dung lượng băng thông, cho phép co dãn cả về độ phân giải và chất lượng.

JPEG2000 nổi bật với khả năng cải thiện hỗ trợ tốc độ bit, cho phép điều chỉnh từ rất nhỏ đến rất lớn, điều này tạo ra một lợi thế quan trọng so với JPEG Ngoài ra, JPEG2000 còn cung cấp nhiều chức năng quan trọng khác.

JPEG2000 cải thiện hiệu quả nén với hiệu năng vượt trội so với các chuẩn hiện tại như JPEG, đặc biệt khi nén ở tốc độ bit thấp khoảng 0.25 bpp cho ảnh xám chi tiết Tính năng này rất cần thiết cho các ứng dụng truyền ảnh qua mạng và cảm biến điều khiển từ xa, đánh dấu JPEG2000 là một giải pháp quan trọng trong lĩnh vực nén ảnh.

Ảnh có tông màu liên tục và ảnh nhị phân (bi-level) được ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm tài liệu kết hợp giữa hình ảnh và văn bản, ảnh y tế có ghi chú, cũng như ảnh đồ họa và ảnh do máy tính tạo ra với các vùng nhị phân hoặc gần nhị phân.

JPEG2000 hỗ trợ cả nén tổn hao và không tổn hao thông qua cùng một cơ chế mã hóa, cho phép linh hoạt trong việc sử dụng cho nhiều ứng dụng khác nhau Tính năng này đặc biệt phù hợp với các ứng dụng ảnh y tế, nơi yêu cầu độ chính xác cao, cũng như các ứng dụng cần chất lượng ảnh tối ưu cho lưu trữ nhưng

Truyền lũy tiến theo độ chính xác điểm ảnh và độ phân giải cho phép khôi phục ảnh với sự gia tăng độ chính xác của các điểm ảnh và độ phân giải không gian Tính năng này giúp phục hồi ảnh theo yêu cầu và mong muốn của người dùng, phù hợp với các thiết bị khác nhau Ứng dụng của tính năng này bao gồm mạng www, các ứng

• Chống lỗi (error resilience : cung cấp khả năng giảm thiểu các lỗi do ) nhiễu trên đường truyền bằng bằng dòng mã (codestream) phù hợp.

Kiến trúc mở giúp tối ưu hóa hệ thống cho nhiều loại ảnh và ứng dụng khác nhau Tính năng này cho phép một bộ giải mã chỉ cần cài đặt bộ công cụ cốt lõi cùng với một bộ phân tách để có thể hiểu và xử lý dòng mã hiệu quả.

• Mã hóa thời gian thực (real time coding cung cấp khả năng nén và ): giải nén chỉ với một lần truyền dòng dữ liệu.

Chuẩn JPEG2000 có thể ứng dụng hiệu quả trong nhiều lĩnh vực:

• Tài liệu ghép ảnh số

• Cơ sở dữ liệu ảnh

• Sao chụp màu (photocopy, in, quét, sao chép)

• Ảnh đa phổ: ảnh điều khiển từ xa, ảnh vệ tinh

• Kết nối đa phương tiện di động

JPEG2000 có nhược điểm chính so với JPEG là thuật toán mã hóa phức tạp hơn nhiều, dẫn đến yêu cầu tính toán cao hơn Hơn nữa, việc mở rộng không gian bit có thể hạn chế hiệu suất tính toán trên các nền tảng đa năng.

1.4.2 Các phần của chuẩn JPEG2000 (JPEG2000 part)

Chuẩn JPEG2000 bao gồm 11 phần, trong đó phần 7 đã bị loại bỏ Mỗi phần bổ sung thêm các chức năng mới so với các chức năng cơ bản được đề cập trong phần 1 Hiện tại, phần 8 đến phần 11 vẫn đang trong quá trình phát triển.

Phần 1 (Part 1) Hệ thống mã hóa lõi: hiện nay đã được công bố như một – chuẩn quốc tế ISO/IEC 15444-1:2000 đặc tả tập hợp các chức năng cơ bản và cú pháp dòng mã (code-stream) cho JPEG2000.

Phần 2 (Part 2) Mở rộng của phần 1: thêm nhiều chức năng cho phần 1.–

Phần 3 (Part 3) JPEG2000 động (Motion JPEG2000): đặc tả một định dạng – file (MJ2) chứa một chuỗi các ảnh được mã hóa bằng thuật toán cơ sở của JPEG2000 cho video động Nó phục vụ cho các ứng dụng yêu cầu dựa trên các khung hình (frame) có chất lượng cao

Phần 4 (Part 4) Yêu cầu kiểm thử: đã được công bố như một chuẩn quốc tế – (ISO/IEC 15444-4:2002), đặc tả thủ tục kiểm thử cho mã hóa, giải mã sử dụng Phần

Phần 5 (Part 5) Phần mềm tham khảo (Reference Software): hai gói mã – nguồn phần mềm (sử dụng ngôn ngữ lập trình Java và C) được cung cấp nhằm mục đích kiểm thử và sẵn sàng cho các hệ thống JPEG2000 được phát triển bởi các nhà phát triển phần mềm

Phần 6 (Part 6) Định dạng file ảnh ghép (Compound Image File Format): – đặc tả định dạng file (JPM) để lưu trữ các ảnh ghép Mô hình MRC (multilayer Mixed Raster Content) được sử dụng để biểu diễn một ảnh ghép trong Phần 6 của JPEG2000

Phần 7 (Part 7) Phần này đã bị loại bỏ–

Phần 8 (Part 8) JPEG2000 bảo mật (JPSEC Secure JPEG2000): xử lý các – – khía cạnh bảo mật của các ứng dụng JPEG2000 như mã hóa, che giấu thông tin

Phương pháp nén ảnh theo chuẩn H.264

1.5.1 Giới thiệu chung về chuẩn nén ảnh H.264

H.264, also known as Video Advanced Coding (VAC), is a video compression standard developed by the ITU-T Video Coding Expert Group and the ISO/IEC Moving Picture Experts Group Its primary aim is to enhance compression efficiency and provide a network-friendly video representation for both conversational applications, such as video telephony, and non-conversational uses.

H.264 không chỉ tập trung vào mã hóa video mà còn cung cấp một phương pháp mới để mã hóa ảnh tĩnh thông qua kỹ thuật mã hóa trong khối (intra), có thể áp dụng cho từng khung hình trong chuỗi video Hiệu suất mã hóa được cải thiện chủ yếu nhờ vào phần dự đoán khối Điểm khác biệt của H.264 so với các chuẩn trước là việc dự đoán cần được thực hiện trước khi mã hóa kết cấu (texture coding) cho cả các khối trong khối (intra) và liên khối (inter).

H.264 cải thiện hiệu quả nén nhờ vào việc sử dụng mã hóa entropy CABAC, giúp chống nhiễu và tối ưu hóa cho môi trường mạng Dự đoán thích nghi trong khối là yếu tố quan trọng góp phần vào hiệu suất cao của phương pháp này.

H.264 được ứng dụng rộng rãi trong các lĩnh vực sau:

• HD DVD (High Definition DVD và định dạng Blu-Ray)

• Các sản phẩm Apple bao gồm iTune video, iPod video và MacOS

• Các ứng dụng NATO và US DoD video

1.5.2 Tìm hiểu thuật toán nén ảnh theo chuẩn H.264

Hình 20 1- : Sơ đồ khối nén và giải nén theo chuẩn H.264 [11]

Bộ nén H.264 thực hiện các bước dự đoán, biến đổi và mã hóa để tạo ra dòng bit H.264 đã mã hóa Sau đó, bộ giải nén thực hiện giải mã, biến đổi ngược và tái tạo lại để khôi phục chuỗi video đã nén.

1.5.2.1 Quá trình nén theo chuẩ n H.264

Quá trình nén video xử lý từng khung hình (frame) thông qua các khối kích thước 16x16 điểm ảnh, tạo ra dự đoán cho mỗi khối dựa trên dữ liệu đã mã hóa trước đó Dữ liệu mã hóa của khung hiện tại được sử dụng cho dự đoán trong khối (intra prediction), cùng với thông tin từ các khung khác đã được mã hóa (dự đoán liên khối - inter prediction) Bộ mã hóa thực hiện phép trừ giữa dữ liệu khối hiện tại và khối dự đoán để tạo ra khối dư thừa Các phương pháp dự đoán của H.264 linh hoạt hơn so với các chuẩn trước, giúp nâng cao độ chính xác và hiệu quả nén video.

Hình 21 1- : Dự đoán trong khối và liên khối theo chuẩn H.264 [11]

Biến đổi và lượng hóa (transform and quantization):

Mỗi khối phần dư sẽ được biến đổi bằng cách sử dụng phép biến đổi nguyên 4x4 hoặc 8x8, tương tự như phép biến đổi cosin rời rạc Kết quả của phép biến đổi này là một tập hợp các hệ số.

Các hệ số đầu ra của phép biến đổi được lượng hóa thành các số nguyên tương ứng Đầu ra của phép lượng hóa thường chứa phần lớn các giá trị 0, với một số ít giá trị xấp xỉ, tùy thuộc vào tham số lượng hóa PQ.

0 Nếu nhiều hệ số bằng 0 thì hiệu quả nén tốt nhưng chất lượng ảnh khôi phục sẽ kém hơn

Mã hóa dòng bit (Bitstream encoding):

Quá trình xử lý tiếp theo phải mã hóa các giá trị sau:

• Các hệ số biến đổi đã được lượng hóa

• Thông tin cho phép giải mã và tạo lại bộ dự đoán

• Thông tin về cấu trúc của dữ liệu đã được nén và công cụ sử dụng trong quá trình nén

• Thông tin về sự đầy đủ của chuỗi video

Các giá trị và tham số cú pháp được chuyển đổi thành mã nhị phân thông qua phương pháp mã hóa có độ dài thay đổi hoặc mã hóa số học nhị phân Sau đó, dòng bit mã hóa sẽ được lưu trữ hoặc truyền đi.

1.5.2.2 Quá trình g iải nén theo chuẩn H.264

Giải mã dòng bit (Bitstream decoding):

Bộ giải mã video nhận dòng bit mã hóa H.264 sẽ giải mã từng thành phần cú pháp để lấy thông tin như hệ số biến đổi đã lượng hóa và thông tin dự đoán Những thông tin này được sử dụng để giải mã ngược và tái tạo lại dòng ảnh video, thông qua quá trình điều chỉnh và biến đổi ngược.

Các hệ số biến đổi đã được lượng hóa sẽ được nhân với một số nguyên để phục hồi giá trị ban đầu Phép biến đổi ngược này kết hợp với các mẫu cơ sở chuẩn và các hệ số đã điều chỉnh nhằm tái tạo lại dữ liệu cho các khối phần dư.

Mỗi khối được xử lý bởi bộ giải mã, nơi nó tạo ra một dự đoán chính xác từ bộ mã hóa Dự đoán này được kết hợp với khối phần dư để khôi phục lại khối đã được mã hóa.

1.5.3 Nén và chất lượng nén th o chuẩn H.264 e Ưu điểm lớn nhất của H.264 so với các chuẩn nén trước là hiệu năng nén So với các chuẩn như MPEG- (2 MPEG - Motion Picture Experts Group và MPEG-4 ) Visual, H.264 có thể cung cấp:

• Chất lượng ảnh tốt hơn ở cùng một tốc độ bit nén

• Tốc độ bit nén thấp hơn cho cùng một chất lượng ảnh

PHƯƠNG PHÁP NÉN ẢNH TIẾN TIẾN (ADVANCED IMAGE CODING)

Giới thiệu phương pháp nén ảnh tiên tiến (Advanced Image Coding)

Phương pháp nén ảnh tiên tiến AIC (Advanced Image Coding) là một hệ thống nén ảnh tĩnh, kết hợp các thuật toán từ các chuẩn nén nổi tiếng H.264 và JPEG Được giới thiệu bởi Erik Van Bilsen trên trang web http://www.bilsen.com/index.htm, AIC là nguồn tham khảo chính cho việc nghiên cứu thuật toán nén ảnh tiên tiến trong luận văn này.

Phương pháp nén ảnh tiên tiến kết hợp các thuật toán từ chuẩn nén H.264 và JPEG, tạo ra một kỹ thuật nén ảnh tĩnh mới với chất lượng nén cao và độ phức tạp thấp Cụ thể, phương pháp này sử dụng dự đoán khối trong ảnh của H.264 kết hợp với phép biến đổi cosin rời rạc của JPEG, và áp dụng mã hóa số học nhị phân thích ứng ngữ cảnh tương tự như trong H.264 Kết quả là một lược đồ nén hiệu quả hơn JPEG, gần với chất lượng của JPEG2000.

Phương pháp thể hiện một số điểm “tiên tiến sau: ”

Cả JPEG và AIC đều sử dụng phép biến đổi cosin rời rạc DCT để giảm độ tương quan của dữ liệu ảnh Sự cải tiến của AIC so với JPEG nằm ở việc AIC áp dụng DCT lên phần dư giữa dữ liệu ảnh gốc và dữ liệu ảnh dự đoán, trong khi JPEG áp dụng DCT trực tiếp lên khối dữ liệu ảnh gốc Điều này có nghĩa là nếu dữ liệu ảnh dự đoán gần với dữ liệu gốc, các hệ số DCT sẽ nhỏ và gần bằng 0, từ đó nâng cao hiệu suất nén Đây là điểm nổi bật và tiên tiến của AIC so với JPEG.

• AIC sử dụng theo kỹ thuật dự đoán trong khối trong miền không gian của H.264 để giảm dư thừa dữ liệu và tăng hiệu quả nén

2.1.2 Đặc điểm của phương pháp nén ảnh tiên tiến Độ phức tạp thuật toán không lớn: AIC ít phức tạp hơn JPEG 2000 nhiều -

Mã nguồn AIC được thiết kế với sự tối ưu hóa về tính rõ ràng và dễ hiểu, thay vì tập trung vào tốc độ Mặc dù thời gian thực hiện của thuật toán AIC chậm hơn JPEG, nhưng lại nhanh hơn JPEG 2000, ngay cả khi không có tối ưu hóa tốc độ trong chương trình Điều này cho phép AIC được áp dụng hiệu quả trong các ứng dụng thời gian thực.

Chất lượng ảnh cao: với tốc độ bit điển hình (tốc độ bit nhỏ trong khoảng từ

0.2-4 bpp), AIC còn cho chất lượng ảnh cao hơn cả JPEG2000 Do có thể cung cấp chất lượng ảnh cao nên AIC có thể ứng dụng trong ảnh y tế

Với kích thước ảnh nhỏ khoảng 100x100 (tương đương 10.000 điểm ảnh), AIC thể hiện hiệu suất vượt trội so với JPEG2000 với tốc độ bit điển hình Điều này khiến các codec kiểu AIC trở thành lựa chọn lý tưởng cho việc mã hóa ảnh trên trang web.

Nghiên cứu thuật toán nén ảnh theo phương pháp tiên tiến

2.2.1 Giới thiệu thuật toán được nghiên cứu

Phần này khám phá chi tiết các thuật toán trong phương pháp nén ảnh tiên tiến Các thuật toán này không phải là mới mà là sự kết hợp của một số thuật toán đã có trong các chuẩn H264 và JPEG, được điều chỉnh để phù hợp với yêu cầu của phương pháp nén ảnh AIC.

2.2.1.1 Đặc điểm của thuật toán AIC

Thuật toán được tìm hiểu có các đặc điểm sau:

• Không tiến hành giảm mẫu ảnh đầu vào nên tỉ số chất lượng ảnh trên độ nén cao hơn

• Sử dụng chín kiểu dự đoán giống như H.264

• Các khối được dự đoán từ các khối được mã hóa trước đó

• Sử dụng biến đổi DCT cho các khối phần dư 8x8 thay vì các hệ số biến đổi mà phương pháp JPEG sử dụng

• Áp dụng lượng hóa đồng nhất

• Các hệ số được truyền theo thứ tự dòng quét

• Sử dụng CABAC (Context Adaptive Binary Arithmetic Coding algorithms) tương tự như H.264 với một số ngữ cảnh

2.2.1.2 Sơ đồ khối của thuật toán AIC

Hình 2-1 : Sơ đồ khối nén và giải nén AIC

Hai phần nén và giải nén AIC sử dụng chung các khối xử lý sau:

Chuyển đổi màu là quá trình chuyển đổi ảnh gốc từ không gian màu RGB sang không gian màu YCbCr Không gian YCbCr có entropy thấp hơn ở các thành phần màu Cb và Cr, cho phép nén các thành phần màu này hiệu quả hơn Tuy nhiên, điều này chỉ áp dụng cho ảnh màu, vì ảnh xám chỉ có một thành phần màu duy nhất.

Dự đoán khối (block prediction) là quá trình tách các thành phần màu (Y, Cb, Cr trong ảnh màu và Y trong ảnh xám) thành các khối 8x8 điểm ảnh Nội dung của các khối này được dự đoán dựa trên việc mã hóa và giải mã các khối trước đó Có 9 kiểu dự đoán cho khối hiện tại, và kiểu có sai số tối thiểu giữa khối gốc và khối dự đoán sẽ được lựa chọn Để tiết kiệm dung lượng mã hóa, các khối trong thành phần Cb và Cr sẽ sử dụng cùng kiểu dự đoán như khối tương ứng trong thành phần màu Y.

Các giá trị trong khối dự đoán được trừ đi từ các giá trị điểm ảnh tương ứng trong khối gốc, tạo thành khối dư (residual block) Khi lựa chọn được kiểu dự đoán hiệu quả, giá trị trong khối dư sẽ nhỏ hơn giá trị điểm ảnh trong khối gốc, từ đó nâng cao khả năng nén dữ liệu.

Biến đổi cosin rời rạc (Discrete Cosine Transform - DCT) và lượng tử hóa

Để giảm entropy của khối dư, khối này được biến đổi bằng phép biến đổi cosin rời rạc (DCT) Các hệ số DCT thường có giá trị nhỏ hơn so với các giá trị ban đầu Bằng cách lượng tử hóa các hệ số này dựa trên mức chất lượng đã chọn, chúng có thể giảm thêm nữa Kết quả là, nhiều hệ số trong khối trở thành 0, trong khi hầu hết các hệ số còn lại có giá trị gần bằng 0.

Mã hóa số học nhị phân thích nghi ngữ cảnh (Context Adaptive Binary

Mã hóa số học (CABAC) là một phương pháp mã hóa hiệu quả, trong đó các kiểu dự đoán và hệ số DCT đã được lượng hóa cuối cùng được mã hóa thành một dòng dữ liệu Cơ chế mã hóa này sử dụng các ngữ cảnh để xác định số lượng bit cần thiết, cho phép các phương pháp dự đoán và hệ số DCT thường xuyên sử dụng được mã hóa bằng ít bit hơn, trong khi các phương pháp ít phổ biến sẽ tiêu tốn nhiều bit hơn.

2.2.2 AIC – Chuyển đổi màu ( Color conversion ) Đối với ảnh màu, mã hóa AIC chuyển đổi ảnh gốc từ không gian màu RGB sang không gian màu YCbCr Không gian màu này tách riêng độ chói (luminance) và thành phần màu (chrominance) trong ảnh Độ chói của ảnh sẽ được lưu trong thành phần màu Y (Y-channel) Các thành phần màu Cb và Cr lần lượt lưu giữ các giá trị thành phần màu theo phương xanh l c B ụ và đỏ R

Hình 2-2: Ả nh RGB và các thành phần mà u RGB của n ó

Ba thành phần màu RGB có độ tương phản và thông tin tương đương, do đó không phù hợp cho việc nén Trong đó, thành phần màu Green thể hiện sự tự nhiên và trung thực nhất, vì mắt người nhạy cảm nhất với màu này.

Mục tiêu của không gian màu YCbCr trong nén hình ảnh là tối ưu hóa việc sử dụng thông tin, khi mà các kênh thành phần màu (kênh sắc độ) thường chứa ít thông tin hơn so với kênh độ chói (kênh sáng) Điều này cho phép nén hiệu quả hơn Các hình ảnh dưới đây thể hiện sự phân chia của cùng một bức ảnh Lena trong không gian màu YCbCr.

Hình 2-3 : Ảnh YCbCr v à cá c th nh phần màu Y, Cb, Cr của nó à

Kênh Y là đại diện tối ưu cho hình ảnh mức xám, trong khi các kênh Cb và Cr thể hiện độ tương phản thấp hơn, cho phép nén hiệu quả hơn.

Các công thức sau được sử dụng để biến đổi một điểm ảnh RGB thành một điểm ảnh YCbCr:

Thành phần G có ảnh hưởng lớn nhất đến kênh Y, do mắt người nhạy cảm nhất với màu G, tiếp theo là thành phần R và B Khi R, G và B có giá trị từ 0 đến 255 (như trong ảnh 24 bit), kênh Y cũng nhận giá trị từ 0 đến 255, trong khi Cb và Cr nhận giá trị từ -128 đến 127 Để phù hợp với kiểu dữ liệu một byte không dấu, giá trị 128 thường được thêm vào cho màu Cb và Cr.

Việc giải mã sử dụng các công thức sau để biến đổi ngược những giá trị này về RGB:

Chuẩn JPEG và H.264 thường giảm mẫu các kênh Cb và Cr xuống còn một nửa độ phân giải ban đầu, dẫn đến việc các kênh này chứa ít thông tin hơn và có thể nén hiệu quả hơn Tuy nhiên, trong mã hóa AIC, không áp dụng giảm mẫu, vì dự đoán khối và mã hóa số học nhị phân làm cho việc giảm mẫu trở nên ít cần thiết và có thể ảnh hưởng xấu đến chất lượng ảnh Nhờ vào việc không sử dụng giảm tần số lấy mẫu, AIC có thể đạt được tỉ số chất lượng trên độ nén cao hơn.

2.2.3 AIC – Dự đoán khối (Block Prediction )

Sau khi chuyển đổi sang không gian màu YCbCr cho ảnh màu, ảnh được chia thành các khối 8x8 pixel và mã hóa theo thứ tự dòng quét từ trái sang phải và từ trên xuống dưới Khi giải mã, bộ giải mã sẽ truy cập các khối đã mã hóa trước đó, bao gồm tất cả các khối phía trên và bên trái khối hiện tại trong dòng quét Hình ảnh minh họa cho thấy cách chia nhỏ ảnh thành các khối, trong đó khối màu xanh lá cây nhạt là khối hiện tại và các khối màu lục nhạt là những khối đã được mã hóa hoặc giải mã trước đó.

Hình 2-4: Vị trí khối hiện tại trong dự đoán khối AIC [3]

AIC sử dụng cơ chế dự đoán khối vay mượn từ chuẩn H.264, dự đoán nội dung của khối hiện tại từ các khối đã mã hóa/giải mã bằng cách áp dụng thuật toán 4x4 và mở rộng cho trường hợp khối 8x8 Khi dự đoán nội dung của một khối, AIC tận dụng tối đa 25 điểm ảnh từ các khối đã mã hóa/giải mã trước đó để thực hiện việc dự đoán.

Hình 2-5: Khối hiện tại và 25 điểm ảnh dùng để dự đoán khối [3]

2.2.3.1 C ác kiểu dự đoán khối (Prediction mode)

Sau đây là chín kiểu mà AIC và H.264 dùng để dự đoán giá trị các điểm ảnh trong khối hiện tại:

Mode 0 - Dọc: Các pixel phía trên được ngoại suy theo chiều dọc.

Hình 2-6: Dự đoán khối AIC mode 0 [3]

Mode 1 – Ngang: Các pixel bên trái được ngoại suy theo chiều ngang.

Hình 2-7: Dự đoán khối AIC mode 1 [3]

Mode 2 – DC: Giá trị trung bình của các điểm ảnh trên và bên trái được sử dụng cho toàn khối Nếu các điểm ảnh trên không có thì chỉ các điểm ảnh bên trái được sử dụng Nếu các điểm ảnh bên trái không có thì chỉ dùng các điểm ảnh trên Nếu tất cả các điểm ảnh trên và bên trái đều không có (khối đầu tiên của ảnh) thì giá trị 128 được sử dụng (50% màu xám)

Hình 2-8: Dự đoán khối AIC mode 2 [3]

Mode 3 - Chéo từ bên trái đi xuống Các điểm ảnh được nội suy ở một góc 45: o từ góc trên bên phải xuống góc dưới bên trái

H ình 2-9 : Dự đoán khối AIC mode 3 [3]

Mode 4 - Chéo xuống bên phải: Các điểm ảnh được nội suy ở một góc 45 o từ góc trên bên trái xuống góc dưới bên phải

Hình 10 2- : Dự đoán khối AIC mode 4 [3]

Mode 5 - Dọc Phải: Các điểm ảnh được nội suy ở một góc 26.6- o từ góc trên bên trái xuống cạnh thấp hơn ở một nửa chiều rộng

Hình 11 2- : Dự đoán khối AIC mode 5 [3]

Mode 6 - Ngang Xuống: Các điểm ảnh được nội suy ở một góc 26.6- o từ góc trên bên trái xuống cạnh phải ở một nửa chiều cao

Hình 12 2- : Dự đoán khối AIC mode 6 [3]

Mode 7 - Dọc Trái: Các điểm ảnh được nội suy ở một góc 26.6- o từ góc trên bên phải xuống cạnh thấp hơn ở một nửa chiều rộng

Hình 13 2- : Dự đoán khối AIC mode 7 [3]

Mode 8 - Ngang Lên: Các điểm ảnh được nội suy ở một góc 26.6- o từ góc dưới bên trái lên cạnh phải ở một nửa chiều cao

Hình 14 2- : Dự đoán khối AIC mode 8 [3]

Nén và chất lượng ảnh AIC

AIC thực hiện nhanh hơn nhiều so với JPEG trong việc xử lý ảnh chụp, gần bằng với JPEG-2000, và thậm chí còn vượt trội hơn JPEG-2000 ở các tốc độ bít điển hình Tuy nhiên, đối với ảnh đồ họa, khoảng cách giữa JPEG-2000 và AIC lại tăng lên, với lợi thế nghiêng về JPEG-2000.

Với các ảnh nhỏ, khoảng cách giữa AIC và JPEG-2000 tăng lên, nhưng AIC cho thấy hiệu suất tốt hơn Đặc biệt, đối với kích thước ảnh lên đến 100x100 (10.000 điểm ảnh), AIC hoạt động hiệu quả hơn nhiều ở các tốc độ bit điển hình Điều này khiến các phương pháp mã hóa kiểu AIC trở thành lựa chọn lý tưởng cho ảnh trên trang web.

Thuật toán AIC có thời gian thực hiện chậm hơn JPEG, nhưng nhanh hơn JPEG 2000, ngay cả khi không tối ưu hóa tốc độ trong chương trình.

THỬ NGHIỆM, CÀI ĐẶT VÀ ĐÁNH GIÁ THUẬT TOÁN NÉN ẢNH TIÊN TIẾN

Tìm hiểu công cụ thử nghiệm

Công cụ "AIC.exe" được phát triển bởi Erik Van Bilsen, cho phép thử nghiệm hiệu quả nén của thuật toán nén ảnh tiên tiến AIC và so sánh với các thuật toán JPEG và JPEG2000 Người dùng có thể tải chương trình từ trang web http://www.bilsen.com/index.htm, nơi cũng cung cấp mã nguồn mở để nghiên cứu Tác giả luận văn sẽ tìm hiểu chi tiết về cài đặt thuật toán AIC và phát triển thêm chức năng cho chương trình nhằm thuận tiện cho việc thử nghiệm và đánh giá hiệu quả của thuật toán.

3.1.1 Môi trường và công cụ phát triển chương trình

Môi trường và công cụ phát triển của chương trình “AIC.exe” như sau:

• Hệ điều hành Window XP

• Công cụ lập trình: Borland Delphi Enterprise, version 0 7

• Ngôn ngữ lập trình: Delphi

• Phương pháp lập trình: hướng đối tượng

3.1.1.1 Ngôn ngữ lập trình Delphi

Delphi là ngôn ngữ lập trình hướng đối tượng của Borland, phát triển dựa trên nền tảng Pascal với các mở rộng hướng đối tượng, còn được gọi là Object Pascal Ngôn ngữ này rất phù hợp cho việc phát triển thuật toán nhờ vào cấu trúc rõ ràng và dễ hiểu Delphi 7, với các đặc điểm mạnh mẽ của lập trình hướng đối tượng như kế thừa và đa hình, giúp tăng tốc độ phát triển chương trình và tạo ra mã nguồn an toàn, ngắn gọn hơn.

3.1.1.2 Môi trường lập trình tích hợp Borl and Delphi Enterprise 7

Borland Delphi 7 là một công cụ phát triển tiện ích mạnh mẽ với môi trường IDE chuyên nghiệp, giúp lập trình giao diện một cách dễ dàng nhờ vào các thư viện hỗ trợ sẵn có Hệ thống trợ giúp và gỡ lỗi tiện lợi của nó cho phép người phát triển vừa làm việc với chương trình vừa tìm hiểu ngôn ngữ và công cụ một cách hiệu quả.

Hình 3-1: Môi trường lập trình Borland Delphi 7

3.1.2 Đặc tả chức năng gốc của chương trình “AIC.exe”

Chương trình “AIC.exe” nhằm minh họa cài đặt thuật toán AIC và so sánh hiệu suất của nó với hai chuẩn nổi tiếng là JPEG và JPEG2000 Sơ đồ phân cấp chức năng của chương trình được thiết lập để thể hiện rõ sự khác biệt về hiệu năng giữa các thuật toán.

Hình 3-2: Sơ đồ phân cấp chức năng của chương trình AIC.exe

Chức năng (1): Chương trình cho phép đọc, ghi và hiển thị các file ảnh dưới các định dạng sau:

• Ảnh nén theo phương pháp tiên tiến (.aic)

Khi lưu ảnh dưới định dạng nén có tổn hao như JPEG, JPEG2000 và AIC, chương trình cho phép người dùng điều chỉnh hệ số Quality để thay đổi tỉ lệ nén (Bit Per Pixel) và chất lượng ảnh theo nhu cầu Ngoài ra, chương trình còn cung cấp tính năng xem trước kết quả nén ảnh, bao gồm việc hiển thị tỉ lệ nén, kích thước ảnh nén, và chất lượng ảnh được đo bằng chỉ số PSNR.

Chức năng chương trình AIC.exe

Tự động chạy các thuật toán AIC, JPEG, JPEG2000 với tốc độ bít tăng dần

Tính toán và vẽ đồ thị PSNR BPP khi tự động chạy các thuật toán nén AIC, JPEG và JPEG2000 là một quy trình quan trọng Việc điều chỉnh tốc độ bit của các thuật toán này giúp tối ưu hóa chất lượng hình ảnh và hiệu suất nén.

Chạy thuật toán để hiển thị và lưu các file ảnh ở các định dạng jpg,

Hình 3-3: Chức năng điều chỉnh tốc độ nén ảnh

Chức năng (3): Chức năng cho phép lựa chọn thuật toán muốn kiểm thử và so sánh trong số ba thuật toán JPEG, JPEG2000 và AIC:

Hình 3-4: Chức năng lựa chọn thuật toán kiểm thử

Hình 3-5 : Chứ năng tự động chạy các thuật toán muốn so sánh c

Chức năng thứ tư là vẽ đồ thị so sánh chất lượng ảnh và tỷ số nén của các thuật toán đã chọn Đồ thị này thể hiện mối quan hệ "thỏa hiệp" giữa độ nén và chất lượng ảnh, với chất lượng ảnh được đo bằng chỉ số PSNR ở các tốc độ bit khác nhau.

Hình 3-6: Chức năng vẽ đồ thị quan hệ chất lượng và độ nén

3.1.3 Tìm hiểu kiến trúc cài đặt của chương trình

Tác giả luận văn đã tiến hành phân tích kiến trúc cài đặt hiện tại của chương trình AIC từ mã nguồn, nhằm hiểu rõ cách thức cài đặt dựa trên các lý thuyết của thuật toán nén ảnh tiên tiến Kết quả của việc phân tích này sẽ là nền tảng cho việc phát triển chương trình AIC phục vụ cho các mục đích thử nghiệm và đánh giá trong luận văn.

Chương trình AIC triển khai thuật toán nén ảnh AIC, cho phép đọc, ghi và hiển thị các tệp ảnh định dạng AIC (*.aic), đồng thời hỗ trợ các định dạng ảnh khác như JPEG.

JPEG2000 là một chương trình sử dụng thư viện liên kết động để xử lý các file ảnh, trong đó sử dụng thư viện IJG JPEG “libjpeg.dll” để đọc và ghi file JPEG, cùng với thư viện JasPer “libjasper.dll” để xử lý file JPEG2000.

Dưới đây là kết quả nghiên cứu chi tiết về kiến trúc cài đặt của chương trình AIC, được trình bày thông qua các sơ đồ mô tả những phần chính của chương trình.

Sơ đồ lớp thực hiện đọc, ghi và hiển thị các định dạng file ảnh khác nhau:

Hình 3-7: Sơ đồ lớp dùng để đọc, ghi các định dạng file ảnh khác nhau

Theo Hình 3-8, các thao tác đọc và ghi file ảnh được tổ chức trong các lớp riêng biệt, kế thừa từ lớp TEvBBitmapFileFormat, nhằm mục đích đọc, ghi và hiển thị các định dạng file ảnh dưới dạng bitmap trên giao diện chương trình.

Lớp TEvBPGMFileFormat: đọc, ghi các file ảnh xám PGM

Lớp TEvBPPMFileFormat : đọc, ghi các file ảnh xám PPM

Lớp TEvBJPGFileFormat: đọc, ghi file các file ảnh JPEG sử dụng thư viện IJG JPEG

Lớp TEvBJPG2FileFormat: đọc, ghi file các file ảnh JPEG2000 sử dụng thư viện JasPer

Lớp TEvBAICFileFormat: đọc, ghi file các file ảnh AIC sử dụng thuật toán AIC được cài đặt trong chương trình

Biểu đồ tuần tự của quá trình nén, giải nén một ảnh ở định dạng bất kỳ:

Hình 3-9: Biểu đồ tuần tự của quá trình nén, giải nén một ảnh ở định dạng bất kỳ

Biểu đồ Hình 3-8 minh họa quá trình nén ảnh bitmap, lưu trong đối tượng FSrcBitmap (kiểu TEvBBitmap) sau khi thiết lập giá trị Quality để điều chỉnh độ nén Ảnh sẽ được nén trong dòng bit FStream (kiểu TStream) thông qua hàm WriteStream của đối tượng TEvBBitmapFileFormat, thuộc một trong các lớp kế thừa của TEvBBitmapFileFormat như mô tả ở Hình 3-7 Cuối cùng, dòng bit này được giải nén bằng hàm LoadFromStream của đối tượng FSrcBitmap để hiển thị ảnh bitmap khôi phục trên giao diện chương trình.

Biểu đồ lớp của khối thực hiện nén ảnh AIC: operations

# SetLinearQuality( ) + Create( ) + Create( ) + Destroy + Compress( ) + Compress( )

- WriteSignificantCoefficients( ) + AfterConstruction + BeforeDestruction + WriteCoefficients( ) + WritePredictionMode( )

Hình 10 3- : Biểu đồ lớp của khối thực hiện nén ảnh AIC

Biểu đồ 3-9 mô tả các lớp được sử dụng để thực hiện quá trình nén từ ảnh bitmap thành ảnh AIC:

Lớp TAICEncoder thực hiện quá trình nén ảnh bitmap thành file AIC thông qua việc cài đặt chia khối và áp dụng các thuật toán từ các lớp khác, như minh họa trong hình 3-9.

• Lớp TAICCabacEncoder: cài đặt thuật toán mã hóa các kiểu dự đoán và các hệ số DCT theo mô hình CABAC

• Lớp TAICBase: cài đặt dự đoán khối

• Unit AICFwdColorConversion: cài đặt thuật toán biến đổi không gian màu từ RGB sang YCbCr

• Unit AICFwdDCT: cài đặt thuật toán biến đổi DCT thuận i

Biểu đồ lớp của khối thực hiệngiả nén ảnh AIC attributes

- ReadHeader + Create( ) + Create( ) + Destroy + Expand( ) + Expand( ) TAICDe coder operations

- StartDecoding + Af terConstruction + ReadCoeff icients( ) + ReadPredictionMode: Integer;

Hình 11 3- : Biểu đồ lớp của khối thực hiện thuật toán giải nén ảnh AIC

Biểu đồ Hình 3-10 mô tả các lớp được sử dụng để thực hiện quá trình giải nén từ file AIC thành ảnh bitmap:

Lớp TAICDecoder thực hiện việc giải nén file AIC thành ảnh bitmap thông qua việc cài đặt chia khối và sử dụng các thuật toán từ các lớp khác, như được minh họa trong hình 3-10.

• Lớp TAICCabacDecoder: cài đặt thuật toán giải mã các kiểu dự đoán và các hệ số DCT theo mô hình CABAC

• Lớp TAICBase: cài đặt dự đoán khối

• Unit AICInvColorConversion: cài đặt thuật toán biến đổi không gian màu từ YCbCr sang RGB

• Unit AICInvDCT: cài đặt thuật toán biến đổi DCT ngược

3.1.4 Tìm hiểu c đặt chi tiêt dự đoán khối ài

Thử nghiệm và phân tích kết quả thực hiện các thuật toán

Trong phần này, luận văn sẽ trình bày chi tiết về kết quả đạt được trong việc xây dựng kịch bản thử nghiệm và cài đặt các chức năng mới cho chương trình AIC Tác giả sẽ thực hiện các thử nghiệm, đưa ra kết quả và phân tích đánh giá hiệu năng của thuật toán nén ảnh AIC so với các thuật toán JPEG và JPEG2000, dựa trên những kết quả thử nghiệm đã được thực hiện.

3.2.1 T iêu chí đánh giá các thuật toán được thử nghiệm

Dựa trên các chức năng và mã nguồn của chương trình AIC, luận văn lựa chọn các tiêu chí để phân tích và đánh giá hiệu năng của thuật toán nén ảnh AIC so với các thuật toán nén ảnh chuẩn JPEG và JPEG2000 Tiêu chí chính được xem xét là độ nén, được đánh giá thông qua chỉ số bit per pixel, được tính theo công thức cụ thể.

• CompressedSize: Kích thước ảnh nén(byte)

• FPixelCount: tổng số điểm ảnh trong ảnh gốc (bằng ảnh nén)

Trong chương trình “AIC.exe”, giá trị BPP được tính toán và lưu trong trường FBPP của lớp TFrameDualImage như sau:

Hình 21 3- : Sơ đồ tính độ nén BPP bằng chương trình AIC.exe

(1): được tính trong hàm TFrameDualImage.SetOriginal()

The calculations are performed within the TFrmSave.Preview() function during the preview phase before saving (Save As), or in the TFrmAlgorithmTester.TestAlgorithm() function when testing the algorithm (Compress Algorithm Tester).

(3): được tính trong hàm TFrameDualImage.SetCompressed() để hiển thị giá trị BPP

Theo sơ đồ, giá trị độ nén BPP có thể điều chỉnh gián tiếp thông qua việc thiết lập hệ số Quality, từ đó thay đổi các hệ số trong bảng lượng tử Đối với cả ba thuật toán, hệ số Quality có thể dao động từ 1 đến 100.

Thuật toán nén ảnh AIC được cài đặt với bảng lượng tử tương tự như phần mềm tham khảo IJG JPEG, nhưng điểm khác biệt là AIC áp dụng cùng một giá trị điều chỉnh Q cho tất cả các phần tử trong bảng lượng tử, trong khi JPEG sử dụng các giá trị khác nhau cho từng phần tử.

Tính CompressedSize = Độ dài dòng dữ liệu nén (FStream.Position)

Dữ liệu của ảnh gốc

Dòng dữ liệu nén (FStream)

Thiết lập giá trị Quality

Tính TFrameDualImage.FBPP = (CompressedSize * 8) / FPixelCount

Hình 22 3- : Mối quan hệ giữa hệ số Quality và BPP

Hệ số điều chỉnh được tính trong hàm

TAICBase.InitializeQuantisationTables() theo công thức sau:

=   Với công thức này, khi Quality bằng 1 49 thì Q bằng 5000 102

Khi chỉ số Quality đạt từ 50 đến 100, hệ số Q sẽ giảm từ 100 xuống 0 Điều này cho thấy rằng khi Quality tăng lên, hệ số điều chỉnh Q sẽ giảm theo, dẫn đến giá trị của các hệ số sau khi lượng tử (chia cho hệ số Q) sẽ cao hơn, và mức độ nén đạt được sẽ thấp hơn.

Sau đó, hàm TAICBase.SetQuantisationTable() sẽ tính toán giá trị các hệ số trong bảng lượng tử thuận theo công thức sau:

Tính hệ số điều chỉnh Q

Tính các hệ số trong bảng lượng tử

Giá trị BPP tương ứng

AANScaleFactor là bảng hệ số dùng cho thuật toán tính nhanh IDCT theo phương pháp AA&N và giá trị được tính như sau:

Và bảng này được tính toán sẵn giá trị như sau:

Chất lượng ảnh khách quan: đánh giá bằng độ đo PSNR được tính theo công thức sau:

Trong đó, M: số điểm ảnh theo chiều dài của ảnh bitmap gốc

N: số điểm ảnh theo chiều rộng của ảnh bitmap gốc

S(m,n): giá trị điểm ảnh bitmap gốc tại tọa độ (m,n)

D(m,n): giá trị điểm ảnh nén tại tọa độ (m,n)

Trong chương trình “AIC.exe”, giá trị PSNR được tính toán bởi hàm TFrameDualImage.CalculatePSNR và lưu trong trường FPSNR của lớp TFrameDualImage như sau:

Hình 23 3- : Sơ đồ tính độ đo PSNR bằng chương trình AIC.exe

Chất lượng ảnh chủ quan được đánh giá dựa trên khả năng hiển thị của ảnh khôi phục qua quan sát của con người Độ phức tạp của thuật toán được đánh giá định tính thông qua thời gian thực hiện nén và giải nén ảnh.

SrcBitmap := Dữ liệu bitmap của ảnh gốc DstBitmap := Dữ liệu bitmap của ảnh giải nén

Lặp cho đến khi duyệt qua toàn bộ các điểm ảnh của ảnh gốc

Với mỗi điểm ảnh, tính giá trị

Z := (S – D) Temp:= Z*Z MSE := MSE + Temp MSE := 0

Hình 24 3- : Sơ đồ khối tính độ đo phức tạp thuật toán

Trong đó: Phần màu xám là phần chưa sẵn có trong chương trình AIC.exe gốc

(1): được thực hiện bởi hàm TEvBBitmap SaveToStream () gọi đến của thuật toán nén ảnh của phương pháp tương ứng: TEvBAICFileFormat WriteStream (), TEvBJPGFileFormat WriteStream (), TEvBJP2FileFormat.WriteStream()

(2): được thực hiện bởi hàm TEvBBitmap.LoadFromStream() gọi đến của thuật toán giải nén của phương pháp tương ứng: TEvBAICFileFormat.ReadStream(), TEvBJPGFileFormat.ReadStream(), TEvBJP2FileFormat.ReadStream()

Dữ liệu của ảnh gốc

Dòng dữ liệu nén (FStream)

Thực hiện thuật toán nén

Thực hiện thuật toán giải nén

Dữ liệu của ảnh giải nén

Tính thời gian thực hiện thuật toán nén CompressedTime := T2 – T1 (ms)

T1:= Thời gian hệ thống T2:= Thời gian hệ thống

Tính thời gian thực hiện thuật toán giải nén DeCompressedTime := T2 – T1 (ms)

T2:= Thời gian hệ thống T1:= Thời gian hệ thống

3.2.2 Kịch bản thử nghiệm Để đánh giá hiệu quả nén của các thuật toán AIC, JPEG, JPEG2000 theo các tiêu chí ở trên, tác giả luận văn đã xây dựng các kịch bản thử nghiệm để so sánh chất lượng ảnh của cả ba thuật toán với cùng tỉ số nén trên từng ảnh gốc có các nội dung ảnh khác nhau (ảnh chân dung đơn giản, ảnh phong cảnh phức tạp, ảnh các hình khối đơn giản), có định dạng ảnh khác nhau (ảnh màu 24 bit, ảnh xám 8 bit), có độ phân giải khác nhau (512x512, 64x64, 32x32) và so sánh dải tốc độ nén, thời gian thực hiện của các thuật toán khi điều chỉnh tham số Quality Phần dưới đây là mô tả chi tiết cho các kịch bản thử nghiệm, sử dụng chương trình AIC.exe:

Kịch bản này sử dụng chức năng "Compression Algorithm Tester" trong chương trình AIC để thử nghiệm ba thuật toán nén khác nhau trên cùng một ảnh đầu vào và so sánh tỷ lệ nén của chúng Sau đó, ảnh đầu vào được thay thế bằng một ảnh khác và quy trình này được lặp lại để đánh giá hiệu quả của các thuật toán.

Hình 25 3- : Sơ đồ thực hiện kịch bản 1

Kịch bản này áp dụng chức năng “Compression Algorithm Tester” trong chương trình AIC để thử nghiệm ba thuật toán nén khác nhau trên cùng một ảnh đầu vào, sau đó so sánh chỉ số PSNR giữa các thuật toán Tiếp theo, ảnh đầu vào sẽ được thay thế bằng một ảnh có nội dung tương tự nhưng với độ phân giải khác, và quá trình so sánh sẽ được lặp lại.

Quality=Quality+1 Ảnh đầu vào

Chuyển đổi thành dạng ảnh bitmap

Dòng dữ liệu ảnh nén (Stream)

Tính và lưu BPP cho thuật toán để vẽ đồ thị Quality-BPP

Quality = 100? Đã chạy hết cả ba thuật toán?

Chuyển sang thuật toán nén tiếp theo

Kết thúc và so sánh kết quả

Hình 26 3- : Sơ đồ thực hiện kịch bản 2

Kịch bản này sử dụng chức năng "Compression Algorithm Tester" trong chương trình AIC để kiểm tra ba thuật toán nén với cùng một ảnh đầu vào, so sánh thời gian thực hiện của chúng Tiếp theo, ảnh đầu vào được thay thế bằng một ảnh khác và quy trình được lặp lại như ban đầu.

Chuyển đổi thành dạng ảnh bitmap

Dòng dữ liệu ảnh nén (Stream)

Tính và lưu PSNR cho thuật toán để vẽ đồ thị PSNR-BPP

Quality = 100? Đã chạy hết cả ba thuật toán?

Chuyển sang thuật toán nén tiếp theo

Kết thúc và so sánh kết quả

Hình 27 3- : Sơ đồ thực hiện kịch bản 3 Ảnh đầu vào

Chuyển đổi thành dạng ảnh bitmap

Dòng dữ liệu ảnh nén (Stream)

Tính và lưu thời gian thực hiện nén

Quality = 100? Đã chạy hết cả ba thuật toán?

Chuyển sang thuật toán nén tiếp theo

Kết thúc và so sánh kết quả

Chạy thuật toán giải nén Ảnh khôi phục

Tính và lưu thời gian thực hiện giải nén, thời gian tổng, vẽ đồ thị

Kịch bản này áp dụng chức năng "Save as" để chạy ba thuật toán nén ảnh với cùng một ảnh đầu vào và tốc độ nén đồng nhất, nhằm lưu trữ ảnh nén cùng với các chỉ số BPP, PSNR và thời gian thực hiện Sau đó, tốc độ nén sẽ được điều chỉnh và quy trình này sẽ được thực hiện lại như ban đầu.

Hình 28 3- : Sơ đồ thự hiện kịch bản 4

Kịch bản này sử dụng chức năng "Save as" để chạy ba thuật toán nén ảnh với cùng một tốc độ nén và ảnh đầu vào khác nhau, từ đó lưu trữ ảnh nén cùng các chỉ số BPP, PSNR và thời gian thực hiện Sau đó, tốc độ nén được điều chỉnh và quy trình được lặp lại với các ảnh đầu vào có độ phân giải khác nhau.

Giá trị BPP xác định

Lưu ảnh ở định dạng JPEG

Lưu ảnh ở định dạng JPEG2000

So sánh các độ đo và chất lượng chủ quan của ảnh đã lưu

Lưu ảnh ở định dạng AIC

Hình 29 3- : Sơ đồ thực hiện kịch bản 5

3.2.3 Tiến hành cài đặt chương trình để thực hiện theo các kịch bản thử nghiệm

3.2.3.1 Yêu cầu cài đặt để thử nghiệm chương trình theo kịch bản

Chương trình mã nguồn mở "AIC.exe" ban đầu chỉ hỗ trợ so sánh độ đo PSNR-BPP của ba thuật toán Để thực hiện các kịch bản thử nghiệm như đã mô tả, tác giả luận văn đã tiến hành cài đặt thêm giao diện và tính toán dữ liệu cho các độ đo Quality-BPP và thời gian thực hiện thuật toán Hai yêu cầu cài đặt bổ sung để thực hiện thử nghiệm được trình bày chi tiết dưới đây.

Yêu cầu hiển thị độ đo thời gian thực hiện thuật toán nén bao gồm ba nhãn hiển thị thời gian nén, giải nén và tổng thời gian thực hiện Các nhãn này được thêm vào màn hình "Save Image" và "Compress Algorithm Tester", như hình minh họa dưới đây Ảnh đầu vào có cùng độ phân giải nhưng khác nhau về nội dung.

Giá trị BPP xác định

Lưu ảnh ở định dạng JPEG

Lưu ảnh ở định dạng JPEG2000

So sánh các độ đo và chất lượng chủ quan của ảnh đã lưu

Lưu ảnh ở định dạng AIC

Hình 30 3- : Cài đặt thêm giao diện hiển thị độ đo thời gian thực hiện thuật toán

Thêm chức năng lựa chọn loại độ đo cần so sánh và vẽ đồ thị tương ứng:

Trong màn hình “Compression Algorithm Tester”, hộp chọn các loại độ đo cần so sánh được thêm vào như hình dưới đây:

Hình 31 3- : Giao diện lựa chọn và vẽ đồ thị độ đo tương ứng

3.2.3.2 Cài đặ t chương trình theo yêu cầu thử nghiệm

Chi tiết cài đặt thêm mà luận văn đã thực hiện đối với chương trình AIC được mô tả trong phần dưới đây:

Ngày đăng: 22/01/2024, 17:03

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w