问题描述
所以我一直试图改变图像与矩阵的对比度,这就是我想出的:
final defaultColorMatrix = const <double>[
1,1,];
List<double> calculateContrastMatrix(double contrast) {
final m = List<double>.from(defaultColorMatrix);
m[0] = contrast;
m[6] = contrast;
m[12] = contrast;
m[5] = (1 - contrast) / 2;
m[10] = (1 - contrast) / 2;
m[15] = (1 - contrast) / 2;
return m;
在0到1之间的对比度和可调值
它给了我次优的结果
解决方法
我刚刚意识到最后一列不是 m[5],m[10],m[15] 而是它的 m[4],m[9],m[14] 忘记了 dart 的数组索引从 0 开始... 面掌
并且还忘记了颤振矩阵中的最后一列没有标准化为它期望的值在 0-255 之间,因此正确的解决方案是:
List<double> calculateContrastMatrix(double contrast) {
final m = List<double>.from(defaultColorMatrix);
m[0] = contrast;
m[6] = contrast;
m[12] = contrast;
m[4] = ((1 - contrast) / 2) * 255;
m[9] = ((1 - contrast) / 2) * 255;
m[14] = ((1 - contrast) / 2) * 255;
return m;