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

Python 检查来自两个不同图像的像素重叠,python,image,matlab,image-processing,pixel,Python,Image,Matlab,Image Processing,Pixel,我有一张红色和蓝色的彩色照片。我分离了蓝色和红色信号,并从中创建了黑白图像,如下所示: 第一图像和第二图像 现在,我想看看,如果第二幅图像中的白点重叠在第一幅图像中的扭曲线的顶部 我的做法如下: 首先检测第二幅图像中白点的中心坐标。避免大的白色集群。我只关心在第一张图片中与曲线相同的白点 然后使用下面的MATLAB代码查看白点是否位于第一幅图像的扭曲线的顶部 代码由@ val=0;%要匹配的值 计数=0 N=50;%邻域半径 %生成二维坐标网格 [x,y]=meshgrid(1:size(img

我有一张红色和蓝色的彩色照片。我分离了蓝色和红色信号,并从中创建了黑白图像,如下所示: 第一图像和第二图像

现在,我想看看,如果第二幅图像中的白点重叠在第一幅图像中的扭曲线的顶部

我的做法如下:

  • 首先检测第二幅图像中白点的中心坐标。避免大的白色集群。我只关心在第一张图片中与曲线相同的白点
  • 然后使用下面的MATLAB代码查看白点是否位于第一幅图像的扭曲线的顶部
  • 代码由@

    val=0;%要匹配的值
    计数=0
    N=50;%邻域半径
    %生成二维坐标网格
    [x,y]=meshgrid(1:size(img,2),1:size(img,1));
    %对于要检查的每个坐标。。。
    对于kk=1:尺寸(坐标,1)
    a=坐标(kk,1);b=坐标(kk,2);%获取像素位置
    
    mask=(x-a)。^2+(y-b)。^2这似乎很有效:

    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
    
    pos=rp.WeightedCentroid;%所有位置
    对于ct=尺寸(位置1):-1:1%向后检查
    d=总和((位置,ct:).^2);%到所有其他点的距离(kd树可用于加速)
    
    如果min(d)这似乎很有效:

    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
    
    pos=rp.WeightedCentroid;%所有位置
    对于ct=尺寸(位置1):-1:1%向后检查
    d=总和((位置,ct:).^2);%到所有其他点的距离(kd树可用于加速)
    
    如果min(d)@rayryeng我发现你的解决方案非常相似。也许你也可以解释一下这个问题?独立回答这个问题:我希望你是在HSV空间中用颜色来分隔的,RGB不好,嗯,我实际上是用RGB做的。为什么这是一个坏的选择?取决于你的数据,但问题是RGB是非常非线性的。“棕色”在RGB中可以有非常广泛的值。除非您的图像非常具体,否则RGB不会正确分割“黄色”的内容。相反,HSV在色彩方面做得很好-segmentation@rayryeng我发现你的解决方案非常相似。也许你也可以解释一下这个问题?独立回答这个问题:我希望你是在HSV空间中用颜色来分隔的,RGB不好,嗯,我实际上是用RGB做的。为什么这是一个坏的选择?取决于你的数据,但问题是RGB是非常非线性的。“棕色”在RGB中可以有非常广泛的值。除非您的图像非常具体,否则RGB不会正确分割“黄色”的内容。相反,HSV在颜色分割方面做得很好