【问题标题】:How can I make a synthetic image in MATLAB?如何在 MATLAB 中制作合成图像?
【发布时间】:2016-03-01 00:01:28
【问题描述】:

我正在使用 MATLAB 2015b 制作如下合成图像(没有绿色圆圈)

可能很难为我制作明星形象。因此,我使用了一个简单的形状,如以下代码所示的正方形。但是,我无法创建与示例图像相似的强度。如果可能的话,你会帮我制作图像吗?我认为图像有两个组成部分:遵循高斯分布的强度和不均匀的强度。谢谢大家

%% Gray image
rows = 256;
columns = 256;
grayImage = ones(rows, columns, 'uint8').*200;
xCoords= [80 180 180 80 80];
yCoords = [80 80 180 180 80];
mask = poly2mask(xCoords, yCoords, rows, columns);
grayImage(mask) = 80; 
%% First component Gray+noise
im_normal=double(grayImage./max(grayImage(:)));
im_noise= imnoise(im_normal,'gaussian',0,0.02);
%% Second component: Inhomogeneous term
X = 1:rows;                           % X is a vector from 1 to imageSize
X0 = (X / rows) -0.2;                 % rescale X 
Xm = meshgrid(X0, X0);             % 2D matrices
%% Output image
Out_Img=im_noise.*Xm;
subplot(121);imshow(grayImage);
subplot(122);imshow(Out_Img,[]);

这是我目前的结果

【问题讨论】:

  • 首先,如果您查看示例图像,背景是灰色而不是黑色。形状内部的噪声幅度似乎也更高。
  • 谢谢。我更新了它
  • 你想要重现的具体特征是什么?
  • 我的目标是如何在 MATLAB 中将合成图像制作为星形图像。目前,我不知道如何制作它。我写的代码,只是我对图像的了解。我不确定这是不是真的

标签: matlab image-processing matlab-figure


【解决方案1】:

我会尝试以下方法:

  1. 使用高斯模糊求星图均匀场的近似值:

    同质性 = imfilter(I,fspecial('disk',15),'replicate');

  2. 从输入图像中减去同质场。

  3. 手动分割星形

  4. 使用 imhist 函数和前一阶段的分割掩码计算星的直方图。将其除以直方图的总和。这样就得到了代表星星的概率向量。

  5. 对背景做同样的事情——计算代表背景的概率向量。

  6. 生成输出时:

    一个。对于正方形内的每个像素,使用阶段 2 的概率向量随机生成一个灰度值。

    b.对于每个背景像素,使用阶段 3 的概率向量随机生成一个灰度值。

    c。最后 - 将第 1 阶段的同质性字段添加到您的结果中。

【讨论】:

  • 谢谢。你的结果是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2010-12-10
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多