X11 Window System : Edge Detection using Convolution Theorem and Kernel Matrix


NameEdge Detection
Compilergcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
Window System versionxorg-x11-server 1.17.4-17.el6.centosxorg-x11-server 1.20.3-5.el8
Operating systemCentOS release 6.10 (Final)CentOS Linux release 8.0.1905 (Core)
Kernel release2.6.32-754.el6.x86_644.18.0-80.el8.x86_64
Kernel version#1 SMP Tue Jun 19 21:26:04 UTC 2018#1 SMP Tue Jun 4 09:19:46 UTC 2019
GNOME version2.
Web browserMozilla Firefox version: 52.8.0 (64-bit)Mozilla Firefox Quantum 60.5.1 ESR (64-bit)
Integrated Development EnvironmentLazarus IDE 2.0.4 x86_64-linux-gtk2
ProcessorHyper Threads 8x Intel Xeon W3565 3.20 GHz
MemoryECC DDR3 1066 MHz 20 GB
Graphics Processor 1PixelView NVidia GeForce GT 440 2 GB
Graphics Processor 2Leadtek NVidia Quadro 2000 1 GB
Display Devices2x DELL U3011
Storage DeviceMirror RAID-1 Array 2x Seagate Baracuda 4 TB

Description :

Edge detection is an image processing technique for finding the boundaries of objects within images. It works by detecting discontinuities in brightness.
Edge detection is used for image segmentation and data extraction in areas such as image processing, computer vision, and machine vision.
Edge detection includes a variety of mathematical methods that aim at identifying points in a digital image at which the image brightness changes sharply or has discontinuities.
The points at which image brightness changes sharply are typically organized into a set of curved line segments termed edges.
Edge detection is a very old problem in computer vision which involves detecting the edges in an image to determine object boundary and thus separate the object of interest.

RGB Conversion :

RGB conversion obtained from International Telecommunication Union, Radiocommunication Sector, Broadcasting service (television).
The user can choose which one is used to calculate of the RGB conversion.
1.ITU-R BT.601-7Studio encoding parameters of digital television for standard 4:3 and wide-screen 16:9 aspect ratios.Geneva, 2017
2.ITU-R BT.709-6Parameter values for the HDTV standards for production and international programme exchange.Geneva, 2015
3.ITU-R BT.2020-2Parameter values for ultra-high definition television systems for production and international programme exchange.Geneva, 2015

Methods :

There are many methods for edge detection.
The edge detection methods that have been published mainly differ in the types of smoothing filters that are applied and the way the measures of edge strength are computed.
1.As many edge detection methods rely on the computation of image gradients, they also differ in the types of filters used for computing gradient estimates in the x- and y-directions.
Technically, it is a discrete differentiation operator, computing an approximation of the gradient of the image intensity function.
At each point in the image, the result is either the corresponding gradient vector or the norm of this vector.
2.Some edge detection methods use compass kernel, this is a non-linear edge detector that finds the maximum edge strength in a few predetermined directions..
The operator takes a single kernel mask and rotates it in 45 degree increments through all 8 compass directions: N, NW, W, SW, S, SE, E, and NE..
The edge magnitude is calculated as the maximum magnitude across all directions..

Algorithm :

This program uses a multi-stage algorithm to detect a wide range of edges in images.
The process of edge detection algorithm can be broken down to 4 different steps.
1.Apply Gaussian filter to smooth the image in order to remove the noise.
Since all edge detection results are easily affected by image noise, it is essential to filter out the noise to prevent false detection caused by noise.
2.Find the best of edge detection methods by select from 14 methods in this program.
3.Apply double threshold to determine potential edges.
If an edge pixel's gradient value is higher than the high threshold value, it is marked as a strong edge pixel.
If an edge pixel's gradient value is smaller than the high threshold value and larger than the low threshold value, it is marked as a weak edge pixel.
If an edge pixel's value is smaller than the low threshold value, it will be suppressed.
4.Track edge by hysteresis.
Finalize the detection of edges by suppressing all the other edges that are weak and not connected to strong edges.
If a pixel gradient is higher than the upper threshold, the pixel is accepted as an edge.
If a pixel gradient value is below the lower threshold, then it is rejected.
If the pixel gradient is between the two thresholds, then it will be accepted only if it is connected to a pixel that is above the upper threshold.

Viewer Window :

The program will capture a 1000 x 750 area at posision 0 x 0 and will be replayed inViewer Window.
How to change the size of the capture area ? Please resize of theViewer Window, it will be change the size of the capture area.
How to change the position of the capture area ? Please click and dark inside of theViewer Window, it will be change the position of the capture area.

X11 Window Server configuration :

Bits per Pixel32
Byte OrderLSB First
Bit OrderLSB First
Red Mask00FF0000
Green Mask0000FF00
Blue Mask000000FF

Requires dependencies :

libpthread.so.0 (GLIBC_2.2.5)libpthread.so.0(GLIBC_2.3.2)
libm.so.6 (GLIBC_2.2.5)libm.so.6(GLIBC_2.2.5)
libc.so.6 (GLIBC_2.4)libc.so.6(GLIBC_2.14)
libdl.so.2 (GLIBC_2.2.5)libdl.so.2(GLIBC_2.2.5)
ld-linux-x86-64.so.2 (GLIBC_2.3)ld-linux-x86-64.so.2(GLIBC_2.3)

Example :

Menu window :

Wait ... Loading