Different from other noise removal filters that may blur the edge, this filter will avoid such effect. The main feature of this filter is that, it will first check whether there is an edge within the neighborhood of current pixel. If so, it will try to figure out the orientation of the edge and to which sub-area the pixel belongs to. Finally it will do the speckle removal based on the local mean and variance of the sub-area that the pixel belongs.

The merit of this filter is that, if there is edge in the neighborhood of the pixel, we can detect the edge and find out the sub-area that the pixel belongs to. This sub-area means that the edge is not within the area while the pixel is in it. When we get the sub-area, we can do a more accurate estimation of the pixel and avoid blurring the original edge

To run the filter based speckle removal, open an image, then select "Filter Speckle Removal" from "SAR Processing" menu.

This method is based on wavelet transform and shrinkage. First, we calculate the logarithm of the original image data to convert multiplicative noise into additive noise. Then, we divide the original image into 128 by 128 blocks and perform discrete shift-invariant wavelet transform. For each block, we estimate the noise variance based on the median of the wavelet coefficients and calculate the corresponding threshold. After that, we perform soft thresholding for all the non-approximate coefficients, that is, if the absolute value is smaller than threshold, it will be set to zero, otherwise the coefficient will be shrink by the value of threshold. The small coefficients usually corresponds to noise. Finally we perform inverse wavelet transform and reconstruct the image which corresponds to the speckle removed result.
Compared to spatial filters, wavelet de-noising has better performance at keeping the edge while less smoothness. Also, the wavelet method consumes more memory because it needs to perform wavelet transform on much larger blocks than spatial filters. But also it is much faster because the latter needs to work on each pixel and its neighbor.

To run the filter based speckle removal, open an image, then select "Filter Speckle Removal" from "SAR Processing" menu.

The allows you to detect the edges within SAR images. Because of the nature of SAR image and multiplicative noise, we should compute the ratio of mean value to see if an edge is present. For a fixed window, we calculate the mean values of neighbor blocks at different directions. If the ratio is lower than the threshold, then it indicates there is an edge. Also I add the code to check if a thin line is present in the window by calculating the ratio of block mean and line mean at all directions. For better performance, we should remove the speckle before detecting edges.
We use different sizes of windows and different thresholds for each window size concurrently. The small window can precisely located the edge pixel, but it is also easy to select an isolated noisy pixel as edge. The larger size window can effectively get ride of isolated noisy points but they tend to produce thicker edge. Our algorithm combines the result of different windows together to produce the final result

To run the filter based speckle removal, open an image, then select "Edge detect" from "SAR Processing" menu. Then a threshold setting dialog will pop up for users to modify the default thresholds if they wish. Smaller threshold indicates higher contrast for an edge to be detected.

This allows you to make segmentation based on the texture feature. Texture can be considered to be repeating patterns of local variation of pixel intensities. For SAR images, different regions, such as sea, fields, mountains, shall have different texture features and we can make segmentation based on the texture feature. This is different from making segmentations based on edge because there are no distinct edges between different regions or the region itself contains many edges inside. For these cases, edges do not separate the regions.
The algorithm is based on the active contour evolution method that maximizes the difference between the inside and outside part of the contour.

First, we calculate the principal curvature at each pixel of the image and initiate an arbitrary contour. Then we calculate the probability density function of the principal curvature for inside and outside part of the contour using Parzen window. We let the contour evolve towards the direction that can increase the KL distance between the PDF functions of the inside and outside part. This procedure is performed iteratively until the KL distance cannot increase. And finally we get the contour of the segmented regions.