Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Хоёрдугаар хэсэг: Видео кодлогч хэрхэн ажилладаг

Ямар ч растер зураг хэлбэрээр төлөөлж болно хоёр хэмжээст матриц. Өнгөний тухайд дүрсийг харж байж санааг гаргаж болно гурван хэмжээст матриц, өнгө бүрийн өгөгдлийг хадгалахад нэмэлт хэмжээсүүдийг ашигладаг.

Хэрэв бид эцсийн өнгө гэж нэрлэгддэг хослолыг авч үзвэл. үндсэн өнгө (улаан, ногоон, цэнхэр), гурван хэмжээст матрицад бид гурван хавтгайг тодорхойлдог: эхнийх нь улаан, хоёр дахь нь ногоон, сүүлчийнх нь цэнхэр.
Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт
Бид энэ матрицын цэг бүрийг пиксел (зургийн элемент) гэж нэрлэх болно. Пиксел бүр нь өнгө бүрийн эрчмийн тухай мэдээллийг (ихэвчлэн тоон утга хэлбэрээр) агуулдаг. Жишээлбэл, улаан пиксел 0 ногоон, 0 цэнхэр, дээд тал нь улаан гэсэн үг. Ягаан пиксел гурван өнгөний хослолыг ашиглан үүсгэж болно. 0-ээс 255 хүртэлх тоон мужийг ашиглан ягаан пикселийг дараах байдлаар тодорхойлно Улаан = 255, Ногоон = 192 и Цэнхэр = 203.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Энэхүү нийтлэлийг EDISON-ийн дэмжлэгтэйгээр нийтлэв.

Бид хөгжиж байна видео тандалт, видео урсгалын програмууд, мөн бид сүй тавьсан мэс заслын өрөөнд видео бичлэг хийх.

Өнгөт дүрсийг кодлох өөр аргууд

Зургийг бүрдүүлдэг өнгийг төлөөлөх өөр олон загвар байдаг. Жишээлбэл, та RGB загварыг ашиглахад шаардлагатай гурван байт биш харин пиксел бүрийг төлөөлөхөд зөвхөн нэг байт шаардагдах индексжүүлсэн палитрыг ашиглаж болно. Ийм загварт өнгө бүрийг төлөөлөх 2D матрицын оронд 3D матриц ашиглах боломжтой. Энэ нь санах ойг хэмнэдэг боловч өнгөний gamut-ыг бага хэмжээгээр өгдөг.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

RGB

Жишээлбэл, доорх зургийг харна уу. Эхний нүүр нь бүрэн будагдсан байна. Бусад нь улаан, ногоон, цэнхэр хавтгай (харгалзах өнгөний эрчмийг саарал өнгөөр ​​харуулсан).

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Анхны улаан өнгийн сүүдэр нь хоёр дахь нүүрний хамгийн тод хэсгүүд ажиглагддаг газруудад байх болно гэдгийг бид харж байна. Цэнхэр өнгийг зөвхөн Мариогийн нүд (сүүлчийн царай) болон хувцасны элементүүдээс л харж болно. Гурван өнгөт онгоц хаана хамгийн бага хувь нэмэр оруулдаг болохыг анхаарна уу (зургийн хамгийн бараан хэсгүүд) - Мариогийн сахал.

Өнгө бүрийн эрчмийг хадгалахын тулд тодорхой тооны бит шаардлагатай байдаг - энэ хэмжигдэхүүнийг дууддаг бит гүн. Нэг өнгөт хавтгайд 8 бит зарцуулсан гэж үзье (0-ээс 255 хүртэлх утгыг үндэслэн). Дараа нь бид 24 битийн өнгөний гүнтэй (8 бит * 3 R/G/B хавтгай).

Зургийн өөр нэг шинж чанар зөвшөөрөл, энэ нь нэг хэмжээст дэх пикселийн тоо юм. Ихэнхдээ гэж тэмдэглэдэг өргөн × өндөр, доорх 4-өөс 4-ийн жишээ зураг шиг.
Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Зураг/видеотой ажиллахдаа бидний харьцдаг өөр нэг өмч бол харьцаа, зураг эсвэл пикселийн өргөн ба өндөр хоорондын хэвийн пропорциональ хамаарлыг дүрсэлсэн.

