这是我使用的图像。 (视网膜血管,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; } }
结果如下。
这张图片有一个问题。 (如蓝色-圆圈)
边缘已制成。
我想去除边缘。 (像黑环) 我该怎么办?
最佳答案
用圆霍夫变换检测大圆,然后将大圆外的像素强制归零,即可去除圆环。
关于c++ - 我想删除背景(就像黑环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48615558/