如何通过Matlab计算图像的每个RGB颜色通道的强度百分比? 以下Matlab代码无法正常运行:
XMLHttpRequest
我看不到每个通道R,G,B的强度百分比。
知道如何解决问题吗?
答案 0 :(得分:3)
MATLAB在分割后保存数据类型。由于rval
,gval
和bval
最初保存为int64
,因此此单元类型会传播到R_total
,G_total
,{{1 }和B_total
。当您尝试将这些值除以找到百分比时,首先执行除法运算(当运算具有相同的优先级(如乘法和除法)时,MATLAB从左到右工作)。此除法的结果保留I_total
单位类型。由于各个颜色通道总数小于总数,因此结果为0到1之间的值。由于整数不能保存浮点数,因此结果舍入为零或一。
为了正确划分这些数字以找到百分比,首先将它们转换为双单位类型,例如:
int64
或者将R_precentag = double(R_total) / double(I_total) * 100;
,rval
和bval
变量保存为开头的两倍。
顺便说一句,通过利用MATLAB的矩阵向量化可以大大改善您的代码(在矩阵的末尾添加gval
通过堆叠列将矩阵转换为向量),并且在诸如(:)
之类的功能中。作为奖励,sum
默认将其结果累加为double,无需手动转换每个值。
e.g。您的简化代码可能类似于:
sum