Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从照片中提取对象_Algorithm_Image Processing_Background_Detection_Flood Fill - Fatal编程技术网

Algorithm 从照片中提取对象

Algorithm 从照片中提取对象,algorithm,image-processing,background,detection,flood-fill,Algorithm,Image Processing,Background,Detection,Flood Fill,我目前正在编写一个程序,可以从照片中提取对象(通过检测和删除背景) 该程序以以下方式处理用户输入:用户用绿色标记前景区域,用红色标记背景区域。然后,程序将图像的每个像素与前景或背景相关联。 这样做的目的是让它以最少的用户输入工作。可以在这里找到一个工作示例:或在这里 到目前为止,我使用的算法是将一个根像素与图像的每个像素相关联。根像素始终是由用户标记的像素(这意味着它始终是明确的前景或背景)。一旦所有像素都有其根像素,所有具有背景根像素的像素都将被删除(其alpha值设置为0) 为了将根与每个像

我目前正在编写一个程序,可以从照片中提取对象(通过检测和删除背景)

该程序以以下方式处理用户输入:用户用绿色标记前景区域,用红色标记背景区域。然后,程序将图像的每个像素与前景或背景相关联。 这样做的目的是让它以最少的用户输入工作。可以在这里找到一个工作示例:或在这里

到目前为止,我使用的算法是将一个根像素与图像的每个像素相关联。根像素始终是由用户标记的像素(这意味着它始终是明确的前景或背景)。一旦所有像素都有其根像素,所有具有背景根像素的像素都将被删除(其alpha值设置为0)

为了将根与每个像素相关联,我使用了泛光填充算法。 用户标记的每个像素都是整体填充算法的第一个像素。但是,算法没有改变像素的颜色,而是改变了它们的根像素,使其成为启动算法的标记像素。当像素的根已经比当前标记的像素更近(按颜色距离)时,泛光填充停止

由于最初的像素没有根,用户选择的第一个像素将是图像中所有像素的根。这样做的一个副作用是,无论我们是从选择前景开始还是从选择背景开始,即使选择的像素相同,也不会得到相同的结果(因为像素最初要么是全部前景,要么是全部背景)

问题在于,某些区域没有与右根关联,这会留下大量的散乱像素(背景中的点与前景根像素或前景中的整体与背景根像素)。现在我还没有找到一种方法来去除这些像素。在处理之前对图像应用中值模糊似乎有帮助,但如果模糊太强,则结果对象的清晰度会大大降低

我想知道是否有一种方法可以在不使用强模糊的情况下抑制这些杂散像素。有人试过做类似的事情吗?这与标准魔杖不同,因为用户选择两个区域(前景和背景)而不是一个,并且图像的每个像素必须与其中一个区域关联


我愿意接受任何关于如何改进该算法结果的建议。同样,我正在努力实现的一个工作示例可以在我喜欢的上述两个网站上找到。

对于其他算法,您可以搜索“图形切割分割”。谢谢您的回答,我将在上面搜索。目前,我已经发现了很多有趣的事情感谢图切割分割。