Magick.NET 评估红色通道



我正在使用 Magick.NET 对照片应用颜色校正。我通过使用 Evaluate 方法为每个通道添加或减去百分比来调整红色、绿色和蓝色通道。此处的值是应用于指定通道的 +/- 更改量。

image.Evaluate(channel, EvaluateOperator.Add, new Percentage(value));

为通道添加颜色是可以的,但从通道中删除颜色会改变图像中白色的色彩平衡(删除红色,图像变为绿色/蓝色(。我需要能够在不更改白色的情况下将调整应用于每个通道。

我尝试在评估后应用级别,以及对比拉伸,认为我可以在下方/上方指定一个黑/白点,忽略调整。

ColorMatrix看起来很有前途,但给出了非常奇怪的结果,Modulate进行颜色旋转,这是不对的。

谢谢

TLDR;创建一个白色蒙版并使用 将其应用于图像。WriteMask(( 以便从 .评估(..( 调用。

var newImage = magickImage.Clone();
var stats = newImage.Statistics().GetChannel(PixelChannel.Composite);
var mean = stats.Mean / (stats.Maximum - stats.Minimum);
var stDev = stats.StandardDeviation / (stats.Maximum - stats.Minimum);
var whiteThreshold = new Percentage(100 - (mean + 0.5 * stDev));
var blackThreshold = new Percentage(mean - 0.5 * stDev);
newImage.ColorFuzz = new Percentage(3);
newImage.WhiteThreshold(whiteThreshold);
newImage.BlackThreshold(blackThreshold);
newImage.Opaque(MagickColors.Black, MagickColors.Green);
newImage.Opaque(MagickColors.White, MagickColors.Black);
newImage.InverseOpaque(MagickColors.Black, MagickColors.White);
magickImage.WriteMask = newImage;

有用的网站包括 https://www.imagemagick.org/script/index.php 和 http://www.fmwconcepts.com/imagemagick/index.php。感谢Fred的"色彩平衡"脚本,这是如何使用ImageMagick命令行执行此操作的一个非常好的例子。

相关内容

  • 没有找到相关文章

最新更新