Pergunta

Primeiro, nem tenho certeza se isso se chama matriz e sou novo no MATLAB.Mas digamos que eu tenha uma "matriz" parecida com esta:

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

onde n podem ser os frames de um vídeo, por exemplo, e os 2 primeiros ':' são os dados de linha e coluna da imagem 2D (o quadro).

Se eu quisesse apenas o primeiro ':' de dados (a linha?coluna?elemento?), como eu acessaria apenas isso?

Intuitivamente, penso algo como:

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

mas isso não parece estar funcionando.

P.S.Eu sei que estas não são realmente linhas, a terminologia para tudo isso também seria muito apreciada

Além disso, pode não ter nada a ver com isso, mas também estou usando uma GUI do MATLAB, e a "matriz" é armazenada assim:

handles.mat(:,:,n)

Não acho que tenha algo a ver com a minha pergunta real, mas pode ser que vou colocá-la aqui

-Obrigado!

Foi útil?

Solução

Um ponto que gostaria de salientar antes de começar:MATLAB inicia a indexação em 1, e não 0.Este é um erro comum que a maioria das pessoas com experiência em programação C/Java/Python comete ao entrar no MATLAB.

Além disso, fazendo:

row1 = mat(:,1,1);

Isso acessa todas as linhas da primeira coluna e do primeiro quadro do seu vídeo.Esteja ciente de que isso produzirá um M x 1 vetor, onde M denota o número de linhas de um quadro em seu vídeo.

Também:

row2 = mat(1,:,1);

Isso acessa todas as colunas na primeira linha do primeiro quadro.Esteja ciente de que isso produzirá um 1 x N vetor, onde N denota o número de colunas de um quadro em seu vídeo.

Também:

row3 = mat(1,1,:);

Isso acessa todos os pixels no inteiro sequência de vídeo na linha 1 e coluna 1.Você pode pensar nisso como uma fatia temporal no canto superior esquerdo da sua sequência de vídeo.Esteja ciente de que isso produzirá um 1 x 1 x T vetor, onde T é o número de frames do seu vídeo.Se você acessar apenas a localização de um único pixel em seu vídeo, as duas primeiras dimensões serão supérfluas e, portanto, você poderá usar o squeeze comando para reduzir todas as dimensões singleton para que simplifique para um T x 1 vetor.Em outras palavras, faça isso:

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

FWIW, você tem a terminologia correta.Linhas e colunas são usadas no processamento de imagem/vídeo o tempo todo.Quanto à "matriz", você pode chamá-la de Sequência temporal ou um sequência de quadros em termos de processamento de vídeo.Certamente é uma matriz 3D, mas as pessoas neste domínio a denotam como uma das duas, pois é na verdade uma sequência de imagens/quadros empilhados uns sobre os outros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top