ana sayfa : araştırma : mpeg görüntü : mpeg kodlama prensipleri [ 3 / 9 ] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GERİ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BÖLÜM 3MPEG KODLAMA PRENSİPLERİBu
bölümde MPEG kodlanmasında kullanılan basit prensipler gözden geçirilecektir.
Sistemlerin, modelleme ve dağınım (entropy)
kodlama kısımlarına nasıl bölümlendiği gösterilerek kodlama
sistemlerinin yüksek seviyeli görünüşleri temsil edilecektir. Ve bu
neticede dağınım kodlaması ve şifreleme modelleri konularında önemli
noktalar üzerinde durulacaktır. Son olarak da MPEG-1 kodlama tekniklerinin
spesifik özelliklerini ve MPEG-1 kodlayıcı ve kod çözücülerinin
temsili blok diyagramları anlatılacaktır. Son bir not olarak, bu bölümde
kullanılacak sistem terimi MPEG
'in sistem tabakası'ndaki sistem
ile ilişkisizdir. 3.1. Kodlama Sistem YapısıTipik
bir kodlayıcı ve kod çözücü sistem yapısının örneklemi şekil
3.1’de yüksek seviye kodlama sistem diyagramı şeklinde gösterilmiştir.
Burada analogtan dijitale çevirici (A/D) giriş verilerinin duyarlılığını
ve basit çözünürlüğünü belirler ve böylece orijinal sahneden yönetilebilir
seviyeye imkan dahilinde neredeyse sınırsız olan veriyi azaltmada önemli
bir nokta başarılır. Bununla birlikte veri indirgemesi dijitalleştirme işlemi
bitmeden durdurulması gerekmez.
Şekil 3.1 -
Bir Sıkıştırma Sisteminin Genel Yapısı
Şekil
3.1’deki gibi bir kodlama sistemini iki kısma bölmek uygun olur. Birinci
bölüm dijital kaynak veriyi konvensiyonel olarak sembollerle
isimlendirilen soyut temsile çevirerek kayıplı veri indirgemesi yapar. İkinci
bölüm ise bit akışının uzunluğunu istatistiksel bir yönde küçültecek
bir işlemle bu sembolleri kodlar. Bu ikinci basamağa dağınım
kodlaması (entropy coding) denir. 3.1.1
Modelin İzole Edilmesi
Şekil
3.1’de kod çözücü, kodlama işlemini mümkün olan en az uzantı ile
tersine çevirir. İlk olarak kayıpsız bir şekilde sıkıştırılmış
veriyi sembollere dönüştürür ve orijinal dijital kaynak verisine görsel
olarak en yakın olacak şekilde dijital resmi yeniden yapılandırır. Bu
dijital veri göstericiye, analog çıkış sinyalini yeniden oluşturmak için
dijitalden analoğa dönüştürücüye (D/A) beslenir.
Şekil 3.2 -
Kayıpsız Sıkıştırma Bölümleri Kaldırılmış Sıkıştırma Sistemi
3.1.2
Semboller ve İstatistiksel Modelleme
Semboller
verilerin özet olarak temsilleridir. Genellikle orijinal kaynak verinin tam
tersinir olarak yeniden inşasına izin vermezler (Özellikle tersinir bir
şekilde dizayn edilmezse). Genel olarak, kodlama modeli veri indirgemesi ve
verilerin sembollerle yer değiştirmesi işlemlerinin her ikisini de
kapsamaktadır. Veriyi temsil etmek üzere seçilen semboller, verimli ve göreceli
basit dağınım kodlaması basamaklarına izin verecek şekilde az ilişkilendirilmiş
bir temsilleme sergilerler. Verileri temsil için sembol kümeleri seçme işlemi,
verilerin istatistiksel modellerini kapsar. Çünkü, bu işlem verinin
istatistiksel özellikleri üzerinde dikkatlice yapılan analize dayanır. İstatistiksel
modelleme, kodlama modeli dizaynını da içerir. Örnek olarak; kayıpsız
kodlamada geniş ölçüde kullanılan bir kodlama tekniği türevsel
darbe kodu modülasyonu (Differential Pulse Coding Modülation-DPCM)
vardır. Bu kodlama tekniğinde her resim elemanı (pel) ve o anda iletilen
komşu resim elemanı değerlerinden bulunan kestirim arasındaki fark
hesaplanır. Resim elemanı farkları, orijinal resim elemanı değerleriyle
oldukça az ilişkilidir ve makul verim oranlarında bağımsız olarak
kodlanabilirler. Ancak, istatistiksel modellemede, farklar arası ilişkiler
(korelasyon) bir değere aktarılırsa kodlamada daha iyi bir veri elde
edilir. İlişkileri
(korelasyon) indirgemede verimli yollardan birisi de DCT (ayrık kosinüs dönüşümü)'dir.
Fakat, DCT tabanlı modeller hakkında ayrıntılı bilgiye girmeden önce
dağınım kodlaması konusunda gelişmek gereklidir. 3.2 Dağınım Kodlaması (Entropy Codıng)Bir
dağınım kodlayıcısı (entropy encoder), sembol dizisini kayıpsız
bir biçimde sıkıştırılmış veriye dönüştürür. Dağınım
kod çözücüsü (entropy decoder) ise kod çözücüden özdeş
dizinin geri üretilmesi için daha önce yapılan işlemi aynı şekilde
tersine çevirir. Dağınım kodlayıcısının görevi sembol dizilerini mümkün
olan en kısa bit akışı seviyesinde şifrelemektir. 3.2.1
Dağınım Kodlaması Prensipleri
Genelde
dağınım kodlayıcısına beslenen semboller bir alfabenin
üyeleridir. Tabi buradaki alfabe terimi biraz açıklama gerektirecektir.
Özel küçük harfler dizisinden oluşan bir metin dizisini sıkıştırma
işimiz olduğunu varsayalım. Eğer tüm harfler dizide bulunacak olduğu düşünülürse,
normal alfabede a'dan z'ye 29 tane harften oluşan bir sıkıştırma
alfabemiz olacaktır. Bununla beraber metin dizisinin hem büyük harfleri
hem de küçük harfleri içerdiği düşünülürse, o zaman sıkıştırma
alfabemiz 58 sembolden meydana gelecektir. Alfabede boşluk karakterlerine
izin verilirse bu karakterler diziye eklenmelidir. Eğer herhangi bir
noktalama işareti kullanılıyorsa bunlar da eklenmelidir. 8 bit kodlamayla
ifadelendirilebilen karakterlerin hepsini içeren bir alfabe olduğu düşünüldüğünde
sembol sayısı 256 olacaktır. 16 bit (1 kelime) kodlama için hesaplanırsa
65536 sembole ulaşılır. Bir başka deyişle, mesaj -dağınım kodlayıcısına
beslenen gerçek sembol akışları- birçok imkan dahilindeki akışlardan
biri iken alfabe olanaklı semboller kümesidir. Bu özel sembol akışlarını
mümkün olan en az bitle iletmek dağınım kodlayıcısının görevi
olmaktadır. Bu işlem her sembol için istatistiksel olarak optimum kod
uzunluğu gerektirir. Uygun tamsayı kodu atamaları için kullanılan tekniğe
Huffman Kodlaması tekniği denir.
Benzetme
yaparsak, dağınım kodlayıcıları oldukça akıllı kumarbazlar gibidir.
Geçerlilik bitlere bağlanır ve
kod çözücüsüne sembol akışlarını iletirken mümkün olan en az bit
kaybı olması amaçlanır. Kumar tahtasında bahislerin nasıl yer alacağı
gibi sembol ihtimalleri önemli bir rolü üstlenirler. Kazanmak için,
muhtemel semboller ortalamadan daha düşük bitlerle kodlanmalıdır.
Bunu gerçekleştirebilmenin tek yolu ise az muhtemelliğe sahip olan
sembolleri ortalamadan yüksek bitlerle kodlamaktır. Bu açıdan kumar
biraz uzamaktadır. Ama genellikle akıllı kumarbaz kazanır fakat hep düşük
ihtimallere sahip bir mesaj ortaya çıkarsa o zaman mesaj sıkıştırılacağı
yerde daha da genişletilir. Böyle durumlarda bahis kaybedilmiş olur. 3.2.2
Dağınım Kodlamasının Matematiği
Bilgi
kuramının temel teoremine dayalı olarak bir sembol için en uygun uzunluk
Ls şu formülle verilir;
formülüyle
gösterilir ve toplam alfabedeki tüm sembolleri verir. Dağınım sıkıştırılmış
bir mesaj içindeki ortalama kod uzunluğu üzerindeki küçük bir bağıntıdır. Anlatılacak
olanlar bunun kanıtı değildir fakat olayın anlaşılması için yardımcı
olacaktır: alfabenin a,b,c ve d gibi 4 karakterden oluştuğunu düşünelim.
Sa, Sb, Sc ve Sd 'nin de sembol
sayıları olduğunu varsayalım. Her sembolle en az bir defa karşılaşılacağı
ve her birinin uzun bir mesaj içerdiğini kabul edelim. Şimdi a sembolünden
başlayarak sayıları şekil 3.3’de görüldüğü gibi sıralayıp bir yığın
oluşturalım.
Şekil 3.3 - Bir Rakam Çizgisi Üzerindeki Sembol Sayıları Her
bir sembol özel bir sayı aralığı ile birleştirilir. Böylece
belirtilen aralıktaki herhangi bir sayıyı seçerek açıkça
belirtilebilir. Mesela, a sembolü 0'dan Sa -1'e kadar olan aralıkla
belirtilir ve 0 ile 3 arasındaki herhangi bir sayıdan seçilebilir. b
sembolü ise Sa'dan Sa + Sb -1 'e kadar
olan aralıkla ilişkilendirilmiştir ve bundan dolayı 4 ve 5 rakamlarından
herhangi biri olarak seçilebilir. d sembolü Sa + Sb
+ Sc 'den Sa + Sb + Sc + Sd
-1 'e kadar olan aralıklarla ilişkilendirilir ve 8 ile 15 arasında
herhangi bir rakamdan seçilebilir. Dikkat edilmelidir ki bu aralıklarda hiç
üst üste binme olmamaktadır. Tablo 2.1’de ilk iki sütunda bu olay özetlenmiştir. Tablo
3.1 - Tablo - Sembol Sayıları, Olasılıklar
ve Kodlar
Tablo
3.1’de 3. sütun sayıların ikili temsillerini içermektedir. Sd
, en geniş sayı aralığı olmakla birlikte sadece en değerli bit eşsizdir
ve diğer bitler ya 0 ya da bir olabilmektedir. Ondan sonra en küçük aralığı
olan Sa için iki en değerli bit 0 olmak zorundadır ve geri
kalan herhangi bir anlamda olabilir. İki küçük aralık için üç bit
gereklidir ki eşsiz olarak aralık belirlenebilsin. Eşsiz olmayan bitler görmezden
gelinirse 4. Sütundaki sonuç ortaya çıkar. Eğer sembol olasılıkları sembol sayılarından
yararlanılarak hesaplanırsa, ideal kod uzunlukları yukarıdaki ikinci
formüle göre hesaplanabilir. Bu durum zaten Tablo 2.1’de 5. ve 6. Sütunlarda
görülmektedir. Kod kelimelerinin uzunluklarıyla tamamen uyuşan ideal kod
uzunlukları önemli bitlere bakılarak elde edilebilir. 3.2.3
Huffman Kodlaması
İhtimaller
2'nin basit katları olduğunda kod uzunlukları kolayca belirlenebilir.
Fakat 1/37 gibi bir rakamda 1 ne işe yarar? Huffman tarafından ortaya çıkarılan
kod tanımlama prosedürü bu problemi temizce çözer. Huffman bu işlemi,
küçük kodlar üreterek (en uygun olacak şekilde ve eşsiz öneklerle) ve
tablo içindeki tüm kodları kullanarak yapar. Ayrıca uygun miktarda
tamsayı uzunluk kodları sağlar. Sadece aritmetik kodlamada olduğu gibi
tamsayı olmayan uzunluk kodlama teknikleri Huffman kodlamasının kodlama
verimini arttırır. 3.2.4
Huffman Kodlarının Atanması
Şekil 3.4 -
Huffman Kodlama Ağacı
3.2.5
Uyarlamalı (Adaptive) Dağınım Kodlaması
MPEG
uyarlamasız bir kodlama sistemidir ve böylece sabit kod tabloları kullanır.
MPEG kod tablolarını kurmak için birçok görüntü dizisi kodlanır ve
tablo içindeki her kod kelimesine ait istatistikler toplanır. Tabiki ideal
olarak kod kelimesi uzunlukları istatistiklere tamamen uymak zorundadır.
İdealden küçük sapmalar olduğu vakitlerde uyarlamasız kodlama nispeten
biraz daha güçlüdür. Eğer bir sembol için atanan kod kelimesi çok
uzun olursa diğer sembol için atanan kod kelimesi çok kısa olacaktır.
Bu nedenle sembol olasılıkları farzedilen değerlere çok yaklaşmazsa
bazı semboller için yükseltgenen bit sayısı diğer indirgenen bit sayılarıyla
kısmen denkleştirilir. Eğer sapmalar küçük olmazsa kodlama verimi düşer
ve uyarlamalı kodlama böylece daha dikkate değer bir sıkıştırma sağlar.
Uyarlamalı
dağınım kodlamasında kod tabloları sembol olasılıkları ile en çok
uyuşacak şekilde değiştirilir. JPEG resim sıkıştırma formatında özel
bir resim için kullanılan istatistiklere uygun Huffman tabloları sıkıştırılmış
resmin bir parçası gibi iletilebilir.
JPEG ayrıca, dağınım kodlamasının alternatif bir şeklini ve
uyarlamalı aritmetik kodlama sunar.
Bu özellikler bir resim içersinde değişen istatistiklere bile uyum sağlar. Doğal
olarak, uyarlamalı kodlamada, kodlama verimi kazancı için biraz taviz
verilmelidir. Bu sistem genellikle çok komplekstir. 3.2.6
Sembol Olasılıkları
Tablo
2.1’de sembol olasılıkları, sembol sayılarından hesaplanmıştı.
Bunun yapılmasındaki amaç, farz edilen sayımların yüksek sayıdaki
tipik mesajların ortalamasının ihtimaller için güvenilir değerlerin
hesaplanabilmesini yeterince sağlayabilmek için tüm semboller yeterince
oluşmaktır. Bir sembol teorik olarak mümkünse bazen oluşur, fakat kod
tablosunu tamamlamak için kullanılan mesajlar içinde hiçbir zaman oluşmaz.
Kod tablosu herhangi bir uygun mesajı temsil edebilmelidir ve bu olay sıfır
frekans problemi diye bilinen bir problemi ortaya çıkarır. Bu şöyle
açıklanır; eğer olay frekansı sıfırsa ve sembol sayısının toplam
sayıya oranından hesaplanan olasılık sıfırsa bu yüzden ideal kod
uzunluğu sınırsız olacaktır. Sıfır frekans problemini çözmede
kullanılan genel bir yöntem tüm sembol sayılarını "0" yerine
"1"den başlatmaktır. 3.3 İstatistiksel Modellerİstatistiksel
model kodlayıcı model içine baştan başa dağıtılmıştır. Resim
elemanı (pel) farklılıklarını alarak verileri ilişkisizlendirme (decorrelation)
veya DCT'nin hesaplanması istatistiksel modelin birer parçasıdır. Ayrıca
istatistiksel modelin çok önemli bir başka görevi ilişkisizlendirilmiş
temsilin elde edilmesi esnasındadır. Bu da verimli bir sembol kümesinin
oluşturulması içindir. Bu
sembolleri kullanarak DCT katsayılarını veya resim elemanı (pel) farklılıklarını
kodlamak kesinlikle mümkündür. Ancak ne zaman sembol olasılıkları çok
büyüse Huffman kodlaması sınırlama ve tamsayı kod kelimeleri nedeniyle
yetersiz kalır. 0.5 sembol olasılığına bağlı olarak mümkün olan en
küçük kod uzunluğu 1 bittir. Eğer olasılık 0.5 'in üzerine tırmanacak
olursa kod uzunluğu 1'de kalır ama yine de ideal olarak küçük olması
gerekir. Bu
problem için çözüm yolu DCT katsayısına ve resim elemanı (pel) farklılıklarına
dayanan sembolleri birleştirmektir. Bu istatistiksel modelin anahtar noktasıdır.
Sembolleri
birleştirirken, eski sembollerin her mümkün kombinasyonu için bir ayırma
sembolü gereklidir. Her sembol için olasılık içersinde birleştirilen
eski sembollerin sonucu olarak verilir. Örnek olarak; MPEG'de kullanılan
DCT (ayrık kosinüs dönüşümü), özellikle yüksek frekanslarda tipik
olarak birden fazla sıfır katsayısına sahiptir. Bu nedenle 0 değerinin
olasılığı 0.5'in üzerinde olacaktır v katsayıları ayrı ayrı
kodlamak verimsiz olacaktır. Onun yerine, düşük olasılıklarda yeni
semboller oluşturmak için sıfır (0) katsayı değerleri değişik
yollarla birleştirilir. Her yapılan kombinasyona bir sembol verileceğinden,
sembolleri birleştirme işlemi alfabenin boyutunu büyütecektir. Fakat
kodlama verimi bayağı artacaktır. İstatistiksel
model koşullu olasılık yöntemlerini de kullanır. Koşullu olasılıklar
öncelikli olaylara bağlı olan olasılıklardır. Mesela, tipik İngiliz
metin dokümanlarında metin içinde bulunan "u" harfinin olasılığı
yaklaşık 0.02'dir. eğer "q" harfi ortaya çıkarsa
"u"nun olasılığı artar ve 0.95 civarına gelir. Eğer bir olasılık
geçmişte kodlanan sembollerin bir fonksiyonu ise buna koşullu
olasılık (conditional probability) denir. Kod tabloları koşullu olasılıklara
dayandırıldığında kodlama öncelikli sembollere şartlanır. Bir
çok sıkıştırma sistemi koşullu olasılıkları kullanır. Örnek
olarak MPEG, kodlanmış resmin tipine bağlı olarak kod tablolarını değiştirir.
3.4 Kodlama ModelleriDaha
önce bir sinema film şeridini incelemiş olan herkesin bileceği gibi
sinema içindeki resimler birinden diğerine çok benzerlik arz eder. Ek
olarak, her resmin sayısallaştırılmasından dolayı oluşan iki boyutlu
örnek dizileri yüksek seviyede ilişkilidirler. Bu da bir resim içindeki
yan yana bulunan örneklerin yoğunluk bakımından birbirine çok benzer
olmasından kaynaklanır. Bu bir resimden diğerine olan ilişkiden dolayı
resim dizileri etkin bir biçimde sıkıştırılabilmektedir. 3.4.1 I-, P- ve B- ResimleriMPEG
bir dizi içindeki resimleri 3 ana kategoriye ayırır. İçsel-kodlanmış
(Intra-Coded) veya I-resimleri dizi içersinde önceki veya sonraki
resimlere referans almadan kodlanırlar. Tahmini-resimler (Predicted-Pictures)
veya P-resimleri zamansal olarak en yakın önceki I veya P-resimlerine
referansla kodlanırlar. Çift yönlü kodlanmış resimler (Bidirectionally
Coded pictures) veya
B-resimleri dizi içinde I-resimleri ve B-resimleri arasına serpiştirilmiştirler
ve en yakında bulunan önceki veya sonraki veya her ikisine de referans
alarak kodlanırlar. Bununla beraber B-resimleri aynı dizi içinde birkaç
yerde bulunabilir. B-resimleri hiçbir zaman diğer bir resmi önceden
bildirmek için kullanılamaz. 3.4.1.1 Resimiçi (Intraframe)
Sıkıştırma Modu
Bu
modda JPEG ‘de olduğu gibi piksel değerlerinin ayrık kosinüs dönüşümü
alınır ve sıkıştırma nicelendirme değerlerinin farklı seçilmesi değişken
uzunluklu kodlama sayesinde elde edilir. Tablo 3.2 - MPEG Resim içi (intra) nicelendirme matrisi 8
16
19 22
26
27
29
34
16
16
22
24
27
29
34
37 19
22
26
27
29
34
34
38 22
22
26
27
29
34
37
40 22
26
27
29
32
35
40
48 26
27
29
32
35
40
48
58 26
27
29
34
38
46
56
69 27
29
35
38
46
56
69
83 8-bitlik
piksel bilgisi üniform olarak kuantalanıp ayrık kosinüs dönüşümü alınırsa;
DA bileşeni için 0...2048 arası, AC bileşenler için ise –1024...1023
arası değerler elde edilir. Bu değerler frekansın yüksekliğine göre
değişen sayıda basamaklı olarak nicelendirilir (üniform olmayan
nicelendirme). Yeni nicelendirilmiş değeri bulmak için DCT çıkışı
Tablo 3.2.’de verilen değere bölünüp en yakın tam sayıya
yuvarlanır. Sonuç olarak DA bileşeni 8-bit, en yüksek frekanslı bileşen
ise 4-bitle nicelendirilmiş olur (2048 : 8 = 256 seviye → 8-bit ;
2048 : 83 = 25 seviye → 4-bit). Bu değerler insan gözünün ayırma
özelliklerine göre seçilmiştir. Bu şekilde nicelendirilmiş
makrobloklara kısaca “intra”
denilir. MPEG’de
ayrıca uyarlamalı nicelendirme kullanılır. Burada insan gözünün düz
renklerdeki değişimi desenli renklerdeki değişimlerden daha kolay fark
etmesi özelliğinden yararlanılır. Düz bloklar daha fazla bit, desenli
bloklar daha az bit kullanılarak nicelendirilir. Böylece JPEG’e göre
%30 daha fazla sıkıştırma elde edilir. Bu tür kodlanmış makrobloklara
“intra-A” denir. Kodlama
devresinde; DA bileşeni farksal darbe
kod modülasyonu (Differential Pulse Code Modulation : DPCM) ile
kodlanarak sıkıştırma sağlanır. Değişken işaret bileşenleri
genellikle JPEG’de olduğu gibi zikzak tarandıktan sonra Huffman benzeri
bir kodlama ile (gereksiz sıfırlar atılarak) kodlanır. 3.4.1.2 Resimlerarası(Interframe) Sıkıştırma ModuBu
modda görüntünün zaman içinde alacağı yeni değer daha önceki değerlerden
yararlanarak kestirilir. Kestirilen resimle gerçek resim karşılaştırılarak
sadece aradaki hata sinyali kodlanır ve karşı tarafa gönderilir. İki tür
çerçeve söz konusudur. P-tipi
çerçeveler sadece ileri yönde kestirilir. Hareket düzeltmeli ileri yönde
kestirim (motion compensated forward
prediction) için daha önceki I-tipi veya P-tipi çerçeveler kullanılır.
P-tipi çerçevelerdeki makroblokların kodlaması I-tipinde olduğu gibi “Intra”
veya “Intra-A” olabileceği gibi, “inter-D”,
“inter-DA”, “inter-F”, “inter-FD”,
“inter-FDA” gibi değişik
şekillerde olabilir. Bu kodlama tiplerinde “inter”kelimesi
kodlamada resimlerarası bilginin (zaman içindeki değişimin) kullanıldığını;
“D”harfi kestirme hatasının
DCT olarak kodlandığını; “A” harfi
uyarlamalı (adaptif) kodlama yapıldığını; “F”
harfi ise ileri yönde hareket düzeltmesi yapılacağını gösterir. Örnek
olarak eğer kodlama “inter-F”
olarak adlanmışsa, hareket düzeltmeli
ileri yönde kestirimin yeterli olduğu ve bu durumda sadece hareket
vektörünün karşı tarafa gönderileceği
anlaşılır. “inter-FD” bloğunda ise
hareket vektörü yanında hata bilgisi de gönderilir. Eğer blok “inter-FDA”
olarak adlanmışsa hareket vektörü ve hata bilgisi ile uyarma katsayısının
da iletilmesi gerekir. Eğer bir makroblok bir önceki çerçevedeki ile aynı
ise atlanır ve hiç iletilmeyebilir. Bu tip bloklara “skipped”denir. 3.4.2
MPEG Kodlama Modelleri
Dizi
içerisinde I-resimleri komşu resimlerden referans almadan kodlandığı
zaman, kodlama modeli resim içindeki ilişkilerden yararlanmalıdır.
I-resimleri için MPEG2in kullandığı model JPEG tarafından tanımlanan
modele benzerdir. P-resimleri
ve B-resimleri farklar olarak kodlanırlar. Yani kodlanan resimle referans
resim arasındaki farklar olarak kodlanırlar. Eğer görüntü bir resimden
diğerine değişmiyorsa o zaman fark da sıfır olacaktır. Sadece değişen
alanların yenilenmeye ihtiyacı vardır. Bu işlem şartlı
yeniden doldurma (conditional replenishment) olarak bilinir. Eğer dizi
içersinde hareket varsa, referans resimle o anda bulunan resim arasındaki
resim elemanı (pel) farklılıkları nedeniyle daha iyi bir kestirim elde
edilebilir. Hareket kompanzasyonu P ve B-resimleri için çok önemli bir
kodlama modeli bölümüdür. Bir
I-resmi veya P- veya B-resmi için hareket kompanzasyonu farkı verilmiş
olsun. Kodlama modelini tamamlamak için 2 temel yöntem kullanılır: ayrık
kosinüs dönüşümü (DCT) ve kestirimci model. DCT tabanlı model tüm
resim tiplerini kodlamada ortak bir modeldir ve MPEG içinde merkezi bir rol
oynar. DCT katsayılarının nicelendirilmesi işlemi sayesinde MPEG kodlama
sistemi iyi bir avantaj sağlar. Bunu da insan gözünün aydınlık ve
renge karşı gösterdiği tepkilerden yararlanarak yapar. Bunun manası da
kodlama modellerinin katsayıların koşullu istatistiksel özelliklerini
hesaba katmalarına gerek olmadığı demektir. Nicelendirilmiş
DCT katsayılarının kodlaması kayıpsızdır. Çünkü kod çözücü tam
olarak aynı nicelendirilmiş değerleri üretebilmektedir. Kodlama
modelleri kodlanan resmin tipine bağıdır. 3.4.3
I Resimleri'nin Kodlanması
I-resimlerinde
verilen bir blok içindeki DCT katsayılarının tamamına yakını ilişkisizlendirilmiştir. Ancak yine de verilen blok içindeki
katsayılar arasında ve komşu blokların katsayıları arasında bazı ilişkiler
olabilir. Bu anlatım DC katsayılar tarafından temsil edilen blok
ortalamaları için özellikle doğrudur. Bu nedenden dolayı, kestirimci
DPCM tekniği denilen bir teknikle DC katsayılar AC katsayılardan ayrı
olarak kodlanır.
Şekil 3.5 - MPEG Çerçevelerinin Gruplanması Değişik
cinsten bir takım çerçevelerden oluşan guruba “Resimler
Gurubu” denir. Bir guruptaki çerçeve sayısı uygulanmaya göre değişebilir.
Şekil 3.5’de 9 çerçeveden oluşan bir gurup görülmektedir. Bu
guruptaki çerçevelerin iletim sırası 0, 4, 1, 2, 3, 8, 5, 6, 7 veya 0,
1, 4, 2, 3, 8, 5, 6, 7 şeklinde olabilir. MPEG
yöntemi , sıkıştırma için, çerçeveler arası benzerlikten ortaya çıkan
zaman içindeki fazlalık bilgiden (Redundancy)
büyük ölçüde yararlanır. Burada belli bir andaki görüntü çerçevesinin
daha önceki ve daha sonraki çerçeve bilgileri kullanılarak bulunabileceği
veya kestirilebileceği varsayımından hareket edilir. Ayrıca hareket
bilgisinden de yararlanılarak hatalar büyük ölçüde azaltılır. Böylece
çok yüksek sıkıştırma oranları elde edilir. Çerçeve içi
benzerliklerden yararlanarak sıkıştırma yapmak için JPEG’ de olduğu
gibi ayrık kosinüs dönüşümünden yararlanılır. Ayrık kosinüs dönüşümü
(DCT) için 8x8’lik bloklar kullanılır. Burada ayrıca 4 parlaklık
seviyesi (luminance) ve 2 renk
farkı bilgisi bloğundan meydana gelen “makro
bloklar” (MB) vardır. Bir
çerçevedeki makro bloklar değişik şekillerde kodlanabilir. 3.4.3.1 I Resimlerinde DC Katsayıların KodlanmasıAşağıdaki
eşitlikte görüldüğü gibi, komşu bloğun kodlanan DC değeri olan P harfi o anki blokta bulunan DC değer kestirimini ifade eder. DDC fark
değeri genellikle sıfıra yakın olacaktır; DDC = DDC - P
Şekil 3.6 -
Makroblokların kodlanma Sırası ve Ardışıl DC Kestirim Dizisi
DDC 'nin
kodlanması işlemi, büyüklük kategorisinin kodlanması ve doğruluk
işareti ile genlik değerlerini belirten
ek bitlerin kullanımı ile olur. Parlaklık (aydınlık) ve
renklilik için büyüklük kategorileri ve
buna uygun kod kelimeleri Tablo 3.3’de verilmiştir; Tablo 3.3 -
Tablo Aydınlık (Luminance) ve Renklilik (Chrominance) için DC Kod Tablosu
Büyüklük kategorisi, DC farkı tam olarak açıklamak için gerekli
olan bitlerin sayısını belirtir. Eğer yukarıdaki tabloda değer
"0" ise o zaman DC fark da "0" olur. Aksi takdirde büyüklük
bitleri büyüklük kodunu takip edecek şekilde bit akışına eklenir. Bu
bitler büyüklük ve işaret değerlerini tamamıyla açıkça
belirtebilmek için ilave bilgiler kaynaklanmasını sağlarlar. Fark
değerlerinin kodlanması işlemi tam olarak JPEG 'deki gibi yapılır.
Verilen bir farkı kodlamak için ilk olarak büyüklük kategorisi
belirlenir ve kodlanır. Eğer fark değeri negatifse 1 çıkarılır. Böylece
farkın düşük konumlardaki büyüklük bitleri bit akışına eklenir.
Tablo 3.4’de birkaç örnek gösterilmektedir. Tablo 3.4 - DC Fark Kodlaması Örnekleri Tablosu
3.4.3.2 I Resimlerinde AC Katsayıların KodlanmasıDCT (Ayrık kosinüs Dönüşümü) tarafından sağlanan ilişkisizlendirme
işlemi AC katsayılarından birbirinden bağımsızca kodlanmasına müsaade
eder ve bu da kodlama işlemini oldukça basitleştirir. Verilen bir katsayının
kodlanması diğer katsayılardan bağımsız olmasına rağmen dizi içersinde
katsayının bulunacağı yer önemlidir.
Şekil 3.7 -
DCT Katsayılarının Zikzak Düzeni
Zikzak
taramada katsayılar, olasılıklarının "0" olması sırasına göre
yaklaşık biçimde düzenlenir. Tipik olarak 8x8 'lik bir bloğun bir
zikzak düzenlemesinde bir çok katsayı "0" olmaktadır. Bu
nedenden ötürü, sıfır katsayılarını bileşik (composite) sembollerle
birleştirmeden bloğu verimli bir şekilde kodlamak mümkün olabilir. Bileşik
sembole verilebilecek en önemli örneklerden biri blok
sonudur (End-of-Block - EOB). Blok sonu sembolü zikzak düzenlenmiş
DCT içindeki tüm sıfır katsayılarını tek bir kod kelimesiyle kodlar.
tipik olarak bir blok sonu dizinin orta noktasından önce bulunur ve iki
bitlik olarak kodlanır. Dikkat edilmesi gerekir ki her katsayının bağımsızca
kodlandığı düşünüldüğünde, aynı bilgiyi kodlamak için 60 bite
ihtiyaç olacaktı.
Şekil
3.8 - MPEG ve JPEG 'de Blok Sonu Kodlaması: (a) DCT
iki boyutlu bir dizi olarak düşünüldü. Nicelendirme işleminden sonra tüm
yüksek frekanslar "0" oldu. (b) Zikzak Düzenlenmiş katsayılar
izleyen sıfırlarla birlikte EOB (Blok sonu) sembolüyle yer değiştirildi.
(c) Zikzak Düzenlenmiş katsayılar EOB sembolleri ve DDC
= 132 - P bileşen çalışma/seviyesi (run/level) olarak temsil edildi. Sıfır
katsayıları EOB sembolünden önce sıklıkla görülebilir. Bu durumda
daha iyi bir kodlama verimi elde edilir. Her sıfırdan farklı AC katsayı
bu çalışma-seviye sembol (run-level symbol) yapısını kullanılarak
kodlanır. Buradaki "çalışma" (run),bir sonraki sıfırdan
farklı katsayıdan önce gelen sıfır katsayıların sayısını belirtir.
"Seviye" (level) ise sıfırdan farklı katsayıların genliğini
belirtmektedir. Yukarıdaki şeklin (şekil 3.8) c bölümünde bu olay görülmektedir.
Her çalışma-seviye kodunu izleyen bit, sıfırdan faklı katsayıların işaretini
kodlayan s'dir. Eğer s sıfır ise katsayı pozitif olacak, diğer hallerde
ise negatif olacaktır. Tablo
3.5’de görüntülenen MPEG AC kod tablosunda yüksek sayıda çalışma-seviye
(run-level code) kodlarına yer verilmiştir. EOB (blok sonu) sembolü de
iki bit koduyla birlikte gösterilmektedir. Bu tabloda bulunmayan çalışma
uzunlukları ve seviye kombinasyonları kaçış kodlarıyla birlikte kodlanırlar.
Bu kaçış koduna 8 bit çalışma uzunluğu kodu ile birlikte 8 veya 16
bit seviye kodu eklenir. İlk bakışta biraz kafa karıştırıcı gibi görünen
çalışma 0 / seviye 1 için kodlar Tablo 2.5’de listelenmiştir. İlk
olarak, neden iki kod kullanılmıştır? İkinci olarak da, ikili kod
"1s" (s sıfırdan farklı bir katsayının işaretini gösterir)
blok sonu kodu (EOB) olan ikili "10" kodu ile neden çakışmamaktadır?
Bunların nedeni kod tablosunun ikili bir amaç için kullanılmasından
dolayıdır. Çünkü gerçekten iki kod tablosu birleştirilerek bir kod
tablosuna aktarılmıştır. Çoğu durumlarda EOB (blok sonu) olayı oluşur
ve sonraki (next) diye adlandırılan
giriş kullanılır. Ancak içsel olmayan (nonintra) kodlamada tamamen sıfır
olan DCT bloğu yüksek seviyeli bir prosedür olarak kodlanır ve blok sonu
(EOB) ilk çalışma-seviyesi 'ni kodlamadan önce oluşamaz. Bu özel
durumda ilk (first) diye adlandırılan
giriş kullanılır. İlk
(first) diye adlandırılan kodlar sadece içsel olmayan (nonintra)
kodlamada kullanılır. İçsel (intra) kodlama içinse DC ayrı olarak
kodlanır ve herhangi bir sıfırdan farklı katsayı olmasa bile blok sonu
(EOB) meydana gelebilir. Sonuç olarak, ilk giriş nedeniyle "1s"
blok sonu (EOB) kodu ile çakışır v kullanılmaz. Tablo 3.5 - Çalışma-Seviyesi (run-level) Kombinasyonları için Değişken
Uzunluk Kodları
3.4.4
P- ve B- Resimlerinin Kodlanması
DCT
'nin ilişkisizlik (decorrelation) özelliği sadece içsel (intra) kodlanan
resimlere uygulanabilir. İçsel olmayan (nonintra) resimler ise bir başka
resme bağlı olarak yapılan tahmine göre kodlanırlar ve tahmin işlemi
veriler üzerinde ilişkisizlendirme görevini büyük ölçüde halleder.
Rao ve arkadaşları tarafından yürütülen belli başlı çalışmalar içsel
olmayan (nonintra) resimlerin DCT tarafından uygun bir biçimde ilişkisizlendirilemeyeceğini
göstermiştir. Eğer ilişki (correlation) çok az olursa küçük katsayı
ilişkilerini görmezden gelmek kodlama verimini fazla azaltmayacaktır. DCT
'nin kullanılmasının ana sebebi nicelendirme (quantization) işlemidir.
P- ve B- resimleri için oldukça kaba bir nicelendirme işlemi yapılabilir
ve bit oranları da gayet düşük olacaktır. Ama düzce hazırlanmış bir
nicelendirme tablosu insanın görsel sisteminin özelliklerinden tamamıyla
yararlanamayacaktır. DCT nicelendirmesi bit oranını düşürmede etkili
bir araçtır. P-
ve B- resimlerinin kodlanmasında DC katsayı türevsel bir değerdir ve
matematiksel olarak AC katsayılara benzerlik arz eder. Sonuçta AC ve DC
kodlama tek bir işlem içine entegre edilmiştir. Sıfırdan
farklı bir makro blok içindeki sıfır bloklar kodlanmış
blok deseni - kbd (coded blok pattern) denen 6 bit değişken kullanılarak
kodlanır. Bu 6 bitteki her bit uygun bir DCT'nin aktif veya sıfır olduğunu
gösterir. Kodlanmış blok deseninin değişken uzunluk kodları makroblok
içindeki sıfır blokları kodlar. kbd = 0 şartı makroblok adres artırımı
ile ele alınır ve makroblok atlanır. Son
olarak, sıfırdan farklı olan her blok kodlanmış olmalıdır, zaten
tablo 3.5’deki kodlar böyle kullanılmıştır. Bu tabloda ilk giriş değeri
olan çalışma 0 / seviye 1 değeri atlanmış ve AC katsayıların içsel
kodlamasına eklenmiştir. P- ve B- resimleri için se tüm tablo kullanılmıştır.
İlk çalışma-seviyesini kodlarken ilk giriş değeri olan çalışma 0 - seviye 1 değerleri kullanılmıştır. Bu durumda en az 1 adet sıfırdan faklı katsayı kodlanmadan blok sonu (EOB) meydana gelmez. Çünkü, sıfır bloğu koşulu kodlanmış blok deseni tarafından kodlanacaktır. Bundan sonra, artık blok sonu oluşabilir ve çalışma 0 - seviye 1 için ikinci giriş kullanılmalıdır. Bu tablo tam olarak bir Huffman tablosu olmamasına karşın yaklaşım gayet güzeldir. Çünkü iki ayrı tabloya olan ihtiyaçtan birini elemek çok akıllıca bir yoldur. Şekil 3.9 -
MPEG İki yönlü kestirim
B-tipi
çerçeveler I-tipi ve P-tipi
çerçevelerden yararlanarak iki yönlü olarak kestirilir. Kestirilen bloğun
gerçek değerinin b harfi ile,
kestirilen değeri ise “b”
gösterirsek : b
= α1c1 + α2c2 : α1
+ α2 = 1 olur. Burada c1 önceki ve c2
sonraki, yeniden oluşturulmuş çerçevelere ait ve b
bloğuna karşı düşen blokları göstermektedir. α1,
α2 katsayıları ağırlıkları gösterir ve “0, 0.5,
1” değerlerini alabilirler. α1 = 1 : α2 = 0
ileri yönde, α1 = 0 : α2 = 1 geri yönde,
α1 = 0.5 : α2 = 0.5 her iki yönde kestirimi
gösterir. b – b ise kestirim
hatasıdır. İki
yönlü kestirme ve iç değerbiçimine (interpolation) dayanan bu tür
kodlamaya Zamanda Çoklu Ayırıcılı Teknik (Temporal Multiresolution Technique)
adı verilir. Bu yöntemde önce I
ve P-tipi çerçeveler kodlanır.
Bundan sonra B-tipi çerçeveler
iç değerbiçim yapılarak elde edilir. B-tipi
çerçeveleri kullanmanın sağladığı avantajları şöylece özetleyebiliriz; Gölgelenen
arka planların işlenmesinde kolaylıklar sağlanır. Örnek olarak bir
nesne bir sonraki çerçevede başka bir cisim tarafından kapatılsa bile
onunla ilgili bilgiler hala kullanılabilir. İki
çerçevenin ortalaması olarak hesaplanan bir görüntüde gürültü daha
azdır. B-tipi
çerçeveler daha sonraki çerçevelerin oluşturulmasında kullanılmadığı
için hatanın devam etmesi söz konusu değildir. Buna
karşılık; ·
B-tipi
çerçevenin oluşturulması için I ve
P-tipi en az iki çerçeve
gerektiği için alıcıda en az iki çerçevelik hafıza gerekir. ·
Eğer
B-tipi çerçevelerin diğerlerine
oranı çok fazla olursa çerçeveler arası ilinti azalacağından hata
miktarı artar ve bunu kodlamak için daha çok sayıda bit iletilmesi
gerekir. Bu aynı zamanda kodlama için gerekli gecikme zamanını da arttırır.
B-tipi
çerçevelerdeki makrobloklar da P-tipi
gibi kodlanabilirler. Bunlara ek olarak “inter-I”,
“inter-ID”, “inter-IDA” tipi bloklar da vardır. Buradaki I
harfi bu blokların hareket düzeltmeli interpolasyon yöntemiyle elde
edildiğini göstermektedir. Çerçeveler
arası “Interframe” modunda fark işaretini kodlarken DCT girişi yine
(-255...255) arası olup çıkışta (-2048...2047) arası değişen değerler
elde edilir. Bunları nicelendirmek için değişik bir nicelendirme tablosu
kullanılır. Buradaki adımlar biraz daha kaba seçilir. Elde edilen değerler
yine değişken uzunlukta (VLC) kodlanır. Yer değiştirme vektörleri,
daha önceki blokların hareket vektörlerine göre farksal darbe kod modülasyonu
(DPCM) olarak kodlanır. Değişken uzunlukta (VLC) kodlamada tablolar
farksal hareket vektörleri ve kestirim hatasının değerine göre seçilir.
P ve B-tipi
çerçeveler için farklı Huffman tabloları kullanılır. MPEG
kodlayıcıda I, P
ve B-tipi çerçecelerin oranı
uygulamaya bağlı olarak değişebilir. 13 çerçeveden en az bir tanesi I-tipi
olmalıdır. Hareket kestirim algoritması standarda dahil edilmemiştir. Değişik
algoritmalar kullanılabilir. Genelde bu iş için sadece parlaklık
seviyesi işareti (Luminance) kullanılır. Her makroblok için bir hareket
vektörü belirlenir. Hareket kestiriminde 0.5 piksel doğruluk istenir.
Vektörün uzunluğu resimden resime değişebilir. Ancak resmin dışına
taşan noktalara ilişkin hareket vektörleri kullanılamaz. Kodlamanın
basamaklarını özet olarak şöyle sıralayabiliriz; 1.
Bir grup resimdeki çerçevelerin tipleri I, P ve B olarak
belirlenir. 2.
P ve B-tipi çerçevelerdeki makrobloklara ait hareket vektörleri
hesaplanır. 3.
Her bloğun tipi ve buna bağlı olarak sıkıştırma yöntemi
belirlenir (MTYPE). 4.
Uyarlamalı nicelendirme kullanılacaksa bunun oranı belirlenir (MQUANT). Bu
işlemleri gerçekleştirmek için kullanılacak devrenin blok şeması
CCITT H.261 kodlayıcısı ile yanıdır. Ancak kullanılan dönüştürme
ve kodlama algoritmaları farklıdır. Gelen
analog video işareti bir ön sinyal işleme devresi ile önce süzülür ve
Analog/Digital Çevirici ile sayısallaştırılır. İlk çerçeve I-tipi
olacağından bu çerçeve JPEG’de olduğu gibi makroblokları “inter”
tipinde kodlanmak üzere DCT bloğuna ve oradan nicelendirme devresine
verilir. Kodlanmış işarete ters kodlama işareti uygulanarak, resim, alıcıdaki
gibi, yeniden oluşturulur. Bu
resim, resim hafızasına kaydedilir. Hafızadaki bu bilgi ve daha sonra
gelen çerçevedeki bilgiler kullanılarak görüntüdeki her makroblok için
hareket vektörleri hesaplanır. Bunlardan yararlanılarak ilk P-tipi çerçevenin
ne olması gerektiği kestirilir ve ayrı bir hafızaya kaydedilir. Bu iki
hafızadaki bilgiler kullanılarak ikinci çerçevenin ne olması gerektiği
kestirilir. Kestirilen resimle gerçek resim karşılaştırılarak aradaki
fark (hata) bulunur. Artık bu durumda resmin tamamını kodlayıp iletmek
gerekli değildir. Sadece bu hata işareti DCT devresine uygulanıp kodlanır.
Ayrıca bu çerçeveye ilişkin hareket vektörü de kodlanır ve elde
edilen bit dizisi tampon belleğe aktarılır. Tampon belleğin doluluk
derecesine göre nicelendirme adımları ayarlanır. Bu
bilgilerin başına çerçevelerin sıralanışı, makroblokların tipleri (MTYPE),
varsa uyarlamalı (adaptive) sıkıştırma katsayısı (MQUANT) ve diğer
bilgiler eklenerek bir paket oluşturulur. Bu paket iletim hatalarından
korunmak için ayrıca bir hata kodlamasına tabi tutularak iletim hattına
verilir. Bu sayede iletim sırasında gürültü ve diğer etkilerden bazı
bitlerin bozulması alıcıda düzeltilerek alıcıda resmin bozulmasız bir
şekilde yeniden oluşturulması sağlanır. 3.5 Kodlayıcı ve Kod Çözücü Blok DiyagramlarıBu
bölümde ve önceki bölümlerde çeşitli kavramlar üzerinde duruldu. Bu
kavramlar yüksek seviyeli kodlayıcı ve kod çözücü blok diyagramları
oluşturmak için birleştirilebilir. 3.5.1
Yeniden İnşa Modülü
Şekil
3.10’da gösterildiği gibi, yeniden inşa modülü kodlayıcı ve kod
çözücülerin ikisi için de ortaktır. Bu modül kestirim için gerekli
olan resimleri yeniden inşa etmede kullanılır. Bu şekilde kullanılan
sinyal tanımları, izleyen kodlayıcı ve kod çözücü şemalarına
uygulanacaktır.
Şekil 3.10 -
Kodlayıcı ve Kod Çözücü İçin Ortak Kullanılan Yeniden İnşa Modülü
3.5.2
Kodlayıcı Blok Diyagramı
Şekil
3.10’da görülen yeniden inşa modülüne ek olarak şekil 3.11’deki
kodlayıcı modelinde birkaç değişik fonksiyonel bloklar vardır. Bunlar:
bir kontrolör, bir ileri DCT, bir nicelendirme birimi, bir VLC kodlayıcı
ve bir hareket hesaplayıcısıdır. Modüllere
bakıldığında her şey açıkça anlaşılmaktadır. Kontrolör
senkronizasyon ve kontrol sağlamaktadır, ileri DCT FDCT'de ve Q modüllerinde
hesaplanır, ileri ve geri hareket hesabı hareket hesaplayıcı tarafından
gerçekleştirilir, hareket vektörlerinin hesabı ve DCT verisi VLC kodlayıcısı
tarafından yapılır. Hareket hesaplayıcı blok basit bir bölüm gibi görünebilir
fakat belki de sistemin en karmaşık parçasıdır. Dikkat edilmesi gereken
nokta yeniden inşa modülü kodlayıcı ve kod çözücü fonksiyonları için
genel bir yeterliliktir. Ayrıca sadece I- ve P resimlerinin yeniden inşasını
sağlayacak kodlama için basit
bir versiyon yeterlidir.
3.5.3
Kod Çözücü Blok Diyagramı
Kodlayıcıda
olduğu gibi şekil 3.10’da verilen yeniden inşa modülü kod çözücünün
(şekil 3.12) merkezi noktasını oluşturur. Bu durumlarda hareket yer değiştirmelerinin
kodları ve DCT verisinin
kodları VLC kodlayıcısında çözülürler.
Şekil 3.12 - MPEG
Kod Çözücü Yapısı |