www.gusucode.com > mean-shift用于图像分割 Matlab程序 > Ms_segmenter/Gravitat.m

    function Gravit = Gravitat(Gray_image)
% finds out forces acting on pixels from other pixels
[Rows, Cols] = size(Gray_image);
Gray_image = double(Gray_image);

% creating the filter
Wind = 3;
for i=1:2*Wind-1
   for j=1:2*Wind-1
      Filter(i, j) = exp(-abs(Wind-i) - abs(Wind-j));
   end
end
Filter(Wind, Wind) = 0;

Gravit = zeros(size(Gray_image(Wind:Rows-Wind+1, Wind:Cols-Wind+1)));
for i=1:2*Wind-1
   for j=1:2*Wind-1
      Gravit = Gravit + Filter(i, j) * ...
         exp(-abs(Gray_image(Wind:Rows-Wind+1, Wind:Cols-Wind+1) - ...
         Gray_image(i:Rows-Wind+1+i-Wind, j:Cols-Wind+1+j-Wind)));
   end
end