Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. void filtruGeneral(int w) {
  2. char fname[MAX_PATH];
  3. openFileDlg(fname);
  4.  
  5. Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  6. imshow("Imaginea initiala", img);
  7.  
  8. Mat dst = img.clone();
  9.  
  10.  
  11. int H[3][3] =
  12. { { 0, -1, 0 },
  13. { -1, 5, -1 },
  14. { 0, -1, 0 } };
  15.  
  16. int Splus = 0;
  17. int Sminus = 0;
  18.  
  19. int k = w / 2;
  20. double fs = 0;
  21.  
  22. for (int j = -k; j <= k; j++) {
  23. for (int i = -k; i <= k; i++) {
  24. if (H[j + k][i + k] > 0) {
  25. Splus += H[j + k][i + k];
  26. }
  27. else if (H[j + k][i + k]<0) {
  28. Sminus -= H[j + k][i + k];
  29. }
  30. }
  31. }
  32.  
  33. fs = 1.0 / (2.0*max(Splus, Sminus));
  34.  
  35. for (int y = k; y < img.rows - k; y++) {
  36. for (int x = k; x < img.cols - k; x++) {
  37. int aux = 0;
  38. for (int i = -k; i <= k; i++) {
  39. for (int j = -k; j <= k; j++) {
  40. aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
  41. }
  42. dst.at<uchar>(x, y) = aux * fs + 127;
  43. }
  44. }
  45. }
  46.  
  47. imshow("Imagine rezultat", dst);
  48. waitKey(0);
  49.  
  50. }
  51.  
  52.  
  53. void filtruMedieAritmetica(int w) {
  54. char fname[MAX_PATH];
  55. openFileDlg(fname);
  56.  
  57. Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  58. imshow("Imaginea initiala", img);
  59.  
  60. Mat dst = img.clone();
  61.  
  62. int H[3][3] =
  63. { { 1, 1, 1 },
  64. { 1, 1, 1 },
  65. { 1, 1, 1 } };
  66.  
  67.  
  68. int k = (w - 1) / 2;
  69.  
  70. int c = 0;
  71. for (int j = 0; j <= w - 1; j++) {
  72. for (int i = 0; i <= w - 1; i++) {
  73. c += H[j][i];
  74. }
  75. }
  76.  
  77. for (int y = k; y < img.rows - k; y++) {
  78. for (int x = k; x < img.cols - k; x++) {
  79. int aux = 0;
  80. for (int i = -k; i <= k; i++) {
  81. for (int j = -k; j <= k; j++) {
  82. aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
  83. }
  84. dst.at<uchar>(x, y) = aux / c;
  85. }
  86. }
  87. }
  88.  
  89. imshow("Imagine Rezultat", dst);
  90. waitKey(0);
  91.  
  92.  
  93. }
  94.  
  95. void filtruGausian(int w) {
  96. char fname[MAX_PATH];
  97. openFileDlg(fname);
  98.  
  99. Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  100. imshow("Imaginea initiala", img);
  101.  
  102. Mat dst = img.clone();
  103.  
  104. int H[3][3] =
  105. { { 1, 2, 1 },
  106. { 2, 4, 2 },
  107. { 1, 2, 1 } };
  108.  
  109.  
  110. int k = (w - 1) / 2;
  111.  
  112. int c = 0;
  113. for (int j = 0; j <= w - 1; j++) {
  114. for (int i = 0; i <= w - 1; i++) {
  115. c += H[j][i];
  116. }
  117. }
  118.  
  119. for (int y = k; y < img.rows - k; y++) {
  120. for (int x = k; x < img.cols - k; x++) {
  121. int aux = 0;
  122. for (int i = -k; i <= k; i++) {
  123. for (int j = -k; j <= k; j++) {
  124. aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
  125. }
  126. dst.at<uchar>(x, y) = aux / c;
  127. }
  128. }
  129. }
  130.  
  131. imshow("Imagine Rezultat", dst);
  132. waitKey(0);
  133.  
  134.  
  135. }
  136.  
  137. void filtruTreceSusFrecvential(int w) {
  138. char fname[MAX_PATH];
  139. openFileDlg(fname);
  140.  
  141. Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
  142. imshow("Imaginea initiala", img);
  143.  
  144. Mat dst = img.clone();
  145.  
  146. int H[3][3] =
  147. { { 0, -1, 0 },
  148. { -1, 5, -1 },
  149. { 0, -1, 0 } };
  150.  
  151. int Splus = 0;
  152. int Sminus = 0;
  153.  
  154. int k = w / 2;
  155. double fs = 0;
  156.  
  157. for (int j = -k; j <= k; j++) {
  158. for (int i = -k; i <= k; i++) {
  159. if (H[j + k][i + k] > 0) {
  160. Splus += H[j + k][i + k];
  161. }
  162. else if (H[j + k][i + k]<0) {
  163. Sminus -= H[j + k][i + k];
  164. }
  165. }
  166. }
  167.  
  168. fs = 1.0 / (2.0*max(Splus, Sminus));
  169.  
  170. for (int y = k; y < img.rows - k; y++) {
  171. for (int x = k; x < img.cols - k; x++) {
  172. int aux = 0;
  173. for (int i = -k; i <= k; i++) {
  174. for (int j = -k; j <= k; j++) {
  175. aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
  176. }
  177. dst.at<uchar>(x, y) = aux * fs + 127;
  178. }
  179. }
  180. }
  181.  
  182. imshow("Rezultat", dst);
  183. waitKey(0);
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement