Applying Movmedian Within Cell Array

1 Ansicht (letzte 30 Tage)
itend
itend am 24 Aug. 2017
Kommentiert: itend am 25 Aug. 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 Kommentare
Image Analyst
Image Analyst am 24 Aug. 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 am 25 Aug. 2017
Thank you for your response.
I was interested in C(1,:), the row vector of 6 cells in row 1.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 24 Aug. 2017
Bearbeitet: Jan am 24 Aug. 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 Kommentare
Image Analyst
Image Analyst am 24 Aug. 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 am 25 Aug. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by