You know noisy financial stocks behaviour can be modeled with fractals? Meaning one is the other ;-) So how do you filter one from the other?..
Wavelets can sometimes pick up just the right sort of noise to smooth so it leaves meaningful information mostly untouched.
i = Import["https://i.stack.imgur.com/FzHKm.jpg"];
- Perform DiscreteWaveletTransform - play with choice of wavelet - we pick CDFWavelet
- Threshold wavelet coefficients - play how - we do "SmoothGarrote"
- Synthesize smoothed image using InverseWaveletTransform and compare with original:
Here it is:
dwd = DiscreteWaveletTransform[i, CDFWavelet[]];
thr = WaveletThreshold[dwd, "SmoothGarrote"]
{Image[InverseWaveletTransform[thr], ImageSize -> All], Image[i, ImageSize -> All]}

In this specific case we got lucky and got an impressive result I think. Note - execute on your machine - images you see are a screenshot - it's like listening music through the wall, - but in this case pretty thin wall I guess.
If result would be not that good play with the bold play parts ;-)
Don't ask how it works "exactly" - we both would need read up on wavelets ;-)
Example is taken from Documentation.
ImageFileFilter
. $\endgroup$CurvatureFlowFilter
. $\endgroup$