Get shape of a recurring pulse event in my plant video signal

I'm studying plants - specifically how the color of their leaves change throughout a day. I have a camera pointing at a leaf which takes a picture every 47 minutes and calculates the average green color.

The result is a timeseries which repeats itself every 30ish samples (plus some noise). It's not particularly well-controlled and the lighting levels change sometimes if e.g. someone turns a nearby light on, an insect happens to be on the leaf when the picture is taken, etc.

My question: How should I go about getting the average shape (exact scale and mean value are unimportant) of this variation over a day?

I have a rough 3 step plan in mind, though I have uncertainty on all 3 steps:

1. Discard data from periods where the signal is obviously useless (some days it's beautifully clear, others not so much e.g. someone turns a light on and the level shifts destroying the shape information).
2. Progressively average together all the sections of interest into a single representative one (Just a straight up average? Can I use a weighting scheme based on a SNR or quality metric?)
3. Decide when I have enough data that I can confidently say I have recovered the shape to a given degree of certainty (using bayes perhaps?)

I am definitely open to getting deeper into some DSP or stats theory to get me through this - if anyone has any pointers I would really appreciate it!

I would also like to know if there is a name for this type of problem (catching enough identical observations until you can faithfully describe the event) I'm sure there is one!

• Would be interesting to throw into SSQ then recover around the range of frequencies where energy is maximal, i.e. Tx[idx-3:idx+3], where idx = argmax(sum(abs(Tx)**2, axis=-1)). This can yield a nice time-frequency curve, and from there we can selectively invert and recover the time-domain waveform. Jun 6 at 1:02