【发布时间】:2017-10-28 15:06:32
【问题描述】:
我有一张全是白点的图像。现在,我想根据某些坐标和检查在每个点上放置一个标记。现在我的问题是,我不想在一个占用超过一个像素的特定“斑点”白点上聚集太多标记。我的工作是检查我以前的标记位置和我现在的位置是否在附近。然而,这会导致许多独立的白色斑点由于靠近而被遗漏,即使它不一定只是一个斑点。
这是我当前的代码:
a = find(overlap == 1); %overlap is a 1040 by 1392 binary matrix
prev_coord = [1 1];
for i=1:size(a)
c = mod(a(i), 1040);
r = floor(a(i)/1040);
X = [prev_coord; r c];
if(pdist(X, 'euclidean') > prox)
if(img(r, c) > 1)
gray = insertMarker(gray, [r c], 'x', 'color', 'red', 'size', 15);
else
gray = insertMarker(gray, [r c], 'x', 'color', 'white', 'size', 15);
end
end
prev_coord = [r c];
end
当prox 等于一个非常小的数字(例如 50)时,我的图像如下所示:
但是,当prox 是像 120 这样的大数时,它看起来像这样:
关于如何解决这个问题的任何想法?
【问题讨论】:
-
我会使用连接组件方法检查 2 个坐标是否属于一个 blob,例如
bwlabel,它比它们之间的距离更可靠。
标签: algorithm matlab image-processing