When the impulse falls between two pixels, the amount of light should be distributed over those two pixels, so that the total amount emitted stays the same. However, we use a nonlinear encoding to map these physical values to numbers, which is called gamma compression. So in case of an 8-bit encoding, if 1 lumen is mapped to 255, then 0.5 lumen would correspond to a value of say 186, instead of 128. The display hardware uses the reverse of this mapping to emit the intended amount of light from each display pixel, so everything works fine as long as gamma is accounted for in the whole pipeline.
However, if you have a gamma-compressed image, you must be careful when doing any transformations on this image in the digital domain, because the pixel values live in a non-linear space, and this must be taken into account when transforming them!
E.g. let's say we have our 0.5 pixel/frame animation from above, encoded with gamma=0.45:
And in post-processing you resize this video to 0.5x of the original size, with software that naïvely blends the pixel values when shrinking the image:
However, if you have a gamma-compressed image, you must be careful when doing any transformations on this image in the digital domain, because the pixel values live in a non-linear space, and this must be taken into account when transforming them!
E.g. let's say we have our 0.5 pixel/frame animation from above, encoded with gamma=0.45:
And in post-processing you resize this video to 0.5x of the original size, with software that naïvely blends the pixel values when shrinking the image: Oops! The intensity is no longer constant, which is going to be visible as twinkling when viewing the video.