简体   繁体   English

在实际项目开发之前,用于特征检测(SIFT等)原型设计的OpenCV GUI版本?

[英]GUI version of OpenCV for feature-detection (SIFT etc.) prototyping before actual project development?

I had an idea for which I need to be able to recognize certain objects or models from a rendered three dimensional digital movie. 我有一个想法,我需要能够从渲染的三维数字电影中识别某些物体或模型。

After limited research, I know now that what I need is called feature detection in the field of Computer Vision. 经过有限的研究,我现在知道我所需要的是计算机视觉领域的特征检测。

So, what I want to do is: 所以,我想做的是:

  1. create a few screenshots of a certain character in the movie (eg. front/back/leftSide/rightSide) 在电影中创建某个角色的一些屏幕截图(例如,前/后/左侧/右侧)
  2. play the movie 播放电影
  3. while playing the movie, continuously create new screenshots of the movie 在播放电影时,不断创建电影的新截图
  4. for each screenshot, perform feature detection (SIFT?, with openCV?) to see if any of our character appearances are there (they must still be recognized if the character is further away and thus appears smaller, or if the character is eg. lying down). 对于每个屏幕截图,执行特征检测(SIFT ?,使用openCV?)以查看我们的任何角色外观是否存在(如果角色距离较远并且因此看起来较小,或者如果角色是例如,则必须仍然可以识别它们。下)。
  5. give a notice whenever the character is found 找到角色时发出通知

This would be possible with OpenCV, right? 这可以通过OpenCV实现,对吗?

The "issue" is that I would have to learn c++ or python to develop this application. “问题”是我必须学习c ++或python来开发这个应用程序。 This is not a problem if my movie and screenshots are applicable for what I want to do. 如果我的电影和屏幕截图适用于我想要做的事情,这不是问题。

So, I would like to first test my screenshots of the movie. 所以,我想首先测试我的电影截图。 Is there a GUI version of OpenCV that I can input my test data and then execute it's feature detection algorithms manually as a means of prototyping? 是否有OpenCV的GUI版本,我可以输入我的测试数据,然后手动执行它的特征检测算法作为原型设计的手段?

Any feedback is appreciated. 任何反馈都表示赞赏。 Thanks. 谢谢。

There is no GUI of OpenCV able to do what you want. 没有OpenCV的GUI可以做你想要的。 You will be able to use OpenCV for some aspects of your problem, but there is no ready-made solution waiting there for you. 您将能够在问题的某些方面使用 OpenCV,但没有现成的解决方案等着您。

While it's definitely possible to solve your problem, the learning curve for this problem is quite long. 虽然它确实可以解决您的问题,但这个问题的学习曲线很长。 If you're a professional, then an alternative to learning about it yourself would be to hire an expert to do it for you. 如果你是一名专业人士,那么自己学习它的另一种方法就是聘请专家为你做这件事。 It would cost money, but save you time. 这会花钱,但节省你的时间。

EDIT 编辑

As far as template matching goes, you wouldn't normally use it to solve such a problem because the thing you're looking for is changing appearance and shape. 就模板匹配而言,你通常不会用它来解决这个问题,因为你正在寻找的东西是改变外观和形状。 There aren't really any "dynamic parameters to set". 实际上没有任何“动态参数可以设置”。 The closest thing you could try is have a massive template collection that would try to cover the expected forms that your target may take. 你可以尝试的最接近的事情是有一个庞大的模板集合,试图覆盖你的目标可能采取的预期形式。 But it would hardly be an elegant solution. 但它几乎不是一个优雅的解决方案。 Plus it wouldn't scale. 另外它不会扩展。

Next, to your point about face recognition. 接下来,关于面部识别的观点。 This is kind of related, but most facial recognition applications deal with a controlled environment: lighting, distance, pose, angle, etc. Outside of that controlled environment face detection effectiveness drops significantly. 这是一种相关的,但大多数面部识别应用处理受控环境:照明,距离,姿势,角度等。在该受控环境之外,面部检测效果显着下降。 If you're detecting objects in a movie, then your environment isn't really controlled. 如果您正在检测电影中的对象,那么您的环境就不会受到真正的控制。

