我需要为正在处理的应用程序实现防红眼功能。
谷歌搜索主要提供指向商业最终用户产品的链接。
您是否知道可以在GPL应用程序中使用的好的防红眼算法?
最佳答案
我在这里参加聚会很晚,但是对于以后的搜索者,我为我编写的个人应用程序使用了以下算法。
首先,用户选择要缩小的区域,并将其作为中心点和半径传递给红眼缩小方法。该方法遍历半径内的每个像素并执行以下计算:
//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));
}
我非常喜欢这种结果,因为它们保持了色彩强度,这意味着不会减少眼睛的光反射。 (这意味着眼睛保持其“活着”的外观。)
关于algorithm - 防红眼算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/133675/