模拟PhotoShop的“颜色范围”算法

前端之家收集整理的这篇文章主要介绍了模拟PhotoShop的“颜色范围”算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用在服务器上完成的自动化过程来替换PhotoShop中完成的手动过程.目前在PhotoShop中,“颜色范围”工具用于使用“模糊性”因子选择一系列颜色,并根据部分过程从黑色或白色开始.

我的初始方法包括在L * a * b颜色空间中使用发光阈值,以及候选颜色和黑/白之间的DE94.在这两种情况下,我选择了不应该选择的颜色和/或没有选择应该的颜色.

我的希望是,我应该使用锥体而不是球体来选择.

任何人都可以看出PhotoShop在做什么,如果我正确的方向?另外,如果有一个图书馆在那里做这将是令人敬畏的,我正在C写这个.

解决方法

从我在Photoshop中看到的算法可能类似于以下内容

>定义一个计算两种颜色的接近度的函数:例如,在颜色空间中使用欧几里得距离,即使用Euclidean distance formula计算RGB空间中两个像素的颜色之间的距离.
>接下来,使用fallof函数调整每个像素的强度,
例如Gaussian function.你可能需要调整
一些参数.要澄清:你计算两个距离
RGB空间中的像素(不是2D像素坐标中的距离),以及
然后将其馈送到将提供结果的衰减功能
介于0.0和1.0之间.乘以电流的所有颜色分量
具有衰减功能的结果的像素.这样做
图像的每个像素.
>如果要添加效果的range参数,只需使用
同样的衰减功能,每个像素再次,但这次喂它
所选像素与电流之间的欧氏距离
像素在像素的2D空间中(像素之间的距离)
图像上的坐标).

如果您只想选择某些像素,则不需要直接在图像中的像素上应用效果,您可以将衰减值存储在0.0到1.0范围内的双精度矩阵中.然后,选择一个阈值以上,您将选择给定的像素.

例如,如果在坐标(x,y)处的像素的步骤2产生0.8,并且步骤3产生0.5,则具有坐标x和y的矩阵元素的值应该是0.8 * 0.5 = 0.4.如果您选择阈值低于0.4,您将选择像素(x,y),否则您将不会.

猜你在找的C&C++相关文章