当前位置:  开发笔记 > 人工智能 > 正文

红眼减少算法

如何解决《红眼减少算法》经验,为你挑选了3个好方法。

我需要为我正在处理的应用程序实施红眼减弱.

谷歌搜索主要提供商业最终用户产品的链接.

你知道一个好的红眼减少算法,它可以在GPL应用程序中使用吗?



1> Benry..:

我在这里参加派对的时间已经很晚了,但对于未来的搜索者,我已经将以下算法用于我写的个人应用程序.

首先,用户选择要减少的区域,并将其作为中心点和半径传递给红眼减少方法.该方法循环遍历半径内的每个像素并执行以下计算:

//Value of red divided by average of blue and green:
Pixel pixel = image.getPixel(x,y);
float redIntensity = ((float)pixel.R / ((pixel.G + pixel.B) / 2));
if (redIntensity > 1.5f)  // 1.5 because it gives the best results
{
    // reduce red to the average of blue and green
    bm.SetPixel(i, j, Color.FromArgb((pixel.G + pixel.B) / 2, pixel.G, pixel.B));
}

我非常喜欢这样的结果,因为它们保持了颜色强度,这意味着眼睛的光反射不会减少.(这意味着眼睛保持"活着"的样子.)



2> akiva..:

一个很棒的图书馆找到眼睛是openCV.它具有非常丰富的图像处理功能.也看到这个文件与伊利亚五萨福诺夫的标题是"自动红眼检测".



3> Martin Becke..:

首先,你需要找到眼睛!标准方法是运行边缘检测器,然后运行霍夫变换以找到相同大小的两个圆,但可能有更简单的算法来简单地找到红色像素的簇.

然后你需要决定用什么来替换它们,假设图像中有足够的绿/蓝数据,你可以简单地忽略红色通道.

OpenCV是一个非常好的图像处理免费库,它可能对你想要的东西有点过分 - 但是它有很多例子和非常活跃的社区.您还可以搜索对象跟踪算法,跟踪场景中的彩色对象是一个非常类似和常见的问题.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有