圖像邊緣是什麼-從數學的角度出發

圖像處理的項目中,要經常用到圖像邊緣的概念,如圖像邊緣檢測,邊緣檢測是進行進一步識別的重要步驟。

本文是前段時間我去stackoverflow問老外圖像邊緣與導數的關係時,一個熱心人給我的回答。

最近比較忙,沒時間把它翻譯出來,先把原文放了出來,以供欣賞。

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.


轉載本文請註明作者和出處[Gary的影響力]http://garyelephant.me,請勿用於任何商業用途!

Author: Gary Gao 關注互聯網、分佈式、高併發、自動化、軟件團隊


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章