过滤后的Matlab图像归一化

时间:2012-05-30 08:39:29

标签: image matlab image-processing normalization

我有以下代码,我试图在过滤后对图像进行规范化,但问题是,一旦到达第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

2 个答案:

答案 0 :(得分: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创建示例数据,例如。使用randrandi。如果随机数据为您提供非零,则问题出在imga_test

  2. new_max-new_min为零,表示new_maxnew_min具有相同的值。您是否尝试更改new_maxnew_min的值并更改其差异?如果更改new_maxnew_min或两者的值会为您提供非零值,则问题出在new_maxnew_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)

  4. 这第三种情况非常不可能。

答案 1 :(得分:1)

我会尝试呈现前v。后处理图片:

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