Filter 如何以编程方式应用Paint.NET亮度过滤器?

Filter 如何以编程方式应用Paint.NET亮度过滤器?,filter,rgb,paint,Filter,Rgb,Paint,我想在Paint.net中应用相同的亮度过滤器 基本上,我想计算亮度分量并将其设置为零。 以下是我迄今为止所做的尝试: 使用以下公式将RGB转换为XYZ到CIElab: 将亮度(L)分量设置为零 将XYZ转换回RGB 我在使用这种方法时遇到了很多问题。有时,当我转换回RGB时,某些组件超出了0-255范围。此外,当我将曲线设置为y=0的直线时,无法获得确切的Paint.net亮度效果 Paint.net不是开源的。你能帮我了解一下它的作用吗 多谢各位 附言:我用C#编程。我相信他们只是简单地

我想在Paint.net中应用相同的亮度过滤器

基本上,我想计算亮度分量并将其设置为零。 以下是我迄今为止所做的尝试:

  • 使用以下公式将RGB转换为XYZ到CIElab:
  • 将亮度(L)分量设置为零
  • 将XYZ转换回RGB
我在使用这种方法时遇到了很多问题。有时,当我转换回RGB时,某些组件超出了0-255范围。此外,当我将曲线设置为y=0的直线时,无法获得确切的Paint.net亮度效果

Paint.net不是开源的。你能帮我了解一下它的作用吗

多谢各位


附言:我用C#编程。

我相信他们只是简单地从RGB值中加/减一个常数

R' = max( min(255, R+diff), 0);
G' = max( min(255, G+diff), 0);
B' = max( min(255, B+diff), 0);
不过,使用您提到的方法可能会产生更正确的结果。获取0-255范围以外的值是意料之中的事,您必须处理它。你也可以在计算中考虑伽玛校正。< /P>