A new method for edge detection based on LMC was developed and tested.
An edge is not a physical entity, just like a shadow. It is where the
picture ends and the wall starts. It is where the vertical and the
horizontal surfaces of an object meet. It is what happens between a bright
window and the darkness of the night. Simply speaking, it has no
width. If there were sensor with infinitely small footprints and
zero-width point spread functions, an edge would be recorded between pixels
within in an image. In reality, what appears to be an edge from the
distance may even contain other edges when looked close-up. The edge
between a forest and a road in an aerial photo may not look like an edge any
more in a image taken on the ground. In the ground image, edges may be
found around each individual tree. If looked a few inches away from a
tree, edges may be found within the texture on the bark of the tree. Edges
are scale-dependent and an edge may contain other edges, but at a certain scale,
an edge still has no width.
Traditionally, edges have been loosely defined as pixel intensity
discontinuities within an image. While two experimenters processing the
same image for the same purpose may not see the same edge pixels in the image,
two for different applications may never agree. In a word, edge detection
is usually a subjective task. As a user of an edge detector, one should
not expect the software to automatically detect all the edge he or she wants and
nothing more, because a program can not possibly know what level of details the
experimenter has in mind. Usually it is easy to detect those obvious
edges, or those with high S/N ratio. But what about those not very
obvious? If a program detects all the pixel intensity discontinuities in
an image, the result image will not be very much different from one fill of
noise. On the other side, as a developer of an edge detector, one should
not try to create a program that automatically produces the ideal result each
and every user has in mind, because nobody can read other people's mind.
Instead, a developer try to: 1) create a good but simple way to let the users
express their idea about the edges they have in mind regarding a specific image;
and to 2) implement a method to detect the type of edges a user ordered.
In another word, an edge detector can not possibly be 100 percent
automatic. It must be interactive, requiring a few input parameters at
The quality of edge detection is limited by what's in the image.
Sometimes a user knows there should be an edge somewhere in the image but it is
not shown in the result. So he adjusts the parameters of the program,
trying to get the edge detected. However, if the edge he has in mind is
not as obvious to the program as some other features he does not want detect, he
will get the other "noise" before the desired edge is detected.
Edge detecting programs process the image "as it is". As a human
being, an experimenter knows there is an edge because he is using knowledge in
addition to what's contained in the image. How to use such knowledge about
the real world in the process of general edge detection is a huge topic that I
would like to watch from a safe distance for the time being. For example,
if the program knows an edge is that of a road and it is likely that it will
continue on the other side of a tree branch, then it may have a chance to detect
the edge of each and every visible part of a road behind a tree; otherwise, some
small and not so obvious pieces of the edge may remain undetected. In a
simplified special case, an edge detector may be tailored to take advantage of
the domain knowledge. For example, a "straight edge" detector
may be very effective in locating most buildings and objects such as tennis
courts in an aerial photo.
Also because of the subjectivity of edge detection, it is difficult to
compare the performance of two edge detectors on most real-world images.
However, it is quite easy to compare them using synthetic images such as those
shown on a separate page. In those images, the
number of edge pixels should be the same as the height of the image.
Whichever edge detector that produces the most edge pixels along the central
line and the fewest in other areas wins. If an edge detector that performs badly on such images, it is
unnecessary to try it on other real-world images. If it does well on such
synthetic images, however, it may not do well in the real game.
EdgeDetector 1.0, is available for download. Using this program
and a head image from the web, edge
detection results were obtained. So were the results
from the Lena image.
EdgeDetector 1.1 is an improvement over 1.0.
With 1.1, more edges that are close to one another can be detected.
The results from using this newer version show that
more edge details can be detected in synthetic images and the head
Historical experiments that were carried out during the early days of the
development of this method can be seen on a separate page.
Other useful pages related to this topic: