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

(LUẬN văn THẠC sĩ) ứng dụng mã hóa chống lỗi trong truyền video thời gian thực luận văn ths công nghệ thông tin 60 48 15

79 5 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

Định dạng
Số trang 79
Dung lượng 1,28 MB

Cấu trúc

  • I. TỔNG QUAN VỀ VIDEO THỜI GIAN THỰC (12)
    • 1. Video thời gian thực (12)
    • 2. Truyền video thời gian thực theo kiểu streaming (12)
    • 3. Một số ứng dụng video thời gian thực (13)
    • 4. Các giao thức truyền video thời gian thực (13)
  • II. Mã hóa chống lỗi cho truyền video thời gian thực (15)
    • 1. Một số kĩ thuật chống lỗi thực hiện trên bộ mã hóa (15)
    • 2. Một số công cụ chống lỗi của H.264 (17)
  • CHƯƠNG II PHƯƠNG PHÁP NÉN NỘI KHUNG TRONG CHUẨN H.264 (12)
    • I. Tổng quan về nén và giải nén theo chuẩn H.264 (19)
      • 1. Ý tưởng nén video theo chuẩn H.264 (19)
      • 2. Sơ đồ nén và giải nén video trong H.264 (21)
    • II. Nén nội khung trong chuẩn H.264 (25)
      • 1. Chế độ dự đoán nội khung cho block 4x4 luma (25)
      • 2. Chế độ dự đoán nội khung cho block 16x16 luma (30)
      • 4. Chế độ dự đoán nội khung cho thành phần màu [4] (32)
    • III. Redundant picture trong H.264 (33)
  • CHƯƠNG III MÃ HÓA DỰA TRÊN ĐƯỜNG BIÊN (19)
    • I. Sơ đồ mã hóa, giải mã (34)
    • II. Mã hóa I-frame dựa trên đường biên (36)
      • 1. Cách biểu diễn đường biên trên không gian 2 chiều (36)
      • 2. Cách biểu diễn đường biên trong không gian một chiều (37)
        • 2.1 Các định nghĩa (38)
        • 2.2 Mô tả một lộ trình thuận hoặc ngƣợc (41)
        • 2.3 Mô tả một lộ trình (43)
        • 2.4 Path của một lộ trình (44)
      • 3. Các giai đoạn của quá trình mã hóa I-frame dựa trên đường biên (44)
      • 4. Giai đoạn thu nhỏ các khung (45)
      • 5. Giai đoạn phân vùng các khung (45)
        • 5.1 Phân vùng (45)
        • 5.2 Gộp các miền nhỏ (48)
      • 6. Giai đoạn mã hóa đường biên (52)
      • 7. Giai đoạn mã hóa Path và tạo dòng byte (57)
      • 8. Giai đoạn mã hóa addr và tạo dòng byte (58)
      • 9. Giai đoạn tạo dòng byte cho frame (60)
    • III. Quá trình giải mã (61)
      • 1. Giai đoạn tách các dòng byte (61)
      • 2. Giai đoạn khôi phục dòng bit của addr và path (61)
      • 3. Giai đoạn giải mã Path (62)
      • 4. Giai đoạn khôi phục addr (62)
      • 5. Giai đoạn khôi phục các boundary (63)
      • 6. Giai đoạn phân vùng ngƣợc (68)
      • 7. Giai đoạn tái tạo khung (70)
  • CHƯƠNG IV THỰC NGHIỆM (34)
    • I. Xây dựng hệ thống chương trình (72)
    • II. Kết quả thực nghiệm (73)
    • III. Khả năng nâng cao hiệu quả nén (76)

Nội dung

TỔNG QUAN VỀ VIDEO THỜI GIAN THỰC

Video thời gian thực

Video thời gian thực cho phép tường thuật trực tiếp các sự kiện và hội thoại qua video, đồng thời giám sát và điều khiển từ xa Hệ thống này sử dụng các máy thu hình để tạo ra các đoạn video tại những khoảng thời gian nhỏ, phản ánh trực tiếp sự kiện diễn ra Các đoạn video này được nén, mã hóa và truyền đi ngay lập tức theo kiểu streaming Tại nơi nhận, video được giải mã và trình chiếu theo đúng thứ tự, với độ trễ giữa nơi gửi và nhận rất thấp Điều này giúp người dùng theo dõi sự kiện gần như tức thì, cho phép thực hiện các cuộc hội thoại video liên tục, hội nghị trực tuyến, giám sát từ xa và các trò chơi tương tác.

Truyền video thời gian thực theo kiểu streaming

Streaming video là phương pháp truyền phát video bằng cách chia nhỏ video thành nhiều phần, sau đó truyền tải liên tục để tạo thành một dòng dữ liệu Quá trình này bao gồm ba bước cơ bản: chia nhỏ video, truyền tải các phần dữ liệu và giải mã để hiển thị hoặc tạm lưu trữ.

1 Chia nhỏ video thành những phần nhỏ

2 Truyền phát liên tục các phần dữ liệu video

3 Giải mã và hiển thị nội dung phần video nhận đƣợc ở bên nhận trong khi việc phát video vẫn tiếp diễn

Trong video thời gian thực, máy quay liên tục ghi lại các đoạn video, sau đó mã hóa và chia nhỏ chúng thành các phần nhỏ hơn để truyền tải hiệu quả.

Một số ứng dụng video thời gian thực

Video conference là phương thức liên lạc video thời gian thực, cho phép người dùng ở các địa điểm khác nhau giao tiếp, nhìn thấy nhau và chia sẻ dữ liệu, hình ảnh, âm thanh Nó hỗ trợ tổ chức các cuộc họp trực tuyến, nơi các thành viên có thể biểu quyết và trao đổi thông tin Dữ liệu video và âm thanh được truyền trực tiếp, phản ánh sự kiện đang diễn ra theo thời gian thực và hai chiều.

Hệ thống video conference bao gồm các thành phần chính như camera, microphone, màn hình hiển thị, máy tính, thiết bị điều khiển, bộ mã hóa và giải mã, gateway, và Multipoint Conference Unit Trong đó, Multipoint Conference Unit đóng vai trò quan trọng trong việc kết nối các điểm trong video conference đa điểm.

Gọi Điện Thoại Có Hình (Video phone)

Dịch vụ video phone cho phép người dùng điện thoại thực hiện cuộc gọi có hình ảnh, giúp họ vừa nghe vừa nhìn thấy hình ảnh thực của người đối thoại.

Giám Sát Từ Xa Bằng Video (Remote monitoring video)

Giám sát từ xa được thực hiện thông qua việc truyền video thời gian thực từ hiện trường về trung tâm giám sát Tại trung tâm này, người dùng có thể gửi lệnh điều khiển và phản hồi tới hiện trường, tùy thuộc vào hệ thống.

