2013-03-28 31 views
5

开发一个图像皮肤检测应用程序。使用Aforge.net或c#做一些类似于Photoshop的Auto Tone的东西,或者使用c#

但是我的相机有一个问题,那就是试图补偿光线,结果图像不好,在大多数情况下,我对图像有冷或暖的效果。 当我使用photoshop时,有一个AutoTone函数可以规范图像并减少这个问题。

Image

Image after Photoshop AutoTone

随着aforge我想用直方图均衡化()过滤器,但结果是非常糟糕:

Image after HistogramEqualization

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

所以我的问题是: 有是Accord或Aforge的一项功能,可以获得相同的结果Photoshop的自动调整? 如果没有,有一些图书馆或脚本可以做到这一点?

谢谢大家。

回答

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); 

您可以用范围内发挥调整的结果。

+0

哇,这个正常化是完美的! 非常感谢。 – Univers3

1

您可能不希望均衡直方图,因为正如您所看到的,通常不会有太多红色的照片会产生大量红色并使其看起来很脏。相反,你可能想要检查几乎无处不在的色调偏差。例如,您的原始照片可能在几乎每个像素都偏向于蓝色,因此可能不应该在那里。寻找最低限度的偏见,并随处取消。

更实际的解决方案是试用相机上的白平衡设置,以查看最佳结果。选择正确的预设会利用一种算法,它可能与您手动编写的算法一样好。但是,也许你在做这个学习体验。

+0

这是一个例子,但我的程序是为摄像头,没有太多的设置。 我需要在c#中的东西。 – Univers3

相关问题