![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PS色彩算法理解
理解色彩算法的原理
DBBH
成都有合适webgl/webgpu岗位的请私信我
展开
-
PS的抠图算法原理剖析 2
记得还有个这种抠图方式我们尝试理解一下第一步,人工选取点位,然后其实构造了一个凸多边形,这一步还行,中间有洞就挖洞,类似earcut那种东西第二步,2个点中间的连线部分,怎么包裹到轮廓的?我得推测是有了外轮廓之后,有法线方向,然后沿着朝内走的法线走几个像素,找到第一个突变的点,再向外走几步,找到突变的点。原创 2024-06-14 10:14:17 · 151 阅读 · 0 评论 -
PS的抠图算法原理剖析 1
首先从当前点开始扩散,每个点如果和上一个点颜色一样,就discard,遇到不一样的就停下来,这样就能稳定保住轮廓了。纯色图抠的就是直接点一下background,获取RGBA,这里我感觉算法应该是这样。在PS里,操作过程是让你开启R G B三个通道 分别看一下 哪一个的对比最明显。然后使用一些奇怪的函数,把texture.bbb这张图片变成黑白,纯黑纯白。那就是调对比度,或者直接if any(color.rgb)>0 就直接白。上面的图片 树叶肯定B最少 天空B富裕,所以对比最明显的就用B通道。原创 2024-06-05 17:19:23 · 257 阅读 · 0 评论 -
PS色彩算法理解记录 6 exclusion
a + b - 2 * a * ba-ab+b-ab -a+b a>b2b-2ab=2b(1-a)a-ab+b-ab-b+a a<b2a-2ab=2a(1-b)要比abs(a-b)大这个效果的话,类似differencea是背景色,如果b给0,那么结果还是背景色如果给1,那么就变成a+1-a-a=1-a;又和difference一样做到了反相的作用了...原创 2022-03-25 10:59:35 · 89 阅读 · 0 评论 -
PS色彩算法理解记录 5 difference
公式为abs(a-b)这个计算直接得到的是背景和混色的差的绝对值看起来表达了两个颜色距离多远,有什么实际用途呢如果background作为白色就做到了反相的功能原创 2022-03-15 20:42:15 · 449 阅读 · 0 评论 -
PS色彩算法理解记录 4 Screen
Blend(A, B) = 1 - [(1 - A) x (1 - B)]A是背景色这是公式,只考虑RGB,假定A是0.7先,那么B如果是黑色,颜色就还是A,如果B是白色,那么就变成纯白色了,然后B如果是0.1,那么1-A乘一个小于1的数值,值就变小了,再用1-这个变小的值,RGB就变的更加接近1了,所以这个效果是根据B图片来让底图发白如果B==A,就是 1-(1-A) * (1-A) = 2A - A * A,这个0-1范围是凸出来的曲线,可以画一画看起来是让颜色提亮,但是越接近1,提亮效果越原创 2022-03-09 16:25:20 · 236 阅读 · 0 评论 -
PS色彩算法理解记录 3 反省
在学习这些算法的过程中,发生了一个尴尬的事情,我自己模拟了一个长得差不多的结论,想当然的开始写代码,最终出来的结果由于比较相似,我一开始没有察觉到其实不对。问题就在这里,这些PS效果,其实不是看起来像就行的,他们有统一规范的,要是大家的效果都按着各自的算法来,结果相似,那效果怎么搞?最终我参考PS效果的时候,是发现我的配色明明是一样的,经过我自己的代码出来的结果却差几个值,越想越不对劲,然后调alpha,调RGB,后面发现差别蛮大的,赶紧找原因,最后发现其实是有标准算法的。总结有些效果类型的代码,写原创 2022-03-05 19:28:45 · 225 阅读 · 0 评论 -
PS色彩算法理解记录 2 color_dodge color_burn
哦对了,默认alpha=1color_dodge 颜色变淡BB = base color of backgroundB = blend colorBB+( BB * B ) / (1-B)公式是这样的,首先看分子,BB不变,B是混合色,B如果是0,结果就完全是BB,B如果越大,分母反而越小,B越接近1,分母越小,那得到的数值越大,导致的结果就是BB+一个数值,越发接近白色,会有颜色变淡的视觉效果。BB的影响则是BB如果接近0,会抑制B产生的效果,例如BB=0.001,结果色是BB +(0.001原创 2022-02-15 14:57:55 · 586 阅读 · 0 评论 -
PS色彩算法理解记录 1 Darken Lighten
Darken 色彩公式为min(background,blend);分别对R G B通道取其中较小的值,这样颜色无论如何都会小于原有模样Lighten 则是max(background,blend);同理,取大的RGB值,这样图片的色彩就会亮于原有的模样原创 2022-02-10 15:35:06 · 1092 阅读 · 0 评论