Huffman Encoding by Snowblind.

Slides:



Advertisements
Benzer bir sunumlar
X86 Assembly Programlama Dilinde
Advertisements

Konu: Windows Sistem Araçları
TEST ÇÖZME TEKNİKLERİ VE SINAV İPUÇLARI.
DİJİTAL GÖRÜNTÜLEME Dr. Levent Oğuzkurt Başkent Üni.
RESİM FOTOĞRAF İŞLEME YAZILIMLARI.
Bilgisayar Dosya Uzantıları
Kİ-KARE TESTLERİ A) Kİ-KARE DAĞILIMI VE ÖZELLİKLERİ
KAMU HİZMET ENVANTERİ SEMİNERİ
AVL-Ağaçları (Trees).
Alt Ağlar.
U.Ü. ORHANGAZİ MESLEK YÜKSEKOKULU Öğr. Gör. Yeliz UMUR
İçerik Analizi.
SUNUMLARLA MATEMATİK SAYESİNDE MATEMATİK BİR KABUS OLMAKTAN ÇIKACAK.
Görüntü Kayıt Formatları:
DOSYA-KLASÖR VE DOSYA UZANTILARI
KISITLAMALAR (Constraints)
İndex Yapıları.
WEB TASARIMININ TEMELLERİ
Rasyonel Sayılarla Çarpma Ve Bölme İşlemi
SQL’e Giriş ve SELECT Komutu
Nesneye Yönelik Programlama
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
BİT’i Kullanma ve Yönetme
BİLİŞİM TEKNOLOJİLERİ ÖĞRETMENLERİ BURCU YILMAZ – İBRAHİM MERT
Dosya, Klasör ve Sürücüler
Dosya Adları ve Uzantıları
İNTERNET PROGRAMLAMA - 1
Dosya Yönetimi 118.
CEIT 101 Teorik Emrah Soykan - Konu 8 -. Dosya ve Dizin(Klasör) Kavramı : Bilgisayarda yapılan çalışmalar( Yazı, resim, şekil, grafik vb.) daha sonra.
Bilgisayarda Ofis Programları
KOORDİNAT GEOMETRİYE GİRİŞ
W İ NRAR Sevim DEN İ Z RAR NEDİR RAR Windows için shareware dosya arşivleme ve veri sıkıştırma formatıdır, dosyalarımızı sıkıştırarak boyutlarının.
BGK207 Bilgisayar I EN101, EN201 Temel Bilgi Tek. Kul. I
DOSYA KLASÖR VE KLASÖR UZANTILARI
Dosya UzantIlarI.
TAM SAYILAR Pınar AKGÖZ.
Resim Sıkıştırma Yonca BAYRAKDAR
VERİMLİ DERS ÇALIŞMA YÖNTEMLERİ
ÖSYS 2014 SINAV ÖNCES İ NDE VE SINAV ESNASINDA D İ KKAT ED İ LMES İ GEREKEN ESASLAR VE SORU ÇÖZME STRATEJ İ LER İ.
KAPASİTE BİRİMLERİ.
CÜMLEDE DE ’NİN YAZIMI.
Dyned eba şifre güncelleme işlemleri için
Bilgisayarda ölçü birimleri
VLC MEDİA PLAYER.
BLM 304 SAYISAL VERİ İLETİŞİMİ
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
KÜMELER.
Dosya, Klasör ve Sürücüler
SINAV ÖNCESİ Zihinsel hazırlık:
Dosya, Klasör ve Sürücüler
Bileşik Mantık Devreleri (Combinational Logic)
DOSYA SIKIŞTIRMA PROGRAMLARI
GGJ 2016 Oyun Yükleme GGJ Takımı. Bir GGJ kullanıcısı olmalısınız. Bir oyunu sisteme yüklemek için: 1. Bir GGJ hesabınız olmalı. 2. Bir jam merkezini.
İKİNCİ DERECEDEN DENKLEMLER
FAT VE NTFS DOSYA YAPISI
DOSYA MENÜSÜ.
Dinamik programlama ve Açgözlü algoritma
C Programlama Dili Bilgisayar Mühendisliği.
Dijital Ölçütler.
Algoritmalar II Ders 8 Açgözlü Algoritmalar.
Dosya Yönetimi.
Dosya Yönetimi.
Bugün neler öğreneceğiz?
DOSYA-KLASÖR VE SÜRÜCÜLER
REHBERLİK VE PSİKOLOJİK DANIŞMA HİZMETLERİ PLAN HAZIRLAMA
Bu sunum Balıkesir İl Milli Eğitim Müdürlüğü’nün 08/09/2014 tarihli /480.99/ sayılı , “Dyned Destek Hizmeti” konulu yazısına istinaden.
Bilgisayar Programlamasına ve Veri Analizine Giriş
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
Veri Sıkıştırma Algoritmaları
Bilgisayar Mühendisliğine Giriş
Sunum transkripti:

Huffman Encoding by Snowblind

Veri Sıkıştırmaya Giriş Elde edilen sonuç bakımından en temelde iki tür sıkıştırma yöntemi kategorisi vardır: Kayıplı Sıkıştırma (Lossy Compression) Kayıpsız Sıkıştırma (Lossless Compression)

Kayıplı Sıkıştırma Sıkıştırma sonucu elde edilen veriden önceki verinin aynısını elde etmek mümkün değildir. Sıkışan verinin bazı bölümleri “kaybolur”. Örnekler: MP3: Ham ses verisinden insan kulağının duyamayacağı frekanslar çıkarılır. JPEG: “Göze batmayacak” bozulmalar yapılır.

Kayıpsız Sıkıştırma Sıkıştırma sonucu elde edilen veriden önceki verinin aynısını elde etmek mümkündür. Örnekler: ZIP, RAR, vs.: Sıkıştırılan dosyaları açtığınızda orijinal dosyaları elde edersiniz. Hiçbir şey “kaybolmaz”. M4A: Apple tarafından geliştirilen kayıpsız ses formatıdır. Huffman Encoding

En Temel Veri Yapısı: Byte Byte, bir dosyanın içinde bulunan verinin büyüklüğünü gösteren en temel birimdir. Bit, içinde “1” ya da “0” değerini tutabilen veri yapısıdır. 1 Byte = 8 Bit Tüm bitler 0 ise [00000000], byte değeri = 0 Tüm bitler 1 ise [11111111], byte değeri = 255 Yani bir byte’ın içinde 256 farklı değer bulunabilir.

Huffman Kodlamasının Mantığı Sıkıştırılacak dosyanın içinde bazı byte değerleri hiç geçmiyor olabilir. Mesela içinde hiç “x” harfi olmayan bir metin dosyası olabilir. Belli byte değerleri diğerlerine göre daha sık geçebilir. Mesela “aaaabbaaaab” gibi bir metinde “a”, “b”den daha sık geçmektedir. Dosyada bulunan ve sık geçen byte değerlerini daha kısa bir bit düzeniyle ifade edemez miyiz?

Kodlama Başlıyor Örneğin metin.txt adlı bir dosyayı sıkıştıralım. Bu dosyanın içeriği “abacaba” şeklinde olsun. Dosyanın boyutu 7 byte, yani (7 x 8 =) 56 bittir. a’nın değeri 97, yani bit düzeni 01100001’dir. b’nin değeri 98,yani bit düzeni 01100010’dir. c’nin değeri 99, yani bit düzeni 01100011’dir. O halde metin.txt dosyasının bit düzeni: 01100001 01100010 01100001 01100011 01100001 01100010 01100001 a b a c a b a

1. Adım: Sayım Dosyada bulunan her byte değerinin dosyada kaç kere geçtiği tespit edilir. [metin.txt]: “abacaba” a: 4 adet b: 2 adet c: 1 adet

2. Adım: Kümeleme Elimizdeki byte değeri türlerinden en seyrek geçen iki tanesi seçilir, bu ikisi birleştirilir ve bu birleşik değer diğerlerinin arasına geri konur. Bu işlem, tek bir değer çeşidi kalana kadar devam eder. a : 4 b : 2 c : 1

Örnek Kümeleme İşlemi (1. Tur) En seyrek geçen iki karakter olan b (2) ve c (1) çekilir ve birleştirilir. Birleşim a’nın yanına geri atılır. a : 4 [b,c] : 3 b : 2 c : 1

Örnek Kümeleme İşlemi (2. Tur) En seyrek geçen iki karakter olan a (4) ve [b,c] (3) çekilir ve birleştirilir. Yeni birleşim geri atılır. Bu işlemin sonunda tek bir değer çeşidi ([a,b,c] : 7) kaldığından kümeleme aşaması sonlanır. [a,b,c] : 7 a : 4 [b,c] : 3 b : 2 c : 1

3. Adım: Kodlama [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1 Kümeleme işlemi sonucunda elde edilen ağaç yapısının sola giden oklarına “0”, sağa giden oklarına ise “1” denir. Her bir karakterin bit düzeyindeki yeni ifadesi, en tepeden o karaktere giden yoldaki 0 ve 1’lerden oluşur. Yani a: 0, b: 10, c: 11 [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırma İşleminin Sonucu Elde edilen yeni bit düzeyindeki ifadelere göre (a: 0, b: 10, c: 11) dosya içeriği tekrar yazılır: 0 10 0 11 0 10 0 Dosyamızın ilk içeriği 56 bit (7 byte) iken, sıkıştırıldıktan sonraki boyutu gördüğünüz gibi 10 bit (2 byte) oldu. Yaklaşık olarak %71 oranında sıkıştırma gerçekleşti. a b a c a b a

Sıkıştırılmış Dosyanın Açılması Elimizdeki sıkıştırılmış ve bit düzeyindeki veri: 0100110100 Bu veriyi açacak olan anahtar ise yanda verilen ağaç yapısı. Tek yapmamız gereken elimizdeki bit verisini ağaç üzerinde takip edip bir sona geldiğimizde vardığımız karakteri basıp tekrar ağacın başına dönmek. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 a İlk bit olan “0”ı okuduk ve ağaç üzerinde “a” karakterine vardık. O halde “a” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 a Bir sonraki bit olan “1”i okuduk ve ağaç üzerinde herhangi bir sona varamadık. O halde bulunduğumuz yerden devam ediyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 ab Bir sonraki bit olan “0”ı okuduk ve ağaç üzerinde “b” karakterine vardık. O halde “b” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 aba Bir sonraki bit olan “0”ı okuduk ve ağaç üzerinde “a” karakterine vardık. O halde “a” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 aba Bir sonraki bit olan “1”i okuduk ve ağaç üzerinde herhangi bir sona varamadık. O halde bulunduğumuz yerden devam ediyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 abac Bir sonraki bit olan “1”i okuduk ve ağaç üzerinde “c” karakterine vardık. O halde “c” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 abaca Bir sonraki bit olan “0”ı okuduk ve ağaç üzerinde “a” karakterine vardık. O halde “a” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 abaca Bir sonraki bit olan “1”i okuduk ve ağaç üzerinde herhangi bir sona varamadık. O halde bulunduğumuz yerden devam ediyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 abacab Bir sonraki bit olan “0”ı okuduk ve ağaç üzerinde “b” karakterine vardık. O halde “b” karakterini basıp ağaçta en başa dönüyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sıkıştırılmış Dosyanın Açılması 0100110100 abacaba Son bit olan “0”ı okuduk ve ağaç üzerinde “a” karakterine vardık. O halde “a” karakterini basıp ağaçta en başa dönüyoruz. Bit dizisi sona erdiği için kod açma işlemini sona erdiriyoruz. [a,b,c] : 7 1 a : 4 [b,c] : 3 1 b : 2 c : 1

Sonuç Bugün sizlerle kayıpsız bir sıkıştırma tekniği olan Huffman Encoding yöntemini bir örnek üzerinde -detayına girmeden- incelemeye çalıştık. Umarım bir fikir oluşması açısından yararlı olmuştur. Sunumu sabırla takip ettiğiniz için teşekkür ederim.