检测图像中特定特征是否存在的好方法
我已经进行了视频聊天,但像往常一样,很多男人喜欢嗯,滥用这项服务(我让你自行判断这种滥用的性质),这不是我以任何方式认可的,大多数人也不认可我的用户。不,我没有偷过 chatroulette.com :-) 坦率地说,我有点不好意思在这里提出这个问题,但我的问题是技术性的,而且相当具体:
我想根据用户的视频内容过滤/拒绝该内容冒犯性的角色,比如用户在相机上闪现他的垃圾。什么样的图像比较算法适合我的需要?
我花了一周左右的时间阅读了一些科学论文,并了解了多种理论及其实现,例如 SIFT、SURF 和一些基于小波的方法。当然,这些都有缺点和优点。但由于我的图像比较的性质是高度具体的 - 如果在视频中的一系列位置中遇到某个身体部位,则拒绝服务 - 我想知道哪种方法最适合我?
目前,我倾向于以下一些内容(基于小波的加上我认为是一些专有创新的东西): http://grail.cs.washington.edu/projects/query/
上面,我可以简单地绘制有问题的身体部位,并期望有问题的内容根据阈值被视为匹配。话又说回来,我不确定该方法是否对转换是不变的,如果是的话,是哪种类型——这篇论文并没有真正具体说明这一点。
或者,我认为 SURF 实施可以做到这一点,但我担心它可能会给我带来误报。可以训练这样的实现来识别/重视特定特征吗?
我知道这里存在很多关于 SURF 和 SIFT 的问题,但大多数都是通用的,因为它们通常解释如何“比较”两个图像。我的比较是针对特定功能的,而不是通用的。我需要一种方法,它不仅可以比较两个相似的图像,而且可以为我提供一个特征的排名/索引/权重(但是该方法可以让我描述它,无论是图像本身还是其他东西)存在于图像。
I have made a videochat, but as usual, a lot of men like to ehm, abuse the service (I leave it up to you to figure the nature of such abuse), which is not something I endorse in any way, nor do most of my users. No, I have not stolen chatroulette.com :-) Frankly, I am half-embarassed to bring this up here, but my question is technical and rather specific:
I want to filter/deny users based on their video content when this content is of offending character, like user flashing his junk on camera. What kind of image comparison algorithm would suit my needs?
I have spent a week or so reading some scientific papers and have become aware of multiple theories and their implementations, such as SIFT, SURF and some of the wavelet based approaches. Each of these has drawbacks and advantages of course. But since the nature of my image comparison is highly specific - to deny service if a certain body part is encountered on video in a range of positions - I am wondering which of the methods will suit me best?
Currently, I lean towards something along the following (Wavelet-based plus something I assume to be some proprietary innovations):
http://grail.cs.washington.edu/projects/query/
With the above, I can simply draw the offending body part, and expect offending content to be considered a match based on a threshold. Then again, I am unsure whether the method is invariable to transformations and if it is, to what kind - the paper isn't really specific on that.
Alternatively, I am thinking that a SURF implementation could do, but I am afraid that it could give me false positives. Can such implementation be trained to recognize/give weight to specific feature?
I am aware that there exist numerous questions on SURF and SIFT here, but most of them are generic in that they usually explain how to "compare" two images. My comparison is feature specific, not generic. I need a method that does not just compare two similar images, but one which can give me a rank/index/weight for a feature (however the method lets me describe it, be it an image itself or something else) being present in an image.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来你不需要特征检测,而是对象识别,即 Viola-Jones 方法。
看一下 OpenCV 附带的 FaceDetect.cpp 示例(还有几个现成的 haarcascade:人脸检测器、身体检测器...)。它还使用图像特征,称为哈尔小波。您可能对使用颜色信息感兴趣,请查看 CamShift 算法(OpenCV 中也提供)。
Looks like you need not feature detection, but object recognition, i.e. Viola-Jones method.
Take a look at facedetect.cpp example shipped with OpenCV (also there are several ready-to-use haarcascades: face detector, body detector...). It also uses image features, called Haar Wavelets. You might be interested to use color information, take a look at CamShift algorithm (also available in OpenCV).
这更多的是关于计算机视觉。您必须识别图像/视频序列中的对象,无论如何......为此,您可以使用许多不同的算法(其中大多数在谱域中工作,这就是您必须使用变换的原因)。
为了准确,您还需要一个知识库,或者至少需要一些定义对象的描述符。
尝试 OpenCV,它已经实现了一些算法(包括基本描述符)。
您可以“训练”一些应用程序/算法(例如神经网络)并能够根据训练来识别对象。其中大多数(至少是好的)并不是很受欢迎,只能在计算机视觉、物体识别、人工智能等专业的研究小组中找到。
祝你好运!
This is more about computer vision. You have to recognize objects in your image/video sequence, whatever... for that, you can use a lot of different algorithms (most of them work in the spectral domain, that's why you will have to use a transformation).
In order to be accurate, you will also need a knowledge base or, at least, some descriptors that will define the object.
Try OpenCV, it has some algorithms already implemented (and basic descriptors included).
There are applications/algorithms out there that you can "train" (like neural networks) and are able to identify objects based on the training. Most of them (at least, the good ones) are not very popular and can only be found in research groups specialized in computer vision, object recognition, AI, etc.
Good luck!