I remember learning about how edge detection works. So basically since an edge is basically a sharp contrast across the two sides of a curve, we can apply/convolute a linear filter on both the horizontal and vertical directions to eliminate areas with low frequency. Then, to account of diagonal edges (i.e. edges that are not perfectly horizontal or vertical), we can take the norm of its horizontal and vertical gradients and use a cutoff value to detect the edges in an image. Similarly, I believe that corner detection basically follow the same concept, with the only difference being that we are now looking for high frequency across all directions (implication of a corner).
diana-qing
How does edge detection work for blurry images and noisy images? I imagine blur and graininess would make it harder to determine what is actually an edge, so what properties does an edge detection algorithm use to determine if a pixel is actually part of an edge or if its just noise? Or is there preprocessing done on the image, such as trying to deblur it first?
SKwon1220
It's incredible how edge detection has revolutionized vision-based applications not only within AI/ML, but also in other interdisciplinary fields such as medical imaging, robotic vision, optics, and more. The most common application of this is in object detection, where sharp contrasts in color and pixelations are leveraged to identify objects in images. Today, object detection is more prevalent than ever, from navigation systems in autonomous vehicles to infrared software in security cameras due to its efficiency in preserving semantically important information in visual mediums.
llejj
I think that edge detection can be implemented with a high-pass filter, but is there more nuance to it than that?
Liaminamerica2
Edge Detection is useful as it can detect objects and extract text and features. Luckily, if anyone needs to use the Canny, Sobel, Laplacian, and Scharr Edge Detection implementations in Python, it is available as a part of the cv2 package. Each implementation has its strengths and weaknesses, so you must consider the tasks you're trying to accomplish before picking one.
I remember learning about how edge detection works. So basically since an edge is basically a sharp contrast across the two sides of a curve, we can apply/convolute a linear filter on both the horizontal and vertical directions to eliminate areas with low frequency. Then, to account of diagonal edges (i.e. edges that are not perfectly horizontal or vertical), we can take the norm of its horizontal and vertical gradients and use a cutoff value to detect the edges in an image. Similarly, I believe that corner detection basically follow the same concept, with the only difference being that we are now looking for high frequency across all directions (implication of a corner).
How does edge detection work for blurry images and noisy images? I imagine blur and graininess would make it harder to determine what is actually an edge, so what properties does an edge detection algorithm use to determine if a pixel is actually part of an edge or if its just noise? Or is there preprocessing done on the image, such as trying to deblur it first?
It's incredible how edge detection has revolutionized vision-based applications not only within AI/ML, but also in other interdisciplinary fields such as medical imaging, robotic vision, optics, and more. The most common application of this is in object detection, where sharp contrasts in color and pixelations are leveraged to identify objects in images. Today, object detection is more prevalent than ever, from navigation systems in autonomous vehicles to infrared software in security cameras due to its efficiency in preserving semantically important information in visual mediums.
I think that edge detection can be implemented with a high-pass filter, but is there more nuance to it than that?
Edge Detection is useful as it can detect objects and extract text and features. Luckily, if anyone needs to use the Canny, Sobel, Laplacian, and Scharr Edge Detection implementations in Python, it is available as a part of the cv2 package. Each implementation has its strengths and weaknesses, so you must consider the tasks you're trying to accomplish before picking one.