function [intersecIm] = getProjectionIntersection(Ws,Ps,pixXCount,pixYCount,planeZ,sigma)
    intersecIm = ones(pixYCount,pixXCount);
    
    [x,y] = meshgrid(1:pixXCount, 1:pixYCount);
    xyzw = [x(:)'; y(:)'; repmat(planeZ,1,pixXCount*pixYCount); repmat(1,1,pixXCount*pixYCount)];
    xyzw(1,:) = (xyzw(1,:)-0.5) - pixXCount/2;
    xyzw(2,:) = (xyzw(2,:)-0.5) - pixYCount/2;
    
    % Go over all images:
    for i = 1:size(Ps,2)
        im = blurrImage(Ws{i},sigma);
        P = Ps{i};
        
        width  = size(im,2);
        height = size(im,1);
        
        pix = P * xyzw;
        
        pix(1,:) = 1 + floor(pix(1,:)./pix(3,:)+width/2);
        pix(2,:) = 1 + floor(pix(2,:)./pix(3,:)+height/2);
        
        % Compute the index of the coords that fall inside of the image:
        insid = (1<=pix(1,:) & pix(1,:)<=width & 1<=pix(2,:) & pix(2,:)<=height);
        
        % Compute the image coords mapping for each plane (x,y) coord:
        idx = pix(2,:)+(pix(1,:)-1)*height;
        
        idxInside = idx(insid);
        imInside  = im(idxInside);
        
        projectIm = zeros(pixYCount,pixXCount);
        projectIm(insid) = imInside';
        
        % Set the value of the intersec image:
        intersecIm = intersecIm & projectIm;
    end
