【问题标题】:How to create a bias field image by matlabmatlab如何创建偏置场图像
【发布时间】:2015-08-06 15:58:52
【问题描述】:

让定义偏置场创建:

强度不均匀程度由区间 [1 − α,1+ α] 中的偏置场的值范围表示,其中 α> 0。对于每个 α(即 α=0.1),我们生成了一个偏置场,其值为 [1 - α,1+ α]

另外,我为偏置图像的创建添加了更多条件,即偏置图像的值是缓慢变化的。

我想根据上述定义(有条件和无条件)从给定的 α 值创建一个 2D 偏差场。你能帮我用 Matlab 实现吗?

function bias_Image=create_bias_image(nrow,ncol,alpha)
%% Code here
%% nrow and ncol are size of bias_Image 
end

目前,这是我通过以下代码尝试的。但是,我不知道我的代码是否正确。

function bias_Image=create_bias_image(nrow,ncol,alpha)
%% Code here
%% nrow and ncol are size of bias_Image
bias_Image=zeros(nrow,ncol);
for i=1:nrow
   for j=1:ncol
     %% create a random number in range [1 − alpha,1+ alpha]
     %% Without condition 
     bias_Image(i,j)= (1- alpha) + 2*alpha.*rand(1,1);
     %% With condition slowly varying-how to do it

   end
end
end

为了便于可视化,我认为这是 alpha=0.2 的好示例图像

【问题讨论】:

  • 如果您在图像中添加随机值,该字段如何“缓慢变化”?输入随机值不会使输出看起来缓慢变化。
  • @rayryeng:是的,我很困惑。其实我用的是慢慢变化的定义,从brainweb.bic.mni.mcgill.ca/faq.html#how-inu-fields
  • 我不太明白定义在哪里...您还有其他参考吗?

标签: matlab image-processing


【解决方案1】:

根据您的定义。我们可以轻松创建 1D 线性值并将其组合成 2D 以创建您的偏差图像。好办法是

x=1:0.01:256;
y=1:0.01:256;
[X,Y] = meshgrid(x,y);
bias=[X.*Y];
x = bias(:);
alpha=0.5;
up_range=1+alpha;
down_range=1-alpha;
bias_X = (x - min(x)) * (up_range - down_range) / (max(x) - min(x)) + down_range;
bias_scalar=reshape(bias_X,[n m]);

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2014-04-02
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多