将特定行中的某些像素与图像Matlab中下一行中的某些像素相连

时间:2013-08-06 16:49:06

标签: matlab image-processing

我有一个表示480x640图像的martrix 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)将不连接到它们,因为它不是直接在它上面的行,依此类推。因此,主要思想是将每行中的某些像素与下一行中的某些像素相连。所以我在问是否有人可以提出建议。

1 个答案:

答案 0 :(得分: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

这是输出:

enter image description here