6

我正在使用 .NET 3.5(ASP.NET、SQL Server、C#、WCF、WF 等)构建一个 Web 应用程序,但我遇到了一个主要的设计困境。顺便说一句,这是一个 uni 项目,但我开发的内容 100% 取决于我。

我需要设计一个系统,让我可以拍摄图像并自动裁剪其中的某个对象,而无需用户输入。例如,在道路图片中剪下汽车。我已经考虑了很多,我看不到任何可行的方法。我想这个线程是讨论实现这个目标的问题和可行性。最终,我会获得汽车的尺寸(或任何可能的尺寸),然后将其作为参数传递到 3d 建模应用程序(自定义)中,以渲染 3d 模型。最后一步更可行。种植问题是个问题。我已经想到了各种各样的想法,比如获得汽车的颜色,然后是围绕该颜色的轮廓。因此,如果汽车(示例)是黄色的,则当图像中有黄色像素时,请在其周围进行跟踪。

理想情况下,我希望系统完全自动化。但我想我不可能拥有一切。此外,我的技能是我上面提到的(.NET 3.5、SQL Server、AJAX、网页设计),而不是 C++,但我愿意接受任何解决方案,只是为了看看可行性。

我还找到了这个专利:美国专利 7034848 - System and method for automatic cropping graphics images

谢谢

4

8 回答 8

2

这是完成DARPA 大挑战需要解决的问题之一。谷歌视频有来自获胜团队的项目负责人的精彩演示,他在其中谈到了他们如何解决他们的解决方案,以及其他一些团队如何接近它。相关部分在视频的 19:30 左右开始,但这是一场精彩的演讲,整件事都值得一看。希望它为您解决问题提供了一个良好的起点。

于 2008-10-18T23:40:54.600 回答
2

一种经常用于图像中人脸检测的方法是通过使用 Haar 分类器级联。可以训练分类器级联来检测任何对象,而不仅仅是人脸,但分类器的能力高度依赖于训练数据的质量。

Viola 和 Jones的这篇论文解释了它的工作原理以及如何对其进行优化。

虽然它是 C++,但您可能想看看OpenCV项目提供的图像处理库,其中包括训练和使用 Haar 级联的代码。您将需要一组汽车和非汽车图像来训练系统!

于 2008-10-22T16:50:33.493 回答
2

你说的是一个开放的研究问题,甚至是几个研究问题。解决这个问题的一种方法是通过图像分割。如果您可以安全地假设图像中有一个感兴趣的对象,您可以尝试一种图形-地面分割算法。有很多这样的算法,而且没有一个是完美的。他们通常输出一个分割掩码:一个二值图像,其中图形是白色的,背景是黑色的。然后,您将找到图形的边界框,并使用它进行裁剪。要记住的是,现有的分割算法都不会在 100% 的时间里给你想要的东西。

或者,如果您提前知道需要裁剪哪种特定类型的对象(汽车、人、摩托车),那么您可以尝试对象检测算法。再一次,有很多,也没有一个是完美的。另一方面,如果您感兴趣的对象位于非常杂乱的背景上,其中一些可能比分割效果更好。

总而言之,如果你想追求这一点,你必须阅读大量的计算机视觉论文,并尝试大量不同的算法。如果你尽可能地限制你的问题域,你也会增加成功的机会:例如,将自己限制在少数对象类别中,假设图像中只有一个感兴趣的对象,或者将自己限制在某种类型场景(自然、海洋等)。还要记住,即使是解决此类问题的最先进方法的准确性也有很大的改进空间。

顺便说一句,这个项目的语言或平台的选择是迄今为止最不困难的部分。

于 2008-10-19T02:23:11.883 回答
0

我确实说过照片,所以这可能是一辆黑色背景的黑色汽车。我确实想过指定对象的颜色,然后当找到该颜色时,围绕它进行追踪(高级解释)。但是,对于黑色背景中的黑色物体(换句话说,没有对比度),这将是一项非常困难的任务。

更好的是,我遇到了几个带有 3d 汽车模型的网站。我总是可以使用它,将它粘贴到 3d 模型中,然后渲染它。

3D 模型会更容易处理,而真实世界的照片则更难处理。它确实很烂:(

于 2008-10-18T15:36:53.750 回答
0

我见过的一些最好的尝试是使用大型图像数据库来帮助理解您拥有的图像。如今,您拥有 flickr,它不仅是一个巨大的图像语料库,而且还带有有关图像是什么的元信息的标记。

这里记录了一些这样做的项目:

http://blogs.zdnet.com/emergingtech/?p=629

于 2008-10-18T13:12:05.057 回答
0

从自己分析图像开始。这样,您就可以制定匹配汽车的标准。你可以定义你无法匹配的东西。

例如,如果所有汽车都具有相同的背景,则不需要那么复杂。但是您的示例说明了街道上的汽车。可能有停放的汽车。他们应该被认可吗?

如果您可以访问 MatLab,您可以使用PRTools等专业软件测试您的模式识别过滤器。

我在学习的时候(很久以前:)我用过Khoros Cantata,发现边缘过滤器可以大大简化图像。

但同样,首先定义输入的条件。如果你不这样做,你就不会成功,因为模式识别真的很难(想想破解验证码需要多长时间)

于 2008-10-18T13:31:36.687 回答
-1

如果我没看错……这就是人工智能的亮点。

我认为“最简单”的解决方案是使用基于神经网络的图像识别算法。除非您知道汽车在每张照片中看起来都完全相同,否则这几乎是唯一的方法。

如果完全一样,那么你可以只搜索像素模式,得到边界矩形,并将图像边框设置为矩形的内边界。

于 2008-10-18T12:53:19.353 回答
-1

我认为如果没有真正的用户告诉程序要做什么,你永远不会得到好的结果。这样想:你的程序应该如何决定何时存在超过 1 个有趣的对象(例如:2 辆汽车)?如果您想要的对象实际上是背景中的山怎么办?如果图片内没有任何感兴趣的内容,因此没有选择作为要裁剪的对象怎么办?等等等等……

话虽如此,如果您可以做出如下假设:只会出现 1 个对象,那么您可以尝试使用 using图像识别算法
现在我想起来了。我最近得到了一个关于机器人人工智能和机器人研究技术的讲座。他们的研究继续关于语言交互、进化和语言识别. 但为了做到这一点,他们还需要一些简单的图像识别算法来处理感知环境。他们使用的技巧之一是制作图像的 3D 图,其中 x 和 y 正常 x 和 y 轴和 z 轴是该特定点的亮度,然后他们对红绿值使用相同的技术,和蓝黄色。你瞧,他们有一些(相对)容易的东西,可以用来从感知环境中挑选出物体。
(我非常抱歉,但我找不到他们提供的漂亮图表的链接,这些图表显示了这一切是如何运作的)。

无论如何,关键是他们对图像识别不感兴趣(那么),所以他们创造了一些效果足够好的东西,使用了一些不太先进的东西,因此耗时更少,所以有可能为这个复杂的任务创造一些简单的东西。

此外,任何优秀的图像编辑程序都有某种魔杖,可以通过适当的调整来选择您指向的感兴趣的对象,也许这也值得您花时间研究一下。

所以,这基本上意味着你:

  • 必须做出一些假设,否则它会非常失败
  • 最好使用人工智能技术,更具体地说是图像识别
  • 可以看看paint.NET和他们的魔杖算法
  • 尝试利用这样一个事实,即一张好的照片将在图像中间的某处有感兴趣的对象

..但我并不是说这是您问题解决方案,也许可以使用更简单的方法。

哦,我会继续寻找那些链接,它们包含一些关于这个主题的非常有价值的信息,但我不能保证任何事情。

于 2008-10-18T13:28:31.983 回答