I was shooting with a Z6, and I had the silent shutter on for my first couple of shots. From what I understand LED lightbulbs can cause this, but I quickly caught it, and changed back to a mechanical shutter.
I don't use Photoshop, so here it is done with Gimp, but I assume the same tools are available on PS:
- Use Wavelet decompose to decompose the image into its frequency components (these are images that are progressively blurrier and which added to each other, rebuild your initial image).
- By flicking the visibility of each layer, identify which layers carry the flicker information, here,
Scale 6and a little bit in
- Create a selection over the area of interest. You don't need to be very accurate, since these layers are rather blurry anyway. Technically, my selection for the image below includes the lamps and part of the beanie... but most information for these is in layers we won't alter.
- In each layer where the flicker is visible, apply an horizontal Gaussian blur to make the stripes disappear
This "banding" is caused by the primary light source in the image varying in intensity over time, and by the (electronic) rolling shutter in the camera converting this variation over time into variation in illumination across the image.
This changing illumination affects the image multiplicatively — i.e. the brightness of a pixel in the image, on each RGB spectral channel, is proportional to the product of the reflectance of the surface illuminating the pixel times the brightness of the light falling on the surface — and thus, in principle, could be cancelled out in Photoshop (or other similar software; I used GIMP 2.10) by a layer containing just the banding pattern, applied on top of the image layer in "divide" mode.
Such a layer could be obtained from any section of the image that happens to feature a flat white surface illuminated by the flickering light — such as the white ceiling on the top of your photo, which conveniently spans the entire width of the image with only a single narrow line interrupting it. In principle, all we need to do is:
- copy a narrow horizontal strip of the ceiling into a new layer,
- edit out the interrupting line,
- scale the layer first down to 1 pixel high (to average the pixels in each vertical column together) and then up to the height of the whole image,
- adjust the color levels of the layer so that the maximum RGB values are exactly 255,
- optionally apply a bit of horizontal blur to smooth out any noise and rounding errors, and
- set the layer mode to "divide".
If you do all that to your photo above, you'll obtain something like this:
You can see, however, that some of the banding still remains. One reason for this is that the banding mask I used is clearly not a perfect reconstruction of the light intensity cycle, and could use some manual editing e.g. to remove the brightness variation due to the varying distance of the lights from the strip of ceiling I used.
However, a bigger issue is that there are clearly multiple light sources in your photo, and only some of them flicker. Which means the some parts of your image (like the ceiling close to the fluorescent lights and also the floor tiles) show stronger banding than other parts (like the subject in the foreground, and also the ceiling further away from the lights).
What we can try to do is adjust the color levels of the banding layer again, this time raising the black point until the parts that look most heavily and annoyingly banded become more or less uniform. For this attempt, I mostly tried to get the floor tiles to look good; I decided that the ceiling was basically a lost cause, especially near the lights, and the person in the foreground actually has enough natural variation in the light angle and intensity that the banding isn't particularly noticeable there.
This does cause some parts of the resulting image, like the top of the ceiling, to now show reverse banding, but the overall result isn't too bad:
One way to try to improve it further would be to add a layer mask to the banding layer and edit it manually to try to adjust the strength of the banding correction in different parts of the photo. Unfortunately it's kind of hard to do that smoothly without making the image look splotchy. Probably the best way is to just select distinct areas of the image separated by high-contrast boundaries and adjust the mask uniformly in each area. Trying to e.g. match the light intensity gradient in the ceiling this way is most likely hopeless.
You could also try to just make several versions of the image with different amounts of banding correction and manually blend them together, but that's likely to have similar issues, although perhaps slightly less risk of major over- or undercorrection.
Also, I only realized while typing this answer that I really should've started the whole process by first converting the photo into a linear color space, i.e. one with gamma = 1.0. I didn't, though, which means that even if there was only one light source in the image and even if I had a perfect reconstruction of its brightness variation, the division still wouldn't cancel it out exactly. But I suspect that in practice this is a relatively minor issue compared to all the other sources of error and non-uniformity noted above.
Banding is very difficult to remove. If you are lucky, the band itself has no falloff of light in itself. Which it seems is not the case here.
However, what you could try, is to basically equalize the striping via dodge & burn in Photoshop.
For that, create a new layer in Photoshop a levels adjustment layer. Then create a mask with a strip pattern that matches the patterns you see on the image and apply a bit of gaussian blur to match the softness of the stripe edges.
Now play with the settings of the levels adjustment and see if you can minimize the stripe effect.
Edit - I found someone who uses a more elaborate version of this on this thread: https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-to-repair-specific-banding-on-a-digital-photo/td-p/10271279?profile.language=de
DaveSCM describes his approach here as following:
You may be able to reduce the effect like this:
Make two copies of the image layer.
Name the lower "Low Frequency"
Name the upper "High Frequency"
Select the low frequency and apply a gaussian blur of around 6px
Select the high frequency layer and goto menu Image - Apply Image Set the layer to use as "Low Frequency" Set Blending mode to subtract Scale 2
Set High Frequency layer blending mode to Linear Light
Put the high frequency layer in a smart object and use High pass adjusting the radius to keep the contrast detail but remove the banding Invert the Smart filter mask so all is black
Use a soft brush to paint on the mask until the banding goes
I added a masked copy of the original and lightly painted back in over any edge "ringing"
Not perfect, it has softened the skin, but IMO easier on the eye than the original banding