Ana içeriğe atla

Günümüzde Matematik · Günümüz

JPEG ve MP3: Dosyalar matematikle nasıl küçülür?

Bir fotoğraf ya da şarkı, çoğu zaman fark etmediğimiz ayrıntılar atılarak on kat kadar küçültülebilir. Kosinüs dönüşümünün sezgisini, nicemlemeyi ve insan algısından yararlanan kayıplı sıkıştırmayı küçük sayısal örneklerle anlatıyoruz.

Yazan: matematikce editörlüğü 5 dk okuma

Tonları yumuşakça değişen 8×8 piksellik bir blok, yanında farklı sıklıkta üç kosinüs dalgası ve ilki büyük, diğerleri hızla küçülen katsayı çubukları; görüntünün dalgalara ayrılıp sıkıştırılmasını anlatıyor.

Telefonunuzla çektiğiniz bir fotoğraf ham hâliyle onlarca megabayt yer kaplayabilir, ama galeride çoğu zaman birkaç megabayt görünür. Üç dakikalık bir şarkı da CD’deki biçimiyle 30 megabaytı aşarken, MP3 olarak 3 megabayta sığabilir. Aradaki fark nereye gidiyor?

Cevap, iki fikrin birleşimindedir. Birincisi, veriyi dalgaların toplamı olarak yeniden yazmaktır. Bu yazım, önemli bilgiyi birkaç sayıda toplar. İkincisi, gözümüzün ve kulağımızın zor fark ettiği ayrıntıları bilerek atmaktır. Bu yazıda JPEG ve MP3’ün arkasındaki bu matematiği, kendi küçük sayısal örneklerimizle adım adım göreceğiz.

Bir fotoğraf aslında bir sayı tablosudur

Dijital bir fotoğraf, piksel denen küçük karelerden oluşur. Siyah-beyaz bir görüntüde her piksel, genellikle 0 (siyah) ile 255 (beyaz) arasında bir parlaklık değeridir. Renkli görüntülerde her piksel için kırmızı, yeşil ve mavi olmak üzere üç sayı saklanır.

4000 × 3000 piksellik bir fotoğrafı düşünelim. Her pikselde 3 bayt varsa ham boyut 4000 × 3000 × 3 = 36 000 000 bayt, yani yaklaşık 36 megabayttır. Bunu küçültmenin iki yolu vardır.

  • Kayıpsız sıkıştırma: Dosya açıldığında verinin birebir aynısı geri gelir. Örneğin “AAAAAAAABBB” yerine “8A3B” yazmak kayıpsızdır. ZIP dosyaları bu türdendir.
  • Kayıplı sıkıştırma: Bazı bilgiler kalıcı olarak atılır. Geri açılan dosya orijinaline çok benzer ama aynısı değildir. JPEG ve MP3 bu türdendir.

Kayıplı sıkıştırmanın ustalığı, neyin atılacağını seçmektir. Rastgele sayıları silmek görüntüyü bozar. Doğru dönüşümle ise atılacak bilgi, en az fark edilecek olan bilgi olur.

Bir satırı dalgalara ayırmak

Bir fotoğrafın içinden 8 piksellik tek bir satır alalım. Gökyüzü gibi yumuşak geçişli bir bölgeden alındığını düşünelim:

100, 102, 104, 106, 108, 110, 112, 114

Bu sekiz sayıyı başka bir biçimde de yazabiliriz: Farklı sıklıktaki sekiz kosinüs dalgasının ağırlıklı toplamı olarak. İlk dalga düz bir çizgidir ve ortalama parlaklığı taşır. İkincisi satır boyunca yarım kez salınır, üçüncüsü bir kez, sonuncusu en hızlı salınandır. Bu dönüşüme ayrık kosinüs dönüşümü denir. Fikir, bir sinyali dalgaların toplamı olarak yazan Fourier serilerinin yakın bir akrabasıdır.

Dönüşümü bu satıra uyguladığımızda sekiz katsayı elde ederiz (yuvarlanmış olarak):

302,6; −12,9; 0; −1,4; 0; −0,4; 0; −0,1

Burada şaşırtıcı bir şey oldu. Sekiz sayının neredeyse bütün bilgisi ilk iki katsayıda toplandı. İlk katsayı ortalama parlaklığı, ikincisi soldan sağa artışı anlatıyor. Geri kalan katsayılar sıfıra çok yakın. Bu durum rastlantı değildir. Doğal görüntülerde komşu pikseller genellikle birbirine benzer. Böyle verilerde kosinüs dönüşümü, önemli bilgiyi birkaç düşük sıklıklı katsayıda toplar. Yavaş değişim düşük sıklıklara, keskin ayrıntı yüksek sıklıklara karşılık gelir.

Ayrık kosinüs dönüşümü 1974’te Nasir Ahmed, T. Natarajan ve K. R. Rao tarafından tanıtıldı.

Nicemleme: bilgiyi bilerek atmak

Şimdi kaybın yapıldığı adıma geldik. Her katsayıyı bir adım büyüklüğüne bölüp en yakın tam sayıya yuvarlayalım. Bu işleme nicemleme denir. Adım büyüklüğü 10 olsun:

  • 302,6 ÷ 10 ≈ 30
  • −12,9 ÷ 10 ≈ −1
  • Diğer bütün katsayılar 0’a yuvarlanır.

