【问题标题】:is this correct to alter contrast of an image using matrices?使用矩阵改变图像的对比度是否正确?
【发布时间】:2021-07-01 09:45:05
【问题描述】:

所以我一直在尝试改变图像与矩阵的对比度,这就是我想出的:

final defaultColorMatrix = const <double>[
  1, 0, 0, 0, 0,
  0, 1, 0, 0, 0,
  0, 0, 1, 0, 0,
  0, 0, 0, 1, 0,
];

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 之间的对比度和可调值

它给了我次优结果

【问题讨论】:

    标签: flutter dart colormatrix colorfilter colormatrixfilter


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2014-10-17
      • 2020-02-14
      • 2013-12-02
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多