Transcript Slide 1

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 transformasyon 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ç:
n
W   wi
i 1
ş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 :
I   lim W m ( I o )
m
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)
2552
PSNR  10log10
(dB)
root  m ean square err
PSNR  10 log10
2552
1
2
(
orj

kod
)

i, j
i, j
n i, j
RMS Ölçümünde Lineer İlişkiler
İşlem Karmaşıklığının Nedenleri
Her bir range için tüm domainlerle karşılaştırmalar yapılır ve minimum hata döndüren (yani
en yakın benzeri olan) bir domain bulunur
X
√
√
√
√
√
Hazırlık aşamasında :
Her Domain için ∑dj ve ∑dj2 hesaplanıp saklanır.
İş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 :
Süre
Sıkıştırma Oranı
PSNR
(Hızlı)
0,22
18,17
33,643
(Kaliteli)
1,36
22,74
33,715