Reputation: 133
I am working on edge detection, i tried the method of canny(matlab function). but it only detect edge in the pixel level, I'm looking for a subpixel edge detection algorithm/code with high accuracy.
Upvotes: 1
Views: 5896
Reputation: 21
If you need sub-pixel detection, you can try subpixelEdges()
method in Matlab, described in Accurate Subpixel Edge Location Based on Partial Area Effect (Agustin Trujillo-Pino et al.) and in these Slides.
Upvotes: 0
Reputation: 19333
Most of these sub-pixel edge detection algorithms simply involve upsampling the image, typically with bicubic spline interpolation, and then performing the edge detection on the result, and then downsampling the image to the original resolution again.
Have you tested any of these simple algorithms yet? Are they suitable for your purposes?
The matlab resampling and edge detection algorithms are already quite well documented.
Upvotes: 2
Reputation: 3952
The problem with running edge()
on your original image is that the returned black and white image is the same size as your original image. Can you increase the size of your image with the imresize()
function and do edge detection on that?
Upvotes: 2
Reputation: 114796
AFAIK state-of-the-art edge detection algorithms operate at a pixel-level accuracy (e.g., gPb).
If you want to get sub-pixel accuracy, you may apply a post-processing stage to the pixel-level results obtained by canny or gPb.
You can fit a parametric curve to small neighborhoods of detected edges thus obtaining sub-pixel accuracy.
Upvotes: 3