使用 SIFT/VLFEAT 的图像描述符
我想执行一项分类任务,其中将对象的给定图像映射到该对象可能位于的预定义星座列表之一(即找到最可能的匹配)。 为了获得图像的描述符(我将在其上运行机器学习算法),建议我使用 SIFT 和 VLFeat 实现。
首先我的主要问题 - 我想忽略 sift 的关键点查找部分,而仅将其用于其描述符。在教程中我看到有一个选项可以通过调用
来做到这一点 [f,d] = vl_sift(I,'框架',fc) ;
其中 fc 指定关键点。我的问题是我想明确指定 我想在其中计算关键点周围的描述符的边界框 - 但似乎我只能指定一个比例参数,该参数现在对我来说有点神秘,并且不允许我显式指定边界框。有办法实现这一点吗?
第二个问题是手动设置比例并以这种方式获取描述符是否有意义? (即产生一个好的描述符?)。关于获取描述符的更好方法还有其他建议吗? (将 SIFT 与其他实现或其他非 SIFT 描述符一起使用)。我应该提到的是,我的对象始终是图像中唯一的对象,居中,具有恒定的照明,并通过其内部部分的某种旋转而变化 - 这就是为什么我认为 SIFT 会像我理解的那样工作方向梯度会随着物体的旋转而相应变化。
谢谢
I want to perform a classification task in which I map a given image of an object to one of a list of predefined constellations that object can be in (i.e. find the most probable match).
In order to get descriptors of the image (on which i will run machine learning algorithms) i was suggested using SIFT with the VLFeat implementation.
First of all my main question - I would like to ignore the key-point finding part of sift, and only use it for its descriptors. In the tutorial I saw that there is an option to do exactly that by calling
[f,d] = vl_sift(I,'frames',fc) ;
where fc specifies the key-points. My problem is that I want to explicitly specify the
bounding box in which i want to calculate the descriptors around the key-point - but it seems i can only specify a scale parameter which right now is a bit cryptic to me and doesn't allow me to specify explicitly the bounding box. Is there a way to achieve this?
The second question is does setting the scale manually and getting the descriptors this way make sense? ( i.e. result in a good descriptor? ). Any other suggestions regarding better ways of getting descriptors ? ( using SIFT with other implementations, or other non-SIFT descriptors ). I should mention that my object is always the only object in the image, is centered, has constant illumination, and changes by some kinds of rotations of its internal parts - And this is why I thought SIFT would work out as i understood it focuses on the orientation gradients which would change accordingly with the rotations of the object.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
同意描述符比例看起来有点神秘这一事实。
请参阅 VLFeat SIFT 教程 中的第三张图片,其中他们将提取的描述符叠加在图像上使用以下命令,
您可以使用比例来查看提取直方图的区域是否符合您的预期。
如果您对成像环境有足够的控制权,SIFT 听起来对您的应用程序来说可能有点大材小用,但它应该可以工作。
Agreed about the fact that the descriptor scale looks a bit cryptic.
See the third image in the VLFeat SIFT tutorial where they overlay the extracted descriptors on the image with the following commands
You can thus play with scale and see if the region where the histogram is extracted jives with what you expected.
SIFT sounds like it might be overkill for your application if you have that much control over the imaging environment but it should work.
嘿。
浏览本论文的背景章节可能会有所帮助:
http://www.cs.bris.ac.uk/Publications /pub_master.jsp?id=2001260
我需要时间来解释该比例,因此请尝试阅读它并查看相关引文。顺便说一句,在那项工作中,描述符是在基本分辨率下使用的,即比例〜1。
希望这会有所帮助。
Hey.
It might help looking through the background chapter of this Thesis:
http://www.cs.bris.ac.uk/Publications/pub_master.jsp?id=2001260
it would take time for me to explain about the scale so try reading it and see the relevant citation. Btw in that work the descriptors are used at base resolution, i.e. scale ~ 1.
Hope this helps.
也许我不明白这个问题,但是,如果查询图像必须与火车图像数据库相匹配,并且火车和测试图像的照明、比例都是恒定的……也许这里不需要 SIFT。你可以看看相关性。你用的是matlab吗?
http://docs.opencv.org/doc /tutorials/imgproc/histograms/template_matching/template_matching.html#template-matching “在这里”您可以看到一个使用 opencv 关联的示例。
Maybe I did not understood the problem, but, if the query image must be matched against a database of train images, and both train and test images are constant in illumination, scale, ... maybe SIFT is not necessary in here. You could have a look on correlation. Are you using matlab?
http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html#template-matching "Here" you can see an example using correlation with opencv.