FFT on Image Time Series

3 views (last 30 days)
faisal sani
faisal sani on 11 Aug 2022
Commented: Faisal Sani Bala on 17 Oct 2022
I am working on a stream of images ( time series), where the images are captured by camera after illuminating with a sinusoidally modulated light source, I am interested in the response of the object captured by camera to the illuminating light source. Am I to use a one dimensional fft on each pixel location in the time series? two dimensional fft on each pixel location in the time series? or am I to use two dimensional fft on the whole image

Accepted Answer

Jonas
Jonas on 11 Aug 2022
if the object of your camera is more or less static and illuminated with a temporally modulated light source and you are interested in how the object changes its appearance over time, i would use a 1d fft on each pixel location over time. this results into e.g. 200x200 = 40000 complex valued ffts over time if you image is e.g. 200x200. you then have to think about in how to combine those spectra. if you are interested in magnitude, you may e.g. combine the spectra by using e.g. mean, median or max of the magnitude spectra.
take the abs first before using e.g. mean to avoid loss of information due to contrary phase (e.g. imagine two pixels changing values sinusoidally, but one starting black, the other white. due to the 180° phase difference the spectra would delete each other if you dont take abs before e.g. mean)
also delete the mean value of each (not all) Pixel value before fft, since the DC fft coefficient (the mean value, 0 Hz) is usually much bigger in magnitude than the non 0 Hz values. this can be done pixel wise by e.g. vid-mean(vid,3) if vid is a 3d matrix containing the images stream with temporal dimension along dimension 3
  9 Comments
faisal sani
faisal sani on 13 Aug 2022
This is the modification I have made, finally I am having variants of fft based images
finalResult_median = zeros(size(our_images_series,2),size(our_images_series,1));
finalResult_max = zeros(size(our_images_series,2),size(our_images_series,1));
finalResult_min = zeros(size(our_images_series,2),size(our_images_series,1));
k = 1; % counter variable in for loop
for r = 1:size(our_images_series, 1) % for number of rows of the image
for c = 1:size(our_images_series, 2) % for number of columns of the image
finalResult_median(k)= median(pixelwiseFFT(r,c,:));
finalResult_max(k) = max(pixelwiseFFT(r,c,:));
finalResult_min(k) = min(pixelwiseFFT(r,c,:));
k = k+1; % increment counter loop
end
end
Faisal Sani Bala
Faisal Sani Bala on 17 Oct 2022
I am working on a stream of images ( time series), where the images are captured by camera after illuminating with a chirp (non-stationary sinusoidal) light source, I am interested in the response of the object captured by camera to the illuminating light source. Is it possible to develop a single image from the image series based on the wavelet transform for each pixel series?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!