Truyền phát trực tiếp video và âm thanh từ các sự kiện đang diễn ra, như tường thuật trực tiếp trận đấu bóng hoặc buổi biểu diễn, mang đến trải nghiệm sống động và hấp dẫn cho người xem.

Các giao thức truyền video thời gian thực

Giao thức RTP (Real-time Transport Protocol) là công cụ quan trọng trong việc vận chuyển dữ liệu thời gian thực như video và âm thanh RTP cung cấp các dịch vụ như gán nhãn thời gian, đánh số thứ tự gói và xác định tải trọng, đồng thời hỗ trợ truyền phát dữ liệu đến nhiều đích qua multicast Mặc dù RTP thường hoạt động trên giao thức UDP, nó không đảm bảo việc phân phối dữ liệu kịp thời và không cung cấp cơ chế để đảm bảo thứ tự gói Tuy nhiên, thông tin về số thứ tự gói cho phép bên nhận khôi phục thứ tự đúng RTP cung cấp các dịch vụ cơ bản cho ứng dụng truyền video và âm thanh thời gian thực, cho phép các ứng dụng cụ thể bổ sung thêm dịch vụ phù hợp với nhu cầu RTP được thiết kế độc lập với tầng mạng và tầng giao vận bên dưới, đồng thời hỗ trợ việc sử dụng các mixer và translator.

Giao thức RTCP (Real-time Control Protocol) hỗ trợ cho giao thức RTP bằng cách vận chuyển các gói tin điều khiển song song với các gói tin dữ liệu của RTP Chức năng chính của RTCP là thu nhận phản hồi về chất lượng dịch vụ RTP và thăm dò các thành viên tham gia phiên làm việc Các gói tin RTCP được gửi định kỳ từ máy thu và máy phát, báo cáo các thống kê như số gói nhận được, số gói mất, và độ trễ Thông qua thông tin này, máy phát có thể điều chỉnh quá trình truyền phát dữ liệu một cách hiệu quả.

Giao thức truyền phát thời gian thực (RTSP) là một giao thức tầng ứng dụng được thiết kế để điều khiển việc truyền dữ liệu thời gian thực, độc lập với các giao thức tầng thấp hơn RTSP hoạt động như một cơ chế điều khiển mạng từ xa, cho phép thiết lập và quản lý nhiều luồng media thời gian thực mà không trực tiếp truyền tải dữ liệu media Trong RTSP, máy chủ duy trì một phiên làm việc xác định bởi một định danh, trong đó máy khách có thể gửi các gói tin yêu cầu thông qua nhiều kết nối truyền thông đáng tin cậy (TCP) và không đáng tin cậy (UDP) đến máy chủ.

Giao thức Đặt trước Tài nguyên (RSVP) là một giao thức điều khiển mạng, cho phép yêu cầu chất lượng dịch vụ cho dòng dữ liệu cuối RSVP không phải là giao thức định tuyến, mà chủ yếu thiết lập, duy trì và hủy bỏ đường truyền, cũng như thông báo lỗi Khi một nút gửi dữ liệu, nó sẽ truyền một thông điệp qua các nút trung gian đến máy nhận, mô tả các đặc điểm lưu lượng và thông tin về các nút trung gian Dựa trên thông tin này, nút nhận sẽ gửi một thông điệp đăng ký tài nguyên; nếu thành công, nút gửi sẽ bắt đầu truyền dữ liệu Mỗi phiên làm việc của RSVP được xác định bởi các tham số như địa chỉ IP nguồn, địa chỉ IP đích, cổng nguồn và cổng đích Việc đặt trước tài nguyên của RSVP cho phép hoạt động tương tự như chuyển mạch kênh trên mạng chuyển mạch gói, và thiết lập RSVP sẽ hết hiệu lực sau một khoảng thời gian nếu không được làm tươi định kỳ.

Mã hóa chống lỗi cho truyền video thời gian thực

Một số kĩ thuật chống lỗi thực hiện trên bộ mã hóa

Forward error correction là kỹ thuật bổ sung dữ liệu trước khi truyền phát, giúp khôi phục dữ liệu bị mất hoặc hư hại Khi xảy ra sự cố, các dữ liệu bổ sung này cho phép phục hồi thông tin gốc một cách hiệu quả.

Video được mã hóa thành các dòng bit khác nhau gọi là các layer, trong đó base layer cung cấp chất lượng hình ảnh và âm thanh cơ bản nhưng chấp nhận được Các enhancement layer có thể kết hợp với base layer để cải thiện chất lượng hình ảnh, cho phép tinh chỉnh và nâng cao trải nghiệm xem Các layer này có thể được truyền phát đồng thời trong môi trường mạng không đồng nhất, như trong trường hợp truyền phát multicast từ server đến các thiết bị cuối như máy tính, điện thoại di động và ti vi, mỗi thiết bị có yêu cầu chất lượng khác nhau Người nhận có thể chọn và giải mã các layer phù hợp với khả năng xử lý, năng lượng (đối với thiết bị di động), độ phân giải hiển thị và điều kiện mạng Nếu chỉ có base layer đến nơi nhận, video vẫn có thể được giải mã và hiển thị, nhưng với chất lượng không cao Số lượng layer đến nơi nhận càng nhiều, chất lượng video sau khi giải mã sẽ càng tốt hơn.

Có ba loại mã hóa video có khả năng mở rộng (scalable video coding) chính: scalability về không gian, scalability về thời gian và scalability về chất lượng (SNR) Scalability về không gian cho phép mã hóa video thành nhiều lớp tương ứng với các độ phân giải hình ảnh khác nhau Scalability về thời gian tạo ra các lớp với tốc độ khung hình khác nhau Cuối cùng, scalability về SNR cung cấp các lớp khác nhau về tỷ lệ tín hiệu trên nhiễu (SNR) trong khi vẫn giữ nguyên tốc độ khung hình và độ phân giải hình ảnh.

Scalable video coding (SVC) cho phép triển khai cơ chế bảo vệ dữ liệu không công bằng, giúp bảo vệ chặt chẽ hơn cho dữ liệu quan trọng so với các dữ liệu khác Trong cấu trúc này, lớp cơ bản (base layer) có thể được bảo vệ tốt hơn so với các lớp khác, đảm bảo tính toàn vẹn và chất lượng của thông tin quan trọng.

Mã Hóa Đa Mô Tả (MDC) là phương pháp mã hóa video cho phép tạo ra nhiều dòng bit độc lập, gọi là description, có thể được truyền qua các kênh khác nhau Mỗi description mang tầm quan trọng khác nhau; khi chỉ một description đến nơi nhận, video vẫn có thể được tái tạo với chất lượng chấp nhận được Tuy nhiên, khi nhận được nhiều description, chúng có thể được kết hợp để cải thiện chất lượng video tái tạo.

