Affine Dönüşümü İle Öteleme, Döndürme Ve Ölçekleme
Affine dönüşümü, koordinat dönüşümlerine dayalı 3 temel işlem olan öteleme(translation), döndürme(rotation) ve ölçekleme(scaling) işlemlerinin genel formudur.
İki Boyutlu Affine Dönüşümü

Burada A 2x2, B 2x1 boyutlarında iki matristir:

Dönüşümün genel ifadesi budur. İfadedeki A ve B matrislerinin elemanlarına farklı değerler veya ifadeler yerleştirilerek dönüşümün özel formları elde edilir.
1) Öteleme (Translation)
Öteleme işlemi basit bir koordinat dönüşüm işlemidir. Affine dönüşüm ifadesindeki A matrisi birim matris olarak alındığında, x ve y koordinatları sırasıyla b1 ve b2 kadar ötelenir. Öteleme işlemi sonucunda taşmalar meydana gelir. Bu problemi gidermek için üç yöntem düşünülebilir.
- Sınırlardan taşan pixeller gözardı edilebilir. Ancak bu şekilde görüntü kaybı meydana gelir.
- Yeni görüntünün çizileceği çerçevenin boyutları öteleme miktarı ile doğru orantılı olarak arttırılabilir. Öteleme negatif yönlü yapılırsa bu yöntem işe yaramaz. Ayrıca görüntüde gereksiz boş alanlar oluşur.
- Son ve en kullanışlı yöntem ise taşan her pixelin, (0,0) noktasından taşma miktarları kadar ileri(veya geri) bir konuma yerleştirilmesidir. Taşan pixellerin yeni koordinatları şöyle bulunabilir:
x'' = x' +- Genişlik (sıfırın altına inilirse +, genişliğin üstüne çıkılırsa - kullanılır)
y'' = y' +- Yükseklik (sıfırın altına inilirse +, yüksekliğin üstüne çıkılırsa - kullanılır.) Yukarıdaki işlemlerin, yalnızca taşan pixellerin koordinatları üzerinde yapılması gerekir. Taşma kontrolüne gerek bırakılması istenmiyorsa yeni koordinatların sınır değerlere bölümlerinden kalanlar, asıl yeni x ve y koordinatları olarak kabul edilir:
x'' = x' % Genişlik
y'' = y' % Yükseklik İfadelerdeki x' ve y', öteleme sonucunda elde edilen yeni koordinatlardır. x'' ve y'', ise taşma kontrolünden geçirilmiş ve tümü x için [0-Genişlik), y için [0-Yükseklik) aralıklarına çekilmiş olan yeni koordinatlardır.
2) Döndürme (Rotation)
Dödürme işleminde A matrisi, iki boyutlu döndürme matrisidir. Aynı zamanda öteleme yapılması istenmiyorsa B matrisi 0(sıfır matrisi) alınır. Affine dönüşümü şu hale döner:
x' = x*cos(teta) - y*sin(teta)
y' = x*sin(teta) + y*cos(teta)
Dödürme işleminde x' ve y' değerleri yine genişlik ve yükseklik alt veya üst sınırlarından taşar. Bunu önlemek için yeni görüntünün boyutlarının, dönen görüntünün tümünü sığacak yeterlilikte olması sağlanmalıdır. Yeni boyutlar, teta=k*pi (k=1,2,3...) iken eski boyutlara eşit olur. teta açısının diğer değerleri için yeni boyutlar eski boyutlardan hep daha büyüktür.
Görüntü, dönüşümün bu hali ile (0,0) noktası etrafında döndürülür. Farklı bir nokta etrafından döndürme yapılması istenirse önce bu noktanın merkezde(0,0) konumlanması için görüntü ötelenir. Daha sonra döndürme yapılır ve görüntü, merkeze ötelenen noktanın eski konumuna geri döndürülmesini sağlayacak şekilde tekrar ötelenir. Bu ardışık 3 işlem tek bir ifade ile gösterilebilir:
x' = (x-MerkezX)*cos(teta) - (y-MerkezY)*sin(teta) + MerkezX
y' = (x-MerkezX)*sin(teta) + (y-MerkezY)*cos(teta) + MerkezY
2.1) Yeni Genişlik Ve Yükseklik Değerlerinin Hesaplanması
Görüntü, kendi merkezi(Genislik/2,Yukseklik/2) etrafında döndürüldüğünde, sınırlardan taşan en uç noktalar görüntünün köşe noktalarıdır. Köşe noktalarının yeni koordinatlarından yola çıkılarak yeni genişlik ve yükseklik değerleri belirlenebilir. Hangi köşelerden yola çıkılacağı, döndürme açısının bulunduğu aralığa bakılarak saptanır.