Тэд тодорхой кино, зураг 16-аас 9 хэмжээтэй байна гэж хэлэхэд тэд ихэвчлэн хэлдэг дэлгэцийн харьцаа (DAR - аас Дэлгэцийн харьцаа). Гэсэн хэдий ч заримдаа тусдаа пикселийн янз бүрийн хэлбэрүүд байж болно - энэ тохиолдолд бид ярьж байна пикселийн харьцаа (BY - аас Пикселийн харьцаа).

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Гэрийн эзэгтэйд зориулсан тэмдэглэл: DVD харгалзана DAR 4-3

Хэдийгээр DVD-ийн бодит нягтрал нь 704x480 боловч PAR нь 4:3 (10x11 / 704x10) учраас 480:11 харьцаатай хэвээр байна.

Тэгээд эцэст нь бид тодорхойлж чадна видео дараалал шиг n хугацааны хүрээ цаг хугацаа, энэ нь нэмэлт хэмжээс гэж үзэж болно. А n дараа нь фрэймийн хурд эсвэл секундэд фрэймийн тоо (FPS - аас Секундэд хүрээ).

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Видеог харуулахад секундэд шаардагдах битийн тоо нь түүний тоо юм дамжуулах хурд - битийн хурд.

битийн хурд = өргөн * өндөр * битийн гүн * секундэд фрэйм

Жишээлбэл, 30 fps, 24 bps, 480x240 видео бичлэг хийхэд 82,944,000 bps буюу 82,944 Mbps (30x480x240x24) шаардлагатай - гэхдээ энэ нь шахалтын аргыг ашиглаагүй тохиолдолд л болно.

Хэрэв дамжуулах хурд бараг тогтмол, дараа нь үүнийг дууддаг тогтмол дамжуулах хурд (CBR - аас тогтмол бит хурд). Гэхдээ энэ нь бас өөр өөр байж болно, энэ тохиолдолд үүнийг нэрлэдэг хувьсах дамжуулах хурд (VBR - аас хувьсах битийн хурд).

Энэ график нь хязгаарлагдмал VBR-ийг харуулж байгаа бөгөөд бүрэн бараан хүрээтэй тохиолдолд хэт олон бит зарцуулдаггүй.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Инженерүүд эхлээд нэмэлт зурвасын өргөн ашиглахгүйгээр видео дэлгэцийн фрэймийн хурдыг хоёр дахин нэмэгдүүлэх аргыг боловсруулсан. Энэ аргыг гэж нэрлэдэг нийлсэн видео; Үндсэндээ энэ нь дэлгэцийн хагасыг эхний "хүрээнд", нөгөө талыг нь дараагийн "хүрээнд" илгээдэг.

Одоогоор үзэгдлүүдийг ихэвчлэн ашиглан үзүүлж байна дэвшилтэт сканнердах технологи. Энэ нь жааз бүрийн бүх шугамыг дараалан зурсан хөдөлгөөнт дүрсийг харуулах, хадгалах, дамжуулах арга юм.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

За! Одоо бид дүрсийг дижитал хэлбэрээр хэрхэн төлөөлдөг, түүний өнгө хэрхэн зохион байгуулагдсан, битийн хурд тогтмол (CBR) эсвэл хувьсах (VBR) байвал видеог харуулахын тулд секундэд хэдэн бит зарцуулдаг талаар мэддэг болсон. Бид өгөгдсөн фрэймийн хурдыг ашиглан өгөгдсөн нягтралын талаар мэддэг, бид хоорондоо уялдаатай видео, PAR болон бусад олон нэр томъёог мэддэг.

Илүүдэл байдлыг арилгах

