使用阈值进行分割

时间:2014-02-25 05:17:46

标签: image opencv segment

我目前正在Ubuntu 12.04.03上使用OpenCV 2.9来执行某种基于阈值的提取。 到目前为止,我在下面的源图像上执行了阈值threshold( tmp_gray, tmp_bin, 120, 255, CV_THRESH_BINARY );和形态学操作。我尝试了变化的阈值范围,但似乎有些噪音正在被拾取。

source image

并得到一个看起来像

的面具

mask image

我能够用src.copyTo( roi, tmp_gray );之类的东西裁剪图像

roi image

然而,我真正想要的只是白色图像区域内的内部图像。我怀疑如果我能把面具弄好,这将是直截了当的。

我很感激任何可能有用的指导。

3 个答案:

答案 0 :(得分:1)

您可以将图像转换为HSV颜色空间,并使用饱和通道。这使得下面的图像很容易达到阈值(由于更高的ROI)

enter image description here

编辑:只是尝试了阈值~100,并给出了相当不错的结果。我确定有办法进一步改善这一点。

enter image description here

答案 1 :(得分:0)

您可以尝试以下

  1. 在阈值处理之前在源上应用blur()。

  2. 降低阈值。

  3. 按图片投资回报率

  4. 忽略边界区域

答案 2 :(得分:0)

感谢@Haris和@James

最终获得阈值图像后

threshold image

然后我使用抓取来获取

preferred segmented image

注意:我发现使用GrabCut之前的阈值处理比仅仅使用GrabCut或Threshold产生了更好的结果