我正在尝试实现一种检测图像中区域的算法,即从种子像素开始,应将相邻像素添加到该区域,首先是最高值。
我正在寻找一种数据结构来充当可以添加相邻像素的队列。它应该能够
- 索引到矩阵(图像)中,以找到最高值的像素
- 有效地删除点
- 添加一个元素,如果不存在的话
这是我想出的
% given:
% I image (2d matrix)
% x, y seed point
list = [];
region = zeros(size(I));
while [...]
% Add all neighbors of (x, y) to list
if x > 1
% neighboring pixel to the left
ind = sub2ind(size(I), x - 1, y);
if length(find(list == ind)) == 0
list(end+1) = ind;
end
end
% similarly for all other neighbors
% [...]
% Find max in I among points in list
[dummy, list_max_i] = max(I(list));
max_i = list(list_max_i);
[x, y] = ind2sub(size(I), max_i);
% remove from list
list(list_max_i) = [];
region(x, y) = 1;
end
但我想用list
更适合添加和删除元素的数据结构替换。有任何想法吗?