我有以下代码,我试图在过滤后对图像进行规范化,但问题是,一旦到达第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
答案 0 :(得分:2)
你不知道new_max
和new_min
得到了哪些值,但无论如何,如果每个第5行(temp_imag = (temp_imag-t_min).*double(((new_max-new_min)/(t_max-t_min)))+double(new_min);
)都变为零,那么有几种可能性:
imga_test{i}
(1 <= i <= 10
)全部为零,new_min
也为零。您是否检查了imga_test
的值,它们不是全零并且它们有所不同?您可以为imga_test
创建示例数据,例如。使用rand
或randi
。如果随机数据为您提供非零,则问题出在imga_test
。
new_max-new_min
为零,表示new_max
和new_min
具有相同的值。您是否尝试更改new_max
和new_min
的值并更改其差异?如果更改new_max
,new_min
或两者的值会为您提供非零值,则问题出在new_max
和new_min
。
使用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)
这第三种情况非常不可能。
答案 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