2012-06-19 3 views
0

Я здесь, чтобы написать код, почему я натолкнулся, исследуя одну технику.вопрос с sub2ind и матрицей матрицы в matlab с изображениями

Y = repmat((1:m)', [1 n]); 
    X = repmat(1:n, [m 1]) - labels_left; 
    X(X<1) = 1; 
    indices = sub2ind([m,n],Y,X); 

    final_labels = labels_left; 
    final_labels(abs(labels_left - labels_right(indices))>=1) = -1; 

В приведенных выше меток кода слева изображено одноканальное изображение. [M n] - размер этого изображения. Я хочу знать, как это sub2ind работает над code.And Iam также перед проблемой в последнем заявлении, которое содержит

labels_right(indices) 

что выше выражение to.Here метки право также изображение

+1

Это может помочь, если вы объясните, что должен делать код? что первая часть выглядит как MESHGRID. Думаю, – Amro

+0

@amro. Да, первая часть - сетка сетки. Это часть кода, когда я хочу удалить окклюзии в стерео соответствии. Я сомневаюсь, что так же оценивается матрица matrix_right (индексов) матрицы, я отредактировал свой код, который вы можете проверить – nbsrujan

ответ

1

Может быть, меньший пример может помочь понять:

%# image matrix 
M = rand(4,3) 
[m n] = size(M) 

%# meshgrid, and convert to linear indices 
[X,Y] = meshgrid(1:n,1:m) 
indices = sub2ind([m,n],Y,X) 

%# extract those elements 
M(indices) 

матрица M:

>> M 
M = 
     0.95717  0.42176  0.65574 
     0.48538  0.91574  0.035712 
     0.80028  0.79221  0.84913 
     0.14189  0.95949  0.93399 

сетка (х, у) координаты всех точек:

>> X,Y 
X = 
    1  2  3 
    1  2  3 
    1  2  3 
    1  2  3 
Y = 
    1  1  1 
    2  2  2 
    3  3  3 
    4  4  4 

преобразуются в линейные индексы:

>> indices 
indices = 
    1  5  9 
    2  6 10 
    3  7 11 
    4  8 12 

тогда индекс в матрицу с помощью этих индексов.

>> M(indices) 
ans = 
     0.95717  0.42176  0.65574 
     0.48538  0.91574  0.035712 
     0.80028  0.79221  0.84913 
     0.14189  0.95949  0.93399 

Отметьте, что: M(indices(i,j)) = M(Y(i,j)),X(i,j)).

 Смежные вопросы

  • Нет связанных вопросов^_^