I programmed an algorithm for edge detection, i want to compare it with other algorithms but with a criteria (Pratt's figure of merit, GMC1) not only a a visual comparaison.

the thing is PFOM needs an image reference (known ground truth) which i don't have, and i tried to find a GMC1 algorithm but i failed.

if any body can help me with reference images (known ground truth) (xray) or implementation would be much appreciated

  • $\begingroup$ Welcome to DSP.SE! Your question is very ambiguous for me. Can you give links in your question to what you mean by PFOM and GMC1? What do you mean by "reference images"? Do you mean that x-ray images for which a ground truth is known? Please edit your question with these updates and let's see if anyone knows the answer. $\endgroup$
    – Peter K.
    Commented May 3, 2016 at 20:38
  • $\begingroup$ @PeterK. PFOM is pratt's figure of merit and gmc1 is also a criteria to evaluate edge detection algorithms, and yes for "image reference" i meant the ground truth is known, if you have any likns thank you $\endgroup$ Commented May 3, 2016 at 20:57
  • $\begingroup$ Can you please provide links to the specific implementation you are using ? $\endgroup$
    – Peter K.
    Commented May 3, 2016 at 21:00
  • $\begingroup$ link $\endgroup$ Commented May 3, 2016 at 21:03
  • $\begingroup$ The ground truth image is the " real " edge, and you can make it manually. In addition, another way to compare this edge detectors is the PSNR measure. $\endgroup$ Commented May 3, 2016 at 21:47

1 Answer 1


The closest resource I have come across is the BSD500 database:


It is a set of natural images that have had the contours drawn by humans. When you download the test images there are also MATLAB files with all the contours.

However, the question is always "what is an edge?" Is it a step in brightness in the local image patch? Is a line an edge? Is it a boundary between semantic objects in a 2D image? The latter is what the above set tests. The best performing approaches for it also consider an abrupt change in texture to be an edge.

I guess the point is the performance of your edge detector is dependent on the application. One could argue that every edge detector is perfect as it perfectly detects edges according to its own definition. But that is just being cheeky.

You could also test some other properties, such as

  • Is it invariant to rotation? Does the same line at 0 degrees and X degrees give the same result?
  • Is it invariant to scaling? I.e. zooming of the image
  • Is it invariant to view point? I.e. warping of the image
  • Is it illumination invariant? Does it detect true weak edges as well as strong edges?

I also have a new edge detector that I've been working on. One of recent ideas I have had is to use the Mikolajczyk test set. It consists of eight sets of images with various transformations, including the above. Typically the test set is used to evaluate interest point descriptors.

The process would be

  • Detect edges in each image in the set.
  • Using the homographies, transform each detection image back to the first image in the set so they can be compared
  • Compare the edges between images using one of the measures you mention.

Ideally, if the edge detector is invariant to the various translations, the same edges should be found. This approach might have already been done in the literature but I haven't looked.

  • $\begingroup$ thank you this is so helpful, and i will use the links of test images. $\endgroup$ Commented May 6, 2016 at 14:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.