teta [0,90] aralığında iken yandaki kenardan en çok taşan, yani görüntüyü sınırlayan çerçeveye en uzak olan nokta 2. köşe üzerindeki noktadır. Bu noktanın yeni x koordinatı ile görüntünün genişliği arasındaki fark, taşma miktarını verir. 2. köşe üzerindeki noktanın taşma miktarı kadar, 4. köşe üzerindeki nokta da soldan taştığı için, bulunan taşma değeri 2 ile çarpılır ve eski genişlik değerine eklenir. Böylece resmin tümünü sığacak yeni bir genişlik değeri elde edilir. Yükseklik değeri de aynı mantıkla hesaplanır. Sürekli aynı şeyleri tekrar etmemek adına hızlıca diğer açı aralıkları için sınırlara en uzak noktaları ve bu noktaların koordinatlarını verelim.
• [0,90]: Genişlik için köşe2, yükseklik için köşe3
• (90,180]: Genişlik için köşe1, yükseklik için köşe2
• (180,270]: Genişlik için köşe4, yükseklik için köşe1
• (270,360]: Genişlik için köşe3, yükseklik için köşe4
Noktaların koordinatları (x,y):
• Köşe 1: (0,0)
• Köşe 2: (Genişlik,0)
• Köşe 3: (Genişlik,Yükseklik)
• Köşe 4: (0,Yükseklik)
3) Ölçekleme (Scaling)
Ölçekleme işlemi, affine dönüşümünde A matrisinin köşegen elemanlarına 0, diğer elemanlarına ölçek değerleri verilerek yapılır. a11 x koordinatını, a22 y koordinatını ölçekler. Aynı zamanda öteleme yapılması istenmiyorsa B matrisi 0(sıfır matrisi) alınır. Dönüşüm sadeleştirilerek yazıldığında aşağıdaki basit ifadeler elde edilir:
x' = x*a11
y' = y*a22
Farklı Değerler, Farklı Sonuçlar
Dönüşümün genel formunun parametrelerine verilecek farklı değer veya ifadeler, doğal olarak farklı sonuçlar doğuracaktır. Örneğin B, 0 matrisi olsun. a11=1, a22=1, a12=0, a21=Y iken görüntüde köşe1 ve köşe4 sabit durur, köşe2 ve köşe3 Y kadar aşağı kayar. Başta bir dikdörtgen veya kare olan görüntü bir paralelkenara döner. Daha farklı değerler deneyerek değişik sonuçlar elde edebilirsiniz...
Koordinatların Tamsayıya Yuvarlanması Sorunu
Dönüşüm esnasında pixellerin kaynak görüntü üzerindeki koordinatları kullanılarak hedef görüntüde bulunmaları gereken konum hesaplanır. Ancak hedef görüntü üzerinde aralarda hiç boyanmayan pixeller kalabilir. Bu sorun, ondalıklı koordinatların tamsayıya yuvarlanmasından kaynaklanır. Sorunu gidermek için tersten gidilmelidir; hedef üzerindeki pixellerin koordinatları kullanılarak, bu konumlara düşecek kaynak pixellerin koordinatları tespit edilmelidir. Bilgisayara 'Döndürülünce şu konuma yerleşmesi gereken pixelin, döndürülmeden önceki konumu ne olmalı?' sorusu sorulmalıdır. Yani bilinen x' ve y' koordinatlarından bilinmeyen x ve y koordinatlarına ulaşılmalıdır...
Harici Bağlantılar
-
Affine Transform
-
Affine Transformation
-
Transformation Matrix
-
Rotation Matrix
-
Translation
-
Online LaTeX Equation Editor
Yayınlanma Tarihi: 19 Mart 2011 Cumartesi - 21:35
Anahtar Kelimeler: görüntü işleme, geometrik işlemler, koordinat dönüşümleri, affine dönüşümü, affine transform, döndürme, rotation, öteleme, translation, ölçekleme, scaling
Onaylı yorum bulunmuyor.
Yorum/Görüş Bildir