This is a very basic MATLAB implementation of the HiLo algorithm (see References, below) for structured illumination.
After some testing, it seems the speckle algorithm is in effect just bandpass-filtering the image. i.e. The algorithm performs equally well if the speckle image is swapped with a copy of the clean ("non-speckle") image. This has been tested with a few different image series and the result is always the same.
H=hilospeckle(ImageUniform, ImageSpeckle); %Run and show result image
clf, imagesc(H.HiloFinal), axis equal off %re-plot result image
%Change a setting and re-run
H.targetThickness=4;
H.runHiLo
H.showResults
%Swap the speckle image with the unform image and re-run to compare with above
H.speckleIm = H.uniformIm;
H.runHiLo
figure
H.showResults
The example image directory contains images processed via the Mertz lab ImageJ plugin. This allows the output of this code to be validated. As indicated in the above example, the HiLo algorithm produces near identical results if run with two copies of the uniform image. In other words, the speckle image seems to provide little information in many cases. This can be demonstrated using the "Zeiss" images in the example directory. Provided is one raw image and one processed structured illumination image using three gratings in "apotome" mode. Running the HiLo algorithm on two copies of the original image produces results much like the apotome.
References