Khả năng chống lỗi của MDC được hình thành tự nhiên nhờ xác suất mất cùng một phần dữ liệu trong cùng một frame trên tất cả các description rất thấp Khi một gói tin bị mất, gói tin tương ứng trong description khác sẽ chứa một biểu diễn khác của dữ liệu, giúp khôi phục video.

PHƯƠNG PHÁP NÉN NỘI KHUNG TRONG CHUẨN H.264

Tổng quan về nén và giải nén theo chuẩn H.264

1 Ý tưởng nén video theo chuẩn H.264 Ý tưởng của việc nén video theo chuẩn H.264 là chia video thô ra thành các nhóm frame Trong mỗi nhóm, có một I-frame, những frame còn lại thuộc loại P- frame hoặc B-frame I-frame được nén dựa vào sự tương đồng của các khối điểm ảnh gần nhau bên trong nó P-frame và B-frame đƣợc nén bằng cách khai thác sự tương đối giống nhau giữa các khối điểm ảnh của nó với các khối điểm ảnh tương ứng ở frame khác Nghĩa là tìm cho mỗi khối điểm ảnh một khối giống với nó nhất ở một frame khác Mỗi khối điểm ảnh có thể có kích thước là 4x4, 8x8, 16x16, 16x8, 8x16, 4x8, 8x4…trong đó, khối 16x16 đƣợc gọi là một macroblock

Quá trình mã hóa dự đoán trong video bao gồm việc khai thác các đặc điểm tương đồng giữa các khối trong I-frame và giữa các khối trong P, B-frame với các khối trong frame khác Kết quả của quá trình này là một frame dự đoán gần giống với frame đang mã hóa Bằng cách lấy frame đang mã hóa trừ đi frame dự đoán, ta thu được một residual frame Các khối điểm ảnh của residual frame sau đó được biến đổi, lượng tử hóa và mã hóa mà không mất mát thông tin Cuối cùng, dòng bít thu được bao gồm thông tin mã hóa frame dự đoán, thông tin mã hóa frame dư thừa và các thông tin khác.

Dưới đây là một số ví dụ về cấu trúc của một nhóm frame

Hình 2.1: cấu trúc nhóm frame I-PPPP [4]

Trong cấu trúc nhóm frame ở hình 2.1 chỉ có I frame và các P-frame P-frame

P-frame 1 được mã hóa dựa trên I-frame 0, trong đó mỗi khối điểm ảnh trong P-frame 1 được tìm kiếm khối tương đồng nhất ở I-frame 0, được gọi là frame tham chiếu Khi thay thế các khối điểm ảnh trong P-frame 1 bằng các khối tương ứng từ I-frame 0, ta thu được frame dự đoán P1 cho P-frame.

1 Một cách tương tự, P-frame 2 được mã hóa dự đoán từ P-frame 1, P-frame 3 đƣợc mã hóa dự đoán từ P-frame 2…

Hình 2.2: cấu trúc nhóm frame IBBPBBPBBI [4]

Trong cấu trúc nhóm, P-frame 3 được mã hóa dự đoán từ I-frame 0, trong khi P-frame 6 được mã hóa từ P-frame 3 Mỗi P-frame chỉ có một frame tham chiếu, ngược lại với B-frame, mỗi B-frame có hai frame tham chiếu Cụ thể, B-frame 1 tham chiếu đến I-frame 0 và P-frame 3, còn B-frame 4 tham chiếu đến P-frame 3 và P-frame 6 Tương tự, các B-frame khác cũng có cấu trúc tham chiếu như vậy I-frame 12 là frame của nhóm tiếp theo.

Hình 2.3: cấu trúc nhóm frame IPPP nhiều frame tham chiếu [4]

Trong cấu trúc nhóm như hình 2.3, mỗi P-frame sử dụng tất cả các frame trước đó làm frame tham chiếu Cấu trúc này mang lại hiệu suất nén tốt hơn so với cấu trúc ở hình 2.1, nhưng đi kèm với độ phức tạp tính toán cao hơn và yêu cầu bộ nhớ đệm lớn hơn cho quá trình nén và giải nén.

Hình 2.4: cấu trúc nhóm frame phân cấp B-frame [4]

Trong cấu trúc nhóm frame, chỉ sử dụng I và B frame với sự phân cấp rõ ràng Cấp 1 bao gồm các I-frame I0 và I12, là frame tham chiếu cho B-frame B6 Cấp 2 chỉ có B-frame B6, trong khi cấp 3 gồm B-frame B3 và B9, với B3 tham chiếu đến I0 và B6, còn B9 tham chiếu đến B6 và I12 Cuối cùng, cấp 4 bao gồm các B-frame B1, B2, B4, B5, B7, B8, B10, và B11, mỗi frame đều có 2 frame tham chiếu như đã chỉ ra trong hình vẽ.

2 Sơ đồ nén và giải nén video trong H.264

Trong sơ đồ nén và giải nén, bộ mã hóa nén video thành dòng bít để lưu trữ hoặc truyền tải Quy trình nén video bao gồm các giai đoạn chính như mã hóa dự đoán, biến đổi và mã hóa entropy Ngược lại, bộ giải mã thực hiện giải nén dòng bít trở lại thành video thông qua các giai đoạn giải mã entropy, biến đổi ngược và tái tạo video.

Hình 2.5: sơ đồ nén và giải nén của H.264 [4]

Quá trình nén và giải nén video diễn ra thông qua việc nén và giải nén từng khung hình, như minh họa trong hình 2.6 Cụ thể, một khung hình A được đưa vào bộ mã hóa để thực hiện nén, từ đó tạo ra một đoạn bit nén tương ứng.

Bộ mã hóa tái tạo frame A’ từ đoạn bit và lưu trữ vào vùng nhớ đệm gọi là coded picture buffer (CPB) để mã hóa dự đoán các frame tiếp theo Khi nhận dòng bít nén, bộ giải mã giải nén và tái tạo frame A’ từ đoạn bit tương ứng Frame A’ được trình chiếu và lưu trữ trong decoded picture buffer (DPB) để hỗ trợ giải nén các đoạn bit cho các frame tiếp theo Hình 2.6 mô tả sơ lược quá trình nén và giải nén với đơn vị là frame, nhưng cần các sơ đồ chi tiết hơn như trong hình 2.7 và 2.8 để minh họa rõ hơn về cách mã hóa và giải mã các khối điểm ảnh trong frame.

Hình 2.6: sơ đồ nén và giải nén theo đơn vị frame trong chuẩn H.264 [4]

Hình 2.7 mô tả quá trình mã hóa video, trong đó mỗi frame được chia thành các macroblock (MB) và sau đó là các submacroblock Bộ mã hóa thực hiện mã hóa dự đoán cho mỗi khối điểm ảnh, tạo ra một block dự đoán Block sai khác được hình thành bằng cách lấy block hiện hành trừ đi block dự đoán, sau đó được biến đổi, lượng tử hóa và mã hóa entropy Từ kết quả này, quá trình lượng tử hóa ngược và biến đổi ngược được thực hiện để tái tạo block sai khác Cuối cùng, block tái tạo kết hợp với block dự đoán để tạo ra block tái tạo, được sử dụng cho mã hóa nội khung của block tiếp theo và tạo thành frame tái tạo, đóng vai trò là frame tham chiếu cho các frame sau.

