İçerikler

H265/HEVC Nedir?

H265/HEVC Nedir?

Günümüz teknolojisinde tabletlerin ve cep telefonlarının 1920x1080p (full HD) ekran çözünürlüğüne sahip olduğunu görmekteyiz. Teknoloji bu şekilde gelişirken büyük televizyon ekranlarının full HD teknolojisiyle yetinmeyeceğini tahmin edebiliyorsunuzdur. İşte tam bu noktada 2K, 4K, 8K gibi çözünürlüklerden söz edebilir olduk.

Sizler de takdir edersiniz ki çözünürlükler bu kadar yükselince, kodlama (codec) teknolojilerinin de yenilerinin çıkması ve daha yeni kodlamalar kullanması kaçınılmaz oluyor. Hali hazırda kullanılan h.264/avc kodlama teknolojisi HD için yeterli oluyordu fakat 4K ve 8K çözünürlük için performanslı olmayacak gibi gözüküyor. Bu sebeple yerini H.265 (High Efficiency Video Coding) teknolojisine bırakmaya hazırlanıyor.

Nedir bu H265/HEVC ?

H.265/HEVC, ISO/IEC MPEG (Moving Picture Experts Group) ve ITU-T VCEG (Video Coding Experts Group) tarafından ortak bir çalışma sonucu oluşturulmuş bir video sıkıştırma standardıdır. Yüzeysel bir tanım yapacak olursak, H.265, H.264/avc’ye göre daha fazla sıkıştıran ve daha az bant genişliği ile bize sunan kodlama teknolojisidir.

Neden H265/HEVC’ye İhtiyaç Duyduk?

H265/HEVC’nin bir önceki standardı olan H264/AVC ilk olarak 2003 yılında yayınlandı. Yayınlandığı zamandan beri dijital videonun her alanında kullanıldığını görmekteyiz. HD (High Definition)’nin birçok cihaz ve uygulamada yaygın bir kullanım kazanmasıyla, yüksek çözünürlüğün getirdiği daha fazla bant genişliği ve daha fazla depolama alanı ihtiyacı duyulmaktadır. HD ötesi video çözünürlükleri (2K, 4K, 8K), HD’de duyulan saklama alanı ve bant genişliği ihtiyacını daha fazla hissettirecektir. Bugünkü şartlarda cep telefonları ve tabletler, 2003 yılında kullandığımız masaüstü bilgisayarlara göre daha hızlı işlem güçlerine sahiptirler. Teknoloji bu noktadayken daha başarılı sıkıştırma teknolojilerinin ortaya çıkması da kaçınılmaz oluyor.

H265/HEVC Nasıl Çalışır?

Video sıkıştırma teknolojileri genel olarak aynı yapıya sahiptirler ve Encode (kodlama) ve Decode (çözümleme) olmak üzere iki kısımda incelenebilirler. Aşağıdaki şekilde kodlama ve çözümleme sırasında izlenilen yol haritasını görebilirsiniz.

/h265/Drawing2.jpg

Şekilde de görüldüğü gibi kodlama sıralaması şöyle ilerlemektedir:

  • Bölümleme: Her resmi birden fazla birim halinde bölümleme.
  • Tahminleme: Her bir tahmin ünitesinde Inter veya Intra prediction (tahminleme) kullanarak bu ünitelerden tahminler oluşturma.
  • Dönüşüm: Artığın dönüşümü ve sayısal olarak belirlenmesi (Orijinal görüntü ve tahmini arasındaki fark).
  • Entropy: Entropinin kodlanması.

Çözümleme sıralaması ise:

  • Entropy: Entropi çözümleme ve kodlanmış dizi elemanlarının ayıklanması.
  • Ters dönüşüm: Yeniden ölçekleme ve ters dönüşüm.
  • Tahminleme: Ters dönüşüm çıktısına bağlı olarak her tahmin birimine tahmin ekleme.
  • Yeniden Düzenleme: Yeniden düzenleyerek çözümlenmiş bir video görüntüsü oluşturma.

H265/HEVC’nin yapısını biraz daha detaylı incelemeye başlayalım:

Partitioning (Bölümleme)

H.265/HEVC son derece esnek bir bölümleme yapısıyla karşımıza çıkıyor. İlk olarak resmi dikdörtgen veya kare dilimlere ayırıyor. Her video veya resim karesi dilimlere ayrıldıktan sonra bu dilimler 64x64 piksele kadar ulaşabilen Coding Tree Units (kodlama ağaç birimleri)’ne bölünür. Coding Tree Unit (CTU), kodlamanın temel birimidir. Daha önceki standartlarda (MPEG-2, H.264/AVC) bunları makroblok yapısı olarak gözlemliyorduk.

Bir Coding Tree Unit (CTU), oldukça fazla bilinen Quadtree (dörtlü ağaç) yapısına benzer bir şekilde Coding Units (kodlama birimleri)’ne bölünür. Coding Unit (CU)’ler ise Inter veya Intra Prediction (tahminleme)‘a dönüşür. Aşağıdaki şekilde bu yapıyı daha iyi anlayabiliriz.

/h265/Drawing1.jpg

Prediction (Tahminleme)

Her bir Coding Unit (CU), Intra veya Inter Prediction kullanılarak tahmin edilen bir veya birden fazla Prediction (tahminleme) birimine bölünür.

  • Intra Prediction (Resim içi Tahminleme): Her bir prediction unit (PU), aynı resimdeki komşu görüntü verilerinden tahminleme yapar. DC Prediction (Ortalama değer alma), Planar Prediction (düz yüzeyi PU’ya ayarlama) ve directional Prediction (komşu datadan tahmin etme) yöntemlerini kullanır. Aşağıdaki şekilde H.264/AVC ve H.265/HEVC’de kullanılan Intra yapısının farklarını görebilirsiniz.

