【问题标题】:MATLAB : Calculating contrastMATLAB:计算对比度
【发布时间】:2018-05-18 20:11:41
【问题描述】:

我正在尝试使用此公式 Contrast formula 计算 Matlab 中图像“tire.tif”的对比度 我用两种方法在 Matlab 中做了这个小程序。问题是我没有得到相同的结果。谁能检查我的代码并告诉我我做错了什么。

[M,N]=size(I);
Lumi=1/(M*N)*sum(I(:)); % which gives 53.66

Cont_method1=sqrt(1/(N*M)*sum(I(:)-Lumi)^2); % gives 5.478+03
Cont_method2=sqrt(1/prod(size(I))*sum(power((I(:)-Lumi),2))); % gives 9.0292

【问题讨论】:

  • 在method1中有sum(err)*sum(err),在method2中有sum(err*err)

标签: matlab brightness contrast


【解决方案1】:

你的第一个方法,

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

计算I(:)-Lumi 的总和,然后将总和平方。您链接的方程式采用平方和:

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

这相当于你的第二种方法:

Cont_method2 = sqrt(
                     1/prod(size(I)) * sum(
                                            power( ( I(:)-Lumi ), 2 )
                                          )
                   );

请注意,N*Mprod(size(I)) 是同一个东西,都相当于更高效的 numel(I)。请注意,将总和除以元素数与使用mean 计算平均值相同。所以你可以简化:

Cont_method3 = sqrt( mean( ( I(:)-Lumi )^2 ));

但请注意,您在这里所做的只是计算一个缩放的范数:

Cont_method4 = norm(I(:)-Lumi) / sqrt(numel(I));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多