A method of projecting an image provided as a matrix of pixels (P x,y) with intensities (I i) onto a projection area by means of a light source emitting a train of light pulses (3 i) with variable intensities (I i) and intervals (Δt i) and a MEMS mirror oscillating about a horizontal axis with a horizontal oscillation period (T h) and about a vertical axis with a vertical oscillation period (T v) and deflecting the emitted light pulses (3 i), the method comprising: providing a playout matrix of a horizontal and a vertical duration (d h, d v) for each pixel (P x,y), and for a first half of every horizontal oscillation period (T h), incrementing, and for a second half of every horizontal oscillation period (T h), decrementing a horizontal pixel index (x) whenever one of the horizontal durations (d h) indexed by the current horizontal pixel index (x) in the playout matrix has lapsed; for a first half of every vertical oscillation period (T v), incrementing, and for a second half of every vertical oscillation period (T v), decrementing a vertical pixel index (y) whenever one of the vertical durations (d v) indexed by the current vertical pixel index (y) in the playout matrix has lapsed; for each light pulse (3 i) in the train: retrieving the respective intensity (I i) from the pixel matrix indexed by the current horizontal and vertical pixel indices (x, y), retrieving the respective horizontal and vertical durations (d h, d v) from the playout matrix indexed by the current horizontal and vertical pixel indices (x, y), calculating an interval (Δt i) from at least one of said respective horizontal and vertical durations (d h, d v), emitting said light pulse (3 i) with said retrieved intensity (I i), and waiting said calculated interval (Δt i) before emitting the next light pulse (3 i) in the train. providing a playout matrix of a horizontal and a vertical duration (d h, d v) for each pixel (P x,y), and for a first half of every horizontal oscillation period (T h), incrementing, and for a second half of every horizontal oscillation period (T h), decrementing a horizontal pixel index (x) whenever one of the horizontal durations (d h) indexed by the current horizontal pixel index (x) in the playout matrix has lapsed; for a first half of every vertical oscillation period (T v), incrementing, and for a second half of every vertical oscillation period (T v), decrementing a vertical pixel index (y) whenever one of the vertical durations (d v) indexed by the current vertical pixel index (y) in the playout matrix has lapsed; for each light pulse (3 i) in the train: retrieving the respective intensity (I i) from the pixel matrix indexed by the current horizontal and vertical pixel indices (x, y), retrieving the respective horizontal and vertical durations (d h, d v) from the playout matrix indexed by the current horizontal and vertical pixel indices (x, y), calculating an interval (Δt i) from at least one of said respective horizontal and vertical durations (d h, d v), emitting said light pulse (3 i) with said retrieved intensity (I i), and waiting said calculated interval (Δt i) before emitting the next light pulse (3 i) in the train. retrieving the respective intensity (I i) from the pixel matrix indexed by the current horizontal and vertical pixel indices (x, y), retrieving the respective horizontal and vertical durations (d h, d v) from the playout matrix indexed by the current horizontal and vertical pixel indices (x, y), calculating an interval (Δt i) from at least one of said respective horizontal and vertical durations (d h, d v), emitting said light pulse (3 i) with said retrieved intensity (I i), and waiting said calculated interval (Δt i) before emitting the next light pulse (3 i) in the train.