使用 Aforge.net 或 c# 执行类似于 Photoshop 的 Auto Tone 的操作
Posted
技术标签:
【中文标题】使用 Aforge.net 或 c# 执行类似于 Photoshop 的 Auto Tone 的操作【英文标题】:Do something similar to Auto Tone of Photoshop with Aforge.net or c# 【发布时间】:2013-03-19 12:33:53 【问题描述】:我正在开发一个图像皮肤检测应用程序。
但是我的相机有问题,试图补偿光线,结果图像很糟糕,在大多数情况下,我对图像有冷或暖效果。 当我使用 Photoshop 时,有 AutoTone 功能可以标准化图像并减少此问题。
使用 aforge 我想使用 HistogramEqualization() 过滤器,但结果非常糟糕:
// create filter
HistogramEqualization filter = new HistogramEqualization( );
// process image
filter.ApplyInPlace( sourceImage );
所以我的问题是: Accord 或 Aforge 中是否有与 Photoshop 自动色调相同的功能? 如果没有,是否有一些库或脚本可以做到这一点?
谢谢大家。
【问题讨论】:
【参考方案1】:我使用 LevelsLinear 过滤器并基于图像统计数据:
ImageStatistics stats = new ImageStatistics(sourceImage);
LevelsLinear levelsLinear = new LevelsLinear
InRed = stats.Red.GetRange( 0.90 ),
InGreen = stats.Green.GetRange( 0.90 ),
InBlue = stats.Blue.GetRange( 0.90 )
;
levelsLinear.ApplyInPlace(sourceImage);
您可以使用范围来调整结果。
【讨论】:
哇,这个标准化太完美了!非常感谢。【参考方案2】:您可能不想均衡直方图,因为如您所见,通常不会有太多红色的照片会产生大量红色并使其看起来很糟糕。相反,您可能想要检查几乎无处不在的色调的偏差。例如,您的原始照片可能几乎每个像素都偏向蓝色,因此可能不应该存在。寻找最小偏差并在任何地方消除该数量。
一个更实用的解决方案是在您的相机上试验白平衡设置,看看什么可以为您带来最佳效果。选择正确的预设,将利用可能与您手动编写的算法一样好的算法。但也许你这样做是为了学习。
【讨论】:
这是一个例子,但我的程序是为网络摄像头制作的,没有太多的设置。我需要 c# 中的东西。以上是关于使用 Aforge.net 或 c# 执行类似于 Photoshop 的 Auto Tone 的操作的主要内容,如果未能解决你的问题,请参考以下文章