i.gabor computes texture raster maps from a user-specified Gabor filter bank and raster map. The 2 dimensional Gabor filter is an orientation sensitive filter which mimics the cells within the human visual cortex by creating a filter bank of multiple orientations and scales to pick up different frequency responses. This mimicing or simulation of the visual cortex, and in particular its sensitivity to various orientations, sets the filter aside from other standard texture and edge detectors. Additionally, the Gabor filter has been shown to have high localization optimization/performance in both the spatial and frequency domains. The localized nature of the filter then allows for the parameters to be tweaked and changed to retrieve different features which suit the visual needs of the analysis. Subsequently, the Gabor filter has been used in hyperspectral image classification, water body and river extraction, land use classification and change detection, and is especially powerful when used with Object Based Image Analysis (OBIA) and edge detection algorithms.NumPy to handle the entire raster map in memory. This can result in a bottleneck when processing large raster maps. Additionally, SciPy is used for fast Fourier convolution of the each filter. The module can either produce individual rasters with the suffix of windowsize_orientation_wavelength_offset_aspect for each filter in the bank or a single combined (-c) raster outputting with only the basename.
The default orientations computed will be 0 (East/West), 45 (North-East/South-West), 90 North/South, 135 (North-West/South-East). However, the user can also specify any number of orientations in degrees less than 180 with the orientation option. The window size of the Gabor filter is specified by the user in i.gabor The standard deviation of the Gaussian kernel before it is oscillated is tied to the user-specified window size.
The Gabor filter has both a real and imaginary component which can be used for different purposes. While i.gabor computes the real component by default, the imaginary component can be computed by using the flag -i.
By default i.gabor outputs each Gabor filter convolved raster map as individual raster maps with each part corresponding to its specified value. The -c flag can be used to create a singular combined raster map as the output.
Additionally, i.gabor offers statistical thresholding which will set values below a user-specified percentile (threshold) of the convolved image to 0 while keeping all values above the percentile the same. In conjunction with thresholding, a bitwise quantification (-q) method is implemented for the orientations specified by the user. As an orientation sensitive filter, the Gabor filter is unique in its capabilities to mimic the human visual cortex system when a bank of Gabor filters is used. Common filter banks will consist of between 4 to 8 orientations and scales controlled by the wavelength. Each filter within a bank is subsequently convolved over the raster map for each kernel within the bank. The resulting number of raster maps will be the number of orientations x the number of scales.
orientation = 0, 45, 90, 135 0 = 0b00000001 = 1 45 = 0b00000010 = 2 90 = 0b00000100 = 4 135 = 0b00001000 = 8
g.region n=220272 s=219585 w=638335 e=639313 res=1 i.gabor input=ortho_2001_t792_1m output=ortho_i \ orientation=0,22.5,45,67.5,90,112.5,135,157.5 size=41 wavelength=6 \ threshold=90 -i
g.region n=220272 s=219585 w=638335 e=639313 res=1 i.gabor input=ortho_2001_t792_1m output=ortho_i_8o_41_5 \ orientation=0,22.5,45,67.5,90,112.5,135,157.5 size=41 wavelength=6 \ threshold=90 -c -i
g.region n=220272 s=219585 w=638335 e=639313 res=1 i.gabor input=ortho_2001_t792_1m output=ortho_i_8o_41_5_q \ orientation=0,22.5,45,67.5,90,112.5,135,157.5 size=41 wavelength=6 \ threshold=90 -c -i -q
After the Gabor filter is generated, it can be used for a number of purposes. For instance, we can create a segmented raster map of ortho_2001_t792_1m aided with both the real and imaginary component of the Gabor filter which is able to reduce noise in the output raster map.
g.region n=220272 s=219585 w=638335 e=639313 res=1 # Real component i.gabor input=ortho_2001_t792_1m output=ortho --overwrite \ orientation=0,22.5,45,67.5,90,112.5,135,157.5 size=11 wavelength=2.5 \ -c # Imaginary component i.gabor input=ortho_2001_t792_1m output=ortho_i --overwrite \ orientation=0,22.5,45,67.5,90,112.5,135,157.5 size=11 wavelength=2.5 \ -c -i # Segmentation with just ortho_2001_t792_1m i.segment group=ortho_2001_t792_1m output=ortho_segment --overwrite \ threshold=0.5 minsize=5 # Segmentation with ortho_2001_t792_1m and both Gabor filters i.segment group=ortho_2001_t792_1m,ortho,ortho_i output=gabor_aided_segment \ --overwrite threshold=0.5 minsize=5
Latest change: Sunday Oct 09 15:05:40 2022 in commit: 604a0eb65112d51d15bce4a4895bfc8837baf356
© 2003-2023 GRASS Development Team, GRASS GIS 8.3.1dev Reference Manual