2016-02-29 37 views
0

我使用MATLAB 2015B进行合成图像如下(不含绿色圆圈)如何在MATLAB中创建合成图像?

enter image description here

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

%% 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,[]); 

这是我目前的结果

enter image description here

+1

首先,如果你看看你的示例图像,背景是灰色而不是黑色。它也似乎在形状内部噪音的幅度更高。 – Suever

+0

谢谢。我更新了它 – Jame

+0

你想要重现的特征究竟是什么? – zeeMonkeez

回答

0

我会试试下面的办法:

  1. 查找使用高斯明星形象的同质化领域的近似blur:

    homogeneity = imfilter(I,fspecial('di SK”,15), '复制');

  2. 从输入图像中减去同质性字段。

  3. 段的星形手动

  4. 计算使用imhist函数和来自先前阶段的分割掩码星的直方图。将其除以直方图的总和。因此,您将得到表示星号的概率向量。

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

  6. 当生成输出时:

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

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

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

+0

谢谢。你的结果是什么? – Jame