En Çok Kullanılan Codec Paketleri

Daha önceki yazılarda çeşitli video codec standartlarından bahsettik hepsini sıkıştırma ve kaliteleri bakımından tek tek ele alıp, özelliklerini açıkladık. Daha önce anlatıldığı gibi codec’ler dosya biçimlerinin bilgisayar sistemleri üzerinde daha az yer kaplamalarını sağlamak amacıyla belirli kodlama metodları kullanılarak çözünürlük, saniye başına yenileme hızı gibi ayarlar yeniden yapılandırılmaktadır. Her bir ayrı yapılandırma ile farklı biçimler elde edildiğinden tüm bu biçimlerin oynatılabilmesi için özel olarak kodlanmış dosyalar çözücüler yardımıyla açılabilmektedir. Bazı video, ses dosyası uzantıları sadece kendine özel codec ile çalıştırılabilir ve farklı videolar için farklı codec çeşitleri gerekebilir. İşte bu durumda sahip olunan tüm popüler çoklu ortam dosyalarının sorun yaşanmadan izlenebilmesi için çözücülerin birarada bulunduğu paket yazılımlara ihtiyaç duyulmaktadır. Bu yazıda da en çok kullanılan codec paketlerini inceleyeceğiz.

K-Lite Codec Pack

Bir çok codec paketi arasında en popüler olanlarından bir tanesi K-Lite Codec paketidir. K-Lite Codec, içerisinde 3 adet oynatıcı barındırır. Bu oynatıcıların üçü de Media Player Classic’in farklı amaçlar için geliştirilen versiyonudur. Görüntü codec’i olarak XviD, DivX, DivX H.264, On2 VP7, MPEG-2 ve WebM VP8 içerir. Ses codec’leri arasında ise AC3/DTS/LPCM, Vorbis ve AAC bulunmaktadır. Bunlar dışında daha iyi kaliteli sunum için içerisinde onlarca farklı çözümleme yazılımı da mevcuttur. Paket içeriğinde codec’lerin yanısıra oynatıcı (Media Player Classic) ve altyazı (DirectVobSub) desteğinin olması filmlerin altyazılı bir şekilde de izlenebilmesini sağlar. K-Lite Codec paketi, video dosyalarını farklı formatlara çevrilebilmesi özelliği ile video düzenleme ve encoding işlemleri ile ilgilenen kullanıcılar için de idealdir. K-Lite Codec paketinin en büyük eksisi ise, sadece Windows 2000/XP/2003/Vista/7 işletim sistemlerini desteklemesidir. K-Lite codec paketi sürümlerine aşağıdaki linklerden erişebilirsiniz.

K-Lite Codec Pack Full

K-Lite Mega Codec Pack

ACE Codec Pack

ACE Mega Codec Pack yazılım dünyasının en gelişmiş ses-video çözücü paketlerinden biridir. Yazılımında sahip olduğu çözücüler ile bilgisayarlarda kullanılmakta olan tüm ses ve video dosyalarını oynatabilmenizi sağlamaktadır. ACE Codec Paketi, çözücülerin (codec’lerin) yanısıra dosya parçalama-birleştirme araçlarına, BSPlayer, Media Player gibi oynatıcılara, ses kayıt ve işleme araçlarına, ses-video biçim dönüştürücülerine, filtrelere, CD-DVD sürücüleri için bilgilendirme araçlarına sahiptir. Çeşitli kurulum seçeneklerine sahip olan bu yazılımın sunduğu tüm imkanlardan yararlanabilmek için “Professional” seçeneğiyle kurulum yapılması gerekmektedir. ACE codec paketine aşağıdaki linkten erişebilirsiniz.

ACE Mega CoDecS Pack

CCCP(Combined Community Codec Pack)

Popüler codec paketlerinden biri olan Combined Community Codec Pack yani CCCP MPCHC ile beraber tercih edilmektedir. Farklı formatlarda karşımıza çıkan video dosyalarını oynatmak için gereken codeclerin bir arada bulunduğu çeşitli codec paketleri bazen sisteme gereğinden fazla ya da birbirleriyle çakışan programlar yükleyebiliyor. Bu da sistemde çeşitli sorunlara neden olabiliyor. Bu noktada sisteme yüklediği codecler ile ilgili fazlasıyla seçici olan CCCP, ihtiyaç duyulacak kadar az sayıda codec yükleyerek sisteminizde sorun çıkartma olasılığını azaltmaktadır. Böylece bazı eski ve az rastlanan formatlara destek vermese de, sistemi gereksiz kirlilikten uzak tuttuğu için CCCP öne çıkmaktadır. CCCP codec paketine aşağıdaki linkten erişebilirsiniz.

CCCP (Combined Community Codec Pack)

Shark007

Shark007 olarak tanınan geliştirici kullanıcılara çeşitli işletim sistemleri için farklı codec paketleri sunmaktadır. Shark007’nin Windows Vista, Windows 7 ve Windows 8 işletim sistemleri için hazırladığı codec paketlerine aşağıdaki linklerden erişebilirsiniz

Vista Codec Package

Win7codecs

Windows 8 Codecs

Apple Quicktime Alternative

QuickTime çeşitli biçimlerdeki sayısal görüntü, ses, yazı, animasyon, müzik, resim dosyalarını işleyen, Apple Computer tarafından geliştirilen bir çoklu ortam teknolojisidir. Windows altındaki kullanıcılara QuickTime yerine daha hızlı ve sağlam çalışan alternatiflere yönelmeleri tavsiye edilmektedir. Bu alternatiflerden biri QuickTime Alternative’dir.[4]

QuickTime Alternative, QuickTime programına ihtiyaç olmadan Apple’ın bu özel formatıyla hazırlanmış videoları farklı oynatıcılar ile oynatabilmesi için gerekli olan kod çözücüleri bize sunan alternatif bir pakettir. QuickTime Alternative, başta .mov dosyaları olmak üzere .qt, .3gp gibi QuickTime dosyalarını istenilen oynatıcıda açabilmeyi sağlamaktadır. Internet Explorer, Opera, Mozilla, Netscape gibi tarayıcıları destekleyen bu paket aynı zamanda web sayfaları içine gömülü durumdaki QuickTime içeriği görüntülemek için de desteğe sahiptir. Apple Quicktime Alternative paketine aşağıdaki linkten erişebilirsiniz.

QuickTime Alternative

En popüler olan bu codec paketlerinin yanı sıra çok kullanılan diğer codec paketlerine de aşağıdaki linklerden erişebilirsiniz.

Media Player Codec Pack

Cole2k Media Codec Pack

Matroska Pack

Nimo Codec Pack

SAF Codec Pack

Windows Essentials Codec Pack

AMD Media Codec Package

DivX Total Pack

Referanslar:

[1] http://forum.donanimhaber.com/m_8061240/tm.htm

[2] http://download.chip.eu/tr/en-populer-20-codec_3396713.html?tab=5&show=14

[3] http://shiftdelete.net/en-iyi-codec-yazilimlari-divx-8.0.1_21395-s7.html

[4] http://tr.wikipedia.org/wiki/QuickTime

Diğer Video Kodlayıcı Standartları

Şimdiye kadar en çok kullanılan, en çok adı duyulan video codec standartlarından bahsettik. Ayrıntılı olarak ele aldığımız bu video codec standartları dışında, yine belli bir zaman video kodlamada bir seçenek geliştirmiş olan başka standartlar da mevcuttur. Anlatmadığımız diğer video codec’ler hakkında da kısa bilgiler verelim.

WMV (Windows Media Video)

1999 yılında Microsoft ailesi tarafından geliştirilen bu video codec tasarımı WMV 7, WMV 8 ve WMV 9 versiyonlarına sahiptir. WMV, Windows işletim sistemi altında hareketli görüntüleri göstermek için tasarlanmış bir teknolojidir. Codec’in ilk versiyonu olan WMV 7 1999 yılında Microsoft’un uygulaması olan MPEG-4 Part 2 üzerinden yapılmaya başlanmıştır. son versiyonu WMV 9, codec’e bir çok yeni özellik sağlamaktadır. Bu versiyonda sıkıştırma verimliliği artmış ve daha düşük bitrate’de daha kaliteli videolar işlenebilmektedir.

DivX / XviD:

DivX ilk olarak 1998 yılında Jerome Rota(Gej) adında Fransız bir hacker’ın Microsoft’tan çaldığı bir MPEG4 türüydü. Daha sonra 2000 yılında DivX, Inc.(eski adıyla DivXNetworks) şirketi tarafından geliştirilmeye başlanan bir video codec standardıdır. Daha önce adı DivXNetwork olan şirket kurulmuş, sonra DivX, Inc. adını alarak 2000 yılında DivX 4.0, 2002’de DivX 5.0 ve 2005’te DivX 6.0 codecleri piyasaya sürülmüştür.

DivX, sayısal videoyu MPEG-4 Bölüm 2 uyumlu sıkıştırarak çok az bir görsel kayıpla videonun saklanabilmesini sağlar. MPEG-4 standardı sadece görüntü kodlamasında kullanılmaktadır, videodaki ses kısmı MPEG-4’ten farklı olarak MP3 ya da AC-3 ile kodlanır.

DivX 4 açık kaynak kodlu OpenDivX üzerine geliştirilmiştir, ancak DivXNetworks şirketi daha sonraları OpenDivX kodu kapalı hale getirmiştir. DivX codec’inin ücretli hale getirilmesi üzerine, bu projeden ayrılanlar ve yeni katılanların oluşturduğu bir grup, kod kapatılmadan önce alınan kod parçalarıyla, açık kaynak kodlu XviD codec’i geliştirmiştir.

Bu codec kaynak kodunun açık ve ücretsiz olması nedeniyle kısa sürede DivX’ten daha popüler olmuştur.

VP3, VP4, VP5, VP6, VP7, VP8, VP9:

On2 firmasının TrueMotion VP3/4(2001), TrueMotion VP5/6(2002), TrueMotion VP7(2005), VP8 (2008), VP9(2011) adıyla geliştirdiği video codec çeşitleridir. Her versiyon bir önceki versiyonu referans alınarak geliştirilmiştir, ve diğerinin yerini almıştır. Adobe Flash Player 8 ve öncesi, Adobe Flash Lite, Java FX ve diğer mobil ve masaüstü video platformlarında kullanılmaktadır. bu video codecler 720p ve 1080p çözünürlüğe kadar olan görüntüleri desteklemektedirler. VP8 video codec’i libvpx (VP8 codec library) isimleri altında açık kaynak kodlu hale getirilmiştir. Piyasadaki en önemli özgür video codec’i Google On2 firmasını satın aldıktan sonra geliştirdiği VP9 formatında sağlamaktadır.

Theora:

Theora, Xiph.org Foundation tarafından, Ogg projelerinin bir parçası olarak geliştirilen bir codec’tir. On2 Teknolojisinin VP3 codec’ini temel alan ve On2 tarafından VP3’ün varisi olarak adlandırılan Theora açık kaynak kodlu ücretsiz ve kayıplı sıkıştırma yapan bir codectir. Düşük bitrate’e sahip bu codec, MPEG-4, RealVideo,Windows Media Video ve benzeri düşük bitrate’de sıkıştırma yapan codec’ler ile rekabeti hedeflemektedir.

Indeo:

ilk olarak 1992 yılında Intel tarafından geliştirilen, şuan Ligos’un sahiplendiği eski bir video sıkıştırma formatıdır. Televizyon kalitesinde görüntü sıkıştırması için DVI(Digital Video Interactive) tabanlı sadece donanım çözücüsüdür. Özel lisansı sebebiyle (sürüm 4 ve 5) açık kaynak kodlu görüntü çözücüler tarafından desteklenmemektedir[7].

RealVideo:

1997 yılında RealNetworks tarafından geliştirilmeye başlanan, birkaç yıl öncesine kadar popüler olan video kodlayıcı ve sıkıştırma formatıdır. Kayıplı sıkıştırma yapan bu codec, Windows, Mac, Linux, Solaris ve birçok mobil ve benzer platform tarafından desteklenmektedir.

Cinepak:

Cinepak, Radius Inc tarafından geliştirilen bir görüntü çözücüdür, Apple QuickTime’ın ve Microsoft Video for Windows’un eski sürümlerinin ilk çözücüsüdür, fakat daha sonra yerini Sorenson Video, Intel Indeo ve en çok da MPEG-4 biçimine kaptırmıştır. Yine de, Cinepak ile kodlanmış filmler birçok platform tarafından hala desteklenmektedir.[8]

Sorenson Media:

1995 yılında geliştirilmeye başlanan bu codec Apple QuickTime tarafından çokça kullanılmaktadır. Sorenson video codec’i H264 codec’inin atası olmuştur, H264 Sorenson’un bir çok özelliğini kullanmaktadır. Yüksek video kalitesini koruyarak önemli ölçüde bant genişliği gereksinimini azaltmayı sağlayan, yenilikçi ve  uygun maliyetli video kodlama teknolojisini geliştiren bu codec piyasa talebini oldukça karşılamaktadır.

Piyasaya çıktığından beri, Sorenson Media’nın video kodlama teknolojisi (H264 formatıyla yerine geçmeden önce), Apple Bilgisayar’ın web site tanıtımında ve Disney, Lucas Film, MGM ve Paramount ve iTunes gibi müzik video kliplerinde kullanılmıştır.

Referanslar:

[1] http://tr.wikipedia.org/wiki/WMV_%28Windows_Video_Format%C4%B1%29

[2] http://en.wikipedia.org/wiki/Windows_Media_Video

[3] http://tr.wikipedia.org/wiki/DivX

[4] http://en.wikipedia.org/wiki/On2_Technologies

[5] http://en.wikipedia.org/wiki/VP9

[6] http://en.wikipedia.org/wiki/Theora

[7] http://en.wikipedia.org/wiki/RealVideo

[8] http://tr.wikipedia.org/wiki/Cinepak

[9] http://en.wikipedia.org/wiki/Sorenson_Media

H.265 (HEVC) & H.264 Karşılaştırması

Daha önceki yazılarda H264() ve H265(HEVC) video codeclerinden bahsetmiştik. H265(HEVC) video codec’i kendinden önce geliştirilen H264 video codec2ini referans alarak geliştirilmiştir. Peki H265 video codec’i H264 ile kıyaslandığında ne gibi ek özellikler getiriyor bunu inceleyelim.

Internet üzerinde kullanılan bantgenişliğinin yarıdan fazlasının videolardan kaynaklandığı varsayılıyor. HEVC 265’in en önemli özelliği, aynı kalitedeki görüntüyü H.264′ün ihtiyaç duyduğunun yarısı kadar bir bit hızıyla gerçekleştirebiliyor olmasıdır. Bu, H.265 ile kodlanmış videonun, aynı kalitede ve H.264 ile kodlanmış videoya göre daha az dosya büyüklüğüne sahip olacağı anlamına geliyor. Yani, HEVC 265 video bitlerinin iletiminde de daha az bant genişliğinin yeterli olmasını sağlıyor.

