MATLAB:计算对比度
MATLAB : Calculating contrast
我正在尝试使用此公式 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
你的第一个方法,
Cont_method1 = sqrt(
1/(N*M) * sum(
I(:)-Lumi
)^2
);
计算 I(:)-Lumi
的总和,然后对总和进行平方。你link的方程取平方和:
Cont_method1 = sqrt(
1/(N*M) * sum(
( I(:)-Lumi )^2
)
);
这相当于你的第二种方法:
Cont_method2 = sqrt(
1/prod(size(I)) * sum(
power( ( I(:)-Lumi ), 2 )
)
);
注意N*M
和prod(size(I))
是一回事,都等同于效率更高的numel(I)
。请注意,将总和除以元素数与使用 mean
计算平均值相同。所以你可以简化:
Cont_method3 = sqrt( mean( ( I(:)-Lumi )^2 ));
但请注意,您在这里所做的只是计算比例范数:
Cont_method4 = norm(I(:)-Lumi) / sqrt(numel(I));
我正在尝试使用此公式 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
你的第一个方法,
Cont_method1 = sqrt(
1/(N*M) * sum(
I(:)-Lumi
)^2
);
计算 I(:)-Lumi
的总和,然后对总和进行平方。你link的方程取平方和:
Cont_method1 = sqrt(
1/(N*M) * sum(
( I(:)-Lumi )^2
)
);
这相当于你的第二种方法:
Cont_method2 = sqrt(
1/prod(size(I)) * sum(
power( ( I(:)-Lumi ), 2 )
)
);
注意N*M
和prod(size(I))
是一回事,都等同于效率更高的numel(I)
。请注意,将总和除以元素数与使用 mean
计算平均值相同。所以你可以简化:
Cont_method3 = sqrt( mean( ( I(:)-Lumi )^2 ));
但请注意,您在这里所做的只是计算比例范数:
Cont_method4 = norm(I(:)-Lumi) / sqrt(numel(I));