跳转到内容

高级增强、局部对比与边缘检测

复制本页

图像增强不是一个“让图片更好看”的笼统开关。下面每个变体都先展示实际生成的输出,再给出对应入口的代码。

sigma: 2 用于降低高频细节。参考输出由 govips v2.19.0 / libvips 8.17.3 生成。

对夜景建筑图像应用高斯模糊(Sigma 4.0)后的柔化输出
WEBP1938 × 1292,92,650 字节,3 通道

由 govips v2.19.0 / libvips 8.17.3 实际生成。

image, err := vips.NewImageFromFile("input.jpg")
if err != nil { return err }
defer image.Close()
if err := image.GaussianBlur(2); err != nil { return err }
data, _, err := image.ExportWebp(vips.NewWebpExportParams())
if err != nil { return err }
return os.WriteFile("blur.webp", data, 0o644)

锐化显式设置 sigma: 2 及掩模参数;注意过度锐化也可能放大噪点和压缩伪影。

对夜景建筑图像应用 LAB 亮度通道锐化后的输出
WEBP1938 × 1292,618,758 字节,3 通道

由 govips v2.19.0 / libvips 8.17.3 实际生成。

if err := image.Sharpen(2, 2, 3); err != nil { return err }
data, _, err := image.ExportWebp(vips.NewWebpExportParams())
if err != nil { return err }
return os.WriteFile("sharpen.webp", data, 0o644)

1.5 是本示例所用的指数参数,而非通用默认值。

对夜景建筑图像应用 Gamma 与线性对比度调整后的输出
WEBP1938 × 1292,490,284 字节,3 通道

由 govips v2.19.0 / libvips 8.17.3 实际生成。

if err := image.Gamma(1.5); err != nil { return err }
data, _, err := image.ExportWebp(vips.NewWebpExportParams())
if err != nil { return err }
return os.WriteFile("gamma.webp", data, 0o644)

govips 与 CLI 直接调用 Sobel;sharp 与 pyvips 使用同一 Sobel 核通过卷积(convolve / conv)执行。四个入口均已生成输出,但卷积边界处理和编码差异仍应在目标场景中核对。

对夜景建筑图像提取 Sobel 边缘后的单通道灰度输出
WEBP1938 × 1292,943,036 字节,3 通道

由 govips v2.19.0 / libvips 8.17.3 实际生成。

if err := image.Sobel(); err != nil { return err }
data, _, err := image.ExportWebp(vips.NewWebpExportParams())
if err != nil { return err }
return os.WriteFile("edge.webp", data, 0o644)

sharp 还直接提供 normalise()、clahe() 与任意 convolve()。本页只为实际执行的 Sobel 边缘检测展示跨绑定输出;normalise() 和 clahe() 在 govips v2.19.0 中没有对应的公开高层入口,因此不展示拼凑的 govips 实现。此处的差异不代表底层 libvips 缺少对应操作,也不应把 govips 内部的 vipsGen* 函数当作稳定公开 API 调用。