图像中的邻域半径

Sam*_*Sam 3 matlab image-processing

我有一个图像(200x200),并希望找到具有预定义半径的特定点的邻域位置.例如,半径为5时,我在一个点周围有25个点.MATLAB可以做到吗?问题是关于图像的边缘,它并不总是25点,程序应该只找到该半径范围内的点.这些点可以从1(角落)到25(图像中心)变化

Amr*_*mro 6

这是一个例子:

%# sample grayscale image
img = imread('cameraman.tif');
[imgH,imgW,~] = size(img);

%# circle params
t = linspace(0, 2*pi, 50);   %# approximate circle with 50 points
r = 80;                      %# radius
c = [100 130];               %# center

%# get circular mask
BW = poly2mask(r*cos(t)+c(1), r*sin(t)+c(2), imgH, imgW);

%# show cropped image
imshow( immultiply(img,BW) )
axis on
Run Code Online (Sandbox Code Playgroud)

截图

这将处理边缘情况很好.使用POLY2MASK的优点是它以亚像素精度计算掩模(阅读功能文档中的算法部分),前提是您使用足够的点来近似圆.