Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void filtruGeneral(int w) {
- char fname[MAX_PATH];
- openFileDlg(fname);
- Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
- imshow("Imaginea initiala", img);
- Mat dst = img.clone();
- int H[3][3] =
- { { 0, -1, 0 },
- { -1, 5, -1 },
- { 0, -1, 0 } };
- int Splus = 0;
- int Sminus = 0;
- int k = w / 2;
- double fs = 0;
- for (int j = -k; j <= k; j++) {
- for (int i = -k; i <= k; i++) {
- if (H[j + k][i + k] > 0) {
- Splus += H[j + k][i + k];
- }
- else if (H[j + k][i + k]<0) {
- Sminus -= H[j + k][i + k];
- }
- }
- }
- fs = 1.0 / (2.0*max(Splus, Sminus));
- for (int y = k; y < img.rows - k; y++) {
- for (int x = k; x < img.cols - k; x++) {
- int aux = 0;
- for (int i = -k; i <= k; i++) {
- for (int j = -k; j <= k; j++) {
- aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
- }
- dst.at<uchar>(x, y) = aux * fs + 127;
- }
- }
- }
- imshow("Imagine rezultat", dst);
- waitKey(0);
- }
- void filtruMedieAritmetica(int w) {
- char fname[MAX_PATH];
- openFileDlg(fname);
- Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
- imshow("Imaginea initiala", img);
- Mat dst = img.clone();
- int H[3][3] =
- { { 1, 1, 1 },
- { 1, 1, 1 },
- { 1, 1, 1 } };
- int k = (w - 1) / 2;
- int c = 0;
- for (int j = 0; j <= w - 1; j++) {
- for (int i = 0; i <= w - 1; i++) {
- c += H[j][i];
- }
- }
- for (int y = k; y < img.rows - k; y++) {
- for (int x = k; x < img.cols - k; x++) {
- int aux = 0;
- for (int i = -k; i <= k; i++) {
- for (int j = -k; j <= k; j++) {
- aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
- }
- dst.at<uchar>(x, y) = aux / c;
- }
- }
- }
- imshow("Imagine Rezultat", dst);
- waitKey(0);
- }
- void filtruGausian(int w) {
- char fname[MAX_PATH];
- openFileDlg(fname);
- Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
- imshow("Imaginea initiala", img);
- Mat dst = img.clone();
- int H[3][3] =
- { { 1, 2, 1 },
- { 2, 4, 2 },
- { 1, 2, 1 } };
- int k = (w - 1) / 2;
- int c = 0;
- for (int j = 0; j <= w - 1; j++) {
- for (int i = 0; i <= w - 1; i++) {
- c += H[j][i];
- }
- }
- for (int y = k; y < img.rows - k; y++) {
- for (int x = k; x < img.cols - k; x++) {
- int aux = 0;
- for (int i = -k; i <= k; i++) {
- for (int j = -k; j <= k; j++) {
- aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
- }
- dst.at<uchar>(x, y) = aux / c;
- }
- }
- }
- imshow("Imagine Rezultat", dst);
- waitKey(0);
- }
- void filtruTreceSusFrecvential(int w) {
- char fname[MAX_PATH];
- openFileDlg(fname);
- Mat img = imread(fname, CV_LOAD_IMAGE_GRAYSCALE);
- imshow("Imaginea initiala", img);
- Mat dst = img.clone();
- int H[3][3] =
- { { 0, -1, 0 },
- { -1, 5, -1 },
- { 0, -1, 0 } };
- int Splus = 0;
- int Sminus = 0;
- int k = w / 2;
- double fs = 0;
- for (int j = -k; j <= k; j++) {
- for (int i = -k; i <= k; i++) {
- if (H[j + k][i + k] > 0) {
- Splus += H[j + k][i + k];
- }
- else if (H[j + k][i + k]<0) {
- Sminus -= H[j + k][i + k];
- }
- }
- }
- fs = 1.0 / (2.0*max(Splus, Sminus));
- for (int y = k; y < img.rows - k; y++) {
- for (int x = k; x < img.cols - k; x++) {
- int aux = 0;
- for (int i = -k; i <= k; i++) {
- for (int j = -k; j <= k; j++) {
- aux += img.at<uchar>(x + j, y + i)*H[j + k][i + k];
- }
- dst.at<uchar>(x, y) = aux * fs + 127;
- }
- }
- }
- imshow("Rezultat", dst);
- waitKey(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement