3 Zpracování obrazu
Tato kapitola je teoretickým úvodem do problematiky zpracování obrazu. Postupně jsou v ní vysvětleny principy používané v praxi.
Obraz a digitalizace
Dříve než je objekt zpracován, musí se nějakým způsobem jeho obraz převést do digitální podoby, nejčastěji pomocí digitálního fotoaparátu nebo skeneru. Digitalizace je převod analogového signálu na diskrétní. Získaný obraz je uložen do počítače.
Obraz je reprezentován maticí hodnot, přičemž jeden prvek matice odpovídá jedné zobrazovací jednotce na monitoru -- \emph{pixelu}. Hodnota pixelu je různá pro barevný a šedotónový obraz. Pro barevný obraz obsahuje nejčastěji tři hodnoty spektrálních složek RGB (R - red, červená, G - green, zelená, B - blue, modrá). V šedotónovém obraze odpovídá hodnota pixelu pouze jedné hodnotě, a to intenzitě jasu. Při rozpoznávání kontur nás zajímá černobílý obraz, a proto je vstupní barevný obraz ihned zbaven barevných složek.
Převod barevného obrazu do šedotónového
Barevný obraz je ve standardních případech reprezentován jako 24 bit model. Šedotónový obraz je 8 bit model. Vzhledem k nedokonalosti lidského oka, které je schopné rozpoznat přibližně 50 odstínů šedé, je tento rozsah postačující 5.
Při převodu barevného obrazu na šedotónový je důležitý převodní vztah, který určuje, jak velký podíl budou mít jednotlivé barevné složky na intenzitu šedé barvy.
I=0.229*red+0.587*green+0.114*blue
kde I je intenzita šedi a red, green, blue jsou spektrální složky barevného obrazu. Tento výpočet se při transformaci provádí pro každý pixel obrazu.
Algoritmus 3.1: Převod barevného obrazu na šedotónový.
- $G(x, y)$ je vstupní obraz, $G(x, y)$ je výstupní šedotónový obraz.
- Pro každý pixel barevného obrazu $C(x, y)$:
G(x, y)= 0.229*C(x, y).red+0.587*C(x, y).green+0.114*C(x, y).blue
% obrázky: barený a šedotónový
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=6cm,keepaspectratio!{img/barevny.jpg} &
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=6cm,keepaspectratio!{img/sedy.jpg} \\
a) & b) \\
a) Barevný obrázek (24b), b) Obrázek ve stupních šedi (8b)
Převod šedotónového obrazu na černobílý
Černobílý neboli \textit{monochromatický} obraz obsahuje pouze dvě barvy - černou a bílou. Také se někdy takovému obrazu říká binární, protože pixel nabývá pouze dvou hodnot. Převod šedotónového obrazu na černobílý je možné provést několika způsoby popsanými níže.
Prvním způsobem je \textit{dithering} -- rozptylování. Tato metoda je založena na prostém nahrazení původních pixelů obrazu, za vhodnou distribuci černých a bílých bodů, přičemž je nutné maximálně zachovat vizuální podobu.
Druhý způsob převodu je \textit{halftoning}, tzv. polotónování. Jedná se o způsob převodu, kde se původní pixel nahrazuje rozsahem hodnot vhodných distribucí černých a bílých bodů. Tím dochází k zvětšení rozlišení obrázku.
Pro účely práce byl vybrán první způsob převodu.
\subsubsection{Thresholding}
\textit{Thresholding}, neboli prahování, je nejjednodušší metodou založenou na \textit{ditheringu}.
Je založena na porovnávání všech pixelů s prahem (\textit{threshold}). Všechny pixely, které mají hodnotu intenzity pod daným prahem budou černé, ostatní budou bílé. Metoda je jednoduchá a rychlá.
\textit{Threshold} je vhodné zvolit tak, aby nedošlo ke zkreslení vizuální podoby obrazu. Možnou metodou je počítání aritmetického průměru intenzity všech pixelů v obraze, díky čemuž nedojde k špatnému převedení jasnějších nebo tmavších obrazů.
% algoritmus: převod do BW
\begin{algorithm}{Převod šedotónového obrazu na černobílý.}
\item {$G(x, y)$ je vstupní obraz, $B(x, y)$ je výstupní binární obraz.}
\item {Pro každý pixel obrazu vstupního obrazu $G=(x,y)$:
\begin{displaymath}
B(x, y)= \left\{
\begin{array}{l}
0 (black), \quad G(x, y) < threshold \\
1 (white), \quad G(x, y) \geq threshold
\end{array}
\right.
\end{displaymath}}
\end{algorithm}
% obrázky: šedý a bw
\begin{figure}!COMPILER-ERROR-TAG-NOT-FOUND-h!
\begin{center}
\begin{tabular}{cc}
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=6cm,keepaspectratio!{img/pod-sedy.jpg} &
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=6cm,keepaspectratio!{img/pod-bw.jpg} \\
a) & b) \\
\end{tabular}
\caption{a) Obrázek ve stupních šedi (8b), b) Černobílý obrázek (1b)}
\end{center}
\end{figure}
Segmentace kontury
Při segmentaci kontury jsou používány základní znalosti z analytické geometrie ve dvourozměrném prostoru. Pro úplnost jsou stručně uvedeny použité vzorce. Kompletní definice a odvození lze nalézt např. v \cite{stred-mat}.
Vektor
Směrový vektor ${\bf u}$ je dán dvěma body A a B, přičemž A je počáteční bod a B je koncový bod, pak
${\bf u}=\overrightarrow{AB}=B-A=\left(b,-a\right).$
Normálový vektor ${\bf n}$ je kolmý ke směrovému vektoru
${\bf n}=\left(a,b\right)$.
Velikost vektoru
Velikost vektoru ${\bf u}$ je dána druhou odmocninou součtu druhých mocnin složek vektoru
$|{\bf u}|=\sqrt{u_1^2 + u_2^2}.$
Skalární součin
Skalární součin dvou nenulových vektorů ${\bf u}$, ${\bf v}$ je reálné číslo, které dostaneme jako
součet součinů složek vektorů
${\bf u} \cdot {\bf v} = u_1 \cdot v_1 + u_2 \cdot v_2.$
Přímka
Přímka $p$ je v obecném tvaru v rovině definována jako
$am_x+bm_y+c=0,$
kde bod $M = !COMPILER-ERROR-TAG-NOT-FOUND-m_x,!$ je libovolný bod přímky, ${\bf n} =\left(a,b\right)$ je
normálový vektor přímky a $c$ je posunutí vůči počátku souřadného systému.
Odchylka přímek
Odchylka $\omega$ přímek $u$ a $v$ (obr. \ref{odchylka}) je dána podílem skalárního součinu a součinu velikostí
směrových vektorů
$cos{\omega}=\frac{{\bf u} \cdot {\bf v}}{ |{\bf u}| \cdot |{\bf v}|}
=\frac{ u_1 \cdot v_1 + u_2 \cdot v_2}{ \sqrt{u_1^2 + u_2^2} \cdot \sqrt{v_1^2 + v_2^2}}.
$
% odchylka dvou přímek
\begin{figure}!COMPILER-ERROR-TAG-NOT-FOUND-h!
\begin{center}
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=9cm,keepaspectratio!{img/odchylka.pdf}
\end{center}
\caption{Odchylka $\omega$ přímek $u$ a $v$}
\label{odchylka}
\end{figure}
Vzdálenost bodu od přímky
Vzdálenost bodu $M$ od přímky $p$ v rovině (obr. \ref{vzdalenost})
$\left|Mp\right| = \frac{(am_x+bm_y+c)}{\sqrt{a^2+b^2}},$
kde $M = !COMPILER-ERROR-TAG-NOT-FOUND-m_x,!$, ${\bf n} =\left(a,b\right)$ je normálový vektor přímky
$p$ a $c$ je posunutí přímky $p$ vůči počátku souřadného systému.
% vzdálenost bodu od přímky
\begin{figure}!COMPILER-ERROR-TAG-NOT-FOUND-h!
\begin{center}
\bigskip
\includegraphics!COMPILER-ERROR-TAG-NOT-FOUND-width=9cm,keepaspectratio!{img/vzdalenost.pdf}
\end{center}
\caption{Vzdálenost bodu $M$ od přímky $p$}
\label{vzdalenost}
\end{figure}
