5

我正在开发一个图像皮肤检测应用程序。

但是我的相机有一个问题,试图补偿光线,结果图像很差,在大多数情况下,我对图像有冷或暖效果。当我使用 Photoshop 时,有 AutoTone 功能可以标准化图像并减少此问题。

图片

Photoshop AutoTone 后的图像

使用 aforge 我想使用 HistogramEqualization() 过滤器,但结果非常糟糕:

直方图均衡后的图像

// create filter
HistogramEqualization filter = new HistogramEqualization( );
// process image
filter.ApplyInPlace( sourceImage );

所以我的问题是:Accord 或 Aforge 中是否有一个功能可以与 Photoshop 的自动色调效果相同?如果没有,是否有一些库或脚本可以做到这一点?

谢谢你们。

4

2 回答 2

3

我使用 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);

您可以使用范围来调整结果。

于 2013-03-30T10:17:51.510 回答
1

您可能不想均衡直方图,因为如您所见,通常不会有太多红色的照片会产生大量红色并使其看起来很讨厌。相反,您可能想要检查几乎无处不在的色调的偏差。例如,您的原始照片可能几乎每个像素都偏向蓝色,因此可能不应该存在。寻找最小偏差并在任何地方删除该数量。

更实用的解决方案是尝试相机上的白平衡设置,看看什么能给你最好的结果。选择正确的预设,将利用可能与您手动编写的算法一样好的算法。但也许你这样做是为了学习。

于 2013-03-28T21:39:32.023 回答