
Tässä tehtävässä tutkitaan kuvien, matriisien ja singulaariarvojen yhteyksiä. 

Matriisin $\mathbf{A} \in \mathbb{R}^{m\times n}$ singulaariarvohajotelma on 
\[
\mathbf{A} =\mathbf{U}\mathbf{S}\mathbf{V}^T, 
\]  
missä matriisi $\mathbf{S}$ on diagonaalimatriisi, ja matriisit $\mathbf{U}$ ja $\mathbf{V}$ ovat ortogonaalisia neliömatriiseja. Matriisin sisältämää informaatiota voidaan tietyssä mielessä kompressoida tiputtamalla osia singulaariarvohajotelmasta pois; on todistettavissa että (MATLABilla ilmaistuna) \texttt{U(:,1:k)*S(1:k,1:k)*V(:,1:k)'} on paras mahdollinen $\mathrm{rank}(k)$-approksimaatio matriisille $\mathbf{A}$. 

Kuva voidaan ajatella $m \times n$ matriisina, missä  $i,j$ alkio ilmaisee vastaavassa paikassa olevan pikselin väriarvon. Tutkitaan sitten kuinka singulaariarvoja voidaan käyttää hyväksi kuvien pakkaamisessa ja hahmontunnistuksessa. 

Lue haluamasi kuva sisään MATLABin \texttt{imread} komennolla. Komento luo (yleensä, mutta hieman kuvasta riippuen), $m \times n \times 3$ matriisin. Tämä vastaa RGB-esitystä: ensimmäisessä kerroksessa on punaisen värin intensiteetit, toisessa vihreän ja kolmannessa sinisen. Muuta tämä matriisi harmaaskaalaan komennolla \texttt{rgb2gray}. Tämän jälkeen tee matriisille singulaariarvohajotelma komennolla \texttt{ [u s v] = svd(P)}, missä \texttt{P} on kuvasi matriisiesitys. Tutki sitten millä $k$:n arvolla komentojono
\begin{verbatim}
>> M = u(:,1:k)*s(1:k,1:k)*v(:,1:k)';
>> image(M)
\end{verbatim}
tuottaa havaittavia tuloksia. Pitäisi myös päteä, että kuvan isommat hahmot alkavat erottua ensin, mikä tekee singulaariarvoista huomattavan tehokkaan työkalun hahmontunnistuksessa. 

\textbf{Vihje}:
Kuvan ulottuvuuksien ei kannata olla kovin isoja: singulaariarvohajotelma on raskas laskettava. Jos haluat lisähaastetta, erottele kuvan värikerrokset, tee hajotelma niille erikseen, ja kokoa tulokset. Näin saat aikaan värikuvia. 

\textbf{Vaativuus:} 2+ \\
\textbf{Tehtävän Latex-koodi:}\\
\href{../mlteht/mlGraphics/mlGr19.tex}{../mlteht/mlGraphics/mlGr19.tex}

\textbf{Ratkaisu:}  \\
%\href{../mlteht/mlGraphics/ratkaisut/html/mlGr19R.html}{../mlteht/mlGraphics/ratkaisut/html/mlGr19R.html} Publish ->  html-muodossa\\
%\href{../mlteht/mlGraphics/ratkaisut/html/mlGr19R.pdf}{../mlteht/mlGraphics/ratkaisut/html/mlGr19R.pdf} Publish -> pdf-muodossa\\
\href{../mlteht/mlGraphics/ratkaisut/mlGr19R.m} {../mlteht/mlGraphics/ratkaisut/mlGr19R.m} Kutsuttava funktio ``picturesque''. \\
 *** TEE ajoskripti *** \\
     
%%%%%%%%% Harvemmin esiintyviä %%%%%%%%%%%%%%%%%%%%%%%%%%%
%\textbf{Aputiedostoja,viitteitä}\\
%  \begin{itemize}\\
%    \item 
%  \href{../mlteht/mlGraphics/apusrc/mlGr19A.m}{ Oppilaille: ohje-ja pohjatyöarkki (mw)} (Linkki mukaan mlGr19.tex-tiedostoon)\\
%\item
%\href{../mlteht/mlGraphics/apusrc/mlGr19Aope.tex}{ Opettajalle: Latex-lisäohjeita liitettäväksi tehtäväpaperiin}\\
%\end{itemize}\\
   
%\textbf{Vastaavanlaisia tehtäviä:}\\
   
%\begin{enumerate}\\
%\item Perusesim tähän kohtaan:\\
%\end{enumerate}\\
   
\textbf{Avainsanat:}Matlabgrafiikka,mlGraphics,mlLinalg,kuvankasittely,singulaariarvohajotelma, singularvaluedecomposition, SVD, data compression, tiedon pakkaus \\

\textbf{Matlabfunktioita:} imread, imshow,im2double, svd \\\\

\hrule
