这是我使用的图像。 (视网膜血管,DRIVE数据库)

首先,它通过预处理过程。
预处理过程如下。

  • 高斯滤波器适用于去除噪声。 (并绘制BGR直方图)
    cv::GaussianBlur(gassimg, gassimg, cv::Size(3,3),1.0, 1.0);
    
  • 用平均值替换背景并设置阈值。
    (距离中心50 * 50的区域)
    for (int y = imgrow/2 -25; y < imgrow/2 +25; ++y) {
    for (int x = imgcol/2 -25; x < imgcol/2 +25; ++x) {
        b += tempimg.at<cv::Vec3b>(y, x)[0];
        g += tempimg.at<cv::Vec3b>(y, x)[1];
        r += tempimg.at<cv::Vec3b>(y, x)[2];
        }
    }
    r = r / (2500);
    g = g / (2500);
    b = b / (2500);
    
    for (int y = 0; y < tempimg.rows; ++y) {
    for (int x = 0; x < tempimg.cols; ++x) {
        if ((tempimg.at<cv::Vec3b>(y, x)[0] <=30) || tempimg.at<cv::Vec3b>(y, x)[1] <= 30 || tempimg.at<cv::Vec3b>(y, x)[2] <= 30)
        {
            tempimg.at<cv::Vec3b>(y, x)[2] = r;
            tempimg.at<cv::Vec3b>(y, x)[1] = g;
            tempimg.at<cv::Vec3b>(y, x)[0] = b;
        }
    }
    


  • 结果如下。

    此图像有一个问题。 (如蓝色-圆圈)

    边缘已制成。



    我想去除边缘。 (如黑环)
    我该怎么办?

    最佳答案

    使用圆hough变换检测大圆,然后将大圆外的像素强制为零,然后可以删除圆。

    关于c++ - 我要删除背景(就像黑环一样),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48615558/

    10-12 22:15