Có hai hình thức mã hóa dự đoán trong video là mã hóa nội khung (intra-coding) và mã hóa liên khung (inter-coding) Mã hóa nội khung tập trung vào việc khai thác sự tương đồng giữa các khối điểm ảnh trong cùng một frame, cho phép dự đoán giá trị của một khối từ các khối lân cận Trong khi đó, mã hóa liên khung sử dụng sự tương đồng giữa các frame liên tiếp, giúp tìm kiếm khối điểm ảnh phù hợp nhất từ frame tham chiếu cho khối đang được mã hóa.

Hình 2.7 sơ đồ một bộ mã hóa video [5]

Trong bộ giải mã, quá trình giải mã entropy và lượng tử hóa ngược được thực hiện để tái tạo block sai khác (decoded residual MB) Đồng thời, tiến trình dự đoán tạo ra block dự đoán từ block đã giải mã trong cùng một frame hoặc trong frame tham chiếu đã giải mã trước đó Block dự đoán và block sai khác được kết hợp để tạo ra một block mới (decoded MB), được sử dụng cho việc giải mã nội khung của các block tiếp theo và tạo ra frame đã giải mã Frame đã giải mã có thể được trình chiếu và lưu trữ vào bộ nhớ đệm để phục vụ cho việc giải mã các P, B frame.

Hình 2.8: sơ đồ một bộ giải mã video [4]

Nén nội khung trong chuẩn H.264

Nén nội khung, hay intra coding, là phương pháp mã hóa một frame bằng cách khai thác sự tương đồng giữa các khối điểm ảnh trong cùng một frame Quá trình này được thực hiện thông qua việc mã hóa từng block mẫu trong các thành phần luma và chroma, với kích thước block có thể là 16x16, 8x8 hoặc 4x4 Đối với một block P trong thành phần luma của I-frame F, block dự đoán P1 được hình thành từ các block đã giải mã gần kề Sự khác biệt giữa P và P1 được gọi là P2, sau đó P2 được biến đổi và lượng tử hóa để thu được thông tin P2’ Thông tin này được mã hóa entropy, tạo ra một đoạn bit, và được lượng tử hóa ngược để tạo ra block P3 Cuối cùng, P3 được kết hợp với P1 để tạo ra block P4, được bổ sung vào frame F1, bao gồm các block đã giải mã của thành phần luma Quá trình này cũng áp dụng tương tự cho mỗi thành phần chroma của I-frame F.

Có 9 chế độ dự đoán nội khung cho một block 4x4 luma, 9 chế độ cho block 8x8 luma, 4 chế độ cho block 16x16 luma, 4 chế độ cho block chroma Hai thành phần màu của một MB lumaluôn luôn sử dụng cùng một chế độ Mỗi chế độ xác định cách thức xây dựng block dự đoán P1 từ những mẫu của các block kề cận đã mã hóa trước Khi mã hóa một block, chỉ một chế độ trong các chế độ khả dụng đƣợc chọn để dự đoán block P1 Thông tin về việc chọn chế độ nào cũng đƣợc mã hóa trong dòng bít nhằm phục vụ cho quá trình giải mã

1 Chế độ dự đoán nội khung cho block 4x4 luma [6]

Giả sử các mẫu của block dự đoán P1 bao gồm a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, trong đó P1 là một block 4x4 luma Các mẫu M, A, B, C, D, E, F, G, H, I, J, K, L là những mẫu của các block đã giải mã nằm kề cận Để trình bày thuận tiện, các mẫu a đến p được sắp xếp vào một mảng 2 chiều Q, với chỉ số cột x từ 0 đến 3 và chỉ số dòng y từ 0 đến 3 Cụ thể, a = Q[0,0], b = Q[1,0], c = Q[2,0], d = Q[3,0], e = Q[0,1], f = Q[1,1], g = Q[2,1], …, m = Q[0,3], n = Q[1,3], o = Q[2,3], p = Q[3,3] Các mẫu M, A, B, C, D, E, F, G, H được đặt trên Q với chỉ số dòng -1 và chỉ số cột từ -1 đến 7 Ví dụ, M = Q[-1,-1], A = Q[0,-1], B = Q[1,-1], C = Q[2,-1], …, H = Q[7,-1] Đồng thời, các mẫu I, J, K, L được sắp xếp trên Q với chỉ số cột -1 và chỉ số dòng từ 0 đến 3, cụ thể là I = Q[-1,0], J = Q[-1,1], K = Q[-1,2], L = Q[-1,3] Hình 2.10 minh họa cách sắp đặt này.

Hình 2.9: các mẫu của khối dự đoán [4]

Có 9 chế độ xác định giá trị của các mẫu a, b, c….n, o, p bằng cách ngoại suy từ các mẫu A, B, C, D, E, F, G, H, I, J, K, L, M Trong việc mô tả các mode, phép toán ‘/’ là phép chia lấy phần nguyên, phép toán ‘.’ là phép nhân, phép toán ‘>>’ là phép dịch phải bit Các mode đƣợc mô tả một cách trực quan trong hình 2.11 và tiếp theo là sự mô tả cụ thể

Hình 2.11: các chế độ dự đoán nội khung cho 4x4 block luma [4]

Mode 0 : Vertical mode Các mẫu a, b, c…n, o, p đƣợc ngoại suy từ các mẫu A,

B, C, D theo chiều thẳng đứng từ trên xuống Tức là a = e = i = m = A; b = f = j = n = B; c = g = k = o = C; d = h= l = p = D

Mode 0 chỉ đƣợc thực hiện khi các mẫu A, B, C, D là khả dụng, tức là đã đƣợc giải mã

Mode 1 : Horizontal mode.Các mẫu a, b, c…n, o, p đƣợc ngoại suy từ các mẫu

I, J, K, L theo chiều ngang từ trái qua phải Cụ thể là: a = b = c= d = I; e = f = g = h = J; i = j = k = l = K; m = n = o = p = L

Mode 1 chỉ đƣợc thực hiện khi các mẫu I, J, K, L là khả dụng

Mode 2 : DC mode Các mẫu a, b, c…n, o, p đƣợc dự đoán bằng giá trị trung bình của các mẫu A, B, C, D, I, J, K, L Cụ thể là:

Nếu tất cả các mẫu A, B, C, D, I, J, K, L đều khả dụng thì tất các các mẫu a, b, c, d…m, n, o, p bằng nhau và bằng trung bình cộng của A, B, C, D, I, J, K, L a, b, c, d,…m, n, o, p = (A+B+C+D+I+J+K+L) / 8

