我正在编写一个程序,该程序可以对图像中每个像素的颜色进行加扰,以使生成的图像非常嘈杂且难以识别,但是在灰度下看起来正常。
编写程序后,我发现了一个问题。我使用的算法假设计算灰度的方法类似于
Grayscale(Pixel p) {
average := (p.red + p.green + p.blue) / 3
p.red := p.green := p.blue := average;
}
我后来意识到数字带有权重:
Grayscale(Pixel p) {
average := (c1 * p.red^gamma) + (c2 * p.green^gamma) + (c3 * p.blue^gamma)
p.red := p.green := p.blue := average
}
因此我的程序无法正常工作。
我专门针对iOS灰度滤镜,尽管该算法对于任何系统都应该相同。
(旁注:我不知道iOS值的权重,所以如果有人也可以在算法中给我这些值,那将非常酷。我发现此线程讨论了类似的问题,但事实并非如此。没有回答我的问题:https://www.reddit.com/r/compsci/comments/a1yrf1/what_algorithm_do_ios_devices_use_to_grayscale/)
假设灰度使用某种权重,我可以使用哪种算法来更改给定像素的rgb值,同时保持像素的灰度值相同?