【问题标题】:Connect certain pixels in certain row with certain pixels in the next row in an image Matlab将图像Matlab中某行中的某些像素与下一行中的某些像素连接起来
【发布时间】:2013-08-06 16:49:06
【问题描述】:

我有一个代表 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 中的索引,例如在矩阵 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) 不会连接到它们,因为它不是它正上方的行,依此类推。所以主要思想是将每一行中的某些像素与下一行中的某些像素连接起来。所以我问是否有人可以请教。

【问题讨论】:

  • 连接是什么意思?您能否根据数据类型(矩阵、结构、元胞数组)以及原型中说明内容的一些条目来举例说明您想要的输出?
  • martix A 是一个图像,所以我想通过在它们之间画一条线来连接像素“可能正在使用line 函数”
  • @TryHard 我是否在之前的评论中澄清了一些事情?谢谢
  • 请看我的回答!

标签: matlab image-processing


【解决方案1】:

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

% 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

这是输出:

【讨论】:

  • 感谢您的回答!我什至在我的数据上尝试过它,但它不起作用。我的数据可以在这里找到dropbox.com/s/dst15lm1kbdz32g/input.mat,其中 retVal 是具有索引的矩阵,深度是我要绘制的图像。因此,如果您能检查一下,我将不胜感激。非常感谢
  • 此外,索引矩阵只有一列,其中该列中的每个单元格可能是一个向量,有时它只有一个值,有时它的值不止一个,如我上面的示例所示。您的解决方案基于每个单元格都有一个值并且每行有多个列。我希望我已经解释过了,如果您需要任何澄清,请告诉我。非常感谢!
  • 我在这里创建了一个聊天会话chat.stackoverflow.com/rooms/35192/…
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 2021-02-07
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 2013-04-21
  • 2012-01-05
  • 1970-01-01
相关资源
最近更新 更多