Artık sekiz sayı yerine 30, −1 ve altı tane sıfır saklıyoruz. Arka arkaya gelen sıfırlar çok az yerle kodlanabilir. Görüntüyü geri açarken işlemi tersine çeviririz: Sayıları 10 ile çarpar, ters dönüşümü uygularız. Elde ettiğimiz satır şudur:

101,2; 101,9; 103,3; 105,1; 107,0; 108,8; 110,2; 111,0

Orijinal değerlerle karşılaştırın. En büyük fark 3 birimdir ve 0–255 ölçeğinde yumuşak bir geçişte göz bunu genellikle fark etmez. Adım büyüklüğünü büyüttükçe dosya küçülür, ama farklar büyür. Aşırı sıkıştırılmış JPEG’lerde görülen küçük kareler ve kenarlardaki titreşimli izler bu kaybın görünür hâlidir.

JPEG’de iki boyut

JPEG aynı fikri iki boyutta uygular. Bu standart 1992’de kabul edildi. Görüntü 8 × 8 piksellik bloklara ayrılır ve her blok, yatay ve dikey sıklıkları birleştiren 64 kosinüs deseninin toplamı olarak yazılır. Böylece her blok için 64 katsayı elde edilir.

Nicemlemede yüksek sıklıklı katsayılar daha büyük adımlarla bölünür. Çünkü göz ince, hızlı değişen ayrıntıya, geniş ve yavaş değişen tonlardan daha az duyarlıdır. Ardından katsayılar düşük sıklıktan yükseğe doğru zikzak bir sırayla dizilir. Sondaki uzun sıfır dizileri ve sık tekrar eden değerler kayıpsız bir kodlamayla kısaltılır.

Uygulamada genellikle bir adım daha vardır. Renkli görüntü önce parlaklık ve renk bileşenlerine ayrılır. Göz parlaklıktaki ayrıntıya renkteki ayrıntıdan daha duyarlı olduğu için renk bilgisi çoğu zaman daha kaba bir çözünürlükle saklanır.

MP3: kulağın duymadığını atmak

Ses de bir sayı dizisidir. CD kalitesinde ses, saniyede 44 100 kez örneklenir. Her örnek 16 bitle saklanır ve iki kanal vardır. Buna göre bir saniyelik ses 44 100 × 16 × 2 = 1 411 200 bit, yani yaklaşık 1411 kilobit tutar. Üç dakikalık bir şarkı yaklaşık 31,8 megabayt eder.

MP3’ün resmî adı MPEG-1 Ses Katman III’tür ve 1993’te uluslararası standart olarak yayımlandı. Geliştirilmesinde Almanya’nın Erlangen kentindeki Fraunhofer IIS enstitüsü öncü rol oynadı. MP3 de sesi kısa parçalara bölüp sıklık bileşenlerine ayırır. Bunun için bir filtre dizisi ile kosinüs dönüşümünün değiştirilmiş bir biçimini birlikte kullanır.

Asıl kazanç, işitme sisteminin bir özelliğinden gelir: maskeleme. Güçlü bir ses, sıklığı ona yakın olan daha zayıf sesleri duyulmaz hâle getirebilir. Kalabalık bir sokakta fısıltıyı duyamamanız buna benzer. MP3 kodlayıcısı, bir işitme modeliyle her an hangi bileşenlerin maskelendiğini tahmin eder. Duyulmayacağını düşündüğü bileşenlere çok az bit ayırır ya da hiç ayırmaz.

Saniyede 128 kilobitlik yaygın bir MP3 ayarında üç dakikalık şarkı 128 000 × 180 ÷ 8 = 2 880 000 bayt, yani yaklaşık 2,9 megabayt tutar. Bu, CD biçimine göre yaklaşık 11 kat küçülme demektir.

Neden önemli?

Kayıplı sıkıştırma olmasaydı, bugünkü fotoğraf paylaşımı, müzik dinleme ve görüntülü görüşme alışkanlıklarımızın önemli bir kısmı bu hâliyle mümkün olmazdı. Video sıkıştırma da benzer dönüşüm ve nicemleme fikirlerini, kareler arasındaki benzerlikten yararlanan yöntemlerle birlikte kullanır.

Bu yazıdaki matematik, lisede tanıdığımız kavramlara dayanır. Kosinüs fonksiyonu ve periyot AYT trigonometri konusunun parçasıdır. Yuvarlama, oran ve üslü sayılar da TYT’nin temel konularıdır. Konu listesine ne öğrettiğimizi anlattığımız sayfadan bakabilirsiniz. Bir dosyada “ne kadar bilgi” olduğu sorusunun kendisi ise Shannon ve bilgi kuramı yazımızın konusu.

Kapanış

JPEG ve MP3’ün başarısı, matematik ile insan algısını birlikte düşünmesinden gelir. Kosinüs dönüşümü veriyi önemli ve önemsiz parçalara ayırır; nicemleme önemsiz parçaları kısar; algı modelleri de neyin önemsiz olduğuna karar vermeye yardım eder. Sekiz piksellik satırımızdan milyonlarca piksellik fotoğraflara kadar ilke aynıdır: Doğru dilde yazılmış bir veri, fark edilmeden küçültülebilir.

Kaynak: Anonim

  • Bilgisayar bilimi
  • Modelleme
  • Teknoloji
  • Trigonometri

Bu yazıda bir hata mı gördün? Düzeltme bildir; inceleyip düzeltelim.