Шахалтгүй видеог ердийн байдлаар ашиглах боломжгүй гэдгийг мэддэг. 720p нягтралтай, секундэд 30 фрэймийн нягтралтай нэг цагийн видео 278 ГБ багтаамжтай. Бид 1280 x 720 x 24 x 30 x 3600 (өргөн, өндөр, пиксел тутамд бит, FPS, секундээр цаг хугацаа) үржүүлснээр энэ утгад хүрнэ.

Ашиглах алдагдалгүй шахалтын алгоритмууд, DEFLATE шиг (PKZIP, Gzip болон PNG-д ашиглагддаг) шаардлагатай зурвасын өргөнийг хангалттай хэмжээгээр бууруулахгүй. Бид видеог шахах өөр аргыг хайх хэрэгтэй.

Үүнийг хийхийн тулд та бидний алсын харааны онцлогуудыг ашиглаж болно. Бид өнгөнөөс илүү тод байдлыг ялгаж чаддаг. Видео нь цаг хугацааны явцад давтагдах дараалсан зургууд юм. Нэг үзэгдлийн зэргэлдээх хүрээнүүдийн хооронд бага зэргийн ялгаа байдаг. Нэмж дурдахад, хүрээ бүр ижил (эсвэл ижил төстэй) өнгө ашигладаг олон талбарыг агуулдаг.

Өнгө, тод байдал, бидний нүд

Бидний нүд өнгөнөөс илүү гэрэл гэгээнд мэдрэмтгий байдаг. Үүнийг та энэ зургийг хараад өөрөө харж болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Хэрэв та зургийн зүүн талд квадратуудын өнгийг харахгүй байна A и B үнэндээ адилхан, тэгвэл энэ нь хэвийн зүйл. Бидний тархи биднийг өнгө гэхээсээ илүү гэрэл, сүүдэрт анхаарлаа хандуулахыг шаарддаг. Зориулалтын квадратуудын баруун талд ижил өнгийн холбогч байдаг - тиймээс бид (өөрөөр хэлбэл бидний тархи) тэдгээр нь ижил өнгөтэй гэдгийг амархан тодорхойлдог.

Бидний нүд хэрхэн ажилладагийг (хялбаршуулсан байдлаар) харцгаая. Нүд бол олон хэсгээс бүрддэг нарийн төвөгтэй эрхтэн юм. Гэсэн хэдий ч бид конус, савааг хамгийн их сонирхдог. Нүдэнд 120 сая саваа, 6 сая боргоцой байдаг.

Өнгө ба тод байдлын талаархи ойлголтыг нүдний тодорхой хэсгүүдийн салангид функц гэж үзье (үнэндээ бүх зүйл арай илүү төвөгтэй боловч бид үүнийг хялбарчлах болно). Саваа эсүүд голчлон гэрэлтүүлгийг хариуцдаг бол конус эсүүд өнгийг хариуцдаг. Конусыг агуулагдах пигментээс хамааран гурван төрөлд хуваадаг: S-боргоцой (цэнхэр), М-боргоцой (ногоон), L-конус (улаан).

Бид боргоцойноос (өнгөт) илүү олон саваа (тод) байдаг тул бид өнгөнөөс илүү харанхуй, цайвар шилжилтийг ялгах чадвартай гэж дүгнэж болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Ялгаатай мэдрэмжийн онцлог

Туршилтын сэтгэл судлал болон бусад олон салбарын судлаачид хүний ​​алсын хараатай холбоотой олон онолыг боловсруулсан. Тэдний нэгийг нь нэрлэдэг тодосгогч мэдрэмжийн функцууд. Эдгээр нь орон зайн болон цаг хугацааны гэрэлтүүлэгтэй холбоотой байдаг. Товчхондоо, энэ нь ажиглагч үүнийг анзаарахаас өмнө хэдэн өөрчлөлт хийх шаардлагатай тухай юм. "Функц" гэдэг үгийн олон тоог анхаар. Энэ нь бид зөвхөн хар, цагаан зураг төдийгүй өнгөт дүрсний хувьд тодосгогч мэдрэмжийн функцийг хэмжиж чаддагтай холбоотой юм. Эдгээр туршилтын үр дүнгээс харахад ихэнх тохиолдолд бидний нүд өнгөнөөс илүү гэрэл гэгээнд мэдрэмтгий байдаг.