/h265/Untitled.jpg

  • Inter Prediction (Resimler arası Tahminleme): Her bir Prediction Unit (PU), bir veya birden fazla referans resminden aldığı görüntü verilerinden (görünen resmin öncesindeki ve sonrasındaki resimler) Motion Compensation (hareket dengeleme) yöntemini kullanarak tahminleme yapar. Aşağıdaki resimde Inter Prediction Quadtree yapısını görebilirsiniz.

/h265/QUADTREE.jpg

Transform and Quantization (Dönüşüm ve Sayısal Değerlendirme)

H.264/AVC daha önce de belirttiğim gibi temel kodlama yapısı olarak 16x16 piksele kadar ulaşan makroblok yapısını kullanıyor. H.265/HEVC ise sıralı olarak Coding Unit (CU), Prediction Unit (PU) ve bu bölümde inceleyeceğimiz Transform Unit (TU) yapılarını kullanıyor. Transform Unit (TU), dönüşüm ve sayısal değerlendirme için temel birimdir. Transform Unit (TU), 4x4, 8x8, 16x16 ve 32x32 piksellik bloklara sahiptir. Aşağıdaki şekilde Coding Unit (CU), Prediction Unit (PU) ve Transform Unit (TU)’nin birbirleri arasındaki ilişkiyi görebilirsiniz.

/h265/cu-pu-tu.jpg

H.265/HEVC, Residual Quadtree (RST) yapısından faydalanarak tahminlemeden sonra kalan herhangi bir artık veriyi Discrete Cosine Transform (DCT) veya Discrete Sine Transform (DST)‘a dayalı Block Transform (blok dönüşüm) kullanarak dönüştürür.

Entropy Coding (Entropi Kodlaması)

Kodlanmış bir H.265/HEVC bit akışı, sayısal dönüşüm katsayıları, tahmin bilgisi (tahmin modları ve hareket vektörleri), bölünmüş bilgi ve diğer başlık verilerinden oluşur. Tüm bu elementler, Context Adaptive Binary Arithmetic Coding (CABAC) kullanarak kodlanır. CABAC, her sembol için olasılık modelini güncelleyerek yüksek bit oranlarında başarılı bir sıkıştırma olanağı sağlar. Aşağıdaki şekilde CABAC yönteminin blok şemasını görebilirsiniz.

/h265/cabac.jpg

H.265/HEVC kodlaması yukarıda anlattığım akışları kullanarak oluşmaktadır. Şimdi de H.265/HEVC’nin diğer özelliklerini inceleyelim.

Mode and Motion Vector Prediction (Mod ve Hareket Vektörü Tahmini)

H.265/HEVC, önceki kodlanmış birimlerin modlarına dayalı olarak çok yönlü tahmin ve mod bilgisini birleştirir.

Deblocking Filter (Bloklamayı Azaltma Filtresi)

Transform Unit (TU) veya Prediction Unit (PU) sınırlarında luma ve chroma örneklerine bir filtre uygulanır (bu sınırlar 8x8’lik ızgaralar halinde sıralanır). Bu filtrenin gücü H.265/HEVC bit akışındaki işaretli içerik elementleri tarafından kontrol edilir. Deblocking filtresi, kayıplı sıkıştırma ile blok/unit kenarlarında meydana gelen bloklanma etkilerini engellemek amacıyla tasarlanmıştır.

Sample Adaptive Offset (Örnek Uyarlamalı Kaydırma)

Kodlanmış video karelerini ayarlayarak düzgün bölgeler ve nesne kenarlarının görüntüsünü geliştiren isteğe bağlı bir filtredir. Sample Adaptive Offset (SAO) filtresi, H.265/HEVC bit akışında işaretlenebilen lookup tablolarını kullanarak doğrusal olmayan bir filtredir.

Parallel Processing (Paralel İşleme)

H.265/HEVC, paralel işlem kapasitesine sahip çözücüler için oldukça faydalı olabilecek çeşitli özellikler içerir. Bu özellikler şunları içerir:

  • Tiles: Çözülebilir bağımsız dikdörtgen bölgeler.
  • Wavefront Parallel Processing (WPP): Yeni bir Coding Tree Unit (CTU) sırasının yalnızca önceki sıradaki iki CTU çözüldükten sonra çözülebileceğini garanti eden bir kodlama modu.

Profiles, Levels ve Tiers (Profiller, Seviyeler ve Katmanlar)

Bir profil, bir çözücünün desteklemesi gereken H.265/HEVC kodlama araçları alt kümesini tanımlar. Seviye ve katman kombinasyonu, resim boyutu, kodlanmış örnekler/saniye, bit oranı ve tamponlama gibi maksimum çözücü işleme kapasitesini tanımlar.

Son olarak, H.265/HEVC’nin diğer kodlama tekniklerine göre kazançlarını incelediğimizde, bir önceki kodlama tekniği olan H.264/AVC’ye göre uygulamalarda %35-40 verimlilik kazancı elde ettiğimizi gözlemliyoruz. Bu durumu aşağıdaki şekillerde daha net görebiliriz.

/h265/PSNR1.jpg

/h265/PSNR2.jpg

/h265/schema.jpg

Bu makalede sizlerle H.265/HEVC hakkında bilgiler paylaşmaya çalıştım. Umarım faydalı bilgiler verebilmişimdir. Teknik terimlerin Türkçe karşılıkları konusunda bazı belirsizliklerim oldu, bu konuda geri bildirimleriniz benim için önemli olacaktır. Bir başka makalede görüşmek üzere.