【问题标题】:creating an image in matlab of 9 small white circles in a large black square在 matlab 中创建一个大黑色正方形中的 9 个小白色圆圈的图像
【发布时间】:2013-09-17 14:07:43
【问题描述】:

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

【问题讨论】:

  • 嘿,你知道什么是段落,它们的用途是什么吗?甚至尝试阅读您写的内容都很难……
  • 如果你包含一个插图也会很有帮助,甚至可能是在 Paint 或其他东西中手工绘制的..
  • 请详细说明您尝试过的方法以及具体问题在哪里。
  • 对这些段落感到抱歉。匆忙输入了这个。这就是我用来创建带有大圆圈的黑色正方形的方法:>> X = one([100,1])*([-50:49]); >> Y = ([-50:49]')*(ones([1,100])); >> Z = (X.^2)+(Y.^2); >> 图像 = 零([100 100]); >> 图像(查找(Z> imshow(图片)
  • 我厌倦了增加最终图像数组的大小 (image = zeros([200 200]) 但这会导致更多的圆圈被挤压到正方形的左侧。我有点明白它在做什么, 因为 find

标签: image matlab geometry


【解决方案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)

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2017-03-17
    • 1970-01-01
    相关资源
    最近更新 更多