检查两个不同图像的像素重叠

时间:2017-05-26 06:29:32

标签: python image matlab image-processing pixel

我有一张红色和蓝色的彩色照片。我将蓝色和红色信号沙子分开,从而创建了黑白图像: 第一张图片和第二张图片

现在,我想看看第二张图像中的白点如何在第一张图像中的波浪线上重叠。

我的方法如下:

  1. 首先检测第二图像中白点的中心坐标。避免大的白色群集。我只关心第一张图片中波浪线相同附近的白点。
  2. 然后使用以下MATLAB代码查看白点是否位于第一张图像的波浪线之上。
  3. 代码是@ 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
    

    我被卡住的地方:我无法检测第二张图片中白点的中心点。特别是因为我想避免白点簇。我只想检测第一张图像中波浪线相同附近的斑点。

    我愿意尝试任何具有良好图像分析库的语言。我该怎么做?

1 个答案:

答案 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