Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <opencv2/highgui/highgui.hpp>
- using namespace std;
- using namespace cv;
- void OD(Mat src, Mat &res, int type)
- {
- const double classical_4[8][8] = { 0.567, 0.635, 0.608, 0.514, 0.424, 0.365, 0.392, 0.486, 0.847, 0.878, 0.910,
- 0.698, 0.153, 0.122, 0.090, 0.302, 0.820, 0.969, 0.941, 0.667, 0.180, 0.031, 0.059, 0.333, 0.725, 0.788, 0.757,
- 0.545, 0.275, 0.212, 0.243, 0.455, 0.424, 0.365, 0.392, 0.486, 0.567, 0.635, 0.608, 0.514, 0.153, 0.122, 0.090,
- 0.302, 0.847, 0.878, 0.910, 0.698, 0.180, 0.031, 0.059, 0.333, 0.820, 0.969, 0.941, 0.667, 0.275, 0.212, 0.243, 0.455, 0.725, 0.788, 0.757, 0.545 };
- const double bayer_5[8][8] = { 0.513, 0.272, 0.724, 0.483, 0.543, 0.302, 0.694, 0.453, 0.151, 0.755, 0.091, 0.966,
- 0.181, 0.758, 0.121, 0.936, 0.634, 0.392, 0.574, 0.332, 0.664, 0.423, 0.604, 0.362, 0.060, 0.875, 0.211, 0.815,
- 0.030, 0.906, 0.241, 0.845, 0.543, 0.302, 0.694, 0.453, 0.513, 0.272, 0.724, 0.483, 0.181, 0.758, 0.121, 0.936, 0.151,
- 0.755, 0.091, 0.966, 0.664, 0.423, 0.604, 0.362, 0.634, 0.392, 0.574, 0.332, 0.030, 0.906, 0.241, 0.845, 0.060, 0.875, 0.211, 0.815 };
- double DA[8][8] = {};
- switch (type)
- {
- case 0:
- for (int i = 0; i < 8; ++i)
- for (int j = 0; j < 8; ++j)
- DA[i][j] = classical_4[i][j];
- break;
- case 1:
- for (int i = 0; i < 8; ++i)
- for (int j = 0; j < 8; ++j)
- DA[i][j] = bayer_5[i][j];
- break;
- }
- for (int i = 0; i < 8; i++)
- for (int j = 0; j < 8; j++)
- DA[i][j] *= 255;
- for (int i = 0; i < src.rows; i += 8)
- {
- for (int j = 0; j < src.cols; j += 8)
- {
- for (int m = 0; m < 8; ++m)
- {
- if (i + m >= src.rows){ break; }
- for (int n = 0; n < 8; ++n)
- {
- if (j + n >= src.cols){ break; }
- res.ptr<uchar>(i + m)[j + n] = (src.ptr<uchar>(i + m)[j + n]>DA[m][n]) ? 255 : 0;
- }
- }
- }
- }
- }
- int main()
- {
- Mat src = imread("aaa.png", CV_LOAD_IMAGE_GRAYSCALE);
- Mat res(src.rows, src.cols, CV_8UC1, Scalar(0));
- OD(src, res,0);
- int x = 2;
- imwrite("OD_B.jpg", res);
- }
Add Comment
Please, Sign In to add comment