H.265, H.264’ün yarısı kadar bit hızına ihtiyaç duyduğundan, yüksek kalite videoların,düşük verilerde izlenmesini mümkün kılıyor. Yani H.264 standartlarında 700 MB olan bir film, 350 MB boyutunda yer kaplıyor ve buna rağmen kalitede bir düşüş olmuyor.

Aşağıda H265 ve H264 ile kodlanmış videolardan alınan kareler incelendiğinde H265 standartıyla kodlanan videoda Bit rate ve File size (dosya boyutu) ‘nun yarı yarıya düştüğü, fakat video kalitesinin daha iyi ve keskin olduğu görülüyor.

20120228_qualcomm_h.264_vs_h.265

H264vsH265

Şimdi de H265 ve H264 ile kodlanmış farklı kalitedeki resimlere göre değerlendirilmiş PSNR-bitrate oranlarını veren grafikleri inceleyelim.

480p çözünürlükte resim

480p çözünürlükte resim

720p çözünürlükte resim

720p çözünürlükte resim

1080p çözünürlükte resim

1080p çözünürlükte resim

H.265’in bir diğer avantajı ise yüksek verimliliğidir. H.264, ölçeklendirmeleri piksel piksel yaparken, H.265 ölçeklendirmeleri, benzer alanları algılayarak, bir bütün halinde yapıyor. Bu da verimi ve ölçeklendirme hızını arttırıyor.

Aşağıdaki resimde, otobüsün kırmızı alanını, piksel piksel incelemeye gerek yoktur. H.265, bu işlemi bir bütün olarak yerine getiriyor ve 4:4:4 örneklemesiyle, daha net bir hale getiriyor.

HEVC-Newly-developed-compression-format-showcase

Aşağıdaki H265’in tanıtım videosunda H264 video codec’iyle aralarındaki fark net olarak gözükmektedir.

Referanslar:

[1] http://ec2-50-16-227-110.compute-1.amazonaws.com/media/store/page-media/events/39/AVC%20&%20HEVC%20-%20PBS%20TechCon%202012%20-%20Goldman%20v2%20(ppt).pdf

[2] http://shiftdelete.net/h.265-video-standardi-tamamlandi-42675.html

[3] http://forum.skystar-2.com/hevc-h-265-ile-daha-kaliteli-videolar-t-6416.html#ixzz2oCzR33HL

[4] http://cekirdek.tv/h-265-video-formati-geliyor-hd-filmler-yari-boyuta-iniyor/#sthash.VoFEiVoA.dpuf

[5] http://www.vcodex.com/h265.html

H.265 (HEVC) Video Kodlayıcı Standardı

h-265-hevc-logo-270113Önceki yazılarda her biri farklı sıkıştırma oranı ve depolama alanına sahip video kodlayıcı standartlarından bahsetmiştik. Bu standartların her biri bir diğerini referans alarak oluşturulmuş daha iyi sıkıştırma oranı ya da depolama alanı azaltımı sağlaması yönünden yenilikleriyle yeni bir seçenek haline gelmiştir. Bu yazıda da  H.264/MPEG-4 AVC referans alınarak yapılan bu yıl ilk aşamasının onaylandığı duyurulan H.265 (HEVC) standardı anlatılacaktır.

H264’ün devamı için ISO/IEC 2007 yılında çalışmaya başlarken, ITU-T 2004 yılında çalışmalarına başlamıştı. 2010 yılında bu iki uzman grup The Joint Collaborative Team on Video Coding (JCT-VC) adında birleşerek yeni codec standardı için çalışmalarını beraber sürdürdüler. Nisan 2010’da codec için HEVC (High Efficiency Video Coding, Yüksek Verimli Video Kodlama) ismi kararlaştırıldı. İlk çalışma taslaklarını Şubat 2012’de tamamladılar ve 25 Ocak 2013’te Uluslararası Standardın son taslağı ITU-T ‘nin onayıyla duyuruldu.

HEVC, MPEG-2 ve H264 gibi daha önceki standartlarla aynı temel yapıya sahiptir. Fakat HEVC önceki standartlara göre daha iyi performans sağlama potansiyeline sahiptir. Potansiyel artan işlem gücü pahasına daha iyi sıkıştırma yapılmasına olanak sağlamaktadır. Önceki teknolojilerle kıyaslandığında daha verimli video iletiminin ve depolamanın mümkün olduğu görülmüştür.H.265’İn temel hedefi düşük bant genişliği sunan ağlarda yüksek kalitede video akışı sağlamaktır.

Güncel HEVC standartlarında, 3 farklı profil bulunmaktadır. Bu profiller Main, Main 10 ve Main Still Picture olarak sıralanıyor. Main, 8 bit renk desteğine sahipken, Main 10 10 bit renk desteği veriyor. Bu iki profilin alt örnekleme yaptığı 4:2:0 formatı, 4:2:2 olarak geliştiriliyor. Ayrıca 2014’e kadar da 4:4:4 örneklemelerin hayatımızda olacağı söyleniyor. Aşağıdaki 4:2:0 ile ve 4:4:4 ile örneklenen resimlere bakıldığında, aradaki fark ortaya çıkmaktadır.[5]

untitled

Şimdi HEVC’in nasıl çalıştığını inceleyelim. HEVC’in daha önceki standartlarla aynı genel yapıda olduğunu söylemiştik. Ardarda frame’lerden oluşan bir video, sıkıştırılmış bir video bit akışı(bitstream) oluşturmak için  bir video encoder(kodlayıcı) tarafından kodlanır ya da sıkıştırılır. Sıkıştırılmış bitstream medya aygıtında depolanır ya da iletilir. Bir video decoder(kod çözücü) bitstream’i çözer ve tekrar frame’ler dizisini haline getirir.

Bir video encoder’ın gerçekleştirdiği adımlar:

  1. Bölümleme ; her resmi birden fazla birimler halinde bölümleme.
  2. Tahminleme ; Her bir tahmin ünitesinde Inter veya Intra predection (tahminleme) kullanarak bu ünitelerden tahminler oluşturma.
  3. Dönüşüm ; Artığın dönüşümü ve sayısal olarak belirlenmesi (Orjinal görüntü ve tahmini arasındaki fark)
  4. Entropy ; Entropy’nin kodlanması

Bir video decoder’ın gerçekleştirdiği adımlar:

  1. Entropy ; Entropy çözümleme ve kodlanmış dizi elemanlarının ayıklanması
  2. Ters dönüşüm ; Yeniden ölçekleme ve ters dönüşüm
  3. Tahminleme ; Ters dönüşüm çıktısına bağlı olarak her tahmin birimine tahmin ekleme
  4. Yeniden Düzenleme ; Yeniden düzenlerek çözümlenmiş bir video görüntüsü oluşturma
HEVC encoder ve decoder yapısı

HEVC encoder ve decoder yapısı

1.Bölümleme (Partitioning)

H265/HEVC Son derece esnek bir bölümleme yapısındadır. İlk olarak resim dikdörtgen veya kare dilimlere(slice) ayrılır. Her video frame’i dilimlere ayrıldıktan sonra bu dilimler 64×64 piksel’e kadar ulaşabilen Coding Tree Units (kodlama ağaç üniteleri)’lere bölünür. Coding Tree Unit (CTU) kodlamanın temel birimidir, daha önceki standartlarda (mpeg-2,h264/avc) bunlar macroblok yapısı olarak gözlemlenir.

Bir Coding Tree Unit (CTU) Quadtree (dörtlü ağaç) yapısına benzer bir şekilde Coding Units(kodlama ünitesi)’lere bölünür.

Dilimler(Slices) ve Kodlama Ağaç Üniteleri(Coding Tree Units, CTU)

Dilimler(Slices) ve Kodlama Ağaç Üniteleri(Coding Tree Units, CTU)

2.Tahminleme (Prediction)

Herbir Coding unit (CU)  Inta veya Inter Prediction kullanılarak tahmin edilen bir veya birden fazla Prediction (tahminleme) unitesine 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 data’dan tahmin etme) yöntemlerini kullanır

  • 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 Compenation (Hareket Dengeleme) yöntemini kullanarak tahminleme yapar

3. Dönüşüm (Transform and quantization)

    H265/HEVC Residual Quadtree ((RST),Artık Dörtlü Ağaç) yapısından faydalanarak, Tahminleme den sonra kalan herhangi bir artık veriyi Discrete Cosine Transform ((DCT),Ayrık Kosinus Dönüşümü) veya Discrete Sine Transform ((DST),Ayrık Sinüs Dönüşümü)’a dayalı Block Transform (Blok Dönüşüm) kullanılarak dönüştürülür.

4.Entropy kodlama

Kodlanmış bir H265/HEVC Bitstream(Bit Akışı) sayısal dönüşüm kat sayıları, tahmin bilgisi(Tahmin modları ve hareket vektörleri) , bölünmüş bilgi ve diğer header datalardan (başlık verileri) oluşur. Tüm bu elementler Context Adaptive Binary Arithmetic Coding (CABAC) kullanarak kodlanır.[4]

Referanslar:

[1] http://en.wikipedia.org/wiki/High_Efficiency_Video_Coding

[2] http://www.vcodex.com/images/uploaded/342512928230717.pdf

[3] http://www.streamingmedia.com/Articles/Editorial/What-Is-…/What-Is-HEVC-(H.265)-87765.aspx

[4] http://www.muratdemirci.com.tr/post/H265Nedir

[5] http://shiftdelete.net/h.265-video-standardi-tamamlandi-42675.html

MPEG-4 Part2, H.264/MPEG-4 AVC

Daha önceki yazılarda H.263 ve MPEG2’den bahsetmiştik. Bu iki standartı temel alarak daha iyi sıkıştırma araçları sunmak ve standart içeriğini arttırmak amacıyla MPEG iki yeni standardın geliştirilmesine başlamıştır. Bu standardlar ITU-T Tavsiye(Recommendation) H.264/ISO/IEC-14496 Bölüm 10 (ya da kısaca H.264) ve ISO/IEC-14496 Bölüm 2 (ya da kısaca MPEG-4 Görüntü) dür.

H.264 ve MPEG-4 Görüntü standardları daha önce denenmiş ve yeterliliği ispatlanmış MPEG-1 MPEG-2 gibi standardları çıkış noktası olarak almışlardır. Ancak, H.264 ve MPEG-4 farklı yönlere gelişmişlerdir.

H.264 daha önceki standardların çerçevelerini korumuş, daha hızlı, verimli, güvenilir, kullanışlı olmayı amaçlamıştır. Bunu yaparken aynen MPEG-2 gibi dikdörtgen görüntü biçimi kullanmından ayrılmamış. Bununla beraber daha geniş bir kitleye ulaşmayı hedef edinmiştir. Bu hedefler arasına genel anlamda televizyon yayıncılığının(broadcasting) yanı sıra, Internet ya da sayısal bağlantılar üzerinden görüntü akışı(streaming) ve sayısal veri saklama(storage) pazarlarını da almıştır[1].

MPEG-4 Görüntü standardı ise daha farklı bir yol izleyerek dikdörtgen görüntü biçimi kullanımını aşarak, nesneye yönelik görüntü işleme yöntemlerini tercih etmiştir[1].

MPEG-4 Part2

MPEg4 de MPEG1 ve MPEG2 gibi MPEG (Moving Pictures Experts Group, Hareketli Görüntü Uzmanları Birliği) tarafından geliştirilen bir video kodlama standartıdır. Yapımı 1998’de tamamlanıp 1999’da uluslar arası bir standart olmasına rağmen, ancak resmi bir standart olarak 2000 yılında duyurulmuştur. MPEG–1, MPEG–2, H.263 gibi daha önceki standartlardan farklı olarak, ayrıca çoklu ortamlarda kullanıcının içerikle etkileşim deneyimlerini ve heterojen yapıdaki ağ ortamlarında farklı niteliklere sahip araçların doğrudan aynı görsel içeriğe erişme yollarını geliştirmek üzere tasarlanmıştır[3]. MPEG4ün bazı özellikleri şöyedir:

  • Geliştirilmiş kodlama verimi
  • Görüntü ve ses içeren karma ortam verilerini kodlayabilme yeteneği
  • Sağlıklı veri nakli için hatalara karşı esneklik
  • İçerik tabanlı ölçekleme
  • Doğal, yapay  ve karışık görüntü iletimine uygun
  • Daha etkili sıkıştırma
  • Çok düşük bit hızında hareketli resim iletimi
  • Gürültü ve hatalara daha dayanıklı
  • Veri hızı: 5kb/s ila 10Mb/s

MPEG-4 AVC(Part 10)/ H264

H.264/AVC, ITU-T VCEG (Video Kodlama Uzmanları Grubu) ve ISO/IEC MPEG gruplarının ortak çalışmalarının ürünüdür. İlk sürümünün standardizasyonu Mayıs 2003’te tamamlanmıştır H.264 sıkıştırma tekniği MPEG4 Part 10 (Advanced Video Coding) olarak da bilinmektedir. Kendinden önceki kodeklerden daha iyi sıkıştırma sağlar. MPEG4′ ten %25 daha iyi sıkıştırma gerçekleştirir.

MPEG-4’ün H.264 ile Karşılaştırılması

MPEG-4, geniş işlevselliğe sahip bir video kodlama standardıdır. MPEG-4, nesne tabanlı video kodlamayı da desteklediği için, video düzenleme (video editing), video isleme (video manipulation) gibi uygulamalar için diğer video kodlama standartlarına göre daha uygundur [4].

H.264 ise MPEG-4’ten daha dar bir amaca sahiptir ve öncelikli olarak, dikdörtgensel video çerçevelerinin sağlıklı bir şekilde taşınmasını ve verimli kodlanmasını desteklemek için tasarlanmıştır. Bu amaçla, diğer video kodlama standartlarına göre daha fazla sıkıştırma oranına sahiptir [4].

Referanslar:

[1] http://tr.wikipedia.org/wiki/MPEG-4

[2] http://tr.wikipedia.org/wiki/H.264/MPEG-4_AVC

[3] http://www.journals.istanbul.edu.tr/tr/index.php/iletisim/article/view/700/pdf

[4] Tunç, S. (2010). Şekil Eşlemeye Dayalı Nesne Takibi Yönetimi Kullanarak Video Kodlama. Yayınlanmamış Yüksek Lisans Tezi, Ankara Üniversitesi Fen Bilimleri Enstitüsü Elektronik Mühendisliği Anabilim Dalı.

MPEG1 and MPEG2

MPEG

MPEG (Moving Pictures Experts Group), açılımı Hareketli Görüntü Uzmanları Birliği olan, ISO/IEC’nin sayısal olarak kodlanmış ses ve görüntü temsili için standart  geliştiren bir kuruluştur. 1988’de kurulmuştur. Bu topluluğun belirlediği standartlar MPEG-1, MPEG-2, MPEG-4 gibi isimlerle anılmaktadır. Bu yazıda MPEG-1 ve MPEG-2’den bahsedeceğiz.

MPEG-1 MPEG-2’yi anlatmadan önce MPEG algoritmasını açıklayalım:

Algoritmaya ilk giren kare tam olarak tanımlanır ve kayıt edilir. Peşinden gelen kareler ise ilk kareye göre değişiklikleri içererek kayıt edilir. Yani ilk karede kayıt edilmiş bilgi tekrardan her karede kayıt edilmez peşinden gelen karelerde sadece ilk kareye göre olan değişiklikler kayıt edilir. Belli bir kare sayısından sonra tekrar bir ilk kare alınır ve bu şekilde yapı devam eder. Kaç karede bir ilk kare alındığına göre kalite ve sıkıştırma başarısı değişir. Eğer ilk kare alma aralığını artırırsanız görece bant genişliği düşer ama kalite de düşer. Bu aralığı düşürürseniz kalite artar ama bant genişliği de artar. Dolayısı ile optimum bir değer bulmak gereklidir.
MPEG algoritması çok hareketli görüntülerde çok zorlanır ve çoğunlukla başarısız olur. Spor karşılaşmaları, müzik klipleri gibi görüntüler bu algoritmayı çok zorlar.[1]

MPEG dijital (sayısal) bir kodlama tekniğidir ve sayısal kodlama tekniklerinin en önemli avantajı esneklik ve aynı(veya kabul edilebilir seviyede yakın-eşdeğer) bilgi taşıyan data kümelerinin boyutunun küçültülebilmesidir. MPEG ‘i günümüzde bu kadar yaygın ve kullanışlı duruma getiren de budur: Kaliteyi kabul edilebilir seviyede tutup datayı önemli ölçüde sıkıştırması.[4]

MPEG-1

MPEG-1 MPEG grubu tarafından 1992’de standartları kabul edilmiş ses ve görüntü kodlama biçimidir. MPEG-1 görüntü biçimi VCD’ler tarafından kullanılır.

MPEG-1 ses katmanı 3 popüler MP3 biçiminin uzun ismidir. Daha ucuz ve güçlü çözücü donanım kartlarının çıkmasıyla MPEG-2 ve MPEG-4 gibi bazı biçimler geliştirildi. Bu yeni biçimler daha karışık ve daha hızlı donanım gerektirmelerine rağmen, daha iyi sıkıştırma ve görüntü kalitesi sağlamaktadırlar.[2]

Standart bir VCD’nin bit hızı 1,5Mbps’dir. MPEG, görüntü ve sesin bit hızını bu seviyeye düşürebilmek için çeşitli sıkıştırma algoritmaları kullanır. Bununla birlikte MPEG-1’de düşük veri hızlarında görüntü kalitesi oldukça düşüktür. MPEG-1 ile ilgili en yaygın olarak kullanılan bilinen dosya formatlarından biri *.MP3 ses kodlama formatıdır. Bununla birlikte .mpg, .mpeg gibi dosya formatları da MPEG-1 standardını kullanır.[4]

MPEG-2

MPEG-2 MPEG grubu tarafından 1995 standartları kabul edilmiş ses ve görüntü kodlama biçimidir. ISO/IEC tarafından 13818 uluslararası standart olarak belirlenmiştir.

MPEG-2 genellikle uydu yayınları ve kablolu televizyonlar dahil canlı yayınlar için ses ve görüntü sıkıştırmasında kullanılır. Ayrıca MPEG-2 bazı değişikliklerle DVD filmlerinin kodlanmasında kullanılır.[3]

Bu kodlama ile sıkıştırılmamış bir videonun veri hızı 2-6Mbit/sn’ye kadar küçültülmektedir. MPEG-2 ile amaçlanan video bitrate’inin DVD bit rate’ine düşürülmesidir.

Referanslar:

[1] http://videohakkinda.blogspot.com/2011_06_01_archive.html

[2] http://tr.wikipedia.org/wiki/MPEG-1

[3] http://tr.wikipedia.org/wiki/MPEG-2

[4] http://ramazansural.blogspot.com/2010/02/skstrlmams-bir-standart-definition-sd.html

Kayıplı Hareketli Görüntü Sıkıştırma Yöntemleri: H261, H263

Video kodlamada genellikle kayıplı sıkıştırma yöntemlerini kullanan codec’lerin tercih edildiğini söylemiştik. Kayıplı sıkıştırma yapan codec’leri anlatmadan önce en çok kullanılan kayıplı video, görüntü sıkıştırma ekniklerinden bahsedelim.

DCT(Discrete Cosine Transform) Ayrık Kosinüs Dönüşümü

DCT(Ayrık Kosinüs Dönüşümü) bir resmi görsel kalitesi açısından farklı değere sahip parçalarına ayrıştırmaya yardımcı olur. Yüksek korelasyona sahip bilgiyi düşük korelasyonlu bilgiye dönüştürür. Görüntü ve ses işlemede kullanılan bu dönüşüm, birbirlerine dikgen kosinüs fonksiyonlarının sonlu seri açılımı ile elde edilir[2]. Çeşitli video, ses ve görüntü codec standartlarında kullanılmaktadır. Dönüşümü görüntü üzerinden açıklayacak olursak:

Dijital görüntüyü oluşturan noktacıklar, pixel, (720 yatay 567 dikey noktacık) her kare görüntü için, 8 yatay 8 dikey noktacıktan oluşturulan bloklara ayrılır. Her blokta 64 pixel bulunur. Ardışık gelen, iki yatay iki dikey blok bir arada makro bloğu oluştururlar.(Renk bilgileri ile birlikte makro blok 4:2:2 sisteminde,8 adet bloktan oluşur.) her blok içindeki 64 pixele, DCT kodlama yapılır. Kodlamada resmin dikey ve yatay orjinal renk değerleri, özel bir formül yardımıyla hesaplanır ve frekanslarının en yüksek ve düşük olduğu noktalar saptanır[5].

Bu işlemin sebebi en yüksek frekanslardaki renklerin tespit edilmesidir. İnsan gözüve kulağı yüksek frekans değerlerine daha az hassasiyet gösterdiği için bu değerleri düşürmek, hatta sıfıra indirmek mümkündür.

Blok içindeki nokta değerlerinin “0” a yaklaştırılması, oldukça karmaşık işlemlerden geçirilmesiyle sağlanır. Bunun işlem sonucu olarak 8 x 8 ebatlarındaki piksel bloklarının her birinin ayrı kalite değerleri oluşur. Bundan sonra tüm 8 x 8’lik blokların kalite değerleri özel bir hesaplama ile birbirine yaklaştırılır, bir anlamda kalite değerlerinin ortalaması alınır[5]. Bu 64 noktacık, zig zag okuma sıralaması ile seri veriler olarak dizilir, bu seri verilere Huffman ya da RLE (Run-Length Encoding) sıkıştırma kodlaması uygulanır ve DCT kodlama işlemi tamamlanır.

DCT

DCT

DCT Uygulanmış Data

DCT Uygulanmış Data

Diğer dönüşümlerle karşılaştırıldığında DCT bazı avantajlara sahiptir. Dikgen bir dönüşüm olduğu için karmaşık bileşenler içermez. Diğer bir avantajı ise görüntüleri küçük büyüklük değerlerine çevirmesidir.

Kuantalama Kodlama(Quantizing Coding)

