Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.62 KB | None | 0 0
  1. clear all;
  2.  
  3. DolnoPrzepustowy3 = [ 1, 1, 1; 1, 1, 1; 1, 1, 1];
  4. DolnoPrzepustowy5 = [ 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1; 1, 1, 1, 1, 1];
  5. DolnoPrzepustowy7 = [ 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1; 1, 1, 1, 1, 1, 1, 1];
  6. GornoPrzepustowy3 = [ -1, -1, -1; -1, 9, -1; -1, -1, -1];
  7. GornoPrzepustowy5 = [ 0, -1, -1, -1, 0; -1, 2, -4, 2, -1; -1, -4, 13, -4, -1; -1, 2, -4, 2, -1; 0, -1, -1, -1, 0];
  8. Laplace = [ 0, -1, 0; -1, 4, -1; 0, -1, 0];
  9. Prewit = [ -1, -1, -1; 0, 0, 0; 1, 1, 1];
  10. Sobel = [ -1, -2, -1; 0, 0, 0; 1, 2, 1];
  11. Emboss = [ -1, -1, -1; 0, 0, 0; 1, 1, 1];
  12. DetekcjaLini1 = [ -1, -1, -1; 2, 2, 2; -1, -1, -1];
  13. DetekcjaLini2 = [ 0, -1, 0; 0, 1, 0; 0, 0, 0];
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. %Najpierw mediana potem normalizacja
  21. %Najpierw filtry potem operacje
  22. %Np FiltDolno5 -> normalizacja -> obrot -> umiescNaSrodku
  23.  
  24. function wynik = pustePole(szerokosc, wysokosc)
  25. wynik = ones(szerokosc, wysokosc);
  26. wynik = wynik * 0;
  27. end
  28. function wynik = umiescNaSrodku(obrazOrg, obraz)
  29. [x1,y1,z3] = size(obrazOrg);
  30. [x2,y2,z3] = size(obraz);
  31. wynik = obrazOrg;
  32. x2
  33. y2
  34. punktStartowyX = int16((x1/2) - (x2/2));
  35. punktStartowyY = int16((y1/2) - (y2/2));
  36. punktStartowyX
  37. punktStartowyY
  38. for x = 1:x2
  39. for y = 1:y2
  40. obrazOrg(punktStartowyX + x - 1, punktStartowyY + y - 1) = obraz(x, y);
  41. end
  42. end
  43. wynik = obrazOrg;
  44. end
  45. function wynik = skalujObraz(obraz, k1, k2)
  46. [x, y, z] = size(obraz);
  47. wynik = imresize(obraz,[x*k1 y*k2]);
  48. end
  49. function wynik = normalizujObraz(obraz)
  50. %5A = mat2gray(obraz);
  51. %A = im2double(obraz);
  52. wynik = imadjust(obraz);
  53. end
  54. function wynik = obrocObraz(obraz, kat)
  55. wynik = imrotate(obraz, kat);
  56. end
  57. function wynik = filtracjaSplotowa(obraz, maska, krawedzie)
  58. rozmiarMaski = size(maska, 1);
  59. [x1, y1, z] = size(obraz);
  60. obraz = double(obraz);
  61. if krawedzie == 0
  62.  
  63. if rozmiarMaski == 3
  64. for x = 1:x1
  65. for y = 1:y1
  66. if x == 1 || x == x1 && y == 1 || y == y1
  67. przepisanie(x, y) = obraz(x, y);
  68. end
  69. end
  70. end
  71. C = conv2(obraz, maska);
  72. C = imresize(C, [x1, y1]);
  73. for x = 1:x1
  74. for y = 1:y1
  75. if x == 1 || x == x1 && y == 1 || y == y1
  76. C(x, y) = przepisanie(x, y);
  77. end
  78. end
  79. end
  80. C = mat2gray(C);
  81. C = im2uint8(C);
  82. wynik = C;
  83. end
  84.  
  85. if rozmiarMaski == 5
  86. for x = 1:x1
  87. for y = 1:y1
  88. if x == 1 || x == 2 || x == x1 || x == x1 - 1 && y == 1 || y == 2 || y == y1 || y == y1 - 1
  89. przepisanie(x, y) = obraz(x, y);
  90. end
  91. end
  92. end
  93. C = conv2(obraz, maska);
  94. C = imresize(C, [x1, y1]);
  95. for x = 1:x1
  96. for y = 1:y1
  97. if x == 1 || x == 2 || x == x1 || x == x1 - 1 && y == 1 || y == 2 || y == y1 || y == y1 - 1
  98. C(x, y) = przepisanie(x, y);
  99. end
  100. end
  101. end
  102. C = mat2gray(C);
  103. C = im2uint8(C);
  104. wynik = C;
  105. end
  106.  
  107. if rozmiarMaski == 7
  108. for x = 1:x1
  109. for y = 1:y1
  110. if x == 1 || x == 2 || x == 3 || x == x1 || x == x1 - 1 || x == x1 - 2 && y == 1 || y == 2 || y == 3 || y == y1 || y == y1 - 1 || y == y1 - 2
  111. przepisanie(x, y) = obraz(x, y);
  112. end
  113. end
  114. end
  115. C = conv2(obraz, maska);
  116. C = imresize(C, [x1, y1]);
  117. for x = 1:x1
  118. for y = 1:y1
  119. if x == 1 || x == 2 || x == 3 || x == x1 || x == x1 - 1 || x == x1 - 2 && y == 1 || y == 2 || y == 3 || y == y1 || y == y1 - 1 || y == y1 - 2
  120. C(x, y) = przepisanie(x, y);
  121. end
  122. end
  123. end
  124. C = mat2gray(C);
  125. C = im2uint8(C);
  126. wynik = C;
  127. end
  128.  
  129. end
  130.  
  131.  
  132. if krawedzie == 1
  133. if rozmiarMaski == 3
  134. C = conv2(obraz, maska);
  135. C = mat2gray(C);
  136. C = im2uint8(C);
  137. C = imresize(C, [x1, y1]);
  138. C = imresize(C, (x1 + 8) / y1);
  139. C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
  140. wynik = C;
  141. end
  142. if rozmiarMaski == 5
  143. C = conv2(obraz, maska);
  144. C = mat2gray(C);
  145. C = im2uint8(C);
  146. C = imresize(C, [x1, y1]);
  147. C = imresize(C, (x1+10) / y1);
  148. C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
  149. wynik = C;
  150. end
  151. if rozmiarMaski == 7
  152. C = conv2(obraz, maska);
  153. C = mat2gray(C);
  154. C = im2uint8(C);
  155. C = imresize(C, [x1, y1]);
  156. C = imresize(C, (x1 + 12) / y1);
  157. C = imcrop(C, [rozmiarMaski rozmiarMaski y1-1 y1-1]);
  158. wynik = C;
  159. end
  160. end
  161. end
  162. function wynik = solPieprz(obraz, gestosc)
  163. %gaussian
  164. wynik = imnoise(obraz,'salt & pepper', gestosc);
  165. end
  166. function wynik = filtrMedianowy(obraz, rozmiar)
  167. maska = [rozmiar rozmiar];
  168. wynik = medfilt2(obraz, maska);
  169. end
  170. function wynik = obliczBladMediany(obraz, rozmiar) %"efektywno¶ć filtru" rozmiar to macierz np [1 1] [3 3] podać sam± liczbę np 1 3 5 lub 7 reszta zrobi się automatycznie
  171. A = obraz;
  172. check = filtrMedianowy(A, rozmiar);
  173. obraz = im2double(obraz);
  174. orgMediana = filtrMedianowy(obraz, rozmiar);
  175. blad = 0;
  176. sumaBledow = 0;
  177. [x1, y1, z1] = size(obraz);
  178. for m = 1:x1
  179. for n = 1:y1
  180. blad = blad + ((obraz(m, n) - orgMediana(m, n))^2);
  181. end
  182.  
  183. sumaBledow = sumaBledow + blad;
  184. blad = 0;
  185. end
  186. licznik = sumaBledow;
  187. blad = 0;
  188. sumaBledow = 0;
  189. for m = 1:x1
  190. for n = 1:y1
  191. blad = blad + (obraz(m, n)^2);
  192. end
  193. sumaBledow = sumaBledow + blad;
  194. blad = 0;
  195. end
  196. mianownik = sumaBledow;
  197. %licznik
  198. %mianownik
  199. C = licznik / mianownik;
  200.  
  201. S = immse(check, A);
  202.  
  203.  
  204. wynik = S;
  205. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement