跳转到内容

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

复制本页

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

sigma: 2 降低高频细节。四个 binding 均已执行;govips 是当前参考输出,其他结果仍等待像素比较。

image-enhancement output
WEBP1938 × 1292, 92,650 bytes, 3 bands

Generated with 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 及掩模参数;它也可能放大噪点和压缩伪影。

image-enhancement output
WEBP1938 × 1292, 618,758 bytes, 3 bands

Generated with 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 是本示例的指数,不是通用默认值。

image-enhancement output
WEBP1938 × 1292, 490,284 bytes, 3 bands

Generated with 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 用同一 Sobel 核通过 convolve() 执行。三者都已生成结果,但卷积边界和编码差异仍应在目标场景中比较。

image-enhancement output
WEBP1938 × 1292, 943,036 bytes, 3 bands

Generated with 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 卷积展示跨 binding 输出;normalise() 和 clahe() 没有对应的 govips v2.19.0 公开高层入口,因此不展示伪造的 govips 实现。此处的缺口不表示 libvips 缺少 operation,也不应把内部 vipsGen* 当作稳定应用 API。