Nicemleme olarak da bilinen bu kodlama, sayısal işaret ve görüntü işleme alanlarında sürekli ya da büyük bir değerler kümesinin daha az sayıda ve ayrık değerlere eşlenmesine denir.

    Kuantalama kodlama, resmi oluşturan noktacıkların değerlerini karşılaştırarak, ardışık gelenlerin birbirleri arasındaki fark düşük ise sıkıştırma oranına bağlı olarak bu farkı yokmuş gibi görme işlemidir. Kısaca; ardışık noktaların değerlerini 14-18-21-22-20-22-15 olarak varsayarsak ve kuantalama tekniğindeki kodlamadan sonra, sıkıştırma değerini +2,-2 tutarsak, noktaların değerleri arasındaki fark +2,-2 arasında ise noktalar tek bir değerde(bir önceki noktanın değerinde) tutulur.

    Yukarıdaki sıralamaya bu kodlamayı uygularsak 14-18-21-21-21-21-15 olur ve bu bilgiler RLE kodlamaya tabii tutarak sıkıştırılmış olur.[2]

    Kuantalama teknikli kodlamada sıkıştırma oranı arttırılırsa ton farkı fazla olan noktacıklar bile, tek bir ton değeri alır. Sıkıştırma oranı 20’nin üzerinde seçilirse 8×8 noktacık bloklar, sadece tek bir renk olarak gözükür.

   Kuantalama(nicemleme), sonrasında görüntü blokları nicemleme öncesine göre daha az çeşit sayı(sembol) ile ifade edilir hale gelir.

H261, H263

İlk video kodlama standardı H.120, o dönemlerdeki adı CCITT olan, ITU-T (International Telecommunication Union Telecommunication Standardisation Sector) tarafından 1984 yılında geliştirilmiştir (Sullivan 2005). Pratik anlamda kayıplı hareketli görüntü sıkıştırma üzerine geliştirilmiş olan ilk standart ise ITU-T tarafından geliştirilen H.261 standardıdır. Ayrık Kosinüs Dönüşümü (AKD, DCT – Discrete Cosine Transform) tabanlı bir video kodlama standardı olan H.261’in ilk sürümü 1990’da, ikincisi 1993’te tamamlanmıştır (ITU-T 1993)[3].

 Geliştirilmesinde görüntülü telefon (videotelefon) ve görüntülü konferans (videokonferans) uygulama alanları hedef alınmıştır. ISO’nun geliştirdiği MPEG-1 ve MPEG-2 standartları H.261’i temel almıştır. Videotelefon sistemlerinde, ileri geri sarma gibi işlemler olmadığı için, çerçeveler arası hareket farkı hesaplanması işlemleri daha basittir. Daha basit olması sayesinde daha hızlı kodlanabilir ki bu özellik, gecikme olmaması açısından görüntülü telefon için gerekli bir durumdur. Telekonferans uygulamalarında sıkıştırma algoritmasının hızlı olması, konferanstaki taraflar arasında çok ufak bir gecikmeye sebep olacağı için çok önemlidir. Bu tip uygulamalarda video kalitesi, sıkıştırmada yaşanacak gecikmeyle kıyaslandığında çok daha az önem arz etmektedir.[3]

H.261’in sıkıştırma performansını artırmak için H.263 sıkıştırma formatı önerilmiştir. Bu standart H.261 standardı ile karşılaştırıldığında aynı kalitedeki resimler için hemen hemen yarı yarıya bit kazancı sağlamaktadır.[4] 1995 yılında ilk sürümü H.263, 1997’de ikinci sürüm (H.263+ olarak bilinir), ve 2000’de üçüncü sürüm (H.263++) tamamlanmıştır. ISO’nun geliştirdiği MPEG-4 standardı, temelde H.263 ile aynı olmasına rağmen ek özellikler de içermektedir.

Referanslar:

[1]http://en.wikipedia.org/wiki/Discrete_cosine_transform

[2] http://www.biraz.gen.tr/elektrik-elektronik/dijital-goruntu-ve-ses-sikistirma-yontemleri

[3]  Tunç, S. (2010). Şekil Eşlemeye Dayalı Nesne Takibi Yönetimi Kullanarak Video Kodlama. Ankara Üniversitesi Fen Bilimleri Enstitüsü Elektronik Mühendisliği Anabilim Dalı.

[4] http://www.cemkefeli.com/file.axd?file=2009%2F3%2FYLisansDaVinciVideokodlama.pdf

[5] http://www.chip.com.tr/makale/nedir-bu-jpeg-ayrik-kosinus-donusumu_11812_7.html

[6] http://en.wikipedia.org/wiki/H.261

[7] http://en.wikipedia.org/wiki/H.263

Kayıpsız Hareketli Görüntü Sıkıştırma Yöntemleri

Daha önceki yazılarda kayıplı ve kayıpsız sıkıştırmanın ne olduğundan bahsetmiştik. Kayıpsız sıkıştırmanın karakter tipli verilerde yapılırken hangi yöntemlerin kullanıldığını anlatmıştık. Şimdi video sıkıştırmada kayıpsız yöntemlerin neler olduğunu inceleyelim.

Öncelikle kayıpsız sıkıştırma yöntemlerinin video sıkıştırmada daha az kullanıldığını bilmeliyiz. Bunun nedeni video dosyalarının kapladığı alanın büyüklüğüdür. Sıkıştırılmamış hali çok büyük olan video dosyaları, kayıpsız yöntemler ile düşük oranlarda sıkıştırılabildikleri için, hareketli görüntü sıkıştırma işlemi çoğunlukla kayıplı yöntemler ile gerçekleştirilir[1]. Hareketli görüntü sıkıştırma işleminde kayıpsız sıkıştırma yöntemleri genellikle gerçek zamanlı video yakalama gibi hızlı kodlama yapılması gereken durumlarda kullanılır. Son yıllarda üretilen yüksek hızlı işlemciler sayesinde, kayıplı bir yöntem ile de gerçek zamanlı video yakalama işlemleri yapılabilmektedir[1]. Huffyuv, SheerVideo, CorePNG, MSU Lossless Video Codec, LCL, Lagarith, SKYUV(Smith 2000), Lossless Motion JPEG gibi bir çok kayıpsız sıkıştırma yöntemi vardır. Bilinen, en çok kullanılan, birkaç tanesini inceleyelim:

Huffyuv:

Huffyuv Video Codec'in Yapılandırma Penceresi

Huffyuv Video Codec’in Yapılandırma Penceresi

Ben Rudiak-Gould tarafından 90’lı yıllarda geliştirilmiş olan Huffyuv, en çok kullanılan kayıpsız hareketli görüntü (video) sıkıştırma algoritmalarından biridir[1]. Sıkıştırma yapmayan YUV’un yerine geçmesi için yapılmıştır.

YUV’u açıklayacak olursak: genellikle video görüntülerini kaydetmek için kullanılan bir renk sistemidir[5]. Bu sistemde Y, siyah-beyaz U ve V harfleriyse kırmızı ve mavi renk bilgilerini temsil eder.

Windows için kayıpsız sıkıştırma yapan Huffyuv, daha önce açıklamış olduğumuz Huffman kodlamasını kullanır. Gerçek zamanlı video yakalamada oldukça hızlı olan bu codec en çok kullanılan kayıpsız sıkıştırma algoritmalarından biridir.

Huffyuv çerçeve-içi (intra-frame) öngörü kullanarak sıkıştırma yapar. Yani her çerçeveyi bir önceki çerçeveden bağımsız olarak kodlar. Kullandığı öngörü modeli Kayıpsız JPEG ile benzerdir. Öngörülen değer ile orijinal değerin farkını Huffman kodlaması ile sıkıştırır. Temel olarak 3 öngörü modeline sahiptir:

  • Left: Sol taraftaki pikselleri kullanır.
  • Gradient: Sol+Üst-ÜstSol kullanır.
  • Median: Sol, Üst, ve gradient öngörüsünün ortalamasını kullanır.

RGB(R:red, G:green, B:blue) türünde bir hareketli görüntü daha iyi sıkıştırılabilmesi için R-G, G ve B-G şeklinde kodlanabilir. Her bileşen için (R,G,B veya Y,U,V bileşenleri) ayrı Huffman tablosu kullanılır. [1]

MSU Lossless Video Codec:

MSU Lossless Video Codec'in Ayarlar Paneli

MSU Lossless Video Codec’in Ayarlar Paneli

MSU (Moscow State University) Graphics and Media Lab. Video Group tarafından geliştirilmiş kayıpsız sıkıştırma yapan bir video kodlayıcıdır. Etkili bir kayıpsız sıkıştırma sağlamak için tasarlanmıştır. 2007 itibariyle, bir çok video codec ile karşılaştırıldığında ikinci en iyi sıkıştırma oranını vermiştir.

MSU kayıpsız video kodlayıcı, çerçeveler-arası (intra-frame) öngörü kullanarak sıkıştırma yapar. Yani her çerçeveyi ayrı bir resim gibi değil, çerçeveler arasındaki benzerliklerden faydalanarak kodlama yapar. Huffyuv’a göre daha yavaş çalışmasına rağmen daha iyi sıkıştırma oranı sağlamaktadır. Kayıplı sıkıştırma seçeneği de bulunan MSU, istenirse Huffyuv gibi, tüm çerçeveleri ayrı bir resim gibi de kodlayabilir[1].

CS MSU Graphics & Media Lab Video Group 25 Ocak 2005’te kayıpsız video codec’lerin sıkıştırma oranlarına göre karşılaştırılmasını yapmıştır. Araştırma sonucu çeşitli kayıpsız video codec’lerin RGP formatında sıkıştırma oranları aşağıdaki gibidir.

Kayıpsız Video Codec'lerin Sıkıştırma Oranları Karşılaştırması

Kayıpsız Video Codec’lerin Sıkıştırma Oranları Karşılaştırması

Referanslar:

[1] Mesut, A. (2006). Veri Sıkıştırmada Yeni Yöntemler. Yayınlanmamış Doktora Tezi, Trakya Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Anabilim Dalı.

[2] http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html

[3] http://en.wikipedia.org/wiki/Huffyuv

[4] http://en.wikipedia.org/wiki/MSU_Lossless_Video_Codec

[5] http://tr.wikipedia.org/wiki/YUV

[6] http://www.fpdigital.com/Resource/Files/lossless_codecs_test_en.pdf

Kayıpsız Veri Sıkıştırma Algoritmaları

Veri sıkıştırmalarının kayıplı ve kayıpsız olmak üzere 2 yöntemle yapıldığını söylemiştik. Kayıplı veri sıkıştırma yöntemi genellikle belirli bir miktar veri kaybının insan gözü ve kulağı tarafından hissedilemeyeceği durumlarda, örneğin fotoğraf grüntüleri, video ve ses için kullanılır[1]. Kayıpsız sıkıştırma yöntemleri ise veri bütünlüğünün bozulmaması gereken durumlarda kullanılır, metin belgeleri gibi. Fotoğraf , video ve ses için de kayıpsız sıkıştırma yöntemleri vardır, fakat sıkıştırma oranları düşük olacağı için profesyonel bazı uygulama alanları dışında tercih edilmemektedirler.Bu yazıda kayıpsız veri sıkıştırma yöntemlerinin çeşitlerinden bahsedeceğim.

Kayıpsız veri sıkıştırmada en çok kullanılan kodlama teknikleri Huffman Kodlaması ve Aritmetik Kodlamadır. Bu teknikler olasılık tabanlıdır. Yani sıkıştırma öncesi toplam veriyi bir sembol kümesi olarak düşünürsek her sembolün bu kümedeki görülme olasılığını hesaplayarak yapılan kodlamalardır.

Huffman Kodlaması:

David A. Huffman tarafından 1952 yılında geliştirilmiştir[2].  Bu algoritmada verideki her sembol ayrı ayrı kodlanır. Bu kodlar ikilik(binary) sayılardan oluşur. Veri içerisinde en az kullanılan sembol en uzun, en çok kullanılan sembol ise en kısa kodla temsil edilir. Bununla, tekrarı çok olan sembolün az bitle kodlanmasıyla, dosya boyutunun aza indirgenmesi sağlanır. Resim, ses ve video sıkıştırmasında da kullanılan bu tekniğe biz örnek olarak kolay olması açısından ASCII karakterli bi metnin kodlanmasını göstereceğiz.

Elimizde  A harfinin 60, B harfinin 40, C harfinin 25, D harfinin 20, E harfininse 10 defa kullanıldığı bir text, veri kümesi, olduğunu düşünelim. Bu veri seti ASCII kodu ile kodlanırsa her karakter 1byte(8bit)’lık alan gerektirdiğinden toplam 155byte(120bit)’a ihtiyaç olacaktır. Şimdi Huffman Kodlaması’yla veriyi kodlayalım.

İlk olarak her karakterin metinde geçme sıklığını gösteren frekans tablosu oluşturulur. Sonrasında hangi karakterin hangi bitlerle temsil edileceğini gösteren Huffman ağacı oluşturulur. Karakterler frekanslarına göre küçükten büyüğe doğru sıralanır Huffman ağacındaki birer düğümü temsil ederler (1.resim). En küçük frekansa sahip olan iki karakterin frekansları toplanarak yeni bir düğüm oluşturulur (2. 3. 4. resimler). Diğer iki düğüm yeni düğümün alt elemanı olurlar. Yeni sıraya göre aynı işlemler tekrarlanır. Huffman ağacı oluşturulur (5.resim). Huffman ağacının en üst düğümünden başlanılarak sol ve sağ dallara sırasıyla 0 ve 1 yazılır (6.resim). En üstteki düğümden son düğümlere(sembolün olduğu) gidilirken izlenen yol değerleri(dallardaki 1 ve 0lar) ard arda yazılınca o karakterin kodu elde edilmiş olur.

Frekans Tablosu

Frekans Tablosu

Huffman Ağacı (1)

Huffman Ağacı (1)

Huffman Ağacı (2)

Huffman Ağacı (2)

Huffman Ağacı (3)

Huffman Ağacı (3)

Huffman Ağacı (4)

Huffman Ağacı (4)

Huffman Ağacı (5)

Huffman Ağacı (5)

Huffman Ağacı (6)

Huffman Ağacı (6)

Veri Setinin Kodlanmış Hali

Veri Setinin Kodlanmış Hali

Veri setinin Huffman algoritmasıyla kodlanmış haliyle kapladığı alanı hesaplarsak:

 60×1 + 40×2 + 25×3 + 20×4 + 10×4 = 335bit’tir.

Görüldüğü gibi Huffman kodlaması ile %27lik bir kazanç sağlanmaktadır. Bu kazanç, veri setindeki sembollerin frekansları arttıkça daha da artmaktadır[3].

Bu algoritma GZIP, JPEG, MPEG gibi yaygın olarak kullanılan sıkıştırma yöntemlerinde son işlem olarak kullanılır ve muhtemelen sıkıştırma algoritmalarında en yaygın olarak kullanılan bileşendir[1].

Aritmetik Kodlama:

Aritmetik kodlamanın temeli, kodlanacak veri parçasını 0 ile 1 arasında gerçel sayı aralığı ile temsil etmeye dayanır[4]. Veri kümesindeki her sembol bu sayı aralığını daraltır. Veri içerisindeki sembolün kullanım sıklığı az olanlar bu aralıı hızlı şekilde daraltırken fazla olanlar aralığı daha az daraltır. Kullanım sıklığı fazla olan semboller aralığı daha az daralttığından onu temsil eden bit sayısı, Huffman algoritmasında da olduğu gibi, azdır. Veride tekrar eden semboller çoksa veri az sayıda bit ile kodlanabilir. Alfabenin küçük olduğu ve karakterlerin belirme olasılığında büyük farklar olduğu durumlarda, Huffman Kodlaması etkinliğini yitirirken, Aritmetik kodlama bu durumlarda daha başarılıdır[1].

Aritmetik kodlamayı da bir örnekle açıklayalım.  Elimizde üç harfli bir A={a1,a2,a3} alfabesi olsun. Harflerin veri kümesinde bulunma olasılıkları da şu şekilde: P(a1) = 0.7, P(a2) = 0.1 ve P(a3) = 0.2. a1, a2 ve a3 harflerinin ard arda geldiği bir seri için etiketin kodlanmasını inceleyelim.

Öncelikle 0 – 1 sayı aralığı harflerin olasılık dağılımları baz alınarak 3 parçaya bölünür. Bu durumda 0 ile 0.7 arası a1’i, 0.7 ile 0.8 arası a2’yi, ve 0.8 ile 1 arası da a3’ü temsil eder. Serinin ilk karakteri a1 olduğu için, bir sonraki karakter incelenirken a1’in aralığı olan 0 ile 0.7 arasında işlem yapılır. İkinci karaktere geçilirken olasılık dağılımına göre  0 ile 0.7 aralığı 3 parçaya bölünür. Yeni durumda ise 0 ile 0.49 arası a1’i, 0.49 ile 0.56 arası a2’yi, ve 0.56 ile 0.7 arası da a3’ü emsil eder. İkinci karakterimiz a2 olduğu için yeni aralığımız 0.49-0.56’dır. İşleme aynı şekilde devam edilir ve  üçüncü karakter a3 de 0.546 ile 0.56 arasını tahsis edecektir. Serinin etiketi olarak bu aralıkta yer alan herhangi bir değer seçilebilir.

alfabesinin a1, a2, a3 sırası için aritmetik kodlamada etiketin bulunması

A alfabesinin a1, a2, a3 sırası için aritmetik kodlamada etiketin bulunması

Şekilde en son aralığın orta noktası olan 0.553 değeri etiket olarak seçilmiştir. İkili sayı sistemindeki 0.100011 sayısı, onluk tabanda 0.546875 sayısına karşılık gelir, ve en son aralıkta (0.546 ile 0.56 aralığı) yer alan bu değer tam orta nokta olmasa bile etiket olarak kodlanabilir[1].

Fazla sayıda tekrarlı sembollerin bulunduğu bir veri incelendiğinde Huffman Kodlaması’ndan daha iyi sonuç verdiği, daha az bit sayısında alan kapladığı görülmüştür.

 Referanslar:

[1] Mesut, A. (2006). Veri Sıkıştırmada Yeni Yöntemler. Yayınlanmamış Doktora Tezi, Trakya Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisliği Anabilim Dalı.

[2] http://tr.wikipedia.org/wiki/Huffman_kodu

[3] http://members.comu.edu.tr/boraugurlu/courses/bm223/content/week6/hafta6.pdf

[4] Özcan, İ. (2010).  Robotlar Arasında Hızlı ve Güvenli Haberleşmenin Sağlanması. Yayınlanmamış Yüksek Lisans Tezi, Balıkesir Üniversitesi Fen Bilimleri Enstitüsü Elektrik-Elektronik Mühendisliği Anabilim Dalı.

[5] http://www.dogma.net/markn/articles/arith/part1.htm

[6] Symes, P. (2004). Digital Video Compression. United States of America: The McGraw-Hill Companies.

Video Codec (Video Kodlayıcı) Nedir?

technology-codec-img1-z

Günümüzde bir çok alanda akıllı telefonlar, bilgisayarlar ve diğer teknolojik aletler sayesinde video kaydedip izleyebiliyoruz. Videoların ardarda anlık resimlerden oluştuğu düşünülürse her karenin boyutu hesaplandığında ortaya çok büyük rakamlar çıkar ve videoyu depolamak için çok büyük alanlara ihtiyaç duyulur. Peki bu çekilen videoları nasıl oluyor da sınırlı kapasitedeki araçlarımıza yükleyebiliyor, hatta internetten kolayca izleyebiliyoruz?

Dijital ortamda kaydedilen videoların dosya boyutunu küçültmek için sıkıştırma yapılır. Böylece etkili bir şekilde depolanabilir, iletilebilir ve kayıttan yürütülebilirler. Bu sıkıştırmayı yapan codec’tir. Aynı şekilde sıkıştırılıp şifrelenmiş verinin kayıttan yürültülmesini sağlayan da codec yazılımıdır. Bir codec iki bileşenden oluşabilir, bir kodlayıcı ve bir kod çözücü. Bazı codec bileşenleri bunların sadece birini de içerebilir. Codec kelimesi Compressor (sıkıştırma) ve Decompressor (sıkıştırılanı açmak) kelimelerinin kısaltılmasından oluşmuştur.

Video kodlama yapısı

Video kodlama yapısı

Codec’ler veri sıkıştırırken kayıpsız(lossless) ya da kayıplı(lossy) sıkıştırma algoritmalarını kullanırlar. Kayıpsız sıkıştırmada veri sıkıştırılıp tekrar açıldığında orijinal haline döner. Kayıplı sıkıştırmada ise dosyanın kapladığı alanın düşük olması için verilerde ufak çaplı kayıplar söz konusudur. Kayıpsız veri sıkıştırması daha iyi gibi gözükse de kapladığı alanın fazlalığı söz konusu olduğundan daha az kullanılmaktadır. Daha doğrusu, kayıpsız sıkıştırma genellikle pikseller arası korelasyonun düşük olduğu şekil gibi görüntülerde, hızlı kodlamaya ihtiyaç olduğu durumlarda veya en küçük bir kaybın bile istenmediği profesyonel amaçlı uygulamalarda, kayıplı sıkıştırma ise fotoğraf görüntüleri gibi karmaşık ve yüksek korelasyona sahip görüntülerde kullanılmaktadır. Video codec bileşenleri genellikle kayıplı sıkıştırma algoritmalarından yararlanırlar.

Sıkıştırma teknikleri intra-frame(çerçeve içi) ve inter-frame(çerçeveler arası) olarak da gruplandırılır. Videoların resimlerin ard arda sıralanmasıyla oluştuğunu söylemiştik. Bu şekilde hareketli resim izlenimi verilmektedir. Bu ard arda gelen resimlerin her birine frame(çerçeve) adı verilir. Videoların codec’ler tarafından kodlanması bu framelerin kodlanmasıyla ilgilidir. Bir frame içindeki, benzer bölgelerin tekrarlanmasını yok ederek,yapılan sıkıştırmaya, çerçeve içi (intra-frame) sıkıştırma adı verilir. Ardarda gelen belirli sayıdaki frameleri karşılaştırıp toplu olarak kaydeden, tekrar eden verileri kaldırarak sadece hareketli nesneleri sıkıştıran tekniğe ise inter-frame(çerçeveler arası) sıkıştırma denir.

Intraframe ve Interframe Sıkıştırma

Intraframe ve Interframe Sıkıştırma

Resimde de görüldüğü gibi intra-frame sıkıştırmada her frame(çerçeve) ayrı ayrı kodlanırken, inter-frame sıkıştırmada belli bir grup frame’deki ard arda gelen framelerin yalnızca aralarındaki farklar kodlanır.

Referanslar:

  1. http://en.wikipedia.org/wiki/Video_codec
  2. http://www.vcodex.com/introduction.asp
  3.  Tunç,S. (2010). Şekil Eşlemeye Dayalı Nesne Takibi Yönetimi Kullanarak Video Kodlama. Ankara Üniversitesi Fen Bilimleri Enstitüsü Elektronik Mühendisliği Anabilim Dalı.
  4. http://www.trustedreviews.com/opinions/the-codec-primer-part-one
  5. Beach, A. (2008). Real World Video Compression.  Berkeley, CA: Peachpit Press.