Azzera filtri
Azzera filtri

Applying Movmedian Within Cell Array

2 visualizzazioni (ultimi 30 giorni)
itend
itend il 24 Ago 2017
Commentato: itend il 25 Ago 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 Commenti
Image Analyst
Image Analyst il 24 Ago 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 il 25 Ago 2017
Thank you for your response.
I was interested in C(1,:), the row vector of 6 cells in row 1.

Accedi per commentare.

Risposta accettata

Jan
Jan il 24 Ago 2017
Modificato: Jan il 24 Ago 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 Commenti
Image Analyst
Image Analyst il 24 Ago 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 il 25 Ago 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!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by