Вопрос

Теперь, во-первых, я даже не уверен, что это называется матрицей, и я новичок в MATLAB.Но допустим, у меня есть "матрица", которая выглядит примерно так:

for n=1:10
...
someImage = mat(:,:,n) %The "matrix"
...
end

где n это могут быть кадры из видео, например, и первые 2 ':' это данные строки и столбца для 2D-изображения (рамки).

Если бы я только хотел первого ':' данных (строка?колонна?элемент?), как бы я получил доступ только к этому?

Интуитивно я думаю, что что-то вроде:

row1 = mat(:,0,0)
row2 = mat(0,:,0)
row3 = mat(0,0,:)

но, похоже, это не работает.

P.S.Я знаю, что на самом деле это не строки, терминология для всего этого также была бы весьма полезна

Кроме того, это может не иметь к этому никакого отношения, но я также использую графический интерфейс MATLAB, и "матрица" хранится следующим образом:

handles.mat(:,:,n)

Я не думаю, что это имеет какое-либо отношение к моему фактическому вопросу, но это возможно, поэтому я изложу его здесь

-Спасибо!

Это было полезно?

Решение

Прежде чем начать, я хотел бы сделать одно замечание:MATLAB начинает индексирование с 1, и не 0.Это распространенная ошибка, которую допускает большинство людей, имеющих опыт программирования на C / Java / Python, при переходе в MATLAB.

Кроме того, делая:

row1 = mat(:,1,1);

При этом будут доступны все строки для первого столбца и первого кадра вашего видео.Имейте в виду, что это приведет к M x 1 вектор, где M обозначает количество строк для кадра в вашем видео.

Также:

row2 = mat(1,:,1);

При этом осуществляется доступ ко всем столбцам в первой строке первого фрейма.Имейте в виду, что это приведет к 1 x N вектор, где N обозначает количество столбцов для кадра в вашем видео.

Также:

row3 = mat(1,1,:);

Это позволяет получить доступ ко всем пикселям в весь видеоряд в строке 1 и столбце 1.Вы можете думать об этом как о временном фрагменте в верхнем левом углу вашего видеоряда.Имейте в виду, что это приведет к 1 x 1 x T вектор, где T это количество кадров в вашем видео.Если вы получаете доступ только к одному местоположению пикселя в вашем видео, первые два измерения излишни, и поэтому вы можете использовать squeeze команда для уменьшения всех одноэлементных измерений таким образом, чтобы они упрощались до T x 1 вектор.Другими словами, сделайте это:

row3 = squeeze(mat(1,1,:));

ФУ-у-у, у вас действительно правильная терминология.Строки и столбцы постоянно используются при обработке изображений / видео.Что касается "матрицы", вы можете назвать это временная последовательность или последовательность кадров с точки зрения обработки видео.Это, конечно, трехмерная матрица, но люди в этой области обозначают ее как одно из двух, поскольку на самом деле это последовательность изображений / кадров, наложенных друг на друга.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top