小编典典

防红眼算法

algorithm

我需要为正在处理的应用程序实现防红眼功能。

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

您是否知道可以在GPL应用程序中使用的良好的防红眼算法?


阅读 264

收藏
2020-07-28

共1个答案

小编典典

我在这里参加聚会很晚,但是对于以后的搜索者,我为我编写的个人应用程序使用了以下算法。

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

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

我非常喜欢这种结果,因为它们保持了色彩强度,这意味着不会减少眼睛的光反射。(这意味着眼睛保持其“活着”的外观。)

2020-07-28