Is there anybody can help me interpret "Edge points may be located by the maxima of the module of the gradient, and the direction of edge contour is orthogonal to the direction of the gradient."
-
1Have you studied math (calculus)? do you know what a gradient is? – leonbloy Jan 12 '12 at 15:31
-
yeah,but I just have a basic concept of gradient. – Gary Gauh Feb 02 '12 at 04:43
2 Answers
Paul R has given you an answer, so I'll just add some images to help make the point.
In image processing, when we refer to a "gradient" we usually mean the change in brightness over a series of pixels. You can create gradient images using software such as GIMP or Photoshop.
Here's an example of a linear gradient from black (left) to white (right):
The gradient is "linear" meaning that the change in intensity is directly proportional to the distance between pixels. This particular gradient is smooth, and we wouldn't say there is an "edge" in this image.
If we plot the brightness of the gradient vs. X-position (left to right), we get a plot that looks like this:
Here's an example of an object on a background. The edges are a bit fuzzy, but this is common in images of real objects. The pixel brightness does not change from black to white from one pixel to the next: there is a gradient that includes shades of gray. This is not obvious since you typically have to zoom into a photo to see the fuzzy edge.
In image processing we can find those edges by looking at sharp transitions (sharp gradients) from one brightness to another. If we zoom into the upper left corner of that box, we can see that there is a transition from white to black over just a few pixels. This transition is a gradient, too. The difference is that the gradient is located between two regions of constant color: white on the left, black on the right.
The red arrow shows the direction of the gradient from background to foreground: pixels are light on the left, and as we move in the +x direction the pixels become darker. If we plot the brightness sampled along the arrow, we'll get something like the following plot, with red squares representing the brightness for a specific pixel. The change isn't linear, but instead will look like one side of a bell curve:
The blue line segment is a rough approximation of the slope of the curve at its steepest. The "true" edge point is the point at which slope is steepest along the gradient corresponding to the edge of an object.
Gradient magnitude and direction can be calculated using horizontal and vertical Sobel filters. You can then calculate the direction of the gradient as:
gradientAngle = arctan(gradientY / gradientX)
The gradient will be steepest when it is perpendicular to the edge of the object.
If you look at some black and white images of real scenes, you can zoom in, look at individual pixel values, and develop a good sense of how these principles apply.

- 3,976
- 18
- 32
-
Many thanks for the detailed answer.I want to develop a blood cell counting system ,could you please tell me what should I learn and what the process of it is ? – Gary Gauh Feb 02 '12 at 09:36
-
I would that you get a good image processing textbook such as **Digital Image Processing** by Gonzalez and Woods (3rd edition). You can find bits and pieces of information about image processing online, but having a textbook will help a lot. To see how different algorithms work, you could download ImageJ (http://rsbweb.nih.gov/ij/). That would allow you to start working on sample images right away. Once you know what algorithms to use, you can learn about those algorithms, implement them, and make necessary changes. Learning image processing takes time. Good luck! – Rethunk Feb 03 '12 at 03:10
Object edges typically result in a step change in intensity. So if you take the derivative of intensity it will have a large (positive or negative) value at edges and a smaller value elsewhere. If you can identify the direction of steepest gradient then this will be at right angles to (orthogonal to) the object edge.

- 208,748
- 37
- 389
- 560
-
Many thanks for the detailed answer.I want to develop a blood cell counting system ,could you please tell me what should I learn and what the process of it is ? – Gary Gauh Feb 02 '12 at 09:39
-
1It sounds like you need to start by reading a few good books on **image processing** and **computer vision**. You might also want to take a look at OpenCV. – Paul R Feb 02 '12 at 09:59