我有一张红色和蓝色的彩色照片。我将蓝色和红色信号沙子分开,从而创建了黑白图像: 第一张图片和第二张图片
现在,我想看看第二张图像中的白点如何在第一张图像中的波浪线上重叠。
我的方法如下:
代码是@ rayryeng
的礼貌val = 0; % Value to match
count = 0
N = 50; % Radius of neighbourhood
% Generate 2D grid of coordinates
[x, y] = meshgrid(1 : size(img, 2), 1 : size(img, 1));
% For each coordinate to check...
for kk = 1 : size(coord, 1)
a = coord(kk, 1); b = coord(kk, 2); % Get the pixel locations
mask = (x - a).^2 + (y - b).^2 <= N*N; % Get a mask of valid locations
% within the neighbourhood
pix = img(mask); % Get the valid pixels
count = count + any(pix(:) == val); % Add either 0 or 1 depending if
% we have found any matching pixels
end
我被卡住的地方:我无法检测第二张图片中白点的中心点。特别是因为我想避免白点簇。我只想检测第一张图像中波浪线相同附近的斑点。
我愿意尝试任何具有良好图像分析库的语言。我该怎么做?
答案 0 :(得分:0)
这看起来效果很好:
pos = rp.WeightedCentroid; %all positions
for ct = size(pos,1):-1:1 %check them backwards
d = sum((pos-pos(ct,:)).^2); %distance to all other points (kd-trees could be used for speedup)
if min(d)<50^2,pos(ct,:)=[];end %remove if any point is too close
端