Modern Video Sıkıştırma Algoritmaları Aslında Nasıl Çalışır?

Modern Video Sıkıştırma Algoritmaları Aslında Nasıl Çalışır?

Modern video sıkıştırma algoritmaları, aşina olabileceğiniz görüntü sıkıştırma algoritmalarıyla aynı değildir. Ek boyut ve zaman, video kalitesini korurken boyutu küçültmek için video dosyasına farklı matematiksel ve mantıksal tekniklerin uygulandığı anlamına gelir.

Bu yazıda, arketipsel sıkıştırma standardı olarak H.264 kullanıyoruz. Artık en yeni video sıkıştırma formatı olmasa da, video sıkıştırmayla ilgili büyük resim kavramlarını açıklamak için hala yeterince ayrıntılı bir örnek sağlıyor.

Video sıkıştırma algoritmaları, uzaysal ve zamansal fazlalıkları arar. Gereksiz verileri minimum sayıda kodlayarak dosya boyutu küçültülebilir. Örneğin, bir karakterin yüzünün yavaş yavaş değişen ifadesinin bir dakikalık görüntüsünü hayal edin. Arka plan görüntüsünü her kare için kodlamak mantıklı değil: bunun yerine, onu bir kez kodlayabilir, ardından videonun değiştiğini öğrenene kadar ona geri bakabilirsiniz. Bu çerçeveler arası tahmin kodlaması, dijital video sıkıştırmanın sinir bozucu artefaktlarından sorumludur: kodlamadaki bir şey bozulduğu için eski bir görüntünün yanlış eylemle hareket eden kısımları.

Video Sıkıştırma Nasıl Çalışır IP ve B Frames.svg

I çerçeveleri tamamen kodlanmış görüntülerdir. Her I-frame, bir görüntüyü temsil etmek için ihtiyaç duyduğu tüm verileri içerir. P-çerçeveleri pgörüntünün son I-karesinden nasıl değiştiğine bağlı olarak yeniden yorumlanır. B-çerçeveleri bHem son P-karesinden hem de bir sonraki I-karesinden gelen verileri kullanarak i-yönlü olarak tahmin edilir. P çerçevelerinin yalnızca P çerçevesine özgü görsel bilgileri saklaması gerekir. Yukarıdaki örnekte, noktaların çerçeve boyunca nasıl hareket ettiğini izlemesi gerekir, ancak Pac-Man olduğu yerde kalabilir.

B-kare, P-karesine ve bir sonraki I-karesine bakar ve bu karelerdeki hareketin “ortalamasını alır”. Algoritmanın, görüntünün nerede “başladığı” (ilk I-kare) ve görüntünün nerede “bittiği” (ikinci I-çerçevesi) hakkında bir fikri vardır ve tüm fazlalıkları dışarıda bırakarak iyi bir tahmini kodlamak için kısmi verileri kullanır. görüntüyü oluşturmak için gerekli olmayan statik pikseller.

Video Sıkıştırma Nasıl Çalışır IP ve B Çerçeveleri

I-kareler bağımsız olarak sıkıştırılır, aynı şekilde hareketsiz görüntüler kaydedilir. I-kareler hiçbir tahmin verisi kullanmadığından, sıkıştırılmış görüntü, I-karesini görüntülemek için kullanılan tüm verileri içerir. Hala JPEG gibi bir görüntü sıkıştırma algoritması tarafından sıkıştırılırlar. Bu kodlama genellikle, parlaklık verilerini renk verilerinden ayıran ve hareket ve renk değişikliklerinin ayrı ayrı kodlanmasına izin veren YCbCr renk uzayında yer alır.

DV ve Motion JPEG gibi tahmine dayalı olmayan kodekler için burada duruyoruz. Tahmini çerçeveler olmadığından, elde edilebilecek tek sıkıştırma, görüntüyü tek bir çerçeve içinde sıkıştırmaktır. Daha az verimlidir ancak daha yüksek kaliteli bir ham görüntü dosyası üretir.

H.264 gibi tahmine dayalı çerçeveler kullanan codec bileşenlerinde, yeni bir referans çerçevesi ayarlayarak veri akışını “yenilemek” için I-kareler periyodik olarak gösterilir. I-kareler birbirinden ne kadar uzak olursa, video dosyası o kadar küçük olabilir. Ancak, I-kareler birbirinden çok uzaktaysa, videonun tahmine dayalı karelerinin doğruluğu yavaş yavaş anlaşılmaz hale gelir. Bant genişliği açısından optimize edilmiş bir uygulama, video akışını kesmeden mümkün olduğunca seyrek olarak I-kareleri ekler. Tüketiciler için, I-karelerin sıklığı genellikle dolaylı olarak kodlama yazılımındaki “kalite” ayarı tarafından belirlenir. ffmpeg gibi profesyonel kalitede video sıkıştırma yazılımı, açık kontrol sağlar.

Video kodlayıcılar, bir kareden diğerine değişimi “tahmin etmeye” çalışır. Tahminleri ne kadar yakınsa, sıkıştırma algoritması o kadar etkili olur. P-çerçevelerini ve B-karelerini yaratan budur. Tahmini çerçevelerin tam miktarı, sıklığı ve sırası ile bunları kodlamak ve yeniden oluşturmak için kullanılan özel algoritma, kullandığınız belirli algoritma tarafından belirlenir.

Video Sıkıştırma Nasıl Çalışır Blok Bölmesi

Genelleştirilmiş bir örnek olarak H.264’ün nasıl çalıştığını ele alalım. Çerçeve, tipik olarak 16 x 16 örnekten oluşan makro bloklar adı verilen bölümlere ayrılmıştır. Algoritma, her blok için ham piksel değerlerini kodlamaz. Bunun yerine kodlayıcı, referans çerçevesi adı verilen daha eski bir çerçevede benzer bir blok arar. Geçerli bir referans çerçevesi bulunursa, blok, referans bloktan mevcut bloğa değişimin tam yapısını tanımlayan, hareket vektörü adı verilen matematiksel bir ifadeyle kodlanacaktır. Video oynatıldığında, video oynatıcı videoyu “yeniden çevirmek” için bu hareket vektörlerini doğru şekilde yorumlayacaktır. Blok hiç değişmiyorsa, vektöre gerek yoktur.

Veriler çerçevelerine göre sıralandıktan sonra, dönüşüm kodlayıcı ile matematiksel bir ifadeye kodlanır. H.264, görsel verileri matematiksel ifadeye (özellikle, çeşitli frekanslarda salınan kosinüs fonksiyonlarının toplamı) dönüştürmek için bir DCT (ayrık-kosinüs dönüşümü) kullanır. Seçilen sıkıştırma algoritması, dönüşüm kodlayıcısını belirler. Daha sonra veriler niceleyici tarafından “yuvarlanır”. Son olarak, dosya boyutunu bir kez daha küçültmek için bitler kayıpsız bir sıkıştırma algoritmasından geçirilir. Bu, verileri değiştirmez: sadece mümkün olan en kompakt biçimde düzenler. Ardından video sıkıştırılır, eskisinden daha küçük ve izlenmeye hazır hale getirilir.

Resim kredisi: VC Demo, itu delft

En son eğitimlerimizle ilgili güncellemeleri alın.

Alexander Fox, Philadelphia, PA’da bir kedi, üç Mac ve şimdiye kadar kullanabileceğinden daha fazla USB kablosuyla çalışan bir teknoloji ve bilim yazarıdır.

Leave a Reply

Your email address will not be published. Required fields are marked *

*