图像边缘检测 (Sobel / Scharr / Prewitt)
图片
边缘检测寻找图像中亮度急剧变化的位置 ─ 物体与背景的轮廓、光与影的边界、天空中建筑的剪影。Sobel·Scharr·Prewitt 是逐像素近似水平/垂直亮度梯度的三种经典 3×3 可分离卷积核。梯度幅值 √(Gx² + Gy²) 经阈值二值化为边缘/非边缘像素。Sobel 是 ±1 ±2 ±1 权重的教科书选择;Prewitt 使用 ±1 均匀权重(对噪声更不敏感但角点精度较低);Scharr 使用 ±3 ±10 ±3(各向同性最好,适合亚像素工作)。三者均完全在浏览器中运行 ─ 图像不会离开标签页。对颗粒状照片可先做 0–4 次盒滤波模糊以降噪,选择 0–255 阈值,换色实现蓝图·素描·霓虹效果,并以 PNG 下载。
—
使用方法
- 上传或拖放图片(长边不超过 1200 像素的 PNG / JPG / WebP)。
- 选择算子 ─ 通用 Sobel,最干净轮廓 Scharr,最简单权重 Prewitt。
- 上调阈值变细边缘,下调包含更弱的梯度。
- 图像颗粒明显、噪声过多时增加预模糊次数。
- 更换前景/背景色或选用预设(经典·蓝图·素描·霓虹)后下载。
常见问题
- Sobel·Scharr·Prewitt 有何区别?
- 三者均以 3×3 核近似图像梯度。Prewitt 用 ±1 均匀权重 ─ 最快、最易受噪声影响。Sobel 在中央行/列加 ±2 ─ 精度与噪声的经典折衷。Scharr 用 ±3 / ±10 / ±3 ─ 解析推导得到最小角度误差,斜向边缘还原最忠实。多数照片下 Sobel 与 Scharr 几乎一致;在带纹理的背景上 Prewitt 噪声明显更多。
- 为何要预模糊?
- 边缘检测器是梯度放大器 ─ 真实边缘和像素级随机噪声会同时被放大。轻微模糊(1–2 次 3×3 盒滤波)在不显著钝化真实边缘的前提下平滑噪声。这正是 Canny 边缘检测器的核心思路(高斯模糊 + Sobel + 非极大抑制)。干净照片可保持模糊为 0;噪声较多的扫描或弱光照片可试 2 或 3。
- 我的图片会上传到某处吗?
- 不会。图片被读入浏览器画布,并在设备本地由 JavaScript 处理。任何内容都不会发送到服务器。可以放心处理敏感图片;它们只存在于当前标签页,关闭即消失。
- 可以检测颜色边缘而非亮度吗?
- 本版本不支持 ─ 输入先转为灰度亮度(0.299 R + 0.587 G + 0.114 B),然后在亮度上计算梯度。这是最常见的做法,因为与亮度边缘重合的色边缘会得到相同结果,而同等亮度的纯色边界(如同亮度的纯红与纯绿) 在视觉上较弱,通常不是边缘检测的目标。