You may want to first try a simpler problem of accurately detecting where the characters are, without determining who they are (video surveillance, essentially). 你可能想先试试准确检测里面的人物是,一个简单的问题,而不确定自己是 (视频监控,本质上)。 While it may sound simple, you'll find that it's actually non-trivial for arbitrary scenes. 虽然听起来很简单,但你会发现它对于任意场景来说实际上都是微不足道的。 The result of solving that problem may be useful in identifying the characters. 解决问题的结果可能有助于识别字符。

There is Find-Object by Mathieu Labbé . MathieuLabbéFind-Object It was very helpful for me to start getting an understanding of the descriptors since you can change them while your video is running to see what happens. 对我来说,开始理解描述符非常有帮助,因为你可以在视频运行时更改它们,看看会发生什么。

This is probably too late, but might help someone else looking for a solution. 这可能为时已晚,但可能会帮助其他人寻找解决方案。

Well, using OpenCV you would of taking a frame of a video file and do any computations on it. 好吧,使用OpenCV,您可以获取视频文件的帧并对其进行任何计算。

You can do several different methods of detecting a character on that image, but it's not so easy to have it as flexible so you can even get that person if it's lying on the floor for example, if you only entered reference images of that character standing. 您可以使用几种不同的方法来检测该图像上的字符,但要使其具有灵活性并不是那么容易,因此如果您的人躺在地板上,例如,如果您只输入该字符的参考图像,您甚至可以获得该人。

Basically you could try extracting all important features from your set of reference pictures and have a (in your case supervised) learning algorithm that gets a good feature-vector of that character for classification. 基本上,您可以尝试从您的参考图片集中提取所有重要特征,并拥有(在您的情况下是监督的)学习算法,该算法可以获得该角色的良好特征向量以进行分类。

You then need to write your code that plays the video and which takes a video frame let's say each 500ms (or other as you desire), gets a segmentation of the object you thing would be that character and compare it with the reference values you get from your learning algorithm. 然后,您需要编写播放视频的代码,并使用视频帧,例如每500毫秒(或其他您想要的),获取对象的分段,然后将该字符与您获得的参考值进行比较从你的学习算法。 If there's a match, your code can yell "Yehaaawww!" 如果有匹配,你的代码可以喊“Yehaaawww!” or do other things... 或做其他事情......

But all this depends on how flexible you want this to be. 但这一切都取决于你想要的灵活性。 You could also try a template match or cross-correlation which basically shifts the reference image(s) over the frame and checks how equal both parts are. 您还可以尝试模板匹配或互相关,这基本上将参考图像移动到帧上并检查两个部分的相等程度。 But this unfortunately is very sensitive for rotation, deformations or other noise... so you wouldn't get that person if its ie laying down. 但不幸的是,这对于旋转,变形或其他噪音非常敏感...所以如果它放下,你就不会得到那个人。 And I doubt you can get all those calculations done in realtime... 我怀疑你可以实时完成所有这些计算......

Basically: Yes OpenCV is good to use for your image processing/computer vision tasks. 基本上:是的,OpenCV非常适合用于图像处理/计算机视觉任务。 But it offers a lot of methods and ways and you'd need to find a way that works for your images... it's not a trivial task though... 但是它提供了很多方法和方法,你需要找到一种适用于你的图像的方法......虽然这不是一项微不足道的任务......

Hope that helps... 希望有帮助......

Have you tried computer vision frameworks like Cassandra ? 您是否尝试过像Cassandra这样的计算机视觉框架? There you can exactly do that just by some mouse clicks. 只需点击一下鼠标就可以完全实现。

Have you tried looking at some of the work of the Oxford visual geometry group? 你有没有尝试过看牛津视觉几何组的一些工作?

Their Video Google system describes to a large extent what you want, instance detection. 他们的Video Google系统在很大程度上描述了您想要的实例检测。

Their work into Naming People in TV shows is also pretty relevant. 他们在电视节目中命名人的工作也非常重要。 A face detection and facial feature pipeline is included that can be run from Matlab. 包含可以从Matlab运行的面部检测和面部特征管道。 Are you familiar with Matlab? 你熟悉Matlab吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM