Bilindiği üzere günden güne dijital bir çöplüğe dönüşen yaşantımızda dosyalarımızın sıkıştırılmış olması bile bazen yetersiz gelebiliyor. Terabyte kapasitelerine erişmiş hard disc’ler dijital alan ihtiyacımıza bir nebze de olsa ferahlık sağlamış olsa bile dinmek bilmeyen bu alan ihtiyacımız sürekli artış eğilimi göstererek sınırları zorlar hale geliyor. Üstelik bu kötü duruma dosyalarımızı sıkıştırdığımız halde giriyor olmamız da üzerine ayrıca düşünülesi bir durum.Ama her şeye rağmen sıkıştırılmış bir dosya hiç sıkışmamış bir dosyadan daha hayırlı olsa gerek.Böylesi devasa boyutlara ulaşmış bilgi kümelerini ufaltma görevi elektrik akımını işleyerek mantıksal işlemleri yerine getirebilen bilgisayarlara düştüğü için biraz da olsa işimiz kolaylaşıyor. Biraz olsun diyoruz çünkü çok güçlü diye nitelendirebileceğimiz bilgisayarlar bile böylesi büyük veri dağları karşısında bir cüce gibi kalabiliyor. Bunun sebebi belki de kullandığımız tekniklerin zayıf kalması (yani insan aklının sınırlarını zorlamakta olması) olabilir. Belki de donanımsal işlem kapasitemiz de yetersiz olabilir. Ama gelin şimdi insan aklına bağımlı yöntemlerin ne derece veri şişkinliğine iyi geldiğine bir bakalım.Dijital bilgileri çeşitli tekniklerle donanımlara hapsettiğimiz bilinen bir durum. Ama ne çeşitle olursa olsun her veri mutlaka ya “var” diye nitelendirebileceğimiz ya da “yok” diyebileceğimiz bir formda karşımıza çıkar. sadece “var” olmak dijital alemde “bit” olarak nitelendirdiğimiz olguya denk gelmekte. “yok” olması durumu da yine “bit” kapsamına girmektedir. “var” ve “yok” tan kasıt bir elektronik devreden akım geçmesi ve geçmemesi hadiselerine denk gelmektedir. Yani belli bir volt değerinin altında kalan gerilimler bilgisayara ulaştığında bu durum “0” değerini teşkil etmektedir. Yine aynı gerilim değerine eşit ve aşan gerilim değerleri ise “1” değerine eşit sayılır. İşte tüm dijital dünya bu iki değer üzerine inşaa edilmiştir. Bu inşaata verilerimiz de dahildir.Ancak gündelik işlerimizi yürütebilmemiz için bir çok “1” ve “0” kombinasyonu gereksinimi ortaya çıkmıştır. Yani “akım geçer” veya “geçmez”lerin birleştirilerek daha farklı değerler üretilmesi şart olmuştur. Verilen şişmesi büyümesi ve dağlaşması durumu tam da bu aşamada kendini göstermektedir. Çünkü bit tekrarları artık boy göstermeye başlamıştır.Sıkıştırma algoritmalarına geldiğimizde iki türe ayrıldıklarını görebiliyoruz. Bu ayrımdan ilki kayıplı sıkıştırma türleridir.
#-Kayıplı Sıkıştırma Teknikleri
Ana mantık insanların algı yeteneğini kullanmakta saklıdır. Bildiğiniz gibi insanoğlunun beyni çok karmaşık ve çok gelişmiş (en azından yer yüzündeki en gelişmiş) yapıdadır. Algılama yeteneklerimiz de çok gelişmiştir ve olayları gördüklerimizi kavrama yeteneğimiz bulunmaktadır ancak bunlara rağmen yine de çeşitli eksikliklerimiz vardır. Bu eksikliğimizden birisi de renk algılama yeteneğimizdir.İnsan gözü birbirine oldukça yakın renkleri biraz da görüş alanı mesafemiz uzun ise ayırt edemez. Ancak yan yana gelen iki renk birbirinden frekans olarak uzak aralıklarda iseler farklı olduklarını ayırt edebiliriz. İşte bu durum renklerle ilişiği olan dijital konularda bize güzel bir olanak tanımaktadır.Bir fotoğrafta bulunan renkler bir ön işlemden geçirilir ve renklerin birbirlerine ton olarak yakınlıkları hesaplanır. Ardından sıkıştırma oranı olarak kullanıcıdan alınan yüzdesel katsayı dikkate alınarak bu oranın kapsamına giren renklerin bir orta ton’u hesaplanır ve pixel’ler yeni hesaplanan bu yeni renk değerine sahip olurlar. Yani normalde farklı verilerle kodlanan iki farklı renk şimdi ortak kod’a sahip iki farklı pixel olmuş durumdadırlar. Ancak gözümüz bu iki pixelin aynı tonda mı yoksa birbirine çok yakın ama farklı tonlarda mı olduğu ayrımını yapamayacağı için, resimde bir kayıp olduğu kanısına varamayız. Her iki (veya daha fazla) pixel aynı veri ile ifade edilmeye başlandığı için elimizde bol miktarda birbirinin aynısı veri blokları oluşacaktır. Yukarıda anlattığımız adımlardan geçirilen fotoğraf birazdan aşağıda anlatacağımız huffman tekniğinden de geçirildikten sonra anlayacaksınız ki eskisine oranla daha ufak ama eskisiyle aynı işi gören bir dosya elimizde kalmış olacak. Video görüntülerin de fotoğraf karelerinden oluşturulduğunu düşünürsek bu sıkıştırma olanağından videolarda olumlu yönde nasiplenebilmişlerdir.Yine ses dosyaları da aynı mantık üzerinden, yani insanın duyma organının eksikliklerinden faydalanarak bazı ses tınılarının silinmesiyle ufaltılabilmektedir. Bu durumun gündelik hayatımızda çok büyük başarıyla uygulanabilmiş örneği olarak mp3 algoritmasını gösterebiliriz.Tüm bu tekniklerin bir ortak noktası vardır; veri kaybı meydana getirilerek sıkıştırma yapılmaktadır. Yani verilerimizin bir kısmını uygun tekniklerle sileriz ve dosyalarımız da doğal olarak ufaltılmış olurlar. Veri silme oranlarını arttırdıkça kalitede kayıplar oluştuğunun farkına varmaya başlarız. Yani algımız evet zayıftır bazı hallerde ama bir yere kadar. Zayıflık sınırlarımız aşılmaya başlandıkça artık kalite kayıpları görünür olmaya başlayacaktır.Bir diğer alt başlığımız da kayıpsız sıkıştırma teknikleridir.
#-Kayıpsız Sıkıştırma Teknikleri
En ümit vaadeden sıkıştırma tekniği olarak gösterebiliriz ama bir o kadar da zor ve işlem kapasitesi gerektiren bir tekniktir. Bu yüzden bir tek anahtar kelime ile kayıpsız sıkıştırma algoritmasını ifade edebilecek bir imkan olmadığından gelin bu tekniğin işleyişini görmek için huffman algoritmasına bakalım.Bu algoritmanın Huffman isimli bir üniversite gencinin bitirme tezi olduğunu belirtmek gerek.İşlem Adımları;* Elimizde bulunan veri kümesinde hangi karakter kaç defa kullanılmış sayılır (frekans tablosu) örn. a=33, Ú=75, Ã=12, ■=30 defa gibi..* En az kullanılandan en çok kullanılana doğru bir sıralama izlenerek huffman ağacı (huffman tree) oluşturulur.* Ağacın bir tarafına 0 diğer tarafına 1 ifadesi atanır. (rastgele olabilir)* Karakterler artık yeniden kodlanmalıdırlar. Bunun için en tepedeki düğümden (resimdeki her kutucuk içinde ne yazarsa yazsın, bir düğümdür) en alttakine doğru ağacın dalları izlenerek (tıpkı bir labirentte dolanır gibi) inilir. Bu inme işlemi sırasında uğradığımız tüm dallardaki 1 ve 0 değerleri ulaştığımız karakterin yeni bit dizisidir.* Sıkışmamış veri kümesinde bulunan karakterler, elde ettiğimiz bit kodlarıyla değiştirilir (replace). Örneğin huffman ağacına göre a harfinin temsili bitleri “010” ise veri kümemizde gördüğümüz her a harfi yerine “010” yazarız.* Tüm karakterler temsili bitlerle değiştirildikten sonra elimizde “1001001010010011100111101”… şeklinde devam eden bir katar kalır.* Bu bit katarının en başından 8 adet bit alınır ve normal sistemde denk düştüğü karakter tespit edilerek yine replace edilir. Örneğin “10010010” değerini huffman tablomuzdan elde etmiştik ve içerisinde belki de huffman tablosuna göre 3 karakter dahi olabilirdi. Ama biz bu 3 karakteri tek karakter olarak yeniden kodlayacağız. (Bildiğiniz gibi 1 ve 0’ları hangi kombinasyonda yazarsanız yazın 8 basamaklı olduğu sürece UTF-8’de tanımlanmış bir karaktere denk gelecektir (2^8))* Sonuç olarak veri kümelerinde en fazla tekrar edilen karakterler en kısa (örn 1bit) en az tekrarlanan karakterlere ise en uzun(örn 7bit) bit değerleri atanmış olur. Eski düzende her karakter, UTF-8 ailesine dahil ise 8 bit ile temsil edilirken, artık çoğu karakter, 1bit ile dahi temsil edilebilme olanağı yakalamıştır.Anlaşılacağı gibi huffman tekniği, gücünü tekrarı bol olan veriler üzerinde gösteriyor. Yukarıda bahsettiğimiz yakın tondaki pixellerin farklı verilerle temsili yerine aynı veriyle temsil edilmesi tekrarlı verileri çoğaltır ve artık top huffman algoritmasına atılmıştır.Not: Sıkışan veriyi açabilmek için huffman tree’s (huffman ağacının) bir yerlerde saklanması zorunludur. Genellikle sıkıştırılan veriyle birlikte dosya içinde tutulmaktadır.Fark ettiğiniz gibi huffman ağacının da sıkıştırdığımız dosya içinde barınmasından dolayı fazladan yer harcanmasına katlanmak durumundayız. İşte bu yüzdendir ki kimi zaman sıkıştırılan dosyalar sıkışmamış halinden bile büyük olabiliyorlar. (ancak tekrarlı verilerin az olmasının daha büyük etkisi var). Başka algoritmalarla bu huffman tablosu da sıkıştırılmaktadır. Çeşitli programlarda kayıt esnasında “huffman tablosunu optimize et” seçeneği bu görevi yerine getiriyor.Herkesin disk alanı bol olsun dilerim. yine görüşmek üzere…