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 least.
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 image.
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:
Edge Detection Home Page
Results from the head image || Results from the Lena image
Download EdgeDetector || Download Synthetic Test Images