这是我使用的图像。 (视网膜血管,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;
}
}
}
结果如下。
此图片存在一个问题。 (像蓝圈一样)
制作边缘。
我想删除边缘。 (像黑环) 我该怎么办?
答案 0 :(得分:1)
使用圆形霍夫变换检测大圆圈,然后强制大圆圈外的像素为零,然后就可以移除圆环。