opencv matching edge images

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-05 02:09:04

问题


I am working on the project and part of it is to recognize objects recorded on camera. So to be more specofic:

  • I am using OpenCV

  • I have correctly setup camera and am able to retrieve pictures from it

  • I have compiled and experimented with number of demos from OpenCV

  • I need a scale- AND rotation- invariant algorithm for detection

  • Pictures of original objects are ONLY available as edge-images

All feature detection/extraction/matching algorithms I have seen so far are working reasonably well with gray-scale images (like photos), however due to my project specs I need to work with edge images (kinda like output of canny edge detector) which are typically BW and contain only edges found within the image. In this case the performance of algorithms I was trying to use (SURF, SIFT, MSER, etc) decreases dramatically.

So the actual question is: Has anyone come across algorithm that would be specific for matching edge images or is there a certain setup that can improve performance of SIFR/SURF/? in order to work well with that kind of input.

I would appretiate any advice or links to any relevant resources

PS: this is my first question of stackoverflow


回答1:


Edge images have a problem: The information they contain about the objects of interest is very, very scarce.

So, a general algorithm to classify edge images is probably not to be found. However, if your images are simple, clear and specific, you can employ a number of techniques to classify them. Among them: find contours, and select by shape, area, positioning, tracking.

A good list of shape information (from Matlab help site) includes:

  • 'Area'
  • 'EulerNumber'
  • 'Orientation'
  • 'BoundingBox'
  • 'Extent'
  • 'Perimeter'
  • 'Centroid'
  • 'Extrema'
  • 'PixelIdxList'
  • 'ConvexArea'
  • 'FilledArea'
  • 'PixelList'
  • 'ConvexHull'
  • 'FilledImage'
  • 'Solidity'
  • 'ConvexImage'
  • 'Image'
  • 'SubarrayIdx'
  • 'Eccentricity'
  • 'MajorAxisLength'
  • 'EquivDiameter'
  • 'MinorAxisLength'

An important condition to use shapes in your algorithm is to be able to select them individually. Shape analysis is very sensitive to noise, overlap, etc

Update

I found a paper that may be interesting in this context - it is an object classifier that only uses shape information, and it can be applied on Canny images - it sounds like it's your solution

http://www.vision.ee.ethz.ch/publications/papers/articles/eth_biwi_00664.pdf



来源:https://stackoverflow.com/questions/11578802/opencv-matching-edge-images

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!