如何通过Matlab计算图像的每个RGB颜色通道的强度百分比?

时间:2017-02-22 14:08:04

标签: image matlab colors rgb

如何通过Matlab计算图像的每个RGB颜色通道的强度百分比? 以下Matlab代码无法正常运行:

XMLHttpRequest

我看不到每个通道R,G,B的强度百分比。

知道如何解决问题吗?

1 个答案:

答案 0 :(得分:3)

MATLAB在分割后保存数据类型。由于rvalgvalbval最初保存为int64,因此此单元类型会传播到R_totalG_total,{{1 }和B_total。当您尝试将这些值除以找到百分比时,首先执行除法运算(当运算具有相同的优先级(如乘法和除法)时,MATLAB从左到右工作)。此除法的结果保留I_total单位类型。由于各个颜色通道总数小于总数,因此结果为0到1之间的值。由于整数不能保存浮点数,因此结果舍入为零或一。

为了正确划分这些数字以找到百分比,首先将它们转换为双单位类型,例如:

int64

或者将R_precentag = double(R_total) / double(I_total) * 100; rvalbval变量保存为开头的两倍。

顺便说一句,通过利用MATLAB的矩阵向量化可以大大改善您的代码(在矩阵的末尾添加gval通过堆叠列将矩阵转换为向量),并且在诸如(:)之类的功能中。作为奖励,sum默认将其结果累加为double,无需手动转换每个值。

e.g。您的简化代码可能类似于:

sum