【发布时间】:2015-04-28 18:13:44
【问题描述】:
我目前正在尝试分割血管的超声图像(视频帧),例如正下方的那个。
在饱和通道上使用一个简单的二元滤波器(下面的代码),我可以得到一个不令人满意的结果,例如下面的第三张图片。当然,我尝试使用 OpenCV Imgproc.dilate() 将过滤区域扩大几个像素,但这样做的问题是它增加了将过滤区域与相邻黑色区域连接的机会,这会导致不可接受的精度损失后续计算。
如果在这种分割方面有经验的人能够向我指出一种很好的技术,可以实时(30 帧/秒)实现接近下面第二张图像的效果,那就太好了!
如何分割这个基础图像:
所以看起来更像是这种手绘分割:
虽然饱和通道上的简单二元滤波器不是那么好:
我的饱和度过滤函数(java):
public static Mat threshold_onsat (Mat frame, Mat hsv_frame, int saturation){
double sat = (double) saturation;
List<Mat> lhsv = new ArrayList<Mat>(3);
Mat masked = new Mat();
Core.split(hsv_frame, lhsv);
Mat sat_mask = lhsv.get(1);
Imgproc.threshold(sat_mask, sat_mask, sat, 255D, Imgproc.THRESH_BINARY_INV);
frame.copyTo(masked, sat_mask);
return masked;
}
【问题讨论】:
-
这真的很酷,问题也很好,但只想指出一点:我有一个朋友正在攻读一个非常相似的主题的博士学位。我想说的是,如果有人至少要工作 3 年才能让这样的东西正常工作,你可能无法得到这个问题的答案。祝你好运
-
建议:搜索医学图像分割的文献。关卡集是一种常见的方法。
-
@AnderBiguri 是的,我确实意识到了这一点。但是,我认为无论如何都值得问。尝试没有成本,对吧? :-) 感谢您的建议!
-
选择自动分割的重心作为起点。从那里向外部发射光线并绘制强度值。 Ma也许您在放置手动分割的区域周围看到了一些“模式变化”。
标签: opencv image-processing computer-vision image-segmentation