1

我正在尝试编写一个函数

[offset,coffset]=findLowNhbr(map) 

对于 a 中的每个像素,map找到该像素的八个邻居,并返回两个矩阵,其中行和列都偏移到最低邻居(使用数字 -1、0 和 1)。边界像素的行和列都被赋予 0 偏移,因为它们没有邻居。

以下是我认为此功能的总体计划应该是:

  1. 对于每个点,找到八个最近的邻居。
  2. 如果邻居低于该点,则返回-1
  3. 如果邻居与该点在同一高度,则返回 0
  4. 如果邻居高于该点,则返回+1
  5. 将这些偏移量存储在两个矩阵中。

我完全不知道从哪里开始,所以欢迎任何建议或问题!

4

2 回答 2

1

完全确定您的意思,但这里有一些东西可以让您顺利进行:

neighbors = cell(size(map));

for ii = 2:size(map,1)-1
    for jj = 2:size(map,1)-1

        % current element
        M = map(ii,jj);

        % extract neighbors
        N = map(ii-1:ii+i, jj-1:jj+1);

        % compare values and store
        neighbors{ii,jj} = M<N - M>N;            

    end
end

这将产生一个 cell-array neighbors,其中包含与 相同数量的元素map,但每个条目看起来像这样:

>> neighbors{2,3}
ans = 
    0  -1   1
    1   0  -1
    1   0  -1

这是有关 pixel 的所有邻居的信息(2,3)

于 2012-11-09T16:57:52.490 回答
0

编辑:假设 map_original 是您的原始地图,这就是您如何将 inf 添加到地图的所有方面。

map=inf(size(map_original)+2)
map(2:end-1,2:end-1) = map_original

假设您已经在地图的各个方面都使用了 infs,以下是一些可以帮助您入门的内容:

area =-1:1;
for i=2:size(map,1)-1
    for j = 2:size(map,2)-1
         bestfound=inf;
         bestk=0;
         bestl=0;
         for k = area
             for l=area
                if k~=0 && l~=0

就像我说的,这只会让你开始!

于 2012-11-09T16:38:50.280 回答