\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\setcounter{page}{4}
\usepackage{amsmath}
\usepackage[cp1250]{inputenc}
\usepackage[polish]{babel}
\selectlanguage{polish}
\usepackage[pdftex]{graphicx}
\title{Zadanie testowe}
\author{Paweł Ostrowski}
\date{10 września 2011}
\begin{document}
\maketitle{}
\section{Zadanie do wykonania}
Zadanie polega na wykonaniu w edytorze dokumentu, który będzie wygldał identycznie jak ten który waśnie czytacie:
\begin{itemize}
\item Końcowy dokument ma wyglądac identycznie jak ten, posiadac odpowiednie formatowanie, zawierac wzory, kod, o dnośniki do obrazków itp.
\item Kompilacja pliku. tex nie może zawierać błędów.
\item Ten punkt (Zadanie do wykonania) można pominąc i wykonac dokument końcowy zaczynając od punktu (Treść)
\end{itemize}
\section{Treść}
Zadanie polega na wczytaniu obrazka do SCILABa, a następnie wykorzystując operacje macierzowe wykonac:
\begin{itemize}
\item Skalowanie obrazka
\item Rotacje obrazka
\item Translacje obrazka
\end{itemize}
Obrazek wzorcowy użyty w zadaniu przedstawiono na rysunku \ref{pic:oo}
\section{Wykoanie zadania}
\subsection{Skalowanie obrazka}
Skalowanie obrazka jest wykonywane poprzez poniższe równanie:
\begin{equation}
P^{'}=M_{s} * P
\label{eq:0}
\end{equation}
gdzie $P^{'}$ - nowa wartość piksela zapisana w postaci wektora,\\
$M_{s}$ - Macierz skalowania
\\
$$\left[
\begin{array}{ccc}
S_{x} & 0 & 0
\\0 & S_{y} & 0
\\0 & 0 & 1
\end{array}
\right]$$
$S_{x}$ i $ S_{y}$ - współrzędne x i y skalowania
P - podstawowa wartość piksela w postaci wektora.
Ze względu na złożoność obliczeniową przy dużych obrazkach, kolejne transformacje wykonywane będą na obrazku zeskalowanym.
Wyniki przeksztaace« przedstawiono na rysunku \ref{pic:ss}
\subsection{Rotacja obrazka}
Rotacja obrazka jest wykonywana poprzez poniższe równanie:
\begin{equation}
P^{'}=M_{r} * P
\label{eq:1}
\end{equation}
\\gdzie $P^{'}$-nowa wartość piksela zapisana w postaci wektora,\\$M_{r}$ - Macierz rotacji
$$\left[
\begin{array}{ccc}
cos(\alpha) & -sin(\alpha) & 0
\\sin(\alpha) & cos(\alpha) & 0
\\0 & 0 & 1
\end{array}
\right]$$
$P$ - podstawowa wartość piksela w postaci wektora.
Wyniki przekształceń przedstawiono na \ref{pic:rr}
\subsection{Translacja obrazka}
Translacja obrazka jest wykonywana przez poniższe równanie:
\begin{equation}
P^{'}=M_{t} * P
\label{eq:2}
\end{equation}
\\gdzie $P^{'}$ -nowa wartość piksela zapisana w postaci wektora,
\\$M_t$ - Macierz translacji
\\
$$\left[
\begin{array}{ccc}
1 & 0 & P_{x}
\\0 & 1 & P_{y}
\\0 & 0 & 1
\end{array}
\right]$$
$P$ - podstawowa wartość piksela w postaci wektora.
Wyniki przekształceń przedstawiono na \ref{pic:tt}
\section{Podsumowanie}Jak się okazuje podstawowe operacje na obrazie można wykonywać w SCILABie bez wykorzystywania toolbox'ów typu SIP czy SIVP. wprawdzie efekty
nie są tak dobre jak w np. w SIPie, ale jest to wykonalne. Niestety w podstawowej wersji algorytmu bez optymalizacji jest to dość złożone obliczeniowo
i wygenerowanie przekształcenia może zająć nawet godzinę w przypadku dużych obrazków. Dlatego traktuję te zadanie głównie pod względem szkoleniowym, gdyż w przypadku tworzenia wykorzystujących grafiki dwuwymiarowe do przekształceń używa się takich właśnie transformacji macierzowych. Tam najczęściej pracuje się na wierzchołkach obiektów nie na poszczególnych pikselach
i takowe transformacje są bardzo szybkie i dokładne.\newpage
\begin{figure}[hbtp]
\includegraphics{d.png}
\caption{Obraz wzorcowy}
\label{pic:oo}
\end{figure}
\begin{figure}
\includegraphics{d_skala.png}
\caption{Skalowanie o współczynnik 0.4}
\label{pic:ss}
\end{figure}
\begin{figure}[hbtp]
\includegraphics{d_rotacja.png}
\caption{Rotacja o kąt 8 st.}
\label{pic:rr}
\end{figure}
\begin{figure}[hbtp]
\includegraphics{d_translacja.png}
\caption{Translacja o 16 w prawo i 3 w dół}
\label{pic:tt}
\end{figure}
\end{document}