资讯详情

资讯详情

从像素级操作用到真实纸张质感:make-look-scanned的6大图像算法完整拆解

图像处理开发工具【免费下载链接】make-look-scannedMakes PDFs look scanned (CLI or in the browser via WASM)项目地址https://gitcode.com/gh_mirrors/mak/make-look-scanned点击查看免费下载make-look-scanned 是一个 Go 编写的 PDF 扫描效果生成工具它把一份电子 PDF 逐页劣化成扫描件的样子——倾斜、灰度、暖纸色、扫描颗粒、失焦模糊、边缘阴影再加上低质量 JPEG 压缩痕迹。它既能作为命令行 CLI 使用也能通过 WebAssembly 在浏览器里本地运行全程不上传文件。本文带你从像素级操作开始完整拆解它的 6 大图像算法看懂电子文档是如何一步步变成真实纸张质感的。效果流水线顺序为什么决定真实感核心思想在 internal/effects/pipeline.go 中一句话讲清每个效果是一个独立阶段对应一个 CLI 参数数值参数为 0 时该阶段自动关闭。流水线按固定顺序执行这个顺序本身就是算法设计灰度 → 2. 纸张色调 → 3. 高斯模糊 → 4. 噪声 → 5. 边缘阴影 → 6. 倾斜旋转页面先做旧、再旋转这样之前所有效果都会跟着纸张一起歪斜而不是贴在画面上的死板滤镜。第 7 步 JPEG 压缩则放在组装阶段见下文因为低质量压缩本身就是扫描仪最露馅也最可信的特征。 另一个容易被忽略的细节每个随机效果噪声、倾斜各自持有独立的随机数生成器且播种顺序固定。这样噪声的随机数消耗不会因为 DPI 变化像素更多而干扰倾斜角度保证同一输入 同一种子 字节级一致的 PDF。6大算法逐个拆解以下每个算法都对应一个源文件位于 internal/effects/ 目录全部用纯 Go 手写像素运算不依赖图像处理库。① Grayscale把整页压成单一亮度源码internal/effects/grayscale.go算法只有一行核心逻辑对每个像素按 Rec.601 亮度公式计算灰度值Y 0.299R 0.587G 0.114B然后 R、G、B 三通道全部赋为 Y。这是人眼感知最接近真实的去饱和方式也是老式扫描仪默认输出的传真灰基础。② Paper tone暖白纸色 黑色抬升源码internal/effects/papertone.go真实纸张不是纯白。这个算法做两件事白纸变暖白把纯白 (255,255,255) 映射到纸色 (250, 247, 236) —— 略带米黄的 off-white黑色抬升最黑的墨迹不再是 0而是抬升 18 个亮度等级变成扫描灰。参数--paper-tone0~1控制原图与调色结果的混合强度。这一步让整页瞬间从屏幕感变成打印纸感。③ Blur可分离高斯模糊模拟失焦源码internal/effects/blur.go实现教科书级的可分离高斯卷积根据 sigma 生成 1D 高斯核半径取ceil(3σ)权重归一化先做水平方向卷积到临时缓冲再做垂直方向卷积回结果。相比直接做 2D 卷积可分离写法把复杂度从 O(n²·σ²) 降到 O(n²·σ)性能提升巨大。sigma 即 CLI 的--blur参数模拟扫描仪光学系统的轻微失焦。④ Noise高斯分布的扫描颗粒源码internal/effects/noise.go对每个像素加上一个高斯随机数标准差由参数线性放大stddev noise × 40。关键在三通道加同一个噪声值n同时加给 R/G/B这样噪声只改变亮度、不改变色相——这正是真实 CCD 传感器读出噪声的表现而不是花屏。⑤ Edge shadow纸张微微翘起的边缘暗影源码internal/effects/edgeshadow.go模拟纸张没有完全贴合玻璃、边缘微微翘起造成的边缘暗角vignette影带宽度取页面短边的 12%每个像素到最近边缘的距离 d 决定变暗程度边缘最深、向内线性淡出到 0远离边缘的像素直接跳过不做无谓计算。⑥ Skew随机小角度旋转 双线性抗锯齿源码internal/effects/skew.go扫描时纸放歪了——这是最容易被识别、也最难伪造的特征。算法在 ±--skew度内随机取一个角度对每个目标像素做反向旋转回到源图坐标用双线性插值采样落在图像外的邻近点贡献纸色 (250,247,236) 而不是钳制到 0于是旋转后的页面边缘自然与纸底色混合形成平滑的抗锯齿边线而非锯齿状硬边。 反向映射 亚像素采样是旋转类效果的通用正确姿势正向映射会留下空洞像素。隐藏的第七步JPEG 压缩痕迹前 6 个算法处理完页面还是无损的。真正让它像扫描件的是组装阶段的低质量 JPEG 重编码源码见 internal/assemble/assemble.go每页编码为 JPEG默认质量 70可低至 1直接嵌入图片型 PDF页面尺寸保留 PDF 原始的 point 尺寸非标准页幅不丢精度特意选用 gopdf 而非 fpdf因为它按确定顺序序列化、不打时间戳——这是确定性输出的最后一环。快速上手一条命令生成扫描件go build -o make-look-scanned . ./make-look-scanned in.pdf # 输出 in.scanned.pdf ./make-look-scanned in.pdf --noise 0.4 --skew 2.5 --jpeg-quality 30主要参数一览数值为 0 即关闭对应效果参数默认值对应算法--skew0.6⑥ 倾斜角度上限度--grayscaletrue① 灰度唯一布尔参数--paper-tone0.6② 暖纸色调强度 0~1--blur0.4③ 高斯 sigma--noise0.08④ 扫描颗粒 0~1--edge-shadow0.15⑤ 边缘暗角 0~1--jpeg-quality70⑦ JPEG 质量 1~100--dpi150渲染分辨率最高 1200--seed内容哈希随机种子所有参数会先经过Validate()统一校验见 pipeline.go 第 44~62 行超范围直接报错避免浪费渲染时间。配置预设把常用参数存成 config.toml在~/.make-look-scanned/config.toml或$XDG_CONFIG_HOME/make-look-scanned/config.toml中定义预设[presets.medium] skew 1.5 paper_tone 0.6 noise 0.2 blur 0.6 edge_shadow 0.3 jpeg_quality 45之后./make-look-scanned --preset medium in.pdf即可。优先级为内置默认 → 预设 → 显式 CLI 参数后者永远胜出实现逻辑在 internal/config/config.go。为什么同一份文件总生成同样的扫描件默认情况下种子由输入 PDF 的字节内容用 FNV-64a 哈希得出见 main.go 的contentSeed因此同一 PDF 反复运行 → 完全相同的扫描件方便复现、便于比对传--seed N→ 换一个可复现的长相同一输入 同一种子 →字节级一致的 PDF。同一套算法跑在浏览器里由于 go-fitz/MuPDF 无法编译到 wasm浏览器版换用 PDF.js 渲染页面但拿到像素后交给同一套 Go 效果算法编译为 wasm入口在 cmd/wasm/main_js.go页面在 web/index.html./web/build.sh # 开发模式 task build:web # 打包成单文件 dist/make-look-scanned.html单文件 HTML 内联了 wasm、Go 运行时胶水代码和 PDF.js双击即可离线使用。浏览器版与 CLI 视觉效果一致渲染器不同字节不保证一致。小结make-look-scanned 的魅力在于用工程换真实灰度、暖纸色、失焦、颗粒、暗角、歪斜六个算法各自只解决一个物理现象顺序和随机性又都经过精心设计最后用低质量 JPEG 收尾。理解它 6 大算法的实现你对图像流水线可分离卷积、反向映射采样、按通道一致的噪声、确定性随机播种也会多一层实战认知。赞分享图像处理开发工具【免费下载链接】make-look-scannedMakes PDFs look scanned (CLI or in the browser via WASM)项目地址https://gitcode.com/gh_mirrors/mak/make-look-scanned点击查看免费下载相关推荐SQLite3 can only bind 报错完整排查HeyGem.ai 添加语音模型1 个根因 3 种修法SQLite3 can only bind 报错完整排查HeyGem.ai 添加语音模型1 个根因 3 种修法 HeyGem.ai 添加语音模型时弹出的 SAI 应用人工智能数字人语音音频make-look-scanned快速教程3分钟把PDF变成「逼真扫描件」完整入门指南make look scanned快速教程3分钟把PDF变成「逼真扫描件」完整入门指南 make look scanned 是一个开源 PDF 扫描件生成工图像处理开发工具为什么nnAudio的可训练滤波器是音频深度学习的游戏规则改变者终极指南揭秘为什么nnAudio的可训练滤波器是音频深度学习的游戏规则改变者终极指南揭秘 在音频深度学习的领域中 nnAudio的可训练滤波器 正在彻底改变游戏规则这创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →