0

我希望在 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) 
4

1 回答 1

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)

图片

于 2013-09-13T02:35:51.427 回答