Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. class SauvolaTresholding : public Algorithm {
  2.     public:
  3.         inline SauvolaTresholding() {
  4.             k = 0.2;
  5.             R = 128;
  6.         };
  7.         inline cv::Mat Run(const cv::Mat & image) {
  8.             cv::Mat grayImg;
  9.             cv::cvtColor(image, grayImg, cv::COLOR_BGR2GRAY);
  10.  
  11.             cv::Mat treshImg = grayImg.clone();
  12.  
  13.             for (int i = 1; i < grayImg.rows - 1; ++i)
  14.             {
  15.                 for (int j = 1; j < grayImg.cols - 1; ++j)
  16.                 {
  17.                     float sum = grayImg.at<uchar>(i, j - 1) + grayImg.at<uchar>(i, j + 1) + grayImg.at<uchar>(i - 1, j - 1) + grayImg.at<uchar>(i + 1, j - 1) + grayImg.at<uchar>(i - 1, j + 1) + grayImg.at<uchar>(i + 1, j + 1) + grayImg.at<uchar>(i - 1, j) + grayImg.at<uchar>(i + 1, j);
  18.                     float av = sum / 9;
  19.  
  20.                     float sigma = std::sqrt((std::pow(grayImg.at<uchar>(i, j - 1) - av, 2) + std::pow(grayImg.at<uchar>(i, j + 1) - av, 2) + std::pow(grayImg.at<uchar>(i - 1, j - 1) - av, 2) + std::pow(grayImg.at<uchar>(i + 1, j - 1) - av, 2) + std::pow(grayImg.at<uchar>(i - 1, j + 1) - av, 2) + std::pow(grayImg.at<uchar>(i + 1, j + 1) - av, 2) + std::pow(grayImg.at<uchar>(i - 1, j) - av, 2) + std::pow(grayImg.at<uchar>(i + 1, j) - av, 2)) / (9 - 1));
  21.                     if ( av*(1. + k*((sigma / R )- 1.)) >treshImg.at<uchar>(i, j) ){
  22.                     treshImg.at<uchar>(i, j) = 255}
  23.                     else{
  24.                         treshImg.at<uchar>(i, j) = 255}
  25.                     }
  26.                 }
  27.             }
  28.  
  29.             return treshImg;
  30.  
  31.         }
  32.         float k;
  33.         float R;
  34.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement