Professional Documents
Culture Documents
Çoğul Oratama Giriş DERS NOTU 2
Çoğul Oratama Giriş DERS NOTU 2
BÖLÜM
Çoğul ortam veri iletiminde veri miktarını azaltmak için metin, resim, video
veya ses kütükleri kodlanarak sıkıştırılabilir. CODEC (yada kod çözücü),
müzik, video ve resimleri sıkıştırmaya yarayan sistem dosyaları demektir. Veri
sıkıştırma işlemi, belirli uzunluktaki verilerin çeşitli yöntemler kullanarak daha
az bellek kullanması amacıyla geliştirilmiştir. Düşünün ki elinizde 10 Mbyte
boyunda bir dosya var ve bunu internet veya network üzerinden başka bir
bilgisayara aktarmak istiyorsunuz. Ortalama oranda bir CODEC ile bu dosyayı
sıkıştırdığınızda yaklaşık %50 oranda bellek kazancı olur. Bu ise gönderme
süresinin %50 oranda düşürülmesi demektir. Tüm internet hareketleri
düşünülürse binlerce terabyte seviyede kazanç sağlanmaktadır. Bu örnektende
anlaşıldığı üzere resim, video ve müzik dosyaları, hard diskte daha az yer
kaplaması maksadıyla sıkıştırılır. Her CODEC, farklı algoritmalara baska bir
deyişle farklı yöntemlere dayalı olarak çalışır. Elektronik cihazlarda (Müzik
setleri, DVD Player, MP3 çalarlar, Telefon gibi) bir videonun yada müziğin
açılabilmesi için cihaz dosyayla uyumlu CODEC’i desteklemelidir. Yani,
kullanılacak elektronik cihazın açılması istenen dosyanın sıkıştırılmasında
kullandığı CODEC'e sahip olması gerekir. Son yıllarda disk kapasitelerinin hızlı
bir şekilde artması, genel amaçlı sıkıştırma uygulamalarının kullanımını
azalttıysa da, aslında sabit disklerimizde sakladığımız ses, görüntü ve hareketli
görüntü dosyalarının tamamına yakını çeşitli yöntemlerle sıkıştırılmış haldedir.
1
renk için gerekli toplam bit sayısı aydınlık işareti için gerekli olandan çok daha
az yapılabilir. İnsan gözü görüntüdeki ince detaylara veya yüksek uzamsal
frekanslı enerjilerdeki seviye değişikliklerie daha az duyarlıdır. Buna bağlı
olarak resimdeki ince ayrıntılar daha az sayıda bitle kodlanabilir. Bütün bu
özellikler kullanılarak yapılan kodlamalarla 100:1 gibi çok yüksek sıkıştırma
oranlarında bile orijinal görüntüye çok yakın görüntüler elde edilebilmektedir.
Avantajları:
Dezavantajları:
İki tip kayıpsız sıkıştırma yöntemi vardır. Bunlardan ilki değişken uzunluklu
kodlama olarak ta bilinen olasılık (veya istatistik) tabanlı kodlama, ikincisi ise
sözlük tabanlı kodlamadır. Olasılık tabanlı kodlamada, sıkıştırılan verinin bütünü
içinde daha sık kullanılan sembollere bit adedi olarak daha küçük boyutta
kodlar atanması prensibi ile sıkıştırma yapılır. En çok kullanılan kayıpsız ve
olasılık tabanlı teknikler; RLE Kodlaması, Huffman Kodlaması ve Aritmetik
Kodlama’dır. Sözlük tabanlı kodlamada ise, sık tekrarlanan sembol grupları için
tek bir sembol kullanılması ile sıkıştırma yapılır. En çok kullanılan sözlük tabanlı
teknikler; LZ77, LZ78 ve LZW yöntemleridir. Hem olasılık tabanlı kodlamayı,
hem de sözlük tabanlı kodlamayı bir arada kullanan algoritmalar, daha yüksek
sıkıştırma oranları sağlarlar. DEFLATE, Huffman ve LZ77 sıkıştırma tekniklerini
bir arada kullanan bir algoritmadır
Aynı byte dizilerinin sık kullanıldığı dosyalar için uygundur. Bir dizideki
aynı değer birden fazla kez ortaya çıkarsa 3 byte ile yer değiştirir. Bu 3 byte:
3
Aşağıdaki veri seti bu algoritmaya göre kodlayalım:
Kodlama sonucunda:
MIT’de Robert Fano tarafından kurulan ve bilişim teorisi alanında bir ilk olan
sınıfta öğrenci olan David Huffman tarafından verilen bir ödev üzerine
geliştirilmiştir. GZIP, JPEG, MPEG gibi yaygın olarak kullanılan sıkıştırma
yöntemlerinde son işlem olarak kullanılır ve sıkıştırma algoritmalarında en
yaygın olarak kullanılan bileşendir. CCITT’nin (Consultive Committee on
International Telephone and Telegraph) faks iletimi için geliştirdiği 1-boyutlu
kodlama, tipik bir Huffman kodlamasıdır.
İlk olarak, veri setine ait frekans tablosu oluşturulur. Ardından, hangi karakterin
hangi bitlerle temsil edileceğini gösteren Huffman ağacı oluşturulur.
4
Örnek 1.
Adım 1
Adım 2
5
Adım 3
Adım 4
Adım 5
6
Adım 6
Veri seti ASCII kodu ile kodlanırsa, her karakter için 1 byte(8 bit)’lık alan
gerektiğinden toplamda 155 byte(1240 bit)’a ihtiyaç olacaktı. Huffman
kodlaması ile bu sayı :
7
Örnek 2.
8
Huffman Kodunun Çözümü
9
Örnek 1.
10
LZ78 algoritması kalıpları bulma ve ayrı ayrı saklama becerisine sahip olsa da,
en önemli dezavantajı, sözlüğün sınırsız bir şekilde büyümesidir. Pratikte,
sözlüğün büyümesi belirli bir noktada durdurulmalı; ya gereksiz girdiler
elenmeli ya da kodlama sabit sözlük şemasına zorlanmalıdır.
Terry Welch 1984’te Unisys için çalışırken LZ78 yaklaşımını yüksek performanslı
disk ünitelerine uyarlamış, ve ortaya çıkan yeni algoritma LZW olarak kabul
görmüştür. LZW hem sıkıştırma hem de açma performansı açısından LZ78
ailesinin en iyisi olmayı başarmıştır. Her tip veri üzerinde iyi sonuçlar veren bir
algoritma olduğu için, kendisinden sonra gelen birçok algoritma LZW’yi temel
almıştır. 1985 yılından beri Unisys LZW’nin patentini elinde bulundurmaktadır.
abcaabbcdddaaabbbbbbb
a | b | c | aa | bb | c | d | dd | aaa |bbb|bbbb
97 98 99 256 257 99 100 258 259 260 261
<97><98><99><256><257><99>><100>><258>><259>><260>><261>
11
LZ ailesinin en çok kullanılan üyesi LZW’dir. Hızı ve sıkıştırma performansı
yüksektir. Fakat, LZ78’de olduğu gibi, LZW algoritmasında da sözlük
büyüklüğünün sürekli artması sorun yaratmaktadır. Çözüm olarak birçok farklı
yöntem geliştirilmiştir.LZW tabanlı çalışan bir kayıpsız görüntü sıkıştırma
algoritması olan GIF, ve Unix’teki “Compress”, sözlük büyüklüğü 2b değerine
eriştiğinde (b değeri önceden belirlenir), sözlüğü iki katına (2b+1) çıkartır.
Sözlük daha da büyüdüğünde, statik sözlük yaklaşımına döner. Eğer sıkıştırma
oranı belli bir seviyenin altında kaldıysa sözlüğü boşaltarak, sözlük oluşturma
işlemini yeniden başlatır. British Telecom’un geliştirdiği BTLZ standartında ise
en az kullanılan girdi çıkartılarak sözlük küçültülür.
7. Bir metin dosyasında “a” karakteri 50 defa, “b” karakteri 35 defa, “k” karakteri 20 defa, “m”
karakteri 10 defa, “d” karakteri 8 defa ve “ğ” karakteri ise 4 defa geçiyor. İlgili karakterler için
Huffman ağacının en son halini oluşturunuz. Önemli Not: Huffman ağacı işlem basamaklarını
göstermenize, işlemler için açıklama yapmanıza ve ağacı oluşturduktan sonra karakterleri bitlerle
kodlamanıza gerek yoktur.
9.
12
Yukarıda “KAHRAMANMARAŞ” kelimesinin Huffman Ağacı verilmiştir. Ağaçtaki boşlukları
doldurarak harflerin kod karşılıklarını tabloya yazınız.
11. “ hata ” kelimesinin Huffman kodunu elde ederek ortalama sembol uzunluğunu (L)
hesaplayınız.
12. “abc” diziliminde P(a)=0.5, P(b)=0.3, P(c)=0.2 ‘dir. “cac” dizilimi için aritmetik kod etiket
değrini hesaplayınız.
13. “ ECE ” için P(E)=0.6, P(C)=0.4 aritmetik kod etiket değerini hesaplayınız ve alıcıda
gönderilecek bit dizisini elde ediniz.
14. ” abracadabrarray ” Pencere Boyutu (WS)=14 karakter ve İleri Tampon Boyutu (LBS)= 6
karakter için LZ77 kodlayınız.
15. Bir LZ77 kodlayıcı-dekodlayıcı için Pencere Boyutu 12 , İleri Tampon Boyutu 7 ve Arama
Tamponu 5 karakterdir. Dekodlayıcıdaki arama tamponu ilk anda “wabba” olduğu durum için
<4,6,a><2,4,w><3,1,b> kod dizisini dekodlayınız.
16. Harflerden oluşan bir veri dizisi Pencere Boyutu (WS)=13 , İleri Tampon Boyutu (LBS)=6
karakter ve Arama tamponu(SB) ise ilk anda “ cabraca ” ile dolu olan bir LZ77 kodlamasıyla
kodlanıyor. Elde edilen kod <0,0,d><7,4,r><3,5,d> olup kodlanmış bu LZ77 kod dizisinden
dekodlama ile esas veri dizisini elde ediniz.
13