我正在尝试编写一个函数
[offset,coffset]=findLowNhbr(map)
对于map
中的每个像素,找到该像素的八个邻居,并返回两个矩阵,其中行和列偏移都是最低邻居(使用数字-1,0和1)。边界像素的行和列都有0个偏移,因为它们没有邻居。
以下是我认为此功能的总体规划应该是:
我完全不知道从哪里开始,所以欢迎任何建议或问题!
答案 0 :(得分: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
这将生成一个单元数组neighbors
,其中包含与map
相同数量的元素,但每个条目看起来都像这样:
>> neighbors{2,3}
ans =
0 -1 1
1 0 -1
1 0 -1
是像素(2,3)
的所有邻居的信息。
答案 1 :(得分:0)
编辑:这是你可以在地图的所有边添加inf的方法,假设map_original是原始地图。
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
就像我说的,这只会让你开始!