我在矩阵中有一个点'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”的位置之外我什么都不知道而找到这个。 无论如何,我不知道如何解决这个问题。任何帮助/建议/建议都得到了适当的赞赏。
答案 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)