繁体   English   中英

如何在MATLAB中制作合成图像?

[英]How can I make a synthetic image in MATLAB?

我正在使用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,[]);

这是我目前的结果

在此处输入图片说明

我会尝试以下方法:

  1. 使用高斯模糊找到恒星图像同质场的近似值:

    均匀性= imfilter(I,fspecial('disk',15),'replicate');

  2. 从输入图像中减去均匀性字段。

  3. 手动分割星形

  4. 使用imhist函数和前一阶段的分割蒙版计算恒星的直方图。 将其除以直方图的总和。 这样,您将获得代表恒星的概率向量。

  5. 对背景执行相同的操作-计算代表背景的概率向量。

  6. 生成输出时:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM