Fractal Resim Sıkıştırma Hazırlayan: Ar.Gör.Cengiz Güngör Haziran-2003
Fractal Resimler Çoklu Küçültme Yapan Fotokopi Makinesi Orijinalden aynı anda birden çok, üst üste binebilen kopya çoğaltmak için dizayn edilmiş birden fazla mercek içerir. Her mercek orijinali belirli miktarda küçültecek şekilde yapılmıştır. Örneğimizin Özellikleri : 3 mercekli, Her mercek orijinali 2:1 oranında küçültüyor, 1. kopya üst ortaya, 2. kopya sol alta, 3. kopya sağ alta geliyor.
Fractal Resimler
Çıktıları Girdi Olarak Verip, Tekrar Tekrar Kopyalarsak Sierpinski’s Triangle . . .
Küçültme İşleminin Nedeni Tüm lensler girdi olarak verilen resmi küçültmektedir, bu işlem “contractive mapping” olarak bilinir. Lenslerin “contractive” özellikleri yani küçültme yapmaları kritik bir önem taşır. “Contractive” özellik tekrarlı süreçlerde ilk verilen resim ne olursa, final resmin hep aynı çıkmasını garantiler. “Non-contractive” diye bilenen sürekli genişleyen yapıda bir işlemle bir final resme ulaşmamız imkansızdır. Elde edeceğimiz şey sonsuz boyutta dağılmış bir çıktıdır. Bu yüzden Fractal resimlerde hep “contractive”, yani küçülten işlemler kullanılır. Yukarıdaki örneğimizde ½ oranında küçültme vardır.
Tekrar Tekrar Kopyalamak Belli bir tekrardan sonra çıktılar girdi ile aynı olmaktadır. Bu yüzden; kopyalama makinesinin parametrelerini biliyorsak, sonuçta ne elde edeceğimizi de bilebiliyoruz.
Fotokopi Makinemize ait Affine Transformasyonlar Her lense ait ayrı bir “contractive affine transformation” matrisi vardır : Bu matris ile küçültme/büyütme (scale), döndürme (rotate), eğme (share) ve öteleme/yer değiştirme (translate) işlemleri yapılabilmektedir. Yani bir (x,y) noktasının yeni koordinatı olan (x’,y’) şu şekilde elde edilir (transformasyon işlemi) : Örneğimizdeki herbir lens için transformasyon matrisleri :
Döndürmenin Etkileri
Fraktal Geometrinin Temelleri Yinelemeli Fonksiyon Sistemleri (IFS) : IFS Fern IFS Tree
Fractal Resim Sıkıştırma Fractalleri resim sıkıştırmak için kullanma mantığı 4 temel varsayıma dayanmaktadır : 1. Çoğu doğal manzara/resim detay içinde detaylara sahiptir. Bu Mandelbrot ile başlayan “Fractal Devrimi” nin bir getirisidir. 2. Iterated Function System’leri ile doğala benzeyen resimleri üretelebilir. 3. Kullanılacak IFS çok kompakt bir biçimde saklanabilir. Yandaki ağaç için 4 transformas-yon kullanılır, bu da 4 adet matris yani 4 adet (a,b,c,d,e,f) parametresi demektir. Bitmap resim olarak 256K dosya şeklinde saklamak yerine 176 byte ile saklanabilir. Yani yaklaşık 1500:1 sıkıştırma ile saklamak mümkündür. 4. IFS orjinal resmi kullanıp tersten giderek elde edilebilir. İleriki slaytlarda gösterilecektir.
Kolaj Teoremi Eğer w1, w2, ... , wn şeklinde tanımlı n adet contractive affine transformasyon tanımlı ise, verilen girdiye tüm bu transformasyonlar uygulandığında elde edilen sonuç: şeklinde bileşim olarak ifade edilebilir. Başlagıç imajımıza Io , son imajımıza I∞ dersek, 1. çıktı I1 = W(Io), ... Son imajımız ise şu şekilde ifade edilebilir : Bu ifadenin anlamı : W transformasyonlar bütününün her uygulanışında detaylar artarak, limit mantığında olduğu gibi bir sonuç imaja doğru yaklaşılmaktadır, ve belli bir iterasyondan sonra sonuç değişmiyor denilebilir. Gerçekten de sonuç imajın detaylarına bakıldığında kendi benzerleri görülür.
Resim İçinde Benzer Parçalar Küçük parçalara Range adı verilir. Büyük parçalara da Domain adı verilir.
Range ve Domainler Rangeler Domainler
Neden Fractal Resim Sıkıştırma ? Sıkıştırma işlemi, bir blok veriyi bellekte daha az yer kaplayacak şekilde tutmayı amaçlamaktadır. Daha az yer kaplayan veri, bir noktadan diğerine daha hızlı iletilebilecektir. JPEG, Wavelet gibi yöntemlerde %95 oranında (başka bir deyişle 20:1 oranında) sıkıştırılan resimlerde deformasyon gözlenmekte sıkıştırma oranı arttıkça bozulma hızla artmaktadır.
Neden Fractal Resim Sıkıştırma ?
JPEG Kodlama
JPEG Kodlama
JPEG’de Bozulmalar
JPEG’de Bozulmalar
JPEG’te Bozulmalar 54 21 15 12 10 9 8 6 5.4 3.5 2 (KB)
Neden Fractal Resim Sıkıştırma ? Bir kez fractal resim sıkıştırma işleminden geçirilmiş bir resim her hangi bir boyutta tekrar açılabilmektedir ve ortaya çıkan sonuç bir yağlıboya tablo gibi olmaktadır.
İterasyonlarla Decompress-1
İterasyonlarla Decompress-2
İterasyonlarla Decompress-3
İterasyonlarla Decompress-10
Parçalarına Ayırma (Partitioning) Sabit boyutlu bloklar JPEG’te de kullanılan en basit yöntemdir Bloğun yerini belirtmek için birkaç bit kullanılırken, bloğun diğer detayları için daha fazla bit kullanılabilir. Sabit boyutlarla işlenen resimde, sıkıştırma oranı da olur.
Parçalarına Ayırma (Partitioning) Quadtree En çok bilinen ayırma yöntemidir 4 kollu ağaç yapısında, recursive olarak kullanılır. İstenilen tolerans değeri sağlanmı-yorsa, büyük rangeler 4 küçük parçaya bölünür. Tolerans değerleri küçük olursa, rangeler küçülür, sıkıştırma oranı azalır, fakat kalite artar. Tolerans değerleri yükseltilirse büyük rangler kabul görür, sıkıştırma oranı artar, fakat kalite azalır
Quadtree ile Decoding İterasyon-1 İterasyon-2
Range ve Domain Benzerliği Orjinal Resim 36 adet 4x4 range Benzeri aranan range Benzer olarak bulunan domain
Algoritma Değerlendirme Kriterleri Sıkıştırma oranı Kodlanmış resmin boyutu / orijinal boyut Sıkıştırma süresi Sonucun kalitesi PSNR (Peek-to-peek signal-to-noise ratio)
RMS Ölçümünde Lineer İlişkiler
İşlem Karmaşıklığının Nedenleri Her bir range için tüm domainlerle karşılaştır-malar yapılır ve minimum hata döndüren (yani en yakın benzeri olan) bir domain bulunur Hazırlık aşamasında : Her Domain için ∑dj ve ∑dj2 hesaplanıp saklanır. X √ √ √ √ √
İşlem Karmaşıklığının Nedenleri İşlem süresini ∑djrj çarpımlarının adedi belirler. 512x512 lenna resminde, 32x32 piksel boyutlarına sahip 256 adet range için aranacak 12769 adet domain var, bu da 3.3 milyar çarpma-toplama demektir. 16x16 range’ler için 3.8 milyar çarpma-toplama 8x8 range’ler için 4.1 milyar çarpma-toplama 4x4 range’ler için 4.2 milyar çarpma-toplama Bu arayış bir NP-Hard problemdir.
İşlem Sayısının Azaltmak için Ortalamaya Göre Sınıflandırma Sınıf numarası için : Bir pikselin değeri bloğun ortalamasından büyükse : 0 Küçük Eşitse : 1 binary kodu verelim. 16 adet piksel 16 bitlik sınıf numarası oluştururlar
İşlem Sayısının Azaltmak için İkili Ağaç Kullanılması
Ağaç Yerine 65536 Elemanlı Pointer Dizisi Kullanılması
Yöntemin Etkinliği Her Range’in benzeri tüm Domain’lerle karşılaştırıldığında (Brute-Force yöntemi) : Süre 34,53 Sıkıştırma Oranı 22,72 PSNR 33,743 Mevcut en etkin Saupe-Fisher algoritması ile : Süre 1,39 Sıkıştırma Oranı 22,11 PSNR 33,749 Bizim yöntemimizle : (Hızlı) (Kaliteli) Süre 0,22 1,36 Sıkıştırma Oranı 18,17 22,74 PSNR 33,643 33,715