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)

 

ÖZET

 H.264 video kodlama standardı son zamanda geliştirilen, kodlama verimliliği potansiyeli önceki standardlara göre çok daha iyi olan (aynı kalitede video dizini için %50’ye yakın bit hızı tasarrufu sağlayabilen) uluslararası bir standarttır. H.264’ün yüksek kodlama verimliliği ve farklı komünikasyon ortamlarıyla uyumlu ve gürbüz yapısı bu standardın önümüzdeki bir kaç yıl içinde, dijital TV, DVD, internet üzerinden ve telsiz ağlarda video konferansı ve video iletimi gibi uygulamalarda geniş çapta kullanılacağını işaret etmektedir.

 Bu projede H.264 standardıyla uyumlu ve yüksek kodlama verimliliğine sahip, gerçek zamanda kodlama yapabilecek bir kodlayıcı geliştirilmesi amaçlanmaktadır. Bunun için standardın detaylı şekilde analizi ve kodlayıcının yüksek hesaplama karmaşıklığı gerektiren modülleri için performansı en üst düzey, karmaşıklıklığı düşük olan algoritmaların geliştirilmesi gerekmektedir. Projenin amacına uygun olarak, hem verimlilik hem de karmaşıklık kriterlerini dikkate alan, bu kriterler arasında eniyi bir ödünleşim sağlayan algoritmaların tasarımı hedeflenmektedir. Bu algoritmaların en çok karmaşıklığa neden olan devinim kestirimi, referans çerçeve seçimi, kip seçimi, ve kodlayıcının verimliliği için önemli olan hız kontrolü modülleri üzerinde odaklanması düşünülmektedir. Geliştirilen algoritmaların yazılımdaki performansı, toplanan standard video dizinleriyle test edilerek, H.264 referans modeli ve literatürdeki diğer tasarımlarla karşılaştırılarak değerlendirilecektir. Tasarlanan kodlayıcının donanım olarak gerçekleştirilmesi halinde nasıl bir performans sergileyeceği simülasyonlarla ve çeşitli kriterler kullanılarak değerlendirilecektir.

 

 

ABSTRACT 

H.264 video coding standard is a recently developed international standard that has a much higher coding efficiency potential (capable of saving up to %50 bit rate at the same level of video quality) than the previous standards. Due to its high coding efficiency and due to its flexibility and robustness to different communication environments, H.264 is expected to be widely used within a couple of years in many applications such as digital TV, DVD, video transmisson and video conferencing over the internet or in wireless networks. 

 In this project, the primary objective is to develop an H.264 complaint encoder that is capable of working in real-time with high coding efficieny. Therefore, the details of the standard need to be fully analyzed, and high performance, low complexity algorithms have to be developed for all the encoder modules with high computational complexity. In accordance with the goal of the project, the designed algorithms are expected to consider both the efficiency and the complexity criterias, and provide an optimal trade-off between these measures. These algorithms will focus on the highest complexity modules, namely motion estimation, reference frame selection, mode decision, and also rate control, which is an important module for the efficiency of the encoder. The performance of the designed algorithms will be tested in software using standard video sequences, and evaluated based on comparisons with the reference H.264 model and other designs in literature. The expected performance of the harware implementation of the encoder will also be predicted and evaluated according to simulations and different complexity measures.   

 

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]

Şekil1’de 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 MB’u 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.264’te 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 4x4’lük alt-bloklara ayrılabilmektedir. Şekil 2’de 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.264’te 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 MB’lar için yapılmaktadır. B-tipi MB’larda 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 MB’lar için (I tipi MB’lar), 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 4x4’lü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 6’da, ö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ı: MB’un ışı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ı 4x4’lü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.