Advertisement
Guest User

Untitled

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