How to vectorize this function

3 vues (au cours des 30 derniers jours)
Faizan Tahir
Faizan Tahir le 17 Fév 2016
Commenté : Andrei Bobrov le 18 Fév 2016
Hi.
I have a series of images all with the same background but varying foregrounds. I'm looping through all these images and taking median pixel values to calculate the background so I can perform background subtraction. It works well but the code is slow because it contains a double for loop. How can I vectorize the following code?
for x = 1:480
for y = 1:640
median_bg_RedValues(x,y) = median(bg_RedValues(x,y,1:actualNumOfImages));
median_bg_GreenValues(x,y) = median(bg_GreenValues(x,y,1:actualNumOfImages));
median_bg_BlueValues(x,y) = median(bg_BlueValues(x,y,1:actualNumOfImages));
end
end
median_bg_Red/Green/BlueValues is a 480*640 matrix, and bg_Red/Green/BlueValues is a 480x640x40 image, and I want to take the median of each cell's 40 elements (these 40 elements are the different pixel values for the 40 images).
How can I make this faster using vectorization?
Thanks.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 17 Fév 2016
median_bg_RedValues = median(bg_RedValues, 3);
median_bg_GreenValues = median(bg_GreenValues,3);
median_bg_BlueValues = median(bg_BlueValues, 3);
  4 commentaires
Faizan Tahir
Faizan Tahir le 17 Fév 2016
Done, thanks again.
Andrei Bobrov
Andrei Bobrov le 18 Fév 2016
Thank you Faizan!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Get Started with Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by