Guest User

Untitled

a guest
May 24th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. \documentclass[a4paper,12pt]{article}
  2. \usepackage[T1]{fontenc}
  3. \usepackage[cp1250]{inputenc}
  4. \usepackage[polish]{babel}
  5. \selectlanguage{polish}
  6. \usepackage[pdftex]{graphicx}
  7.  
  8. \title{Przestrzenie kolorów, konwertowanie z RGB do HSV , binaryzacja w HSV}
  9. \author{Tomasz Zantkiewicz}
  10. \date{}
  11. \begin{document}
  12. \maketitle{}
  13. \section{Zadanie do wykonania}
  14. Wczytać obrazek do SCILABa, a następnie wykonać:
  15. \begin{itemize}
  16. \item Konwersję do przestrzeni HSV.
  17. \item Binaryzacje w przestrzeni HSV.
  18. \item Konwersje z HSV do RGB.
  19. \end{itemize}
  20. Wzorcowy obrazek użyty w zadaniu przedstawiono na rysunku~\ref{fig:baza}.
  21. \section{Wykonanie zadania}
  22. \subsection{Konwersja do HSV}
  23. 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.\\
  24. 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.
  25.  
  26. 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.
  27. \\Funkcja do konwertowanie do przestrzeni HSV.
  28. \begin{verbatim}
  29. function [Out]=RGB2HSV(ln)
  30. [h,w,d]=size(ln)
  31. HSV=zeros(h,w,d);
  32. for i=1:h
  33. for j=1:w
  34. RGBmax=double(max(ln(i,j,:)));
  35. RGBmin=double(min(ln(i,j,:)));
  36. HSV(i,j,3)=RGBmax; //V wynosi RGBmax
  37. if HSV(i,j,3) == 0 then
  38. HSV(i,j,1) = 0; // jesli V = 0, to
  39. HSV(i,j,2) = 0; // H=0 i S=0
  40. else
  41. R=double(ln(i,j,1))/HSV(i,j,3);
  42. G=double(ln(i,j,2))/HSV(i,j,3);
  43. B=double(ln(i,j,3))/HSV(i,j,3);
  44. RGBmax=max([R,G,B]);
  45. RGBmin=min([R,G,B]);
  46. HSV(i,j,2)=(RGBmax-RGBmin);
  47. if HSV(i,j,2) == 0 then
  48. HSV(i,j,1) = 0;
  49. else
  50. R=(R-RGBmin)/(RGBmax-RGBmin);
  51. G=(G-RGBmin)/(RGBmax-RGBmin);
  52. B=(B-RGBmin)/(RGBmax-RGBmin);
  53. RGBmax=max([R,G,B]);
  54. RGBmin=min([R,G,B]);
  55.  
  56. if RGBmax == R then
  57. HSV(i,j,1) = 0 + 60 * (G-B);
  58. if HSV(i,j,1) < 0 then
  59. HSV(i,j,1) = HSV(i,j,1)+360;
  60. end
  61. elseif RGBmax == G
  62. HSV(i,j,1) = 120 + 60 * (B-R);
  63. else
  64. HSV(i,j,1) = 240 + 60 * (R-G);
  65. end
  66. end
  67. end
  68. end
  69. printf("%d",double(i/h)*100);
  70. end
  71. Out = HSV;
  72.  
  73. endfunction
  74. \end{verbatim}
  75. Wynik przedstawiono na rysunku ~\ref{fig:HSV}.
  76. \subsection{Binaryzacja w HSV}
  77. Funkcja do binaryzacji w HSV.
  78. \begin{verbatim}
  79. function [Out]=HSVBin(In,a,b)
  80. [h,w,d]=size(In);
  81. Out=zeros(h,w,d);
  82. for i=1:h
  83. for j=1:w
  84. if (In(i,j,1)>a) & (In(i,j,1)<b) & (In(i,j,2)>0.2) then
  85. Out(i,j,:)=In(i,j,:);
  86. else
  87. Out(i,j,1)=0; Out(i,j,3)=0; Out(i,j,3)=0;
  88. end;
  89. end
  90. printf("%d\n",double(i/h)*100);
  91. end
  92. endfunction
  93. \end{verbatim}
  94. Wynik binaryzacji przedtawiono na rysunku ~\ref{fig:bin}.
  95.  
  96. \subsection{Konwercja z HSV do RGB}
  97. \begin{verbatim}
  98. function [Out]=HSV2RGB(In)
  99. [h,w,d]=size(In);
  100. rgb=zeros(h,w,d);
  101. for i=1:h
  102. for j=1:w
  103. hue=In(i,j,1); sat=In(i,j,2); val=In(i,j,3); r=0; g=0; b=0;
  104. hue=double(hue/60);
  105. g=floor(hue);//wartość całkwita z Hue z przedziału 0-5
  106. f=hue-g;//reszta z wartości Hue
  107.  
  108. p=val*(1-sat);
  109. q=val*(1-(sat*f));
  110. t=val*(1-(sat*(1-f)));
  111.  
  112.  
  113. if (g==0) then
  114. r=val; g=t; b=p;
  115. elseif (g==1)
  116. r=q; g=val; b=p;
  117. elseif (g==2)
  118. r=p; g=val; b=t;
  119. elseif (g==3)
  120. r=p; g=q; b=val;
  121. elseif (g==4)
  122. r=t ; g=p; b=q;
  123. else// g==5
  124. r=val; g=p; b=q;
  125. end;
  126. rgb(i,j,1)=r; rgb(i,j,2)=g; rgb(i,j,3)=b;
  127. end
  128. printf("%d\n",double(i/h)*100);
  129. end
  130. Out=uint8(rgb);
  131. endfunction
  132. \end{verbatim}
  133. Wyniki obrazka przedstawiono na rysunku ~\ref{fig:HSVRGB}
  134. \newpage
  135. \begin{figure}[p]
  136. \includegraphics[scale=0.4]{Baza.png}
  137. \caption{Obrazek wzorcowy} \label{fig:baza}
  138. \end{figure}
  139. \begin{figure}[p]
  140. \includegraphics[scale=1]{HSV.png}
  141. \caption{Konwersja do HSV} \label{fig:HSV}
  142. \end{figure}
  143. \begin{figure}[p]
  144. \includegraphics[scale=1]{HSVbin.png}
  145. \caption{Binaryzacja w HSV} \label{fig:bin}
  146. \end{figure}
  147. \begin{figure}[p]
  148. \includegraphics[scale=1]{HSVRGB.png}
  149. \caption{Konwersja z HSV do RGB} \label{fig:HSVRGB}
  150. \end{figure}
  151. \end{document}
Add Comment
Please, Sign In to add comment