BÁO CÁO NGHIÊN CỨU VỀ, Định dạng video H.264, hoặc MPEG-4, Mã hóa Video Nâng cao, (MPEG-4 AVC)
Mục lục Dương Thái Chi – 1533659 – 59PM1 Phần 1: Tìm hiểu tiêu chuẩn nén video H264 I Giới thiệu chung H264 H.264 MPEG-4, Mã hóa Video Nâng cao (MPEG-4 AVC) tiêu chuẩn nén video dựa chuyển động dựa khối Tính đến năm 2014, định dạng phổ biến sử dụng để ghi, nén phân phối nội dung video [1] Nó hỗ trợ độ phân giải lên đến 8192 × 4320, bao gồm 8K UHD Mục đích dự án H.264 / AVC tạo tiêu chuẩn có khả cung cấp chất lượng video tốt với tốc độ bit thấp đáng kể so với tiêu chuẩn trước Chuẩn H.264 xem "họ tiêu chuẩn" bao gồm số cấu hình khác Một giải mã cụ thể giải mã một, khơng thiết phải tất cấu hình Đặc tả giải mã mơ tả cấu hình giải mã H.264 thường sử dụng để nén liệu, tạo vùng mã hóa khơng bị liệu hình ảnh mã hóa bị hỗ trợ trường hợp sử dụng mà toàn mã hóa khơng bị H.264 phát triển nhóm chuyên gia mã hóa video (VCEG) ITU-T với nhóm chun gia hình ảnh chuyển động ISO / IEC JTC1 (MPEG) Nỗ lực hợp tác dự án gọi Nhóm Video chung (JVT) Chuẩn ITU-T H.264 chuẩn ISO / IEC MPEG-4 AVC (chính thức, ISO / IEC 14496-10 - MPEG-4 Phần 10, Mã hóa Video Nâng cao) trì để chúng có nội dung kỹ thuật giống hệt Công việc soạn thảo cuối phiên tiêu chuẩn hoàn thành vào tháng năm 2003, phần mở rộng khả thêm vào phiên Mã hóa Video hiệu cao (HEVC), H.264 MPEG-H Phần kế thừa cho H.264 / MPEG-4 AVC phát triển tổ chức, tiêu chuẩn trước sử dụng phổ biến II Tên gọi Tên H.264 tuân theo quy ước đặt tên ITU-T, tiêu chuẩn thành phần dòng tiêu chuẩn mã hóa video VCG H.26x; tên AVC MPEG-4 liên quan đến quy ước đặt tên ISO / IEC MPEG, tiêu chuẩn phần 10 ISO / IEC 14496, tiêu chuẩn gọi MPEG-4 Tiêu chuẩn phát triển với hợp tác VCEG MPEG, sau cơng việc phát triển trước ITU-T dự án VCEG gọi H.26L Nó Dương Thái Chi – 1533659 – 59PM1 phổ biến để tham khảo tiêu chuẩn với tên H.264 / AVC, AVC / H.264, H.264 / MPEG-4 AVC, MPEG-4 / H.264 AVC, để nhấn mạnh di sản chung Thỉnh thoảng, gọi "bộ giải mã JVT", tham chiếu đến tổ chức Joint Video Team (JVT) phát triển Ví dụ, tiêu chuẩn nén video gọi MPEG-2 xuất phát từ hợp tác MPEG ITU-T, video MPEG-2 cộng đồng ITU-T biết đến H 262 [4]) Một số chương trình phần mềm (như trình phát media VLC) xác định nội tiêu chuẩn AVC1 III Lịch sử Vào tháng 12 năm 2001, VCEG Nhóm chun gia hình ảnh chuyển động (MPEG - ISO / IEC JTC / SC 29 / WG 11) thành lập Nhóm Video chung (JVT), với điều lệ để hoàn thành tiêu chuẩn mã hóa video Sự chấp thuận thức đặc tả đưa vào tháng năm 2003 JVT (được) chủ trì Gary Sullivan, Thomas Wiegand Ajay Luthra (Motorola, Mỹ: sau Arris, Hoa Kỳ) Vào tháng năm 2004, dự án Fidelity range extensions (FRExt) hoàn thành Từ tháng năm 2005 đến tháng 11 năm 2007, JVT làm việc phần mở rộng H.264 / AVC theo hướng mở rộng Phụ lục (G) gọi Mã hóa Video mở rộng (SVC) Nhóm quản lý JVT mở rộng Jens-Rainer Ohm (Đại học Aachen, Đức) Từ tháng năm 2006 đến tháng 11 năm 2009, JVT làm việc Mã hóa Video Multiview (MVC), phần mở rộng H.264 / AVC truyền hình xem truyền hình 3D miễn phí Cơng việc bao gồm phát triển hai cấu hình tiêu chuẩn: Cấu hình cao Multiview Cấu hình cao âm Việc chuẩn hóa phiên H.264 / AVC hoàn thành vào tháng năm 2003 Trong dự án mở rộng tiêu chuẩn ban đầu, JVT sau phát triển gọi Fidelity Range Extensions (FRExt) Các phần mở rộng cho phép mã hóa video chất lượng cao cách hỗ trợ độ xác độ sâu bit mẫu thơng tin màu độ phân giải cao hơn, bao gồm cấu trúc lấy mẫu gọi Y'CbCr 4: 2: (= YUV 4: 2: 2) Y'CbCr 4: :4 Một số tính khác bao gồm dự án Fidelity Range Extensions, chẳng hạn chuyển đổi thích ứng biến đổi số nguyên × × 8, ma trận trọng số dựa tri thức mã hóa dựa cảm xúc, mã hóa lossless liên tiếp hiệu hỗ trợ màu bổ sung không gian Công việc thiết kế Fidelity Range Extensions hoàn thành vào tháng năm 2004, công việc soạn thảo chúng hoàn thành vào tháng năm 2004 Dương Thái Chi – 1533659 – 59PM1 IV Các ứng dụng Định dạng video H.264 có phạm vi ứng dụng rộng bao gồm tất dạng nén video kỹ thuật số từ ứng dụng phát trực tuyến tốc độ bit thấp tới HDTV ứng dụng Cinema Digital với mã hóa gần khơng bị Với việc sử dụng H.264, tỷ lệ tiết kiệm bit từ 50% trở lên so với MPEG-2 Phần báo cáo Ví dụ, H.264 báo cáo để cung cấp cho chất lượng truyền hình vệ tinh kỹ thuật số MPEG-2 triển khai với nửa tốc độ bit, với MPEG-2 triển khai làm việc khoảng 3,5 Mbit / s H.264 1,5 Mbit / s [23] Sony tuyên bố chế độ ghi AVC Mbit / s tương đương với chất lượng hình ảnh định dạng HDV, sử dụng khoảng 18-25 Mbit / s Dương Thái Chi – 1533659 – 59PM1 Dương Thái Chi – 1533659 – 59PM1 V Tính H264 H.264 / AVC / MPEG-4 Phần 10 chứa số tính cho phép nén video hiệu nhiều so với chuẩn cũ cung cấp linh hoạt cho ứng dụng cho nhiều môi trường mạng khác Đặc biệt, số tính bao gồm: - Dự đốn nhiều hình ảnh liên tiếp - Dự đốn khơng gian từ cạnh khối lân cận cho mã hóa "bên trong", khơng phải dự đốn "DC" tìm thấy MPEG-2 Phần dự đoán hệ số biến đổi tìm thấy H.263v2 MPEG-4 Phần Điều bao gồm luma kích thước khối dự đốn 16 × 16, × × (trong có loại sử dụng macroblock) - Tính mã hóa macroblock lossless - Tính mã hóa video qt xen kẽ linh hoạt - Tính thiết kế biến đổi - Thiết kế lượng tử hóa - Bộ lọc gỡ lỗi vòng giúp ngăn chặn vật bị chặn phổ biến với kỹ thuật nén hình ảnh dựa DCT khác, dẫn đến hình ảnh trực quan hiệu nén tốt - Thiết kế mã hóa entropy - Tính phục hồi liệu - Một quy trình tự động đơn giản để ngăn chặn việc mô ngẫu nhiên mã khởi đầu, chuỗi đặc biệt liệu mã hóa cho phép truy cập ngẫu nhiên vào bitstream khôi phục liên kết byte hệ thống đồng hóa byte - Hình ảnh phụ trợ, sử dụng cho mục đích tổng hợp alpha - Hỗ trợ đơn sắc (4: 0: 0), 4: 2: 0, 4: 2: 4: 4: lấy mẫu màu - Hỗ trợ độ xác độ sâu bit mẫu từ đến 14 bit cho mẫu Dương Thái Chi – 1533659 – 59PM1 - Khả mã hóa mặt phẳng màu riêng biệt thành hình ảnh riêng biệt với cấu trúc lát riêng, chế độ macroblock, vectơ chuyển động, v.v., cho phép mã hóa thiết kế với cấu trúc song song đơn giản - Số thứ tự hình ảnh, tính nhằm giữ trật tự hình ảnh giá trị mẫu hình ảnh giải mã tách biệt với thơng tin thời gian, cho phép thông tin định thời điều khiển thay đổi riêng biệt hệ thống mà khơng ảnh hưởng đến nội dung hình ảnh giải mã Những kỹ thuật này, với nhiều kỹ thuật khác, giúp H.264 hoạt động tốt đáng kể so với tiêu chuẩn trước nhiều trường hợp khác nhiều môi trường ứng dụng khác H.264 thường thực hồn tồn tốt so với video MPEG-2 — thường có chất lượng nửa tốc độ bit hơn, đặc biệt tốc độ bit cao tình có độ phân giải cao Dương Thái Chi – 1533659 – 59PM1 Phần 2: Tìm hiểu FFMPEG I Giới thiệu tổng quát - FFmpeg dự án phần mềm tự , sản phẩm phần mềm rộng lớn gồm thư viện chương trình để xử lý video, âm tập tin đa phương tiện luồng khác - Chính cốt lõi chương trình FFmpeg, thiết kế để xử lý tệp video âm dựa dòng lệnh , sử dụng rộng rãi để chuyển mã định dạng , chỉnh sửa (cắt nối ), chia tỷ lệ video , hiệu ứng hậu sản xuất video tuân thủ tiêu chuẩn ( SMPTE , ITU ) - FFmpeg bao gồm libavcodec , codec âm / videothư viện sử dụng nhiều sản phẩm phần mềm thương mại miễn phí, libavformat (Lavf), thư viện chứa liệu âm / video thư viện demux chương trình dòng lệnh ffmpeg lõi để chuyển mã tệp đa phương tiện FFmpeg xuất theo Giấy phép Cơng cộng Ít GNU 2.1+ Giấy phép Công cộng GNU 2+ (tùy thuộc vào tùy chọn bật) II Lịch hình thành phát triển - Dự án bắt đầu Fabrice Bellard (sử dụng bút danh "Gérard Lantau") vào năm 2000, dẫn dắt Michael Niedermayer từ năm 2004 đến năm 2015 Một số nhà phát triển FFmpeg phần dự án MPlayer - Hai định dạng mã hóa video với codec tương ứng định dạng container tạo dự án FFmpeg Hai codec video FFV1 không mát codec Snow lossless liệu Sự phát triển Snow bị đình trệ, định dạng luồng bit chưa hồn thiện, làm cho thử nghiệm từ năm 2011 Định dạng container đa phương tiện có tên NUT khơng phát triển tích cực nữa, trì - Vào tháng 10 năm 2013, VP9 nguyên gốc giải mã OpenHEVC, giải mã mã hóa video hiệu cao (HEVC) mã nguồn mở , thêm vào FFmpeg Vào năm 2016, mã hóa AACgốc coi ổn định, loại bỏ hỗ trợ cho hai mã hóa AAC bên Dương Thái Chi – 1533659 – 59PM1 từ VisualOn FAAC FFmpeg 3.0 (biệt hiệu "Einstein" ) giữ lại hỗ trợ xây dựng cho mã hóa Fraunhofer FDK AAC III Các thành phần Cơng cụ dòng lệnh - ffmpeg cơng cụ dòng lệnh chuyển đổi định dạng âm video Nó nắm bắt mã hóa thời gian thực từ nguồn phần cứng phần mềm khác thẻ chụp TV - ffplay trình chơi nhạc đơn giản sử dụng SDL thư viện FFmpeg - ffprobe cơng cụ dòng lệnh để hiển thị thơng tin phương tiện (văn bản, CSV , XML , JSON ) Thư viện - libswresample thư viện chứa thói quen lấy lại âm Dương Thái Chi – 1533659 – 59PM1 - libavresample thư viện chứa thường trình lấy lại âm từ dự án Libav , tương tự libswresample từ ffmpeg - libavcodec thư viện chứa tất mã hóa giải mã âm / video gốc FFmpeg Hầu hết codec phát triển từ đầu để đảm bảo hiệu tốt khả sử dụng lại mã cao - libavformat (Lavf) thư viện chứa demuxers muxers cho định dạng container audio / video - libavutil thư viện trợ giúp chứa thường trình chung cho phần khác FFmpeg Thư viện bao gồm hàm băm ( Adler-32 , CRC , MD5 , RIPEMD , SHA1 SHA-2 , MurmurHash3, HMAC MD-5, HMAC SHA-1 HMAC SHA-2), mật mã ( DES , RC4 , AES , AES-CTR, TEA , XTEA , Blowfish , CAST128 , Twofish Camellia ), giải nén LZO Base64 mã hóa / giải mã - libpostproc thư viện chứa thói quen xử lý hậu kỳ video dựa h263 cũ - libswscale thư viện chứa quy trình chuyển đổi hình ảnh video khơng gian màu / pixelformat - libavfilter phần thay cho vhook, cho phép chỉnh sửa kiểm tra video / audio giải mã mã hóa Các lọc chuyển từ nhiều dự án bao gồm MPlayer phần mềm thứ bảy IV Các định dạng code hỗ trợ Định dạng hình ảnh Các Định dạng hình ảnh PGMYUV biến thể homebrewn định • dạng PGP Netpbm nhị phân (P5) FFmpeg hỗ trợ độ sâu 16 bit định dạng PGM PPM định dạng PAM nhị phân (P7) có khơng có kênh alpha, độ sâu bit 16 bit cho pix_fmts monob, xám, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be 10 Dương Thái Chi – 1533659 – 59PM1 Muxers Định dạng đầu (định dạng vùng chứa cách tạo luồng đầu ra) khác FFmpeg • gọi "muxers" - AIFF - ASF - FLV - GIF - IFF Định dạng pixel FFmpeg hỗ trợ nhiều định dạng pixel Một số định dạng hỗ trợ dạng • định dạng đầu vào Lệnh ffmpeg -pix_fmtsnày cung cấp danh sách định dạng pixel hỗ trợ 11 Dương Thái Chi – 1533659 – 59PM1 V Các dự án sử dụng FFMPEG - FFmpeg sử dụng phần mềm VLC media player , xine , Plex , Kodi , Máy xay sinh tố , YouTube , MPC-HC ; xử lý phát lại video âm Google Chrome , phiên Linux Firefox - Giao diện người dùng đồ họa front-end cho FFmpeg phát triển, bao gồm Avanti, XMedia Recode Multimedia Xpert JavaCV, trình bao bọc Java cho OpenCV, bao gồm trình bao bọc Java bổ sung cho FFmpeg - FFmpeg sử dụng ffdshow , LAV Filters, GStreamer FFmpeg plugin , Perian OpenMAX IL để mở rộng khả mã hóa giải mã tảng đa phương tiện tương ứng Phần Tìm hiểu OpenCV I Giới thiệu tổng quát OpenCV ( Open Source Computer Vision ) thư viện chức lập trình chủ yếu nhằm vào tầm nhìn máy tính thời gian thực Ban đầu phát triển Intel , sau hỗ trợ Willow Garage sau Itseez (sau Intel mua lại) Thư viện đa tảng miễn phí để sử dụng theo giấy phép BSD nguồn mở II Lịch sử hình thành phát triển - Chính thức mắt vào năm 1999, dự án OpenCV ban đầu sáng kiến nghiên cứu Intel để ứng dụng CPU tiên tiến , phần loạt dự án bao gồm dò tìm tia thời gian thực tường hiển thị 3D Những người đóng góp cho dự án bao gồm số chuyên gia tối ưu hóa Intel Nga, Nhóm Thư viện hiệu Intel - Phiên alpha OpenCV phát hành cho công chúng Hội nghị IEEE Tầm nhìn máy tính Nhận dạng mẫu vào năm 2000 năm phiên beta phát hành từ năm 2001 đến 2005 Phiên 1.0 phát hành vào năm 2006 Phiên 1.1 trước "được phát hành vào tháng 10 năm 2008 12 Dương Thái Chi – 1533659 – 59PM1 - OpenCV bao gồm thay đổi lớn giao diện C ++ , nhằm dễ dàng hơn, nhiều kiểu an toàn hơn, chức triển khai tốt cho phiên có hiệu (đặc biệt đa hệ thống cốt lõi) Các phát hành thức diễn sau sáu tháng phát triển thực nhóm người Nga độc lập tập đồn thương mại hỗ trợ - Vào tháng năm 2012, hỗ trợ cho OpenCV tổ chức phi lợi nhuận OpenCV.org tiếp quản, trì nhà phát triển [7] trang web người dùng - Vào tháng năm 2016, Intel ký thỏa thuận mua lại Itseez, nhà phát triển hàng đầu OpenCV III Các ứng dụng Các lĩnh vực ứng dụng OpenCV: - Bộ cơng cụ tính 2D 3D - Ước tính egomotion - Tính tốn nhận diện khn mặt - Công nhận cử - Robot di động - Nhận diện đối tượng - Theo dõi chuyển động 13 Dương Thái Chi – 1533659 – 59PM1 IV Ngôn ngữ lập trình - OpenCV viết C ++ giao diện C ++, giữ lại giao diện C cũ Có ràng buộc Python , Java MATLAB / OCTAVE Bạn tìm thấy API cho giao diện tài liệu trực tuyến bọc ngôn ngữ khác C # , Perl , Ch , Haskell Ruby phát triển để khuyến khích chấp nhận đối tượng rộng lớn - Tất phát triển thuật toán OpenCV phát triển giao diện C + + 14 Dương Thái Chi – 1533659 – 59PM1 V Hỗ trợ hệ điều hành - OpenCV chạy hệ điều hành máy tính để bàn sau: Windows, Linux, MacOS, FreeBSD, NetBSD, OpenBSD - OpenCV chạy hệ điều hành di động sau: Android , iOS , Maemo , BlackBerry 10 - Người dùng nhận phát hành thức từ SourceForge lấy nguồn từ GitHub - OpenCV sử dụng CMake Phần Kết nghiên cứu Trong q trình nghiên cứu, tơi tìm hiểu Saliency chạy thử chương trình Saliency detection I Nội dung tìm hiểu - Saliency bật làm nhanh chóng tập trung vào phần có liên quan bạn nhìn thấy - Ở phần nghiên cứu này, chạy chương trình để nhận dạng vật thể bật II Ngơn ngữ cơng nghệ - Chương trình viết ngơn ngữ C++ - Dùng OpenCV để nhận dạng hình ảnh III Quá trình kết thu B1: Add thư viện OpenCV vào biến môi trường vào project B2: Truyền file ảnh gốc vào B3: Thực câu lệnh cho đầu 15 Dương Thái Chi – 1533659 – 59PM1 img = imread("dhxd1.jpg"); GMRsaliency GMRsal; sal = GMRsal.GetSal(img); imwrite("out2.jpg", sal * 255); nTimeStop = clock(); cout