Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass[a4paper,12pt]{article}
- \usepackage[T1]{fontenc}
- \usepackage[cp1250]{inputenc}
- \usepackage[polish]{babel}
- \selectlanguage{polish}
- \usepackage[pdftex]{graphicx}
- \title{Przestrzenie kolorów, konwertowanie z RGB do HSV , binaryzacja w HSV}
- \author{Tomasz Zantkiewicz}
- \date{}
- \begin{document}
- \maketitle{}
- \section{Zadanie do wykonania}
- Wczytać obrazek do SCILABa, a następnie wykonać:
- \begin{itemize}
- \item Konwersję do przestrzeni HSV.
- \item Binaryzacje w przestrzeni HSV.
- \item Konwersje z HSV do RGB.
- \end{itemize}
- Wzorcowy obrazek użyty w zadaniu przedstawiono na rysunku~\ref{fig:baza}.
- \section{Wykonanie zadania}
- \subsection{Konwersja do HSV}
- HSV– model przestrzeni barw gdzie wszystkie barwy postrzegane są jako światło pochodzące z oświetlenia. Według tego modelu wszelkie barwy wywodzą się ze światła białego, gdzie część widma zostaje wchłonięta a część odbita od oświetlanych przedmiotów.\\
- Symbole w nazwie modelu to pierwsze litery nazw angielskich dla składowych opisu barwy: H – barwa światła (ang. Hue) wyrażona kątem na kole barw przyjmująca wartości od 0° do 360°. Model jest rozpatrywany jako stożek, którego podstawą jest koło barw.
- RGB – model przestrzeni barw, opisywanej współrzędnymi RGB. Jego nazwa powstała ze złożenia pierwszych liter angielskich nazw barw: R – red (czerwonej), G – green (zielonej) i B – blue (niebieskiej), z których model ten się składa.
- \\Funkcja do konwertowanie do przestrzeni HSV.
- \begin{verbatim}
- function [Out]=RGB2HSV(ln)
- [h,w,d]=size(ln)
- HSV=zeros(h,w,d);
- for i=1:h
- for j=1:w
- RGBmax=double(max(ln(i,j,:)));
- RGBmin=double(min(ln(i,j,:)));
- HSV(i,j,3)=RGBmax; //V wynosi RGBmax
- if HSV(i,j,3) == 0 then
- HSV(i,j,1) = 0; // jesli V = 0, to
- HSV(i,j,2) = 0; // H=0 i S=0
- else
- R=double(ln(i,j,1))/HSV(i,j,3);
- G=double(ln(i,j,2))/HSV(i,j,3);
- B=double(ln(i,j,3))/HSV(i,j,3);
- RGBmax=max([R,G,B]);
- RGBmin=min([R,G,B]);
- HSV(i,j,2)=(RGBmax-RGBmin);
- if HSV(i,j,2) == 0 then
- HSV(i,j,1) = 0;
- else
- R=(R-RGBmin)/(RGBmax-RGBmin);
- G=(G-RGBmin)/(RGBmax-RGBmin);
- B=(B-RGBmin)/(RGBmax-RGBmin);
- RGBmax=max([R,G,B]);
- RGBmin=min([R,G,B]);
- if RGBmax == R then
- HSV(i,j,1) = 0 + 60 * (G-B);
- if HSV(i,j,1) < 0 then
- HSV(i,j,1) = HSV(i,j,1)+360;
- end
- elseif RGBmax == G
- HSV(i,j,1) = 120 + 60 * (B-R);
- else
- HSV(i,j,1) = 240 + 60 * (R-G);
- end
- end
- end
- end
- printf("%d",double(i/h)*100);
- end
- Out = HSV;
- endfunction
- \end{verbatim}
- Wynik przedstawiono na rysunku ~\ref{fig:HSV}.
- \subsection{Binaryzacja w HSV}
- Funkcja do binaryzacji w HSV.
- \begin{verbatim}
- function [Out]=HSVBin(In,a,b)
- [h,w,d]=size(In);
- Out=zeros(h,w,d);
- for i=1:h
- for j=1:w
- if (In(i,j,1)>a) & (In(i,j,1)<b) & (In(i,j,2)>0.2) then
- Out(i,j,:)=In(i,j,:);
- else
- Out(i,j,1)=0; Out(i,j,3)=0; Out(i,j,3)=0;
- end;
- end
- printf("%d\n",double(i/h)*100);
- end
- endfunction
- \end{verbatim}
- Wynik binaryzacji przedtawiono na rysunku ~\ref{fig:bin}.
- \subsection{Konwercja z HSV do RGB}
- \begin{verbatim}
- function [Out]=HSV2RGB(In)
- [h,w,d]=size(In);
- rgb=zeros(h,w,d);
- for i=1:h
- for j=1:w
- hue=In(i,j,1); sat=In(i,j,2); val=In(i,j,3); r=0; g=0; b=0;
- hue=double(hue/60);
- g=floor(hue);//wartość całkwita z Hue z przedziału 0-5
- f=hue-g;//reszta z wartości Hue
- p=val*(1-sat);
- q=val*(1-(sat*f));
- t=val*(1-(sat*(1-f)));
- if (g==0) then
- r=val; g=t; b=p;
- elseif (g==1)
- r=q; g=val; b=p;
- elseif (g==2)
- r=p; g=val; b=t;
- elseif (g==3)
- r=p; g=q; b=val;
- elseif (g==4)
- r=t ; g=p; b=q;
- else// g==5
- r=val; g=p; b=q;
- end;
- rgb(i,j,1)=r; rgb(i,j,2)=g; rgb(i,j,3)=b;
- end
- printf("%d\n",double(i/h)*100);
- end
- Out=uint8(rgb);
- endfunction
- \end{verbatim}
- Wyniki obrazka przedstawiono na rysunku ~\ref{fig:HSVRGB}
- \newpage
- \begin{figure}[p]
- \includegraphics[scale=0.4]{Baza.png}
- \caption{Obrazek wzorcowy} \label{fig:baza}
- \end{figure}
- \begin{figure}[p]
- \includegraphics[scale=1]{HSV.png}
- \caption{Konwersja do HSV} \label{fig:HSV}
- \end{figure}
- \begin{figure}[p]
- \includegraphics[scale=1]{HSVbin.png}
- \caption{Binaryzacja w HSV} \label{fig:bin}
- \end{figure}
- \begin{figure}[p]
- \includegraphics[scale=1]{HSVRGB.png}
- \caption{Konwersja z HSV do RGB} \label{fig:HSVRGB}
- \end{figure}
- \end{document}
Add Comment
Please, Sign In to add comment