Nếu tất cả các mẫu I, J, K, L khả dụng, và có bất kì mẫu nào trong các mẫu A,

B, C, D không khả dụng thì các mẫu a, b, c,…m, n, o, p bằng nhau và bằng trung bình cộng của các mẫu I, J, K, L a, b, c, …m, n, o, p = (I+J+K+L)/4

Nếu tất cả các mẫu A, B, C, D đều khả dụng nhưng có ít nhất một mẫu trong các mẫu I, J, K, L không khả dụng, thì các mẫu a, b, c, d,…m, n, o, p sẽ bằng nhau và được tính bằng trung bình cộng của A, B, C, D Cụ thể, a, b, c, d,…m, n, o, p = (A+B+C+D) / 4.

Nếu trong số các mẫu A, B, C, D có vài mẫu không khả dụng, đồng thời trong số các mẫu I, J, K, L có vài mẫu không khả dụng thì: a, b, c…m, n, o, p= 128

Mode 3 : Diagonal down-left Các mẫu a, b, c…m, n, o, p đƣợc ngoại suy từ các mẫu A, B, C, D, E, F, G, H Để tiện mô tả, ta sử dụng mảng hai chiều Q để biểu diễn các mẫu nhƣ hình 2.10 Mỗi ô Q(x, y),x là chỉ số cột, x = 0, 1, 2, 3, y là chỉ số dòng, y = 0, 1, 2, 3, đƣợc xác định nhƣ sau:

Mode 4 : Diagonal down-right Các mẫu a, b, c,…m, n, o, p đƣợc ngoại suy từ các mẫu A, B, C, D, I, J, K, L, M Sử dụng mảng 2 chiều Q để mô tả nhƣ đã trình bày ở mode 3, Mỗi ô Q(x,y) đƣợc xác định nhƣ sau:

Nếu x > y thì: Q[x, y] = (Q[x-y-2, -1] + 2.Q[x-y-1, -1] + Q[x-y, -1] + 2) / 4; Nếu x < y thì: Q[x,y] = (Q[-1, y-x-2] + 2.Q[-1, y-x-1] + Q[-1,y-x] + 2) / 4; Nếu x = y thì: Q[x,y] = (Q[0,-1] + 2.Q[-1,-1] + Q[-1,0] + 2) / 4;

Mode 5 : Vertical-right Các mẫu a, b, c…m, n, o, p đƣợc ngoại suy từ các mẫu

A, B, C, D, I, J, K, L, M Nếu đặt zVR= 2.x – y, thì các ô Q(x,y) đƣợc xác định theo zVR nhƣ sau:

Nếu zVR = 1, 3, 5 thì Q[x,y] =(Q[x-(y >>1)- 2,-1] + 2.Q[x-(y >>1)-1, -1] + Q[x-(y >> 1), -1] +2) /4; Nếu zVR = -1 thì

Mode 6 : Horizontal-down Các mẫu a, b, c,…n, o, p đƣợc ngoại suy từ các mẫu A, B, C, D, I, J, K, L, M Nếu đặt zVR = 2.y – x thì các ô Q[x,y] đƣợc xác định theo zHD nhƣ sau:

Nếu zHD= 1, 3, 5 thì Q[x,y]= (Q[-1,y-(x>>1)-2] + 2.Q[-1,y-(x>>1)-1]+ Q[-1,y-(x>>1)] +2) / 4; Nếu zHD= -1 thì

Mode 7 : Vertical-left Các mẫu a, b, c, d…n, o, p đƣợc ngoại suy từ các mẫu

A, B, C, D, E, F, G, H Các ô Q[x,y] đƣợc xác định nhƣ sau:

Mode 8 : Horizontal-up Các mẫu a, b, c,…n, o, p đƣợc ngoại suy từ các mẫu I,

J, K, L Nếu đặt zHU= x+2.y thì các ô Q[x,y] đƣợc xác định theo zHU nhƣ sau: Nếu zHU = 0, 2 hoặc 4 thì

Nếu zHU = 1 hoặc 3 thì Q[x,y] = (Q[-1,y+(x >>1)]+2.Q[-1, y+(x>>1)+1]+Q[-1,y+(x>>1)+2]+2) / 4 Nếu zHU = 5 thì

2 Chế độ dự đoán nội khung cho block 16x16 luma [6]

Trong hình 2.12, chúng ta xem xét các mẫu trong block dự đoán 16x16 luma Để trình bày rõ ràng, các mẫu của khối này được đánh số theo dòng từ y = 0 đến 15 Quy trình dự đoán sử dụng các mẫu của các khối kề cận đã được giải mã, bao gồm 16 ô trong dòng -1 (ô 0 đến 15) và 16 ô trong cột.

1 (ô 0, 1, 2…15) nhƣ biểu diễn trong hình 2.12

Có 4 chế độ dự đoán cho block 16x16 luma, bao gồm:

Mode 0 : Vertical Các mẫu trong block dự đoán đƣợc ngoại suy từ các mẫu đã giải mã nằm phía trên block Theo đó, các mẫu cần dự đoán là:

Mode 1 : Horizontal Các mẫu trong block dự đoán đƣợc ngoại suy từ các mẫu đã giải mã nằm phía bên trái của block Theo đó các mẫu cần đƣợc dự đoán là: L[x,y] = L[-1, y] với x, y = 0, 1, 2…15

Mode 2 : DC.Các mẫu đƣợc dự đoán là trung bình cộng của những mẫu lân cận đã giải mã Gọi T1 là tổng 16 mẫu đã giải mã trên dòng -1, T2 là tổng 16 mẫu đã giải mã trên cột -1

Nếu cả 16 ô trên dòng -1 và 16 ô trên cột -1 đều khả dụng thì các mẫu của block dự đoán đƣợc xác định nhƣ sau:

Nếu một ô trong số 16 ô trên dòng -1 không khả dụng nhưng 16 ô trên cột -1 đều khả dụng, các mẫu của block dự đoán L[x, y] sẽ được xác định theo cách sau:

Nếu một ô trong số 16 ô trên cột -1 không khả dụng, trong khi tất cả 16 ô trên dòng -1 đều khả dụng, thì các mẫu của block dự đoán sẽ được xác định bởi L[x,y].

Nếu trong 16 ô ở dòng -1 và cột -1 có một số ô không khả dụng, các mẫu L[x,y] của block dự đoán sẽ được xác định bởi công thức: L[x,y] = 128, với x, y nhận giá trị từ 0 đến 15.

Mode 3 : Plane Các mẫu trong block dự đoán đƣợc ngoại suy từ các mẫu trên dòng -1, cột -1, và ô L[-1, -1] (theo cách mô tả ở nhƣ đã trình bày ở mode DC) L[x,y] với x, y = 0, 1, 2…15 là các mẫu của khối dự đoán