Бид зургийн гэрэлд илүү мэдрэмтгий байдгийг мэддэг тул энэ баримтыг ашиглахыг оролдож болно.

Өнгөт загвар

Бид RGB схемийг ашиглан өнгөт зурагтай хэрхэн ажиллах талаар бага зэрэг олж мэдсэн. Өөр загварууд бас бий. Гэрэлтэлтийг хромагаас ялгадаг загвар байдаг бөгөөд үүнийг гэж нэрлэдэг YCbCr. Дашрамд хэлэхэд ижил төстэй хуваалт хийдэг бусад загварууд байдаг, гэхдээ бид зөвхөн үүнийг авч үзэх болно.

Энэ өнгөт загварт Y нь тод байдлын илэрхийлэл бөгөөд мөн хоёр өнгөт сувгийг ашигладаг: Cb (баян цэнхэр) ба Cr (баян улаан). YCbCr-ийг RGB-ээс гаргаж авах боломжтой бөгөөд урвуу хөрвүүлэлт бас боломжтой. Энэ загварыг ашигласнаар бид дараах байдлаар бүрэн өнгөт зургийг үүсгэж болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

YCbCr болон RGB хооронд хөрвүүлэх

Хэн нэгэн эсэргүүцэх болно: ногоон өнгийг ашиглаагүй бол яаж бүх өнгийг авах боломжтой вэ?

Энэ асуултад хариулахын тулд RGB-г YCbCr болгон хөрвүүлье. Стандартад батлагдсан коэффициентүүдийг ашиглая БТ.601нэгжээс санал болгосон ITU-R. Энэ хэлтэс нь дижитал видеоны стандартыг тогтоодог. Жишээ нь: 4K гэж юу вэ? Хүрээний хурд, нягтрал, өнгөний загвар ямар байх ёстой вэ?

Эхлээд гэрэлтүүлгийг тооцоолъё. ОУЦХБ-аас санал болгож буй тогтмолуудыг ашиглаж, RGB утгуудыг орлъё.

Y = 0.299R + 0.587G + 0.114B

Гэрэл гэгээтэй болсны дараа бид цэнхэр, улаан өнгийг ялгана.

Cb = 0.564(B - Y)

Cr = 0.713(R - Y)

Мөн бид YCbCr ашиглан буцаан хөрвүүлж, бүр ногоон өнгөтэй болно:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y - 0.344Cb - 0.714Cr

Ихэвчлэн дэлгэц (монитор, зурагт, дэлгэц гэх мэт) нь зөвхөн RGB загварыг ашигладаг. Гэхдээ энэ загварыг янз бүрийн аргаар зохион байгуулж болно:

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Өнгөний дэд дээж авах

Гэрэлтэлт ба өнгөний хослолоор дүрслэгдсэн зургийн тусламжтайгаар бид мэдээллийг сонгон устгаснаар хүний ​​харааны системийн өнгөт туяанаас илүү гэрэлтэх мэдрэмжийг ашиглаж чадна. Chroma subsampling нь гэрэлтэхээс илүү хромын хувьд бага нарийвчлалтай зургийг кодлох арга юм.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Өнгөний нягтралыг хэр хэмжээгээр багасгахыг зөвшөөрдөг вэ?! Шийдвэрлэх, нэгтгэх (Үр дүнгийн өнгө = Y + Cb + Cr) хэрхэн ажиллахыг тодорхойлсон зарим диаграммууд аль хэдийн байгаа нь харагдаж байна.

Эдгээр схемүүдийг нэрлэдэг дээж авах систем ба 3 дахин харьцаагаар илэрхийлэгддэг - a:x:y, энэ нь гэрэлтүүлгийн болон өнгөний ялгааны дохионы дээжийн тоог тодорхойлдог.

