了解更多查找边缘知识

进一步了解可在边缘效果中试用的边缘检测算法,以及每种方法如何找出照片中的轮廓。

在 PictorX 中应用边缘检测的照片,显示描出的轮廓
在 PictorX 中应用边缘检测的照片,显示描出的轮廓

边缘检测器如何找出轮廓

边缘是亮度或颜色急剧变化的地方——一张脸、一座建筑,或天空衬托下的一片叶子的轮廓。检测器扫描每个像素,与邻域比较,把这些突变变成线条。下面的方法都从这一想法出发,但测量变化的方式不同,所以同一张照片可以变成细墨线、柔和的铅笔素描,或粗的形状轮廓。

查找边缘

“查找边缘”先把照片转为灰度,再应用两个小的 Sobel 核:一个看左右,一个看上下。用 √(gx² + gy²) 合并后,每个像素得到一个强度:这里的变化有多突然?强变化成为边缘。PictorX 默认反转结果,得到浅底上的深色线条——经典线描。可以保留透明度,让轮廓叠在图层后面的内容上。

PictorX 查找边缘示例:浅底上的深色线描轮廓
PictorX 查找边缘示例:浅底上的深色线描轮廓

Sobel

Sobel 使用同样的左右、上下核,但分别测量每个颜色通道。轮廓会保留一点原图颜色,而不是扁平的灰色素描。与 Canny 相比,Sobel 是更柔和的梯度:边缘有厚度和衰减,而不是单像素的二值线。默认开启反转,便于打印。

PictorX 中的 Sobel 边缘检测示例:照片的彩色梯度轮廓
PictorX 中的 Sobel 边缘检测示例:照片的彩色梯度轮廓

Laplace

拉普拉斯看的是二阶导数:不仅问“亮度在变吗?”,还问“这个变化本身是否到了峰值?” PictorX 使用 5×5 核,中心为 24,周围为 −1。边缘锐利处响应会尖峰,平坦区域接近零。结果再反转。Laplace 往往比 Sobel 抓住更细的纹理——织物、头发、树叶——所以看起来可能更忙。

PictorX 中的 Laplace 边缘检测示例:照片的细纹理轮廓
PictorX 中的 Laplace 边缘检测示例:照片的细纹理轮廓

Canny

Canny 是一条流水线,不是单个核。照片先转灰度并模糊,以免噪声变成假边缘。接着 Sobel 求出梯度的强度和方向。非极大值抑制只保留每条边缘的脊线,把宽梯度收成单像素线。最后用双阈值和滞后决定留下什么:高于高阈值的像素是确定边缘;介于低、高之间的像素只有连到确定边缘才保留。结果是干净的二值线描。加大模糊可忽略纹理;提高高阈值只保留最强轮廓。

PictorX 中的 Canny 边缘检测示例:照片的细二值线描
PictorX 中的 Canny 边缘检测示例:照片的细二值线描

发光边缘

“发光边缘”是不反转的彩色 Sobel:深底上的明亮彩色笔触。每个 RGB 通道都贡献自己的光晕,读起来像霓虹轮廓,而不是印刷线描。

XDoG

XDoG(扩展高斯差分)比较同一张照片的两次模糊:稍紧的一次和约 1.6 倍更宽的一次。按数量 τ 加权相减,会突出这两个尺度之间的对比带——正是绘画会落笔的地方。再用阈值把差值变成墨线。柔和笔触用平滑衰减(灰色铅笔);硬笔触则是黑或白。XDoG 更像素描,而不是科学边缘图。

PictorX 中的 XDoG 素描示例:由照片得到的铅笔笔触
PictorX 中的 XDoG 素描示例:由照片得到的铅笔笔触

形态学梯度

形态学梯度不用导数核。它膨胀照片(每个像素变成半径内最亮的邻域)再腐蚀(最暗邻域),然后相减。剩下的是每条形状周围一条与半径一样厚的带。它更跟外形走,而不是细纹理——适合要粗轮廓、而不是每道褶皱的时候。

PictorX 中的形态学梯度示例:照片的粗形状轮廓
PictorX 中的形态学梯度示例:照片的粗形状轮廓

该用哪种方法?

要细而干净的轮廓用 Canny。想要带一点灰色衰减的经典照片转线条,用查找边缘或 Sobel。要更多纹理选 Laplace,黑底霓虹选发光边缘,铅笔或墨水素描选 XDoG,更粗的形状轮廓选形态学梯度。可在边缘效果页试用每一种。

常见问题

照片中的边缘是什么?

边缘是亮度或颜色的突然变化——一条轮廓。检测器在每个像素测量这种变化,并把最强的变化变成线条。

Canny 和“查找边缘”有什么不同?

“查找边缘”(以及 Sobel)显示边缘强度的柔和梯度。Canny 会模糊,把这些梯度收成单像素脊线,再用双阈值只留下最干净的线。

为什么“查找边缘”会反转照片?

默认情况下,边缘变成浅底上的深色线条——熟悉的线描效果。关闭反转可得到黑底上的亮边缘。

哪种方法最像铅笔素描?

XDoG。它比较两次模糊,并在这两个尺度之间的对比处落笔,更接近墨水或铅笔,而不是科学边缘图。

准备好尝试了吗?

在浏览器中打开 PictorX — 无需安装,无需信用卡即可启动。

试用边缘效果