Khung MPEG I, P và B là gì?


8

Gần đây tôi đã xem qua các bài báo và video MPEG để hiểu cách thức hoạt động của nó. Tôi hiểu khung hình I, P và B làm gì nhưng tôi không hiểu cách dự đoán được tính toán.
Giả sử rằng tôi muốn quay video một quả bóng rơi từ trên trời xuống đất và sau đó nảy vài lần trước khi cuối cùng dừng lại.
Ngoài ra, tôi không rõ ràng với khái niệm về macroblock 16x16. Xin vui lòng cho tôi biết:

  • dự đoán được tính toán như thế nào
  • macroblock là gì và nó giúp ích như thế nào trong mã hóa MPEG

  • Tài liệu tham khảo của tôi:
  • Dự đoán MPEG
  • Video về chuyển đổi MPEG
  • Câu trả lời:


    14

    Câu trả lời ngắn :
    Khối là đơn vị để so sánh giữa các khung;
    Dự đoán dựa trên số lượng khối trình bày trên cả hình ảnh trước và sau;

    Câu trả lời dài hơn :
    Là đầu vào, một bộ mã hóa video không nhận được gì khác ngoài một chuỗi các khung .
    Trong hầu hết các trường hợp, các khung liền kề rất giống nhau và bộ mã hóa cố gắng tìm hiểu xem các khung này có thực sự giống nhau hay không.

    Làm thế nào để bạn nói nếu hai hình ảnh là tương tự nhau?

    • Cả hai hình ảnh được chia thành các macroblocks (bạn không thể so sánh toàn bộ hình ảnh, chúng chắc chắn sẽ khác nhau!)
    • Thuật toán cố gắng tìm xem một khối từ hình ảnh trước có tồn tại trên hình ảnh sau không (trong một khoảng cách nhất định với vị trí ban đầu của nó)
    • Nếu, đến một ngưỡng nhất định, hầu hết các khối có trên hình ảnh sau, hình ảnh sau được tính là một sự khác biệt so với hình ảnh trước đó ( P-frame);
      • Tất nhiên, các khối khác nhau được mã hóa nguyên trạng;
    • Nếu không, hình ảnh sau đây được coi là thuộc về một cảnh khác và không có cách nào khác ngoài việc giữ nó hoàn toàn ( I-frame).

    Để hiểu cách dự đoán hoạt động, hãy xem hình ảnh này. Nó được tạo bởi một deshakertrình cắm thêm VirtualDubvà được sử dụng cho mục đích khác (phát hiện rung máy), nhưng có vẻ rất tiêu biểu:

    Tuyệt vọng

    Các mũi tên chỉ ra hình ảnh hiện tại khác với hình ảnh trước đó như thế nào;
    Toàn bộ khung được chia thành các macroblocks (tuy nhiên lớn hơn 16x16);
    Sự khác biệt cho mỗi khối, so với hình ảnh trước đó, là một vectơ chuyển động ;
    Như bạn thấy, hầu hết các macroblocks (mũi tên trắng) tuân theo mẫu chung và do đó chúng có thể được mã hóa bằng cách chỉ áp dụng ma trận chuyển vị cho khung trước đó .
    Tuy nhiên, có một số khối (mũi tên đỏ) không tuân theo mẫu chung và do đó chúng phải được mã hóa nguyên trạng .
    Tất nhiên, nếu mọi thứ đều màu đỏ, không có lựa chọn nào khác ngoài việc mã hóa toàn bộ khung hình như hiện tại.

    Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
    Licensed under cc by-sa 3.0 with attribution required.