首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找最低邻居matlab

查找最低邻居matlab
EN

Stack Overflow用户
提问于 2012-11-09 16:19:57
回答 2查看 705关注 0票数 1

我想写一个函数

代码语言:javascript
复制
[offset,coffset]=findLowNhbr(map) 

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

我认为这一职能的总体规划应该是:

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 16:57:52

我不太明白你的意思,但这里有件事能让你在路上过得很好:

代码语言:javascript
复制
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

这将导致单元格数组neighbors,它包含与map相同数量的元素,但每个条目如下所示:

代码语言:javascript
复制
>> neighbors{2,3}
ans = 
    0  -1   1
    1   0  -1
    1   0  -1

它是像素(2,3)的所有邻居的信息。

票数 1
EN

Stack Overflow用户

发布于 2012-11-09 16:38:50

编辑:假设map_original是您的原始地图,那么您可以将inf添加到地图的所有方面。

代码语言:javascript
复制
map=inf(size(map_original)+2)
map(2:end-1,2:end-1) = map_original

假设您已经在地图的各个方面填充了infs,下面是一些可以让您开始的东西:

代码语言:javascript
复制
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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13311848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档