Skip to end of metadata
Go to start of metadata

Fill in the table below with information about your extension:


SAR processing tools that can perform speckle removal, edge detection and segmentation

AuthorYiwei Zhang

Latest Version1.0
Updated On2010-08-16


Supported Opticks Releases: 


Supported Operating Systems: 

Windows 32-bit
Windows 64-bit
Solaris SPARC 64-bit
Linux 64-bit

Support Requests: Ask Yiwei Zhang for assistance on the Opticks Mailing Lists or contact


This extension includes some general image processing algorithms. It includes the following:

          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.

  • Wavelet based speckle removal">Wavelet based speckle removal
    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.

  • Edge detect">Edge detect
    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.

  • Image segmentation">Image segmentation
    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.

How do I get started?">How do I get started?
  • Download and install this extension. Learn how to install Opticks extensions.
  • Look under the "SAR Processing" menu for the respective algorithms

Screenshots and Videos

A SAR crops image on the left and the speckle removed image on the right.

A SAR filed image on the left and the edge detected image on the right.

A SAR river outlet image on the left and the segmented image on the right.

All Downloads

All source code are available at 

Testing SAR images can be obtained at

  1. Aug 11, 2014

    Is a windows 7 64 bit for Optics 411 being worked on?