0

我有以下代码,我试图在过滤后对我的图像进行标准化,但问题是,一旦它到达第 5 行,它就会将所有内容更改为 0,并返回黑色图像。任何的想法 ?

 for i=1:10     
     temp_imag = imag_test1{i}(:,:);
     t_max = max(max(temp_imag));
     t_min = min(min(temp_imag));
     temp_imag = (temp_imag-t_min).*double(((new_max-new_min)/(t_max-t_min)))+double(new_min);
     imag_test1{i}(:,:) = temp_imag;
 end
4

2 回答 2

2

你不知道哪些值new_maxnew_min得到,但无论如何,如果每行 5 ( temp_imag = (temp_imag-t_min).*double(((new_max-new_min)/(t_max-t_min)))+double(new_min); ) 之后一切都变为零,则有几种可能性:

  1. imga_test{i}( 1 <= i <= 10) 都是零,new_min也是零。您是否检查过imga_test它们并非全为零并且它们不同的值?您可以为例如创建示例数据imga_test。通过使用randor randi。如果随机数据给您非零,则问题出在imga_test.

  2. new_max-new_min为零,这意味着它new_max具有new_min相同的值。您是否尝试过更改new_maxnew_min更改它们的差异的值?如果更改 的值new_maxnew_min或两者都给您非零,则问题出在new_max和中new_min

  3. 通过使用solve来求解方程,例如。对于new_min

    solve('temp_imag = (temp_imag-t_min)*(((new_max-new_min)/(t_max-t_min)))+(new_min)', 'new_min')

    ans = (new_max*t_min - new_max*temp_imag - t_min*temp_imag + t_max*temp_imag)/(t_max - temp_imag)

这第三种情况是非常不可能的。

于 2012-05-30T08:51:04.873 回答
1

我会尝试展示预处理和后处理的图像:

figure();
for i=1:10     
     temp_imag = imag_test1{i}(:,:);
     subplot( 1, 2, 1 ); imshow( temp_imag, [] ); title( 'pre' ); 
     t_max = max(max(temp_imag));
     t_min = min(min(temp_imag));
     temp_imag = (temp_imag-t_min).*double(((new_max-new_min)/(t_max-t_min)))+double(new_min);
     subplot( 1, 2, 2 ); imshow( temp_imag, [] );  title( 'post' );    
     imag_test1{i}(:,:) = temp_imag;
 end
于 2012-05-30T13:29:38.777 回答