H = 7 𝑥′ =0 𝑥 ′ + 1 (𝐿 8 + 𝑥 ′ , −1 − 𝐿 6 − 𝑥 ′ , −1 ) Clip1 là môt hàm đƣợc xác định nhƣ sau:

Clip3(0, 255, x) = x trong các trường hợp còn lại

3 Chế độ dự đoán nội khung cho block 8x8 luma

Mỗi khối 8x8 của thành phần luma được dự đoán bằng cách sử dụng một trong chín chế độ dự đoán nội khung Chín chế độ này tương tự như các chế độ dự đoán nội khung cho khối 4x4 luma Dự đoán nội khung cho khối 8x8 luma chỉ được áp dụng trong các profile cao.

4 Chế độ dự đoán nội khung cho thành phần màu [4]

MÃ HÓA DỰA TRÊN ĐƯỜNG BIÊN

Sơ đồ mã hóa, giải mã

Mã hóa dựa trên đường biên được áp dụng để giảm thiểu sự dư thừa không gian trong I-frame Phương pháp này được phát triển dựa trên ý tưởng của phương pháp chain coding từ tài liệu tham khảo [1].

I- frame được tách ra thành khung luma, và 2 khung tương ứng với 2 thành phần màu của nó Phương pháp mã hóa dựa trên đường biên trình bày ở đây được áp dụng cho mỗi khung một cách riêng rẽ Ý tưởng của phương pháp mã hóa này là: xuất phát từ một điểm (d, c) trên khung đang xét (luma, hoặc chroma), loang qua tất cả các điểm kề cạnh với nó và cac giá trị (độ sáng hay màu) dao động xung quanh giá trị của điểm (d, c) Kết quả của việc loang nhƣ thế là xác định đƣợc một miền trên khung Giá trị trung bình của các điểm trong miền đƣợc gọi là seed Seed đóng vai trò là giá trị đại diện cho cả miền Khi giải mã, giá trị của các điểm trong miền được thay thế bởi seed tương ứng của miền đó.Mỗi điểm trong khung chỉ thuộc về một miền duy nhất nào đó Một điểm đã thuộc về một miền thì không đƣợc chọn làm điểm xuất phát

Các điểm xuất phát được quét từ trái qua phải và từ trên xuống dưới, sau đó thực hiện quá trình loang tại mỗi điểm Kết quả là khung được phân hóa thành các miền với đường biên chung giữa chúng Một mảng 2 chiều được sử dụng để thể hiện các đường biên này.

Từ mảng 2 chiều boundary, đường biên được mô tả thành các path, bắt đầu từ một cạnh của đường biên và lan ra theo các nhánh đến các cạnh kề đỉnh Một path thể hiện hành trình đi thẳng, rẽ trái, rẽ phải, hoặc gặp các điểm rẽ nhánh như ngã ba, ngã tư, ngã năm Nó bao gồm các kí hiệu cho việc bắt đầu và kết thúc các nhánh, cũng như xác định các cạnh trên và dưới của đường đi.

Dãy các path đƣợc mã hóa bằng thuật toán mã hóa số học hoặc huffman.Sơ đồ mã hóa đƣợc thể hiện nhƣ hình 3.1

Hình 3.1 Sơ đồ mã hóa I-frame dựa trên đường biên

Dòng byte sau khi mã hóa một I-frame chứa thông tin về các seed của từng khung, điểm bắt đầu của các path trên mỗi khung, và thông tin mã hóa các path.

Quá trình giải mã diễn ra theo quy trình ngược lại, như mô tả trong Hình 3.2 Từ dòng byte mã hóa, các dãy byte được tách biệt thành các phần riêng biệt, bao gồm dãy byte mô tả seed của khung Y, U và V, cùng với dãy byte mô tả các path của từng khung Ngoài ra, còn có các dãy byte mô tả tọa độ điểm bắt đầu của path trên các khung Y, U và V.

Quá trình giải mã lộ trình bắt đầu bằng việc khôi phục tọa độ các điểm khởi đầu và đường biên trên các khung Y, U, V Segmentation ngược sử dụng thông tin về đường biên giữa các vùng và seed của từng vùng để tạo ra các khung Y1, U1, V1, trong đó các điểm thuộc cùng một vùng sẽ có giá trị seed tương ứng Cuối cùng, các khung Y, U, V được khôi phục từ các khung Y1, U1, V1.

Hình 3.2 Quá trình giải mã

Mã hóa I-frame dựa trên đường biên

1 Cách biểu diễn đường biên trên không gian 2 chiều

Khi biểu diễn đường biên trên mảng 2 chiều, cần tuân thủ quy tắc về đường biên đơn, theo đó nếu một cạnh của đường biên đi qua hai ô kề nhau, chỉ có một ô trong số đó được phép biểu diễn cạnh.

Nếu một đường biên đi qua cạnh trên của ô thì giá trị của ô đó được cộng thêm

Nếu đường biên đi qua cạnh phải của một ô thì giá trị của ô đó được cộng thêm 4

Nếu đường biên đi qua cạnh dưới của một ô thì giá trị của ô đó được cộng thêm 2

Nếu đường biên đi qua cạnh trái của một ô thì giá trị của ô đó được công thêm

Nếu một ô không có đường biên đi qua bất kì cạnh nào của nó, thì giá trị của ô đó bằng 0

Nếu ô (i, j) có giá trị 12, điều này có nghĩa là đường biên đi qua cạnh trên và cạnh phải của ô đó Để đảm bảo ràng buộc về đường biên đơn, đường biên không được đi qua cạnh dưới của ô (i-1, j) và cạnh trái của ô (i, j+1) Ngược lại, nếu ô (i, j) có giá trị 7, đường biên sẽ đi qua cạnh phải, cạnh dưới và cạnh trái của ô Để thỏa mãn ràng buộc về đường biên đơn trong trường hợp này, đường biên không được đi qua cạnh trên của ô (i+1, j), cạnh trái của ô (i, j+1) và cạnh phải của ô (i, j-1).

Giả sử một khung có kích thước là 8x8, được phân ra thành các vùng A, B, C,

D như hình 3.3 thì đường biên được biểu diễn trên mảng 2 chiều boundary như hình 3.4

Hình 3.3: ví dụ về các miền

Hình 3.4: ví dụ về biểu diễn đường biên trên mảng 2 chiều

2 Cách biểu diễn đường biên trong không gian một chiều

Một ma trận đường biên có thể được biểu diễn bởi 2 dãy: dãy các addr và dãy các Path

2.1 Các định nghĩa Định nghĩa 3.1: định nghĩa về cạnh đường biên

Một cạnh đường biên là một cạnh nằm trên ô mà đường biên đi qua Thông tin liên quan đến một cạnh đường biên bao gồm chỉ số dòng, chỉ số cột, và chỉ số cạnh.

