首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用矩阵改变图像的对比度是否正确?

使用矩阵改变图像的对比度是否正确?
EN

Stack Overflow用户
提问于 2021-04-05 22:25:04
回答 1查看 56关注 0票数 0

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

代码语言:javascript
复制
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之间

它给了我不太理想的结果

EN

回答 1

Stack Overflow用户

发布于 2021-04-05 23:39:17

我刚刚意识到最后一列不是m[5]m[10]m[15],而是m[4]m[9]m[14]。我忘记了dart的数组索引从0开始。

我还忘记了颤动矩阵中的最后一列没有归一化为0-255之间的期望值,因此正确的解决方案是:

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66954568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档