You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB计算tire.tif图像对比度两种方法结果不一致求代码排查

两种Matlab图像对比度计算方法结果不一致的问题排查

我最近尝试计算tire.tif图像的对比度,用了两种实现方法,但得到的结果完全不一样,想请大家帮忙看看代码哪里出问题了。我的代码和各自的计算结果如下:

[M,N]=size(I); 
Lumi=1/(M*N)*sum(I(:)); % 计算结果为53.66 
Cont_method1=sqrt(1/(N*M)*sum(I(:)-Lumi)^2); % 计算结果为5.478e+03 
Cont_method2=sqrt(1/prod(size(I))*sum(power((I(:)-Lumi),2))); % 计算结果为9.0292 

问题根源分析

问题出在**Cont_method1的计算逻辑错误**:

  • 在sum(I(:)-Lumi)^2这部分,我是先把所有(像素值-亮度均值)的结果求和,再对这个总和进行平方;
  • 但对比度(标准差)公式要求的是先对每个像素的差值做平方运算,再将所有平方值求和,这正是Cont_method2里sum(power((I(:)-Lumi),2))实现的逻辑。

举个简单的小例子就能看明白差异:假设图像只有两个像素[1,3],亮度均值是2。

  • 方法1的计算:sum(1-2, 3-2) = 0,平方后是0,最终结果是sqrt(0/2)=0;
  • 方法2的计算:sum((1-2)^2, (3-2)^2)=1+1=2,最终结果是sqrt(2/2)=1;
    显然方法2才符合对比度的定义。

修正后的方法1代码

只需要把sum(I(:)-Lumi)^2改成逐元素平方后再求和,也就是:

Cont_method1=sqrt(1/(N*M)*sum( (I(:)-Lumi).^2 ));

这样修改后,方法1和方法2的计算结果就会完全一致了。

内容的提问来源于stack exchange,提问作者Smash Ribas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:35:53