SRAD (Speckle Reducing Anisotropic Diffusion) is a diffusion method for ultrasonic and radar imaging applications based on partial differential equations (PDEs). It is used to remove locally correlated noise, known as speckles, without destroying important image features.
Our CUDA implementation of SRAD is composed of three kernels. In each grid upstate step, the first kernel performs a reduction by calculating a reference value using the mean and variance of a user specified image region which defines the speckle. Using the reference value from the first kernel, the second kernel updates each data element using the values of its cardinal neighbors. The last kernel updates each data element of the result grid of the second kernel using the element’s north and west neighbors. The application iterates over these three kernels, with more iterations producing an increasingly smooth image.