SHARE
TWEET

Untitled

a guest Apr 25th, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top