7

I need to count out boxes in a warehouse by using edge detection techniques; images will be taken from a 3D model of a warehouse and the propose system will be used 3 images in 3 different angles to cover the whole area of a warehouse.

As I have no experience in image processing before I'm a bit confused about which algorithm to use.

sha123
  • 119
  • 3
  • 10
  • 1
    Try http://stackoverflow.com/questions/1391212/best-articles-to-start-learning-about-edge-detection-image-recognition – PaulG Aug 22 '10 at 09:32
  • 3
    That's a very very complicated problem to solve! I doubt you will receive a comprehensive answer on SO, your best bet would probably to search google on some research papers. – Tom Gullen Aug 23 '10 at 10:29
  • 5
    Sorry for the bluntness: This sounds like "I have no piloting experience, could you tell me how to fly a 747 from London to Tokyo". Read a couple of books about image processing and computer vision, implement algorithms, experiment with them. Before you do that, I don't think you can tackle a problem like this. – Niki Aug 23 '10 at 20:20

5 Answers5

10

For a quick start I would suggest looking at those two:

These are the most widely used edge detection filters with pretty good results.

If you are starting to learn computer vision, you should also learn about typical operations in image processing and convolution.

The OpenCV library is a great library which implements many algorithms of computer vision, including the two operators mentioned above.

Smi
  • 13,850
  • 9
  • 56
  • 64
Karel Petranek
  • 15,005
  • 4
  • 44
  • 68
  • Thank u so much for ur comment, I hv selected canny as my alogrithm, if I used OpenCV or Mathlab my lecturer won't be much happy, do u hv any suggestion to find out details or tutorials of canny implementation in C# ? – sha123 Aug 22 '10 at 09:57
  • There's a nice CodeProject article about Canny implementation in C#: http://www.codeproject.com/KB/cs/Canny_Edge_Detection.aspx – Karel Petranek Aug 22 '10 at 19:09
2

Check out AForge. It has full C# implementation of some edge detection algorithms.

Gilad
  • 2,876
  • 5
  • 29
  • 40
0

Take a look at Image Processing Library for C++ question. You can find several useful links there. The suggested libraries not only have algorithm description but also their implementations.

Community
  • 1
  • 1
Ihor Kaharlichenko
  • 5,944
  • 1
  • 26
  • 32
  • Thank u for ur comment, but I'm using C# as my programming language – sha123 Aug 23 '10 at 10:46
  • It's up to you for sure. But image processing of this level is quite resource consuming stuff, performance matters. Therefore it would be unwise to entrust it to a managed runtime. OpenCV has some low-level optimizations, they even suggest Intel processors explicitly. But if you insist on C# you can easily create managed wrappers on top of unmanaged DLLs. – Ihor Kaharlichenko Aug 23 '10 at 18:43
0

OpenCV has a very nice algorithm which detects closed contours in an image and returns them as lists of points. You can then throw away all contours which don't have 4 points, and then check some constraints of the remaining ones (aspect ratio of the rectangles, etc...) to find your remaining box sides. This should at least solve the image processing part of your problem, though turning this list of contours into a count of boxes in your warehouse is going to be tough.

Check here for the OpenCV function:

http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#findcontours

http://opencv.willowgarage.com/documentation/drawing_functions.html#drawcontours

rcv
  • 6,078
  • 9
  • 43
  • 63
0

'Sujoy Filter' is better than Sobel Filter for Edge-detection. Here's the Julia implementation (with paper link): Sujoy Filter

SKG
  • 145
  • 1
  • 8