如何在Grabcut算法中删除不需要的空格?

2视觉2

我已经使用Grabcut算法实现了背景减法。但是我在源图像的裁剪图像中有一些不需要的空白。如何删除裁切图像的空白?

脚步:

  1. 从相机读取视频并读取图像。我的输入图片:在此处输入图片说明

  2. 应用Grabcut算法。

    cv :: grabCut(图片,
    结果,
    矩形1,bgModel,fgModel,1,cv :: GC_INIT_WITH_RECT); cv :: compare(结果,cv :: GC_PR_FGD,结果,cv :: CMP_EQ);

  3. 来自源的裁剪后的前景图像。

    cv ::垫前景(image.size(),CV_8UC3,cv :: Scalar(255,255,255)); image.copyTo(foreground,result);

  4. 我的输出图像:

在此处输入图片说明

如何从图像中删除面部区域的空白?

磁石

我可以想到三种解决方案。所有这些都应应用于结果提取区域(即,使用Grabcut算法后得出的区域):

解决方案1

对于位于提取区域边界上的每个像素:

  1. 拍摄该像素的近邻,该像素也属于所提取对象的边界。

  2. 将直线A拟合到属于该邻域的像素(openCV具有执行此功能的函数:fitline()

  3. 计算垂直于拟合线线B。

  4. 删除/B线上属于您的区域的像素,这些像素属于用Grabcut算法提取的区域。

如果在您的应用程序中用户可以手动执行此操作(例如,通过单击图像并选择某个选项),则以上给出的算法可以在此阶段解决问题-用户可以根据需要执行此操作多次,并删除一些固定的,硬编码的每次执行该操作时沿B线的像素数,或者提供每次调用该操作时应删除的像素数。

如果要在没有任何用户交互的情况下执行该操作,则另一个问题是确定应删除沿线B的多少像素该问题的解决方案取决于您要处理的图像的相似程度,以及背景是否均匀或颜色梯度的变化可能很大。例如,您可以将边界上的像素值与背景(或背景的一部分,如果背景不是均匀颜色)的平均像素值进行比较-如果它们足够相似(并且您必须找出,对于您的特定应用足够相似),像素将被删除。

解决方案2

迭代边界像素,并将其值与背景像素值进行比较(解决方案1中的详细信息)。如果像素的值与背景值足够相似(请参阅:解决方案1),请删除像素。

解决方案3

每次用户执行此操作时,边框像素将被删除而不会影响其值。该操作的深度(即接近要去除的边缘的像素数)可以是硬编码的,也可以由用户指定。您可以将其视为一种图像侵蚀


解决方案1可能会产生更准确的结果,特别是在假定用户手动执行此操作的情况下,而解决方案2更易于实现且计算复杂度较低。

解决方案3是最简单的方法,也是最不准确的方法,因为每次执行该操作时,整个图片都会被裁剪,而不仅仅是实际需要裁剪的部分。在许多情况下,这可能几乎看不到,因此也值得尝试。同样,该解决方案仅在用户手动执行此操作时才适用(因为该算法将无法确定应删除多少个像素)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Grabcut算法中删除不需要的空格?

来自分类Dev

如何在CSS中删除不需要的空格

来自分类Dev

如何在python中删除不需要的字符

来自分类Dev

如何在Android中删除不需要的字符?

来自分类Dev

如何在JSON中删除不需要的编码符号

来自分类Dev

如何在Nautilus中删除不需要的默认书签?

来自分类Dev

如何删除不需要的空格和换行符

来自分类Dev

删除XML(Javascript)中的标签之间不需要的空格

来自分类Dev

如何从字符串中删除不需要的字符,如空格和换行符

来自分类Dev

如何在图像链接之前删除不需要的空间

来自分类Dev

如何在网站顶部删除不需要的广告?

来自分类Dev

如何在图像链接之前删除不需要的空间

来自分类Dev

如何从jQuery中的段落中删除不需要的元素

来自分类Dev

如何在Intellij Idea的代码清除中自动删除不需要的换行符

来自分类Dev

如何在div包裹img中删除不需要的空间?

来自分类Dev

如何在具有高级窗口列表的irssi中删除多余的(不需要的)阻止项?

来自分类Dev

如何在Visual Studio 2013中删除不需要的垂直空白

来自分类Dev

如何在双启动系统中增加我的Linux分区并删除不需要的分区

来自分类Dev

如何从XML中删除不需要的标签

来自分类Dev

如何从数据框中删除不需要的行?

来自分类Dev

如何从数组输入中删除不需要的值?

来自分类Dev

如何删除HTML画布中不需要的行?

来自分类Dev

如何从数组中删除不需要的值

来自分类Dev

如何使用python从列表中删除不需要的元素

来自分类Dev

如何从JSON请求中删除不需要的字符

来自分类Dev

如何从tinymce 4.0.6中删除不需要的html标签

来自分类Dev

如何从Modern UI Weather中删除不需要的位置?

来自分类Dev

如何从Django Oscar中删除不需要的语言?

来自分类Dev

如何从git中删除不需要的文件

Related 相关文章

  1. 1

    如何在Grabcut算法中删除不需要的空格?

  2. 2

    如何在CSS中删除不需要的空格

  3. 3

    如何在python中删除不需要的字符

  4. 4

    如何在Android中删除不需要的字符?

  5. 5

    如何在JSON中删除不需要的编码符号

  6. 6

    如何在Nautilus中删除不需要的默认书签?

  7. 7

    如何删除不需要的空格和换行符

  8. 8

    删除XML(Javascript)中的标签之间不需要的空格

  9. 9

    如何从字符串中删除不需要的字符,如空格和换行符

  10. 10

    如何在图像链接之前删除不需要的空间

  11. 11

    如何在网站顶部删除不需要的广告?

  12. 12

    如何在图像链接之前删除不需要的空间

  13. 13

    如何从jQuery中的段落中删除不需要的元素

  14. 14

    如何在Intellij Idea的代码清除中自动删除不需要的换行符

  15. 15

    如何在div包裹img中删除不需要的空间?

  16. 16

    如何在具有高级窗口列表的irssi中删除多余的(不需要的)阻止项?

  17. 17

    如何在Visual Studio 2013中删除不需要的垂直空白

  18. 18

    如何在双启动系统中增加我的Linux分区并删除不需要的分区

  19. 19

    如何从XML中删除不需要的标签

  20. 20

    如何从数据框中删除不需要的行?

  21. 21

    如何从数组输入中删除不需要的值?

  22. 22

    如何删除HTML画布中不需要的行?

  23. 23

    如何从数组中删除不需要的值

  24. 24

    如何使用python从列表中删除不需要的元素

  25. 25

    如何从JSON请求中删除不需要的字符

  26. 26

    如何从tinymce 4.0.6中删除不需要的html标签

  27. 27

    如何从Modern UI Weather中删除不需要的位置?

  28. 28

    如何从Django Oscar中删除不需要的语言?

  29. 29

    如何从git中删除不需要的文件

热门标签

归档