Applying Movmedian Within Cell Array

2 vues (au cours des 30 derniers jours)
itend
itend le 24 Août 2017
Commenté : itend le 25 Août 2017
Hello,
I have a cell array (2 x 6) called "output", each cell in row #1 {1 -> 6, 2} contains a 1024 x 1024 x 100 matrix. I want to apply movmedian to each cells in row #1. I would like to apply this function in dimension = 3 with window size = 5.
output = cellfun(@movmedian(5,3), output,'uniform', 0);
This is the code that I have come up with so far, however, it produces an "unbalenced or unexpected parenthesis or bracket" error. I am unsure what is causing this error. I am also somewhat unsure how to instruct matlab to perform this operation only on row 1 of the cell array, please help!
Thank you for your time!!
  4 commentaires
Image Analyst
Image Analyst le 24 Août 2017
You say C is an array of cells with 2 rows of 6 columns ("2x6").
C(:,1) is a column vector of the 2 cells in column #
C(1,:) is a row vector of the 6 cells in row #1.
C(expression, 2) is a column vector extracted from only the rows identified in "expression" and only from column #2. So it would have either one cell or two cells since there are only two rows.
Not sure what you mean, but it's clear that reading this FAQ item might help: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F
itend
itend le 25 Août 2017
Thank you for your response.
I was interested in C(1,:), the row vector of 6 cells in row 1.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 24 Août 2017
Modifié(e) : Jan le 24 Août 2017
output(:, 1) = cellfun(@(c) movmedian(c, 5, 3), output(:, 1), 'uniform', 0);
Remember, that cellfun is very nice, but less efficient than a simply loop in general. Try this:
for k = 1:size(output, 1)
output{k, 1} = movmedian(output{k, 1}, 5, 3);
end
I prefer to keep it simple stupid, most of all if it takes less runtime in addition.
  5 commentaires
Image Analyst
Image Analyst le 24 Août 2017
Two questions:
  1. Why are you using a cell array to store all the frames? I see no need for that.
  2. Why aren't you using medfilt2() to do a median filter on your images?
itend
itend le 25 Août 2017
1) The idea is that I use a cell array to store each image, then perform operations such as background subtraction to all entries within the cell array. How would you recommend storing/processing the images?
2) I actually figured out how to modify the parameters of movmedian to solve the issue I was having.
Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Timing and presenting 2D and 3D stimuli 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