0

我有一个代表 480x640 图像的矩阵 A 和另一个大小为 480xN 的矩阵 index_matrix ,其中包含一些索引,如下所示:

row_index col_index(es)
1          210
2          210
3          [179,210]
4          [182,210]
5          206
6          206
.
.
.
480

第一个 col 对应于 martix A 中的行索引,第二个 col 对应于矩阵 A 中的 col 索引,因此 index_matrix 中的每一行代表一个像素在 martix A 中的索引,例如上例中的第一行index_matrix 的索引表示位于 row_1 col_210 的像素的索引,第三行表示位于 row_3 col_179 和 row_3 col_210 的两个像素的索引。因此,我只想将 martix A 的像素与 index_matrix 中的索引连接起来,这样我将在 index_matrix 中逐行移动,并将当前行的像素与下一行中的像素连接起来,依此类推。例如处理上面的例子:在 index_matrix 中的 row_1 中,col_index 是 210,而 index_matrix 中的下一行 row_2 中,col_index 是 210,所以我想将像素(1,210)与像素(2,210)连接起来,然后对于 index_matrix 中的下一行 row_3,col_indexes 是 179 和 210,所以我想将像素 (2,210) 与 (3,179) 和 (3,210) 连接,但像素 (1,210) 不会连接到它们,因为它不是正上方的行它等等。所以主要思想是将每一行中的某些像素与下一行中的某些像素连接起来。所以我问是否有人可以请教。

4

1 回答 1

1

如果我正确理解了您的问题,以下内容将帮助您入门。它在左上角显示一个带有黑色矩形条的空白图像(以帮助定位),然后覆盖连接绿色线,连接性A从顶部的第 1 行开始定义。

% example white image with black strip to help with orientation
nr = 480;
nc = 640; 
clp = 40; 
arr = [ones(nr,nc-clp) [zeros(nr/2,clp);ones(nr/2,clp)]] *255;

h=figure;
imshow(arr) 

% A for this example using random column positions
A = [[1:nr]' floor((randn(nr,1)-0.5)*50)+300];        

hold on
plot(A(1,2),1,'ro','MarkerFaceColor','r','MarkerSize',5)  % <-- just to show starting row  

for ii=1:size(A,1)-1
    for jj=1:nnz(A(ii,:))-1  
        for kk = 1:nnz(A(ii+1,:))-1
             line([A(ii,1+jj) A(ii+1,1+kk)],[A(ii,1) A(ii+1,1)],'color','g','linewidth',1)
        end
    end
end

对于包含 中的连接的单元格数组的特定情况retVal,以下应该有效:

imshow(depth)

for ii=1:length(retVal)-1
    for jj=1:nnz(retVal{ii})  
        for kk = 1:nnz(retVal{ii+1})
             line([retVal{ii}(jj) retVal{ii+1}(kk)],[ii ii+1],'color','g','linewidth',1)
        end
    end
end

这是输出:

在此处输入图像描述

于 2013-08-09T12:16:26.020 回答