gpt4 book ai didi

algorithm - 我如何获得洪水填充算法来应对封闭的圆圈?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:11 30 4
gpt4 key购买 nike

我有一个应用程序接受图像作为输入并删除拍摄图像的背景。例如,如果您传入毯子上的一本书的图像,则生成的图像将只是具有透明背景的书。

我遇到的问题是当您输入的图像中有很大的空白区域时,例如松紧带floodfill 算法从图像的角落开始并移除图片的背景,但当然它永远不会进入松紧带的内部。

有没有一种方法可以实现这一点,这样我就可以在背景下拍摄一个闭合圆圈的图像,然后只返回循环本身,而内部或外部都没有背景?

最佳答案

您始终可以在每次颜色填充后对图像重新采样,并在您找到与原始背景匹配的颜色时重新开始。

洪水填充算法设计为从一个点开始,然后从那里填充一个受限区域,一个颜色相似的区域。圆圈与该背景颜色不匹配,因此填充算法不会“跳转”它来寻找其他颜色。

解决方案是对不同区域进行淹没。

这是一个非常粗糙的、递归的、缓慢的洪水填充算法(来自内存,未经测试):

public void floodfill(Image img, int x, int y, Color oldColor, Color newColor) {
// Check boundary
if (img.contains(x, y)) {
// Get current pixel color
Color currentColor = img.getColor(x, y);
// Check color match
if (currentColor.equals(oldColor)) {
// Set to new color
img.setColor(x, y, newColor);

// Start again on each of the neighbors
floodFill(img, x - 1, y, oldColor, newColor);
floodFill(img, x + 1, y, oldColor, newColor);
floodFill(img, x, y - 1, oldColor, newColor);
floodFill(img, x, y + 1, oldColor, newColor);
}
}
}

关于algorithm - 我如何获得洪水填充算法来应对封闭的圆圈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816809/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com