Jun 07 2007

A Simple De-speckle Algorithm

Published by at 10:33 pm under Algorithms

This algorithm attempts to find out whether a Pixel is a speckle in the scanned Image. A speckle can be roughly defined as an Impulse noise that has a very high/low value compared to its neighbors.

Normally, a median filter is good in reducing the speckle. But, applying median to remove speckle is not efficient. So an efficient way to do de-speckle is determine whether a pixel is a speckle and then apply Median or some other averaging technique.

Here is a way you can determine whether a pixel is a speckle quite fast. For this method to work you need to analyze the speckle pattern offline to figure out the threshold value.

Void SpeckleDetectAndCorrect ( char * source, int NumPixels )


/* We assume that the pixel of inerest is NumPixels/2+1. That is if the NumPixels is 5, then the 3rd pixel is the point of interest.*/

sum = source[0] + source[1] + source[3] + source[4];

Average = sum /4 ;

if (( Average – source[2]) > abs(20) )


/*this is a speckle Hence Apply Median*/

ApplyMedian(source, NumPixels )



Comments Off on A Simple De-speckle Algorithm

Comments are closed at this time.