a - хэвтээ түүвэрлэлтийн стандарт (ихэвчлэн 4-тэй тэнцүү)
x - пикселийн эхний эгнээ дэх хромын дээжийн тоо (хэвтээ нарийвчлалтай харьцуулахад a)
y - пикселийн эхний ба хоёр дахь эгнээний хоорондох хромын дээжийн өөрчлөлтийн тоо.

Үл хамаарах зүйл бол 4:1:0, 4-ээс 4-ийн гэрэлтүүлгийн нарийвчлалын блок бүрт нэг хромын дээж өгөх.

Орчин үеийн кодлогчдод хэрэглэгддэг нийтлэг схемүүд:

  • 4:4:4 (доод түүвэр байхгүй)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4:2:0 - хайлуулах жишээ

YCbCr 4:2:0 ашиглан нэгтгэсэн зураг энд байна. Бид нэг пикселд ердөө 12 бит зарцуулж байгааг анхаарна уу.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Өнгөний дэд түүврийн үндсэн төрлүүдээр кодлогдсон ижил зураг иймэрхүү харагдаж байна. Эхний эгнээ нь эцсийн YCbCr, доод эгнээ нь хромын нягтралыг харуулдаг. Чанарын бага зэрэг алдагдлыг харгалзан үзвэл маш сайн үр дүн.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Нэг цагийн видео файлыг 278p нягтралтай, секундэд 720 фрэймээр хадгалахын тулд бид 30 ГБ хадгалах зайг тоолж байсныг санаж байна уу? Хэрэв бид YCbCr 4:2:0 ашигладаг бол энэ хэмжээ хоёр дахин багасна - 139 ГБ. Одоогоор энэ нь хүлээн зөвшөөрөгдөх үр дүнгээс хол байна.

Та YCbCr гистограммыг FFmpeg ашиглан өөрөө авч болно. Энэ зурган дээр хөх нь улаанаас давамгайлж байгаа нь гистограмм дээр тодорхой харагдаж байна.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Өнгө, тод байдал, өнгөт gamut - видео тойм

Бид энэ гайхалтай видеог үзэхийг зөвлөж байна. Энэ нь тод байдал гэж юу болохыг тайлбарладаг бөгөөд ерөнхийдөө бүх цэгүүд тасархай байдаг ё гэрэл гэгээ ба өнгөний тухай.

Хүрээний төрлүүд

Үргэлжлүүлье. Цагийн илүүдлийг арилгахыг хичээцгээе. Гэхдээ эхлээд зарим үндсэн нэр томъёог тодорхойлъё. Бидэнд секундэд 30 кадртай кино байна гэж бодъё, энд түүний эхний 4 кадр байна:

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Фрейм дээр бид маш олон давталтыг харж болно: жишээлбэл, хүрээнээс хүрээ рүү өөрчлөгддөггүй цэнхэр дэвсгэр. Энэ асуудлыг шийдэхийн тулд бид тэдгээрийг гурван төрлийн хүрээ болгон хийсвэрээр ангилж болно.

I-хүрээ (Intro хүрээ)

I-frame (лавлагаа хүрээ, гол хүрээ, дотоод хүрээ) нь бие даасан байна. Та юу дүрслэхийг хүсч байгаагаас үл хамааран I-frame нь үндсэндээ статик гэрэл зураг юм. Эхний фрейм нь ихэвчлэн I-хүрээ байдаг, гэхдээ бид I-фрэймийг эхний хүрээ биш ч гэсэн тогтмол ажиглах болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

P-хүрээ (Pзасварласан хүрээ)

P-frame (урьдчилан таамаглах хүрээ) нь өмнөх хүрээг ашиглан одоогийн зургийг бараг үргэлж хуулбарлах боломжтой байдгийг ашигладаг. Жишээлбэл, хоёр дахь хүрээн дэх цорын ганц өөрчлөлт нь бөмбөг урагшлах явдал юм. Бид 2-р фреймийг бага зэрэг өөрчилснөөр 1-р фреймийг авч болно, зөвхөн эдгээр хүрээ хоорондын ялгааг ашиглан. 2-р хүрээг бүтээхийн тулд бид өмнөх 1-р хүрээг харна.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголтВидео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

