Follow

New Python Shiny app for my image analysis course deployed!

This will accompany the lecture on edge detection methods.

https://apps.nicolaromano.net/EdgeDetection/

Source code is here, feel free to reuse!

https://github.com/nicolaromano/BIA4/tree/main/Apps/EdgeDetection

@CrisLuengo Thanks for raising that point. I have been thinking about this and I am wondering, though, wouldn't the same reasoning work for say, Sobel? Unless you threshold the gradient magnitude you are not really extracting edges by convoluting with a Sobel kernel.

Similarly, while the LoG is not per se an edge detector, finding its zero-crossings allows you to detect edges (indeed, you can also use LoG as a blob detector by finding its extrema).

So, is it just a question of semantics (LoG as a filter used in edge detection vs LoG as an edge detector), or is there more?

I am curious, as there is definitely a lot of literature saying that LoG is an edge detector.

@nicolaromano The Sobel kernel estimates the first order derivative, it gives high values at edges. Thus, it points out how likely it is for a pixel to be on an edge. It isn’t the type of detector that gives a yes/no output, but the type that gives a likelihood.

The LoG converts the problem of finding edges into the problem of finding zero crossings. This might be an easier problem (it was to Marr and Hildreth). But it doesn’t solve the whole problem on its own.

@CrisLuengo right, that makes sense, thanks for clarifying!

Cris Luengo@CrisLuengo@fosstodon.org@nicolaromano Please don’t repeat the misunderstanding of calling the LoG an edge detector in your course. It is not an edge detector, it is a line (or ridge) detector. First derivatives respond to edges, second derivatives respond to extrema.

See here for more details: https://stackoverflow.com/a/51414532/7328782