Transformacje na płaszczyźnie Przesunięcie Przesunięcie (translacja) obrazu realizowana jest przez dodanie stałej do każdej współrzędnej, co w postaci macierzowej można przedstawić równaniem y'] = [ x y] [ t x t y] Skalowanie Skalowanie polegające na zmianie rozmiaru obrazu względem początku układu współrzędnych w postaci macierzowej można opisać zależnością y'] = [ s x 0 0 s y][ x y] Współczynnik skalowania s jest zwiększjący, jeżeli s > 1, a zmniejszający, jeżeli s < 1. Jeżeli s x = s y, to skalowanie nazywamy jednorodnym,a jeżeli s x s y niejednorodnym. Przy skalowaniu niejednorodnym proporcje skalowanego obiektu zmieniają się, natomiast przy skalowaniu jednorodnym proporcje nie ulegają zmianie. Obrót Obrót wokół początku układu współrzędnych o kąt φ można wyrazić w postaci macierzowej następująco y'] [ = cos sin sin cos ][ x y] W celu wykonania obrotu względem innego punktu niż początek układu współrzędnych należy 1. Wykonać przesunięcie płaszczyzny, aby punkt obrotu znalazł się w początku układu współrzędnych. 2. Dokonać obrótu wokół nowego początku układu współrzędnych o kąt φ. Współrzędne jednorodne Obiekty na płaszczyźnie mogą być przekształcane przez zastosowanie transformacji takich jak przesunięcia, skalowaania, obroty. Składanie transformacji polega na dodawaniu i mnożeniu odpowiednich macierzy. Złożenie obrotów i skalowań otrzymujemy przez mnożenie macierzy, natomiast przesunięciom odpowiada dodawanie wektora. Widoczna jest zatem pewna niedogodność, związana z tym, że nie można każdego przekształcenia przedstawić w postaci jednej macierzy (ponieważ przesunięcie jest realizowane inaczej niż skalowanie i obrót).
Żeby móc traktować wszystkie trzy przekształcenia w jednakowy sposób i umozliwiść realizację dowolnego przekształcenia przez mnożenie macierzu należy zastosować alternatywny układ współrzędnych, w którym dowolne przekształcenie daje się opisać jako mnożenie przez macierz o wymiarach 3x3. Przekształcenie takie można opisać w sposób macierzowy zależnością [ L x, y = x' ] =[a1 b1 c1 ][ 1] x y' a 2 b 2 c 2 y 1 0 0 1 Poszczególne współrzędne po wyliczeniu mają postać x '=a 1 x b 1 y c 1 y' =a 2 x b 2 y c 2 Z zależności widać, że w zależności od doboru współczynników macierzy można wykonywać zarówno translacje jak i obroty oraz skalowania. Transformacje 2D we współrzędnych jednorodnych Przesunięcie Macierz przesunięcia T(t x ; t y ) we współrzędnych jednorodnych ma postać T t x,t y =[1 0 t x 0 1 t y 0 0 1] Skalowanie względem początku układu współrzędnych S s x,s y =[s x 0 0 0 s y 0 0 0 1] Obrót wokół początku układu współrzednych cos sin 0 sin cos 0 R =[ 1] 0 0 Skalowanie względem dowolnego punktu x 0, y 0 S x 0, y 0 s x, s y =[s x 0 x 0 1 s x 0 s y y 0 1 s y 0 0 1 ] Obrót wokół dowolnego punktu
R x 0, y 0 =[cos sin x 0 cos y 0 sin x 0 sin cos x 0 sin y 0 cos y 0 0 0 1 ] Transformacje obrazów rastrowych Bitmapa jest zbiorem punktów na płaszczyźnie, zatem możemy każdy jej punkt przekształcać zgodnie z podanymi wzorami. Będzie się to sprowadzało do przeliczenia współrzędnych każdego punktu zgodnie z macierzą transformacji na nowe położenie i przepisanie w nowe położenie wartości koloru. Niestety takie przekształcenie może powodować powstawanie dziur w wynikowym obrazie. Łatwo to sobie wyobrazić rozważajac obraz, który został dwukrotnie powiększony: Aby uniknąc tego efektu stosuje sie transformację odwrotną i przekształca sie współrzedne punktów z obrazu wynikowego we współrzedne punktów obrazu źródłowego.
Opisać to można zależnością: [ 1] x y =M 1[ x' y' 1 ] Następnie przepisujemy wartości kolorów tych punktów, które po przekształceniu znalazły sie w granicach źródłowego obrazu. Postepujac w ten sposób możemy przekształcać sekwencyjnie każdy punkt obrazu docelowego nie pozostawiajac żadnych dziur. Interpolacja W przypadku przekształceń geometrycznych pewnym problemem jest wypełnienie tych punktów, które nie trafiaja dokładnie we współrzedne punktu na obrazie źródłowym. Wartość takiego punktu można interpolować na podstawie wartości jego sasiadów. Istnieje wiele metod interpolacji. Dwie najprostsze to interpolacja najbliższy sąsiad i biliniowa. Interpolacja najbliższy sąsiad Współrzędne punktu po przekształceniu są zaokrąglane do najbliższej wartości całkowitej, a wartość nowego punktu obrazu docelowego będzie równa wartości punktu o zaokrąglonych współrzędnych obrazu źródłowego. Ten typ interpolacji jest najprostszy i co za tym idzie najszybszy ale powoduje, że obraz składa się z jednobarwnych prostokatów. Interpolacja biliniowa Interpolacja biliniowa daje zdecydowanie lepsze afekty niewiele wiekszym kosztem obliczeniowym. W tym przypadku wylicza sie wartość nowego punktu na podstawie czterech jego sąsiadów z dwukrotnego uśredniania.
Przypuśćmy, że nowe współrzędne punktu P = [x; y] wypadły gdzieś pomiędzy czterema sąsiadami. Pierwsza interpolacja, w pionie polega na uśrednieniu wartości punktów P0 z P2 i punktów P1 z P3 z wagami a i b. W wyniku tego uśrednienia dostajemy dwie nowe wartosci P02 = a*p2+b*p0 i P13 = a*p3+b*p1. Wartość wynikowego punktu jest rezultatem drugiego uśrednianiem pomiedzy wartościami P02 i P13, co opisuje zależność: P = c * P13 + d * P03.