B хүрээ (Bi-урьдчилан таамаглах хүрээ)

Илүү сайн шахалтыг бий болгохын тулд зөвхөн өнгөрсөн төдийгүй ирээдүйн фреймүүдтэй холбох талаар яах вэ?! Энэ нь үндсэндээ B хүрээ (хоёр чиглэлтэй хүрээ) юм.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголтВидео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголтВидео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Завсрын гарц

Эдгээр хүрээний төрлүүд нь хамгийн сайн шахалтыг хангахад ашиглагддаг. Энэ нь хэрхэн болдгийг бид дараагийн хэсэгт авч үзэх болно. Одоогийн байдлаар санах ойн хэрэглээний хувьд хамгийн "үнэтэй" нь I-frame, P-frame нь мэдэгдэхүйц хямд боловч видеоны хамгийн ашигтай сонголт бол B-frame гэдгийг анхаарна уу.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Түр зуурын илүүдэл (хүрээ хоорондын таамаглал)

Цаг хугацаа өнгөрөх тусам давталтыг багасгахын тулд ямар сонголтууд байгааг харцгаая. Бид хөндлөн таамаглах аргуудыг ашиглан энэ төрлийн илүүдлийг шийдэж чадна.

Бид 0 ба 1 фреймүүдийн дарааллыг кодлохын тулд аль болох цөөн бит зарцуулахыг хичээх болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Бид үйлдвэрлэж чадна хасах, бид зүгээр л 1-р фреймийг 0-р фреймээс хасдаг. Бид 1-р фреймийг авдаг, зөвхөн өмнөх болон өмнөх хүрээ хоорондын ялгааг ашигладаг, үнэндээ бид зөвхөн үр дүнгийн үлдэгдлийг кодлодог.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Гэхдээ үүнээс ч бага бит ашигладаг илүү сайн арга байдаг гэж хэлвэл яах вэ?! Эхлээд 0 фреймийг блокуудаас бүрдэх тодорхой тор болгон задалъя. Дараа нь бид 0-р хүрээний блокуудыг 1-р хүрээтэй тааруулахыг хичээх болно. Өөрөөр хэлбэл, хүрээ хоорондын хөдөлгөөнийг тооцоолох болно.

Википедиагаас - блок хөдөлгөөний нөхөн төлбөр

Блокны хөдөлгөөний нөхөн олговор нь одоогийн хүрээг давхцдаггүй блокуудад хуваадаг бөгөөд хөдөлгөөний нөхөн олговорын вектор нь блокуудын гарал үүслийг мэдээлдэг (нийтлэг буруу ойлголт бол өмнөх хүрээ нь давхцдаггүй блокуудад хуваагддаг бөгөөд хөдөлгөөний нөхөн олговорын векторууд нь тэдгээр блокууд хаашаа явахыг хэлж өгдөг. Гэвч үнэн хэрэгтээ энэ нь эсрэгээрээ - энэ нь өмнөх хүрээ биш, харин дараагийнх нь дүн шинжилгээ хийх болно; блокууд хаана хөдөлж байгаа нь тодорхойгүй, гэхдээ хаанаас ирсэн нь тодорхойгүй байна). Ихэвчлэн эх блокууд нь эх хүрээн дээр давхцдаг. Зарим видео шахах алгоритмууд нь одоогийн фреймийг нэг ч биш, харин өмнө нь дамжуулагдсан хэд хэдэн фреймийн хэсгүүдээс цуглуулдаг.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Үнэлгээний явцад бид бөмбөг (-аас) хөдөлсөн болохыг харж байна.x= 0, y=25) хүртэл (x= 6, y=26), утгууд x и y хөдөлгөөний векторыг тодорхойлно. Битийг хадгалахын тулд бидний хийж чадах өөр нэг алхам бол зөвхөн сүүлчийн блокийн байрлал болон таамагласан хоорондын хөдөлгөөний векторуудын ялгааг кодлох явдал бөгөөд ингэснээр эцсийн хөдөлгөөний вектор нь (x=6-0=6, y=26-25=1) байх болно. ).

