在OpenCV中规范化Retina图像背景

时间:2017-11-20 23:53:58

标签: c++ image opencv normalization

我一直在处理视网膜的图像,我已阅读了许多帖子,我试图复制,我读了一篇文章,他们使用下面的公式来规范化,并且图像的底部不会影响血液只有那个时候在OpenCV中使用它才能以相同的方式工作,所以我不知道我怎么能正常化,这样血管不会受到视网膜底部的影响。接下来,我留下我使用的代码,

 using namespace cv;
 using namespace std;


 int main(int argc, char** argv ){
    Mat green= cv::imread("green.png");
    Mat img= cv::imread("img.jpg");

    double minVal; 
    double maxVal; 


    minMaxLoc( green, &minVal, &maxVal);

    cout << "min val : " << minVal << endl;
    cout << "max val: " << maxVal << endl;

    double minVal2; 
    double maxVal2; 
    double media = 58;
    minMaxLoc( img, &minVal2, &maxVal2);

    cout << "min val : " << minVal2 << endl;
    cout << "max val: " << maxVal2 << endl;

    Mat eqIm(green.rows,green.cols,green.type());
    int nl = img.rows; // number of lines
    int nc = img.cols * img.channels();
    for (int j = 0; j<nl; j++) {// j is each row
        for (int ec = 0; ec < nc; ec++) {//ec is each col and channels
            eqIm.data[j*img.cols*img.channels() + ec] = 
            ((green.data[j*img.cols*img.channels() + ec] - (maxVal)) *(((maxVal2-minVal2/((minVal)-(maxVal)))+ (minVal2))));
      }
  }


 imwrite("eqIm.png", eqIm);



 waitKey(0);
 return 0;
}

我也显示了图像的结果,下面你可以看到原始图像:

  • retina original
  • green image

结果图片:

result image

使用的公式:

Normalization equation

0 个答案:

没有答案