2

我正在尝试从加载到 HTML5 Canvas 中的照片图像中去除背景。想想像绿屏效果这样的东西。

我正在使用 HTML/JS/jQuery

例如,照片的背景将是绿色窗帘。由于照明等原因,窗帘的颜色不会准确。

我现在正在做的是获取用户在画布中单击的像素的 RGB 值。这被认为是背景。我添加该像素的 R+G+B 来设置被视为背景的内容。

然后,我将逐个像素地浏览画布,检查像素是否接近设置为背景的 RGB 值(例如在 50 上下)。如果匹配,我将像素更改为在画布中透明。

这作为概念证明效果很好,但不足以做任何事情。

有没有人对背景减法有更好的想法?

干杯!

4

1 回答 1

3

看看GrabCut 算法或GrowCut算法;前者描述了“使用迭代图形切割的前景提取”,后者描述了“元胞自动机的图像分割”。这两篇论文将使您更深入地了解一些用于删除背景图像数据的旧算法。如果您可以以某种方式在 Javascript 中实现其中一种算法,那么我认为您已经完成了大部分工作。

OPENcv计算机视觉库(用 c/c++ 编写)有很多有效的图像处理方法可供检查。您可以尝试将OPENcv 库的 BackgroundSubtractor方法之一(我相信它部分基于Chris Stauffer 和 WEL Grimson 的算法)移植到 Javascript,然后使用它来分析背景并因此减去它,但我认为它们是基于渐进式的视频帧而不是静态图像。

Google 代码上的js-aruco 项目已经移植了OPENcv 库的一些功能(代码库在这里)所以你可能想先去那里寻找一些灵感,然后,如果你觉得勇敢,看看如何您可以对GrabCutGrowCut算法进行编程

于 2012-10-24T16:26:51.237 回答