![2e9ebaace12455c598fe7a0af3dfa988.png](https://i-blog.csdnimg.cn/blog_migrate/aa34270369f1d97f60a240a924c3e37e.jpeg)
提取线稿的原理还是比较简单的,你了解颜色减淡的公式和最小值的原理就可以了。
整个整个提取流程像是这样的!
复制一层,然后这个层反相,进行了颜色减淡,就像下面这样!
![229962d186f0af2d6f679d476c775b00.gif](https://i-blog.csdnimg.cn/blog_migrate/11699dd3fb82286fbcfcde913d774625.gif)
最后调节最小值
![220a2811fc800f46ed6a00d437c85e96.gif](https://i-blog.csdnimg.cn/blog_migrate/964101392ebdd40b40c51b8f49dcdbbe.gif)
a边和b边的交接处就会出现一条线了。
而最小值的原理像这样的,谁最黑,就是老大:
![99a90293fa5fb74019b49cf278335c5e.gif](https://i-blog.csdnimg.cn/blog_migrate/7053cce686db84cbf5f52c37c6f4107a.gif)
颜色减淡的公式是这样的,
C=A/(1-B)
A是底层,B是顶层,C是结果层。
~~~~~~
一般都会把复制一层把顶层反相。
所以公式就会变成这样的了:
C=A/(1-(1-A))
也就是:
C=A/A
所以,画面的大多数地方应该是白色的。
然后,你现在用往顶层最小值滤镜,比如,一个像素吧!!
也就是顶层所有黑色的地方,都往外扩张一个像素的半径。
那么此时,这扩张的黑色像素,计算机会怎么算呢?
比如,黑色像素的值算是H好了。
那么你就会得到:
![equation?tex=C%3DA%2F1-H](https://i-blog.csdnimg.cn/blog_migrate/c3f805e439179159e5970a7b4c977d65.png)
因为你不知道,H这个黑色像素有多黑嘛。
此时此刻,C应该等于什么呢?
有两种情况。
第一种情况是,
![equation?tex=1-H](https://i-blog.csdnimg.cn/blog_migrate/e505647614c2d52c5d4490e23c364b50.png)
![equation?tex=A](https://i-blog.csdnimg.cn/blog_migrate/a86f8657535c007558ea628b4b5b9c7a.png)
所以,
![equation?tex=%5Cfrac%7BA+%7D%7B1-H%7D%3DC](https://i-blog.csdnimg.cn/blog_migrate/e4b0f8310560f9eef44642eb87fbe5b6.png)
~~~~~~~
第二种情况,1-H比A小。
所以,结果C应该为一个比1大的数,那么就全部显示1,也就白色咯。
但是这种情况是不会出现的。
至于为什么呢?很简单。(有点长,如果你愿意看的话)
首先,轮廓线是什么?
我们为什么会看到轮廓线,因为面和面的颜色或者明亮不同嘛。
![2e6ef9d96e263167d767878f940ceeea.png](https://i-blog.csdnimg.cn/blog_migrate/5732c34c62414281c3aaff6645f63480.jpeg)
要么a比b亮,要么a块比b块暗,如果
![equation?tex=a%3Db](https://i-blog.csdnimg.cn/blog_migrate/1c8b22cf19a3731c538b1d46e261cf29.png)
现在我们假设
![equation?tex=a%3Eb](https://i-blog.csdnimg.cn/blog_migrate/d886d31e1cb2bdfae4060bf900053d2f.png)
那么,复制的这个层反相后,再进行最小值时,会发生什么呢?
因为a比b大,所以
![equation?tex=+1-a+%3C+1-b+](https://i-blog.csdnimg.cn/blog_migrate/bdab0b44ff8b301586e1e3d5ef16f8fa.png)
那么在进行最小值一个像素的时候,
![equation?tex=1-a+](https://i-blog.csdnimg.cn/blog_migrate/37434cfff8100bcaa67ffa5c760dbf02.png)
![67dc0a841d82b1914051f355efd492a4.png](https://i-blog.csdnimg.cn/blog_migrate/c79620dc23e35245a7c005b492d720b8.jpeg)
那么现在往外扩展的这个像素和下层的b进行颜色减淡又是怎样的呢?
那么公式就会变成这样子的:
![equation?tex=C%3D%5Cfrac%7Bb%7D%7B1-%EF%BC%881-a%EF%BC%89%7D%3D%5Cfrac%7Bb%7D%7Ba%7D](https://i-blog.csdnimg.cn/blog_migrate/96f3e65d37e4082abd5a1a4c8f094c42.png)
而我们已经假设了,a是大于b的,那么b/a=C只能为某个小于1的数值了。
所以第二种情况是不可能出现的。
这样你才会在边界处就会有一条线条啦。
而且原来图片反差越大的地方,出来的线条就越明显。
如果你不想用颜色减淡,那么线性减淡也可以,如果你不想用最小值,用高斯模糊也行。
比如,用线性减淡,那么最后的边界处的计算就是:
![equation?tex=C%3Db%2B%281-a%29](https://i-blog.csdnimg.cn/blog_migrate/8df43993a074bba35222b1eb8b7b304f.png)
化简后就是:
![equation?tex=C%3D1%2B%28b-a%29](https://i-blog.csdnimg.cn/blog_migrate/9bae41c70359aa453e24bc82a9f567e1.png)
由于a是大于b的,所以
![equation?tex=b-a+](https://i-blog.csdnimg.cn/blog_migrate/f530bb6d5aa752709918a4e81e518fa0.png)
(不过,高斯模糊是加权计算,出来的线稿会柔和些)
如果你还记得划分的话,那么用划分也可以,只不过不用再反相什么了,直接在顶层运用划分然后在底层运用最小值就行。
反正原理还是这个原理嘛。
方法多种多样,如果想更快,更有艺术性的话,直接下一个插件也很香。
喜欢记得点赞呀,这样才有动力输出!!