laser speckle noise reduction
I seems to me like wavelets can offer a neat solution to your problem for noise filtering. Just incase you are not aware a wavelet transform uses two filters (also called mother and father wavelet). These two filters result in a sub-signal (also called sub-band) which is of half the size of the original signal. What I mean to say is say your signal length is 100. Upon wavelet transform you get 2 signals each of size 50. One of these signal is a approximation of original signal and the another one is detail signal. Usually the noise component is present in the detail section.

So as to get rid of the noise, what is usually done is to take a wavelet transform. Implementation of it is available in matlab (dwt() ). This will result in two outcomes cA and cD. 

[cA,cD] = dwt(X,'haar')


Then I would suggest you to do usual noise removal algorithms on cD and with cA and cD' (ie. filtered cD) reconstruct the original signal.

cD_1 = someProcessing( cD )

X = idwt(cA, cD_1,'haar')


Please have a look at the following links to get more information on noise filtering with wavelets
1. PhD Thesis titled "Signal Recovery and Noise Reduction with Wavelets" download from HERE.