如何通过matlab创建偏置场图像

时间:2015-08-06 15:58:53

标签: matlab image-processing

让我们定义偏见字段:

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

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

我想根据上面的定义(有条件和无条件)从给定的α值创建二维偏差场。你能帮我用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的良好示例图像 enter image description here

1 个答案:

答案 0 :(得分:0)

根据你的定义。我们可以轻松创建一维线性值并将其组合在二维中以创建偏差图像。好方法是

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]);