使用matlab生成合成数据2d x t x v

时间:2012-09-24 18:25:00

标签: matlab 3d simulation mesh synthetic

我正在尝试生成/模拟一组合成/模拟数据集,以在matlab中生成合成血流图像。但我不知道如何或从哪里开始...

我知道我应该使用网格函数但是我如何制作它以便它可以在时间维度上?

如果有人能帮助/指导我,我将非常感激。我想生成一个大小为25x25x10x4的数据集。这是X x Y x t x V.图像应该类似于:

this is an image of supposedly vessel in the brain

或者像这样:

enter image description here

提前谢谢你!

2 个答案:

答案 0 :(得分:3)

数据集#1:

使用您喜欢的线条表示(极性,线性,无论如何)并随机生成线条的参数。例如。如果您选择y = mx + c,则会随机生成mc。现在您已经定义了行use this SO method以在图像上绘制它。

enter image description here

数据集#2:

他们看起来像2D高斯。以下列方式使用mvnpdf

[X Y] = meshgrid(x_range,y_range);
Z = reshape(  mvnpdf([X(:) Y(:)],MU,SIGMA)   ,size(X));
imagesc(Z);

使用一些随机生成的MUSIGMAMU位于x_rangey_range。例如。 x_range = -3:0.1:3;y_range = x_range;

  

MU =

0.9575    0.9649
     

SIGMA =

1.2647    0.3760
0.3760    1.0938

enter image description here

答案 1 :(得分:1)

为了补充@Jacob非常具体的答案,你需要一个4D MxNxTxV矩阵。在此,根据帖子,MxN是每个图像的维度,T是时间维度,V是每个时间帧的通道或样本数量(RGB为3或者> 3)对于任何光谱图像)。

  • 对于每个T,生成V图像。
  • 使用数据集#1和数据集#2的随机参数模拟V图像。
  • 将每个数据集中的所有内容放在一个4D矩阵中(即使用双重或串联)

根据@Jacob的建议,将rand()替换为下面的generate_image(),即生成所需结构类型的随机样本的函数:

M = 25; N = 25;
T = 10; V = 4;

DataSet1 = zeros(M,N,T,V);
DataSet2 = zeros(M,N,T,V);

for t = 1:T
   for v = 1:V
        DataSet1(:,:,t,v) = randn(M,N);
        DataSet2(:,:,t,v) = randn(M,N);
    end
end