Gaussian Filter in VHDL
The idea of Gaussian convolution is to use the 2-D circularly symmetric Gaussian distribution as a point spread function, and this is achieved by convolution. Since the image is stored as a collection of discrete pixels. A discrete approximation to the Gaussian function is required to perform the convolution. In theory, the Gaussian distribution is non-zero everywhere, which would require an infinitely large convolution kernel, but in practice it is effectively zero more than about three standard deviations from the mean, and so convolution kernel is truncated as :
The Gaussian filter for a 256x256 image requires :
2x256 8-bit shift registers arranged as line buffers
adder tree
The VHDL code for the shift register is :
The VHDL code for the line buffer :
Gaussian Filter top level :
The Test Bench :