在大黑方块中的9个小白圈的matlab中创建图像

时间:2013-09-13 01:44:49

标签: image matlab geometry

我希望在Matlab中创建一个大的黑色矩形图像,其中9个小圆圈排列为在矩形中心对齐的3x3阵列,即中心圆的中点位于正方形的中心。

我需要将圆圈均匀地分开,每个圆圈之间以及外圆与矩形边界之间有一定距离(想象一张方形纸,用一根钢笔刺入其中有9个孔放在其中)。我需要这个,这样我才能看到使用2D高斯的图像卷积会如何扭曲这个图像。

然而,我对Matlab相对较新,一直试图创建这个图像。我已成功地在一个黑色正方形中制作了一个黑色/白色正方形和一个白色圆圈,占据了大部分正方形本身但我似乎无法在黑色正方形的任何所需位置制作一个小的白色圆圈,更不用说多个小圆圈了特定对齐。


这是我用来创建一个大圆圈的黑色方块:

X = ones([100,1])*([-50:49]);
Y = ([-50:49]')*(ones([1,100]));
Z = (X.^2)+(Y.^2);
image = zeros([100 100]);
image(find(Z<=50^2)) = 1;
imshow(image) 

1 个答案:

答案 0 :(得分:1)

如果我理解正确,请尝试:

% size of each small box. Final image will be 3Nx3N
N = 100;

% create a circle mask
t = linspace(0,2*pi,50);   % approximated by 100 lines
r = (N-10)/2;              % circles will be separated by a 10 pixels border
circle = poly2mask(r*cos(t)+N/2+0.5, r*sin(t)+N/2+0.5, N, N);

% replicate to build image
img = repmat(circle, 3,3);
subplot(121), imshow(img)

% after applying Gaussian filter
h = fspecial('gaussian', [15 15], 2.5);
img2 = imfilter(im2double(img), h);
subplot(122), imshow(img2)

image