这是我使用的图像。 (视网膜血管,DRIVE数据库)
首先,它通过预处理过程。
预处理过程如下。
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/