大致的步骤是1.首先都读取的图片进行平滑处理
2.对图片进行腐蚀
3.运用Canny算子把图像转换成二值图,并提取边缘
4.对图片进行膨胀处理
5.依次读取每个轮廓,并筛选出面积合理的轮廓,也就是图像中的导管
traverse
=
cvStartFindContours(cannyImage,storage,
sizeof
(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);
contours = cvFindNextContour(traverse);
while (contours != NULL)
{
i++;
if (cvContourArea(contours,CV_WHOLE_SEQ)>1500)
{
cvDrawContours(myImage,contours,CV_RGB(255,255,255),CV_RGB(255,0,231),2,1,CV_AA);
}
contours=cvFindNextContour(traverse);
}
printf( " %d " ,i);
contours = cvEndFindContours( & traverse);
contours = cvFindNextContour(traverse);
while (contours != NULL)
{
i++;
if (cvContourArea(contours,CV_WHOLE_SEQ)>1500)
{
cvDrawContours(myImage,contours,CV_RGB(255,255,255),CV_RGB(255,0,231),2,1,CV_AA);
}
contours=cvFindNextContour(traverse);
}
printf( " %d " ,i);
contours = cvEndFindContours( & traverse);
以上就是导管筛选的大致步骤,显示效果还行,就是有些破裂的导管无法检测出来,目前还在改进中。