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.

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2016년 2월 17일

0 개 추천

median_bg_RedValues = median(bg_RedValues, 3);
median_bg_GreenValues = median(bg_GreenValues,3);
median_bg_BlueValues = median(bg_BlueValues, 3);

댓글 수: 4

Faizan Tahir
Faizan Tahir 2016년 2월 17일
This works, thanks a lot for the help.
Andrei Bobrov
Andrei Bobrov 2016년 2월 17일
Please accept this answer.
Faizan Tahir
Faizan Tahir 2016년 2월 17일
Done, thanks again.
Andrei Bobrov
Andrei Bobrov 2016년 2월 18일
Thank you Faizan!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Get Started with Image Processing Toolbox에 대해 자세히 알아보기

질문:

2016년 2월 17일

댓글:

2016년 2월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by