Một cạnh đường biên có thể được mô tả bằng bộ ba số [d, c, c1], trong đó d và c là chỉ số dòng và cột của ô chứa cạnh, còn c1 chỉ ra loại cạnh đó Cụ thể, c1=2 tương ứng với cạnh trên, c1=3 với cạnh phải, c1=4 với cạnh dưới, và c1=5 với cạnh trái Đây là định nghĩa về một cạnh đường biên có hướng.

Một cạnh đường biên có hướng không chỉ là một cạnh đơn thuần mà còn mang thông tin về chiều di chuyển, bao gồm hướng thuận và ngược Cạnh đường biên có hướng được biểu diễn bởi bộ 4 số [d, c, c1, h], trong đó h chỉ ra hướng: h=0 cho hướng thuận và h=1 cho hướng ngược Hướng thuận là chiều di chuyển từ trên xuống dưới hoặc từ trái sang phải, trong khi hướng ngược là từ dưới lên trên hoặc từ phải sang trái Ví dụ, bộ 4 số [2, 2, 3, 0] thể hiện cạnh đường biên có hướng bên phải của ô tại dòng 2, cột 2, với hướng thuận Tóm lại, một cạnh đường biên có hướng là một đoạn thẳng có định hướng với điểm đầu và điểm cuối rõ ràng.

Một cạnh đường biên a = [d, c, c1] chứa 2 cạnh đường biên có hướng là b= [d, c, c1, 0] và C= [d, c, c1, 1] Định nghĩa 3.3: định nghĩa về 2 cạnh đường biên kề cận nhau

Hai cạnh đường biên được coi là kề cận nhau nếu chúng chia sẻ một đầu mút Ví dụ, trong hình 3.4, cạnh đường biên [1, 2, 3] và [2, 2, 3] là kề cận nhau Định nghĩa 3.4 nêu rõ về cạnh đường biên có hướng kề cận và cạnh trước.

Xét 2 cạnh đường biên có hướng a, và b b là kề cận của a nếu điểm cuối của a trùng với điểm đầu của b Khi đó, a được gọi là cạnh trước của b, và b được gọi là cạnh sau của a Ví dụ, trong hình 3.4, nếu a là [2, 5, 4, 0] thì cạnh đường biên có hướng kề cận của nó là b= [2, 6, 4, 0] và c = [3, 5, 3, 0] Định nghĩa 3.5: định nghĩa về hướng đi

Hướng đi là chỉ dẫn giúp di chuyển từ cạnh đường biên này sang cạnh đường biên kề cận, bao gồm các chỉ dẫn như đi thẳng, rẽ trái hoặc rẽ phải.

2 tương ứng với hướng đi là rẽ trái, kí hiệu 3 tương ứng với hướng đi là đi thẳng, kí hiệu 4 tương ứng với hướng đi rẽ phải

Trong hình 3.4, cạnh đường biên có hướng a=[2, 5, 4, 0] có hai cạnh tiếp theo là b=[2, 6, 4, 0] và c=[3, 5, 3, 0] Hướng di chuyển từ a sang b là đi thẳng, trong khi từ a sang c là rẽ phải Định nghĩa 3.6 nêu rõ về độ ưu tiên của hướng đi và chỉ dẫn di chuyển.

Khi xem xét cạnh đường biên có hướng a, có thể có nhiều cạnh đường biên kề cận với a, tạo ra nhiều lựa chọn di chuyển Độ ưu tiên cho các hướng đi được xác định như sau: rẽ trái có độ ưu tiên 2, đi thẳng 4, và rẽ phải 3 Thứ tự ưu tiên từ cao đến thấp là đi thẳng, rẽ phải, và cuối cùng là rẽ trái, giúp xác định hướng di chuyển hiệu quả nhất từ a đến cạnh đường biên kề cận.

Trong hình 3.4, cạnh đường biên có hướng a=[2, 5, 4, 0] dẫn đến hai cạnh b=[2, 6, 4, 0] và c=[3, 5, 3, 0] Hướng di chuyển từ a đến b là đi thẳng, trong khi từ a đến c là rẽ phải Ưu tiên di chuyển từ a sang b trước, sau đó mới di chuyển từ a sang c Định nghĩa 3.7 cung cấp khái niệm về một đoạn, đoạn trước và đoạn sau.

Giả sử a và b là hai cạnh đường biên có hướng, trong đó a là cạnh trước và b là cạnh sau Cụ thể, a=[d’, b’, c1’, h’] và b=[d, c, c1, h] Khi đó, b1=[d, c, c1, h, hd] được xác định với hd’ là hướng đi từ cạnh trước của a đến a b1 được gọi là đoạn sau của a1, trong khi a1 là đoạn trước của b1 Như vậy, một đoạn là một cạnh đường biên có hướng, đồng thời cung cấp thông tin về hướng đi từ cạnh trước đến chính nó.

Trong hình 3.4, cạnh đường biên có hướng a=[2, 5, 4, 0] kết nối với hai cạnh b=[2, 6, 4, 0] và c=[3, 5, 3, 0] Hướng di chuyển từ a sang b là đi thẳng, trong khi từ a sang c là rẽ phải Đoạn b1 được xác định là [2, 6, 4, 0, 4] và đoạn c1 là [3, 5, 3, 0, 3] Định nghĩa 3.8 cung cấp khái niệm về một lộ trình.

Khi bắt đầu từ một cạnh đường biên với hướng a = [d, c, c1, h], quá trình di chuyển diễn ra theo thứ tự ưu tiên: đi thẳng, rẽ phải, rẽ trái Từ mỗi cạnh b của a, ta tiếp tục di chuyển đến các cạnh tương ứng của b Quá trình này tương tự như duyệt cây hoặc đồ thị theo chiều sâu, trong đó mỗi cạnh chỉ được đi qua một lần Kết quả thu được sẽ là một lộ trình thuận hoặc ngược, tùy thuộc vào giá trị của h, cụ thể là h = 0 hoặc h = 1.

Khi một cạnh đường biên có hướng x=[dx, cx, cx1, hx] được đi qua, thì cạnh đường biên chứa nó x1 = [dx, cx, cx1] được xem là đã được đi qua một lần Đồng thời, đoạn x2 = [dx, cx, cx1, hx, hdx] tương ứng với x cũng được thăm và duyệt.

THỰC NGHIỆM

Xây dựng hệ thống chương trình

Để nén và giải nén I-frame theo phương pháp trong chương III, tôi đã phát triển một hệ thống chương trình sử dụng ngôn ngữ Matlab Hệ thống này bao gồm các thành phần cần thiết cho quá trình nén và giải nén hiệu quả.

Chương trình encode_frame_new thực hiện nén một khung có độ phân giải CIF thành dãy byte, sử dụng các chương trình con như segment_1last_new, encode_1frl_new, huffman, encodehuffman, và arith_byte_stream Trong đó, segment_1last_new phân tách khung Y1, U1, hoặc V1 tương ứng với các khung Y, U, V của frame thành các miền, và gộp các miền nhỏ thành miền lớn, từ đó thu được dãy seed và ma trận biểu diễn đường biên.

