How can I reduce textured paper patterns in an old scanned photo?
Asked 7/20/2014
7 views
2 answers
0
I scanned an old printed photo, but the scan shows a visible paper/print texture pattern. I tried using an FFT-based method, but I’m not seeing clear frequency spikes to remove, and the pattern is still there. What’s a good way to reduce this kind of texture while keeping as much image detail as possible?
Originally by Photography Stack Exchange contributor. Source · Licensed CC BY-SA 4.0
Photography Stack Exchange contributor
12y ago
2 Answers
1
There are some sophsticated filters that are implemented in software such as the G'MIC plugin of GIMP. You can try this online here. I've never used G'MIC for texture removal and I have not installed it on my present computer, so I'm not sure if it has a good filter that works well for this case.
Now, if some standard method doesn't work well, you can always try to examine the structure of the texture to see if some simple mathematical formula would be able to sort most of them out. If that works reasonably well then it may be that after you have processed the image yourself, a standard filter will work better (e.g. what is left may now have a sharp periodic structure and you can then easily remove that using FFT).
In this case, you can see that the structures are elongated in the horizontal direction while in the verical direction it is usually just two pixels wide. This means that you can write a simple program that checks for each pixel the difference between the brightness and that of of the average of the pixels two steps above and below. If it is large then is likely due to the texture and you replace the pixel value by the average, otherwise you don't change it. Now, you want to stay away from edges, so you also want to check if the the pixel values 3 steps above and below are not too different from each other.
So, let's try to implement this using the free of charge ImageJ program. We split the picture in the 3 color components and apply the following macro to each component:
m1 = getPixel(x,y+2);m2 = getPixel(x,y-2); m3 = getPixel(x,y+3);m4 = getPixel(x,y-3);df = m3-m4; if(df<0) df =-df; av=(m1+m2)/2; w=v-av; if(w<0) w=-w; if(df<20) if(w>15) if(v>40) v=av
So, if df is too large we're probably near an edge and we then don't want to proceed, if this is not the case then if w is large then that means that the pixel value differs a lot from the average of the pixels two steps above and below and if the pixel value itself is larger than 40 then that's very likely due to the texture being there, we then want to replace the value by that average. The result is then as follows:

Now, this is of course a very crude way of removing the texture, so there is a lot of room for improvement.
Originally by user28357. Source · Licensed CC BY-SA 4.0
user28357
12y ago
0
Generated from our catalog & community — verify before relying on it.
A practical approach is to use restoration/smoothing filters rather than relying only on FFT. Based on the community answers, G'MIC (for GIMP) is a good tool to try, especially filters like Remove Hotspots followed by Smooth [Bilateral]. That combination can reduce the texture pattern while preserving edges better than simple blur.
If FFT isn’t showing obvious spikes, the texture may not be strongly periodic enough for easy frequency removal. In that case, spatial-domain cleanup is often more effective. You can also inspect the texture direction/shape first; if you can simplify the pattern with targeted processing, FFT may work better afterward.
So the best next step is: try G'MIC texture-reduction/restoration filters first, then apply light bilateral smoothing and fine-tune to avoid over-softening facial details or grain.
Recommended products
UniqueBot
AI12y ago
Your Answer
Related Questions
How can I remove textured photo paper patterns from scanned prints?
How can I reduce wave-shaped white stripes when scanning textured old photos?
How can I reduce CMYK halftone patterns when scanning printed artwork?
How can I improve a scan of an inkjet-printed photo when the original file is unavailable?
How can I remove visible CMYK halftone dots when scanning a printed poster?