如何在Matlab

时间:2016-10-03 21:41:33

标签: matlab image-processing

我在矩阵中有一个点'A',并且我能够在'A'的8连接邻域(值'00')周围搜索特定的像素值(比如'30')。 'find'函数返回点'A'周围的感兴趣像素值的索引(比如'1')。

现在的问题是我需要找到另一个像素(具有相同值),它使用第一次搜索返回的索引信息连接到初始像素值“30”。第二个像素值'30'不是在'A'的紧邻区域,而是在它的下一个紧邻区域。

到目前为止的代码:

img = [20 20 20 20 20 20 20;
       20 30 20 20 20 20 20;
       20 20 30 20 20 20 20;
       40 40 10 00 20 20 20;
       40 40 10 40 40 40 40;
       40 10 10 40 40 40 40;
       10 10 10 40 40 40 40] 

[Arow, Acol]     = find(img==00)
AIdx             = sub2ind(size(img), Arow, Acol);
M                = size(img, 1);
neighbor_offsets = [-M-1, -M, -M+1, -1, 1, M-1, M, M+1];

%Compute index array of the immediate neighbors of ‘A’
Aneighbors       = bsxfun(@plus, AIdx, neighbor_offsets);

%search for pixel value of ‘30’ in the immediate neighbors of ‘A’
find(img(Aneighbors)==30)

代码的最后一行返回索引1.是否可以使用此信息查找其他30?

我知道我可以通过创建下一个“A”的近邻(第二个“30”所在的位置)的另一个索引数组来轻松找到第二个像素值,如下所示:

    neigh_Aneighbor_offsets = [(-2*M)-2, (-2*M)-1, (-2*M), (-2*M)+1,(-2*M)+2, -M-2, -M+2, -2, 2, M-2, M+2, (2*M)-2, (2*M)-1, (2*M), (2*M)+1, (2*M)+2];

%Compute index array of the 2nd immediate neighbors of ‘A’
neigh_Aneighbors        = bsxfun(@plus, Aidx, neigh_Aneighbor_offsets);

%Search for the 2nd pixel value of ‘30’ in the next immediate neighborhood of ‘A’
find(img(neigh_Aneighbors)==30)

然而,我只想通过假设除了我已经找到的第一个“30”的位置之外我什么都不知道而找到这个。 无论如何,我不知道如何解决这个问题。任何帮助/建议/建议都得到了适当的赞赏。

1 个答案:

答案 0 :(得分:1)

只需将CREATE TABLE `tbproduct_detail` ( `id` int(11) NOT NULL, `p_id` int(11) DEFAULT NULL, `file_name` varchar(255) DEFAULT NULL, `file_size` varchar(255) DEFAULT NULL, `file_ext` varchar(255) DEFAULT NULL, `profile` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; CREATE TABLE `tbproduct` ( `id` int(11) NOT NULL, `product_name` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;的结果保存到变量find,然后从f获取正确的Aidx

Aneighbors(f)