Chương trình encode_1frl_new : thực hiện việc mã hóa một ma trận đường biên boundary thành dãy các Path và dãy các addr

Chương trình huffman: thực hiện việc sinh ra các mã huffman tương ứng với các kí hiệu từ 1 đến 8 trong dãy các path

Chương trình encodehuffman: thực hiện việc nén một dãy các kí hiệu của Path thành dãy bít

Chương trình arith_byte_stream: thực hiện việc biến đổi một dãy các bit thành dãy các byte

The decode_frame_new program is responsible for decompressing a frame from its compressed byte sequence This program utilizes various subroutines, including decode_arith_bytestream and huffmandecode, to achieve its functionality.

Chương trình decode_arith_bytestream: thực hiện việc biến đổi một dãy byte biểu diễn dãy addr, hay Path thành dãy bit tương ứng

Chương trình huffmandecode: thực hiện việc giải mã một dãy bit thành một dãy các kí hiệu của Path

Chương trình decodepath_new: thực hiện việc khôi phục lại ma trận đường biên từ dãy Path và dãy các addr tương ứng

Chương trình decode_segment: thực hiện việc tái tạo lại các khung Y1, U1, V1 từ các ma trận đường biên và dãy các seed tương ứng

Ngoài ra còn có có chương trình nhỏ khác như:

Kết quả thực nghiệm

Trong bài viết này, chúng tôi trình bày kết quả nén frame thứ 25 của các chuỗi video như foreman_cif.yuv, mother-daughter_cif.yuv, bus_cif.yuv, hall_cif.yuv, container_cif.yuv, flower_cif.yuv, và high-way_cif.yuv Tỉ số nén được tính bằng thương số giữa kích thước frame chưa nén và kích thước frame đã nén Các chỉ số PSNR y, PSNR u, và PSNR v được đo trên các khung y, u, v của frame, với đơn vị là dB Thông số đầu vào cho quá trình nén là small_region=4, và biên độ lần lượt từ 2 đến 8 Tất cả các video đều có độ phân giải CIF và định dạng YUV 4:2:0.

Các video trên đƣợc dowload tạihttp://trace.eas.asu.edu/yuv/

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.2 Nén frame 25 trong video bus_cif.yuv

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.3 Nén frame 25 trong video container_cif.yuv

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.4 Nén frame 25 trong video flower_cif.yuv

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.5 Nén frame 25 trong video foreman_cif.yuv

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.6 Nén frame 25 trong video hall_cif.yuv

Biên độ Tỉ số nén PSNR y PSNR u PSNR v

Bảng 4.7 Nén frame25 trong video high-way_cif.yuv

Khả năng nâng cao hiệu quả nén

Nghiên cứu chỉ ra rằng thuật toán mã hóa số học có hiệu quả nén cao hơn so với thuật toán Huffman khi xử lý dãy ký hiệu của chain, một dạng của Path Trong phần thực nghiệm của luận văn, thuật toán Huffman được sử dụng để mã hóa các Path Do đó, việc thay thế thuật toán Huffman bằng thuật toán mã hóa số học sẽ nâng cao hiệu quả nén đáng kể.

Tài liệu tham khảo [1] đề xuất một kỹ thuật nâng cao hiệu quả nén chain thông qua luật (X,V), trong đó các đoạn 10 ký hiệu liên tiếp chỉ dẫn đi thẳng được thay thế bằng ký hiệu X, và các đoạn 5 ký hiệu liên tiếp được thay thế bằng ký hiệu V Tuy nhiên, trong phần thực nghiệm của luận văn này, tôi không áp dụng luật (X, V) hay bất kỳ luật tương tự nào, dẫn đến hiệu quả nén có thể chưa tối ưu Do đó, việc áp dụng một luật tương tự như luật (X, V) có thể cải thiện đáng kể hiệu quả nén.

H.264 cho phép sử dụng các kỹ thuật lọc nhằm cải thiện chất lượng hình ảnh của I-frame sau khi tái tạo Trong phần thực nghiệm này, tôi chưa áp dụng kỹ thuật lọc nào, dẫn đến chất lượng của I-frame sau khi giải mã chưa đạt tối ưu Nếu áp dụng một kỹ thuật lọc, chất lượng hình ảnh của I-frame sẽ được nâng cao đáng kể.

Dãy các Path có thể được biểu diễn gần đúng để giảm chiều dài và cải thiện hiệu quả nén Cách này bao gồm việc thay thế mỗi dãy con trong Path bằng một dãy ngắn hơn.

Dãy con gồm hai ký hiệu "đi thẳng" và "rẽ trái" có thể được thay thế bằng một ký hiệu duy nhất, biểu thị hướng đi chéo giữa hai hành động này.

Dãy con gồm 2 ký hiệu "đi thẳng" và "rẽ trái" có thể được thay thế bằng một ký hiệu duy nhất, biểu thị hướng đi chéo giữa "đi thẳng" và "rẽ phải".

Dãy con gồm hai ký hiệu rẽ phải và rẽ trái có thể được thay thế bằng một ký hiệu duy nhất, thể hiện hướng đi xéo giữa đi thẳng và rẽ phải.

Nếu dãy con gồm hai ký hiệu là rẽ trái và rẽ phải, thì có thể được thay thế bằng một ký hiệu duy nhất, đó là ký hiệu chỉ dẫn đi xéo giữa đi thẳng và rẽ trái.

Phần thực nghiệm của luận văn này chƣa áp dụng bất cứ kĩ thuật mô tả gần đúng đường biên nào

Trong thời gian tới, tôi sẽ tận dụng tối đa các khả năng nâng cao hiệu quả nén đã đề cập trước đó Bên cạnh đó, tôi cũng sẽ nghiên cứu để cải tiến phương pháp mã hóa dựa trên đường biên đã trình bày trong chương III.

Luận văn giới thiệu một phương pháp mã hóa nội khung mới, tập trung vào việc phân vùng các khung và mã hóa đường biên Phương pháp này đạt được tỉ số nén cao đối với các I-frame có ít chi tiết, đặc biệt hiệu quả khi I-frame chứa nhiều vùng đồng nhất.

Như trình bày ở mục III chương IV, phương pháp này hứa hẹn sự cải thiện tỉ số nén, chất lƣợng hình ảnh

Luận văn chưa so sánh hiệu quả chống lỗi mất I-frame giữa hai phương pháp: phương pháp sử dụng frame mã hóa dựa theo đường biên làm I-frame dự phòng và phương pháp sử dụng frame mã hóa theo H.264 intra coding làm I-frame dự phòng Tôi sẽ tiếp tục nghiên cứu vấn đề này trong thời gian tới.

Ngày đăng: 17/12/2023, 01:51

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN