首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magick.NET评估红道

Magick.NET评估红道
EN

Stack Overflow用户
提问于 2018-05-16 07:49:27
回答 1查看 811关注 0票数 0

我使用Magick.NET对照片进行颜色校正。我调整红,绿,蓝通道,增加或减去一个百分比的每一个使用评估方法。这里的值是要应用于指定通道的+/-更改量。

代码语言:javascript
复制
        image.Evaluate(channel, EvaluateOperator.Add, new Percentage(value));

给通道添加颜色是很好的,但是从通道中移除颜色会改变图像中白色的颜色平衡(去掉红色,图像变成绿色/蓝色)。我需要能够适用于每个频道的调整,而不改变白色。

我尝试了在评估之后应用级别,也尝试了应用ContrastStretch,认为我可以指定一个位于/之上的黑/白点,忽略这个调整。

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 07:02:46

创建一个白色掩码,并使用.WriteMask()将其应用到图像中,以便从.Evaluate(.)中排除任何白色区域打电话。

代码语言:javascript
复制
        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.phphttp://www.fmwconcepts.com/imagemagick/index.php。感谢弗雷德的“颜色平衡”脚本,这是一个很好的例子,说明了如何使用ImageMagick命令行来实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50365154

复制
相关文章

相似问题

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