Бодит нөхцөл байдалд энэ бөмбөг хуваагдана n блокууд, гэхдээ энэ нь асуудлын мөн чанарыг өөрчлөхгүй.

Хүрээнд байгаа объектууд гурван хэмжээстээр хөдөлдөг тул бөмбөг хөдөлж байх үед нүд нь жижиг болж (эсвэл үзэгч рүү шилжвэл томрох боломжтой). Блокуудын хооронд төгс тохирохгүй байх нь хэвийн үзэгдэл юм. Энд бидний тооцоолол болон бодит дүр төрхийг нэгтгэн харуулав.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Гэхдээ бид хөдөлгөөний тооцооллыг ашиглах үед фрейм хоорондын дельтийг тооцоолох энгийн аргыг ашиглахаас илүү кодчиллын өгөгдөл мэдэгдэхүйц бага байгааг бид харж байна.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Бодит хөдөлгөөний нөхөн төлбөр ямар байх вэ

Энэ техникийг бүх блокуудад нэг дор хэрэглэнэ. Ихэнхдээ бидний нөхцөлт хөдөлж буй бөмбөгийг нэг дор хэд хэдэн блок болгон хуваах болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Та эдгээр ойлголтуудыг өөрөө ашиглан мэдэрч болно Жуптер.

Хөдөлгөөний векторуудыг харахын тулд та гадны таамаглалын видеог ашиглан үүсгэж болно ffmpeg.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Та бас ашиглаж болно Intel Video Pro анализатор (энэ нь төлбөртэй, гэхдээ зөвхөн эхний арван фреймээр хязгаарлагдах үнэгүй туршилт байдаг).

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Орон зайн илүүдэл (дотоод таамаглал)

Хэрэв бид видеон дээрх фрэйм ​​бүрд дүн шинжилгээ хийх юм бол бид хоорондоо холбоотой олон хэсгийг олох болно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Энэ жишээг авч үзье. Энэ үзэгдэл нь ихэвчлэн хөх, цагаан өнгөнөөс бүрддэг.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Энэ бол I-хүрээ юм. Бид өмнөх фрэймүүдийг урьдчилан таамаглах боломжгүй, гэхдээ бид үүнийг шахаж чадна. Улаан блокийн сонголтыг кодчилъё. Хэрэв бид түүний хөршүүдийг харвал түүний эргэн тойронд зарим өнгөт чиг хандлага байгааг анзаардаг.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Хүрээнд өнгө босоо байдлаар тархсан гэж бид таамаглаж байна. Энэ нь үл мэдэгдэх пикселийн өнгө нь хөршүүдийн утгыг агуулна гэсэн үг юм.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Ийм таамаглал буруу болж магадгүй юм. Энэ шалтгааны улмаас та энэ аргыг (дотоод таамаглал) хэрэглэж, дараа нь бодит утгыг хасах хэрэгтэй. Энэ нь бидэнд үлдэгдэл блок өгөх бөгөөд энэ нь анхныхтай харьцуулахад илүү шахагдсан матрицыг бий болгоно.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Хэрэв та дотоод таамаглалаар дадлага хийхийг хүсвэл ffmpeg ашиглан макроблокууд болон тэдгээрийн таамаглалын видеог үүсгэж болно. Блокны өнгө бүрийн утгыг ойлгохын тулд та ffmpeg баримт бичгийг унших хэрэгтэй.

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Эсвэл та Intel Video Pro Analyzer ашиглаж болно (дээр дурдсанчлан, үнэгүй туршилтын хувилбар нь эхний 10 фреймээр хязгаарлагддаг, гэхдээ энэ нь эхлээд танд хангалттай байх болно).

Видео кодлогч хэрхэн ажилладаг вэ? 1-р хэсэг: Үндсэн ойлголт

Хоёрдугаар хэсэг: Видео кодлогч хэрхэн ажилладаг

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх