我正在使用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,[]);
这是我目前的结果
答案 0 :(得分:0)
我会尝试以下方法:
使用高斯模糊找到星形图像的均匀性场的近似值:
homogeneity = imfilter(I,fspecial('disk',15),'replicate');
从输入图像中减去同质性字段。
手动分割星形
使用imhist函数和前一阶段的分割掩码计算星形的直方图。将其除以直方图的总和。因此,您将获得代表恒星的概率向量。
用背景做同样的事情 - 计算代表背景的概率向量。
:
一个。对于方形内的每个像素,使用第2阶段的概率向量随机生成灰度值。
湾对于每个背景像素,使用第3阶段的概率向量随机生成灰度值。
℃。最后 - 将第1阶段的同质性字段添加到结果中。