Guest User

Untitled

a guest
Oct 23rd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <opencv2/highgui/highgui.hpp>
  3. using namespace std;
  4. using namespace cv;
  5.  
  6. void OD(Mat src, Mat &res, int type)
  7. {
  8. 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,
  9. 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,
  10. 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,
  11. 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 };
  12. 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,
  13. 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,
  14. 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,
  15. 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 };
  16. double DA[8][8] = {};
  17. switch (type)
  18. {
  19. case 0:
  20. for (int i = 0; i < 8; ++i)
  21. for (int j = 0; j < 8; ++j)
  22. DA[i][j] = classical_4[i][j];
  23. break;
  24. case 1:
  25. for (int i = 0; i < 8; ++i)
  26. for (int j = 0; j < 8; ++j)
  27. DA[i][j] = bayer_5[i][j];
  28. break;
  29. }
  30. for (int i = 0; i < 8; i++)
  31. for (int j = 0; j < 8; j++)
  32. DA[i][j] *= 255;
  33.  
  34. for (int i = 0; i < src.rows; i += 8)
  35. {
  36. for (int j = 0; j < src.cols; j += 8)
  37. {
  38. for (int m = 0; m < 8; ++m)
  39. {
  40. if (i + m >= src.rows){ break; }
  41. for (int n = 0; n < 8; ++n)
  42. {
  43. if (j + n >= src.cols){ break; }
  44. res.ptr<uchar>(i + m)[j + n] = (src.ptr<uchar>(i + m)[j + n]>DA[m][n]) ? 255 : 0;
  45. }
  46. }
  47. }
  48. }
  49. }
  50. int main()
  51. {
  52. Mat src = imread("aaa.png", CV_LOAD_IMAGE_GRAYSCALE);
  53. Mat res(src.rows, src.cols, CV_8UC1, Scalar(0));
  54. OD(src, res,0);
  55. int x = 2;
  56. imwrite("OD_B.jpg", res);
  57. }
Add Comment
Please, Sign In to add comment