|
H.264 KODLAYICI PROJESİ H.264 Video Kodlama Standardı İçin Verimli ve Düşük Karmaşıklıkta Kodlayıcı Tasarımı (Efficient and Low-complexity Encoder Design for H.264 Video Coding Standard)
H.264
Video Kodlama Standardı H.264/AVC, ITU-T VCEG (Video Kodlama Uzmanları
Grubu) ve ISO/IEC MPEG (Devinimli Resim Uzmanları Grubu) ortak çalışmalarının
ürünü olan en yeni video kodlama standardıdır [15].
H.264 standardının arkasındaki en başta gelen hedef yüksek
sıkıştırma performansı olan, telekominikasyon ağlarıyla
uyumlu ve gürbüz bir video gösterimi elde etmektir. H.264, varolan diğer
standardlara göre, hız-bozunum verimliliğinde önemli derecede iyileşme
getirmiştir. Bu bölümde H.264ün video kodlamayla ilgili modülleri ve
özellikleri hakkında kısa bir bilgi sunacağız.
Şekil
1.: H.264 Kodlayıcı Yapısı [16] Şekil1de H.264 için temel kodlayıcı
yapısı verilmiştir. Her çerçeve, ışıklılılık
bileşeni için, 16x16 piksellik makrobloklara (MB) bölünür, ve kodlayıcı
her MBu uygun bir sırayla kodlar. H.264 kodlayıcısının
temel modülleri, yani DCT transformasyonu/nicemleme, devinim kestirimi ve
denkleştirmesi, kip seçimi, kodlayıcı karar ve kontrolleri, daha
önceki standardlarda da benzerleri bulunan modüllerdir. Çerçeve içi öngörü
kipleri ve blok giderici filtreleme, diğer standardlarda olmayan ya da
H.264te daha özgün yapıya sahip modüllerdir. Bütün blokların
temel görevlerinin bilindiğini kabul ederek, H.264ün projemizde önem
teşkil edecek farklılıklarından bahsetmek istiyoruz: Çerçeveler arası devinim kestirimi: Devinim
denkleştirmeli öngörü için, her MB farklı boyutlarda alt-bloklara
bölünebilmektedir. Işıklılık sinyali için kullanılabilecek
alt-blok boyutları 16x16, 16x8, 8x16, 8x8 pikseldir. 8x8 bölüntülenmesi
seçilirse, her 8x8 alt-bloğu ayrıca 8x4, 4x8 ya da 4x4lük alt-bloklara
ayrılabilmektedir. Şekil 2de bu bölüntülenme gösterilmiştir.
Şekil
2.: Farklı MB bölüntü çeşitleri [16] Her alt-blok için devinim kestirimi yapılır;
yani her alt-blok için referans çerçevesinde en düşük hız-bozunum
masrafını verecek aynı boyutta bir öngörü bloğu aranır.
4x4 bölüntülenmesi kullanılıyorsa, bu, MB için 16 farklı
devinim vektörünün bulunup kodlanması demektir. Hesap karmaşıklığındaki
bu artışa karşın farklı boyutlarda devinim kestirimi
yapılması ve bunların arasından hız-bozunum verimliliği
en yüksek olanın seçilmesi kodlayıcının performansına
önemli katkı sağlar. H.264te
devinim denkleştirmesini daha verimli kılan diğer iki faktör,
devinim kestiriminin birden fazla sayıda referans çerçevede yapılabilmesi
(bkz. Şekil 3) ve devinim vektörlerinin hassaslığının
çeyrek piksel çözünürlüğe kadar artırılabilmesidir (bkz.
Şekil 4). Bu iki özellik, denenmesi gereken devinim vektörlerinin miktarını
artırdığı için hesap karmaşıklığını
da artırmaktadırlar.
Şekil
3.:Alternatif referans çerçeveler [16] Devinim denkleştirmesi
P-tipi ve B-tipi MBlar için yapılmaktadır. B-tipi MBlarda
devinim kestirimi için iki farklı öngörü bloğu seçilip bu iki
farklı öngörünün ağırlıklı ortalaması kullanılmaktadır.
Şekil
4.: Çeyrek piksel çözünürlüklü devinim vektörü [3] Çerçeve içi öngörü kipleri: Devinim
denkleştirilmesi yapılmayan MBlar için (I tipi MBlar), aynı
çerçeve içinde daha önceden kodçözülmüş komşu piksel değerlerini
kullanarak öngörüde bulunmak mümkündür. Bu öngörü, ışıklılık
sinyali için, iki farklı şekilde yapılabilir: MB 4x4lük alt-bloklara
bölünür ve her alt-blok için komşularından öngörüde bulunulur
(Intra-4x4), ya da 16x16 MB için bütün olarak öngörüde bulunulur
(Intra-16x16). Ayrıca, Intra-4x4 için 9, Intra-16x16 için 4 farklı
öngörü biçimi (kipi) tanımlanmıştır. Şekil 5,
Intra-4x4 öngörüsü için kullanılan komşu pikselleri ve 9 öngörü
yönünü göstermektedir. Şekil 6da, öngörünün yönüne göre, beş
farklı öngörü kipi resmedilmiştir. Tüm öngörü kipleri için
gerekli formüller standard tarafından belirlenmiştir. Çerçeve içi
öngörü kipleri de, verimliliğe katkı sağlamakla birlikte,
eniyi kip seçimi için yapılması gereken hesap miktarını
artırmaktadır.
Şekil
5.: Komşu pikseller ve öngörü yönleri [16]
Şekil
6.: Intra-4x4 için ilk 5 öngörü kipi [16] Kip seçimi: Her
MB için, bütün çerçeve içi, çerçeveler arası ve diğer kip çeşitleri
içerisinden hız-bozunum (H-B) verimliliği en yüksek olan kipin seçilmesidir.
Bunun için, her kipin H-B masrafının hesaplanması ya da bir
şekilde kestirilmesi gerekmektedir. DCT Transformu ve Entropi Kodlaması: MBun
ışıklılık ve renklilik bileşenleri için çerçeve
içi ya da çerçeveler arası öngörü yapıldıktan sonra, geriye
kalan öngörü hatası 4x4lük alt-bloklar halinde DCT
transformasyonundan geçirilir, ölçeklenir, nicemlenir ve entropi kodlanır.
Kodlayıcı kontrolü: Kodlayıcı
kontrol modülü, her MB için kodçözücüye gönderilmesi gereken ve MBın
nasıl kodlandığına dair bilgi içeren kontrol
parametrelerinin seçiminden sorumludur. Bu parametrelere örnek olarak MB
kodlama kipi ve nicemleme adım boyutu gösterilebilir. Nicemleme adımının
seçimi hız kontrolü açısından çok önemlidir. Hız
kontrolü ile ilgili detaylı bilgi 5. iş paketinde verilecektir. Basitçe,
hız kontrolü, çerçeve seviyesinde ya da MB seviyesinde nicemleme adımının
boyutunu değiştirmek suretiyle gerçekleştirilebilir. H.264
standardı, H-B optimizasyonunu kullanarak, bit hızını
ayarlarken resim kalitesini en üst seviyede tutabilmeyi amaçlamaktadır.
Bunu başarabilmek için, hız kontrol modülünün kodlayıcının
diğer modülleriyle olan ilişkisini anlamaya ihtiyaç vardır.
|
|