abox.tools

语言: 简体中文

怎么堆栈照片来压噪点,或者把人去掉

一串连拍比任何单帧都有更多信息。取平均降低独立的随机噪点,取每个像素的中间值可以移除出现帧数不到一半的东西。选哪种,取决于什么动过。

打开图片堆栈 二十张变一张,不用传二十次,也不用 RAW 转换器。

以 Markdown 查看

先说结论

打开图片堆栈,把整串连拍放进去,然后按你想甩掉什么来挑手法:

降噪时先用自动透视校正,三脚架拍摄的夜空也一样:相机不动,星星仍会移动。要有意保留星轨,或各帧已经对齐时,用不对齐。RAW 文件内含可用 JPEG 预览图时可以直接放进来,列表会显示图片的实际尺寸。

下面所有内容,都在说那五行为什么是那五行。

为什么一串帧比一张带的东西多

光线不好时拍的照片,是画面加上噪点,而噪点每一次都不一样。堆栈能成立,靠的正是最后这半句。同一个场景拍十六次,画面十六张都一样,噪点却不一样,所以取平均值就留下了画面,抵消了大部分噪点。

改善的幅度是帧数的平方根:四帧把噪点减半,十六帧减到四分之一,一百帧减到十分之一。这条曲线待着很难受,因为从十六帧走到六十四帧才能再改善同样多,而拍摄量是四倍。几乎所有实际的堆栈都落在八到三十帧之间,原因就在这里。

取平均还能让色调估计更稳定,因为每张有噪点的帧取整后的值略有不同。工具用更宽的累加器,最后才对合成值取整。保存的 PNG 或 JPEG 仍是每通道八位,平均值更干净不等于输出位深更高。

决定手法的那个问题

问题不是「我想留下什么」,而是各帧之间有什么是不一样的。别的都从这里推出来。

什么都没动:平均值

就是普通的平均。对一组帧与帧之间只差噪点的照片,这是能拿到的最有效的消噪方式,也是最容易被毁掉的那一种:只要有一帧里飞进来一只鸟,整个堆栈上就多了一只淡淡的鸟。平均值对一个跟别人不合的数值没有任何看法,它只是照单收进去。

有东西横穿过画面:中位数

把一个人来人往的广场拍的十几张对齐,盯住其中一个像素。多数张里它是地砖,一两张里它是某人的外套。把这十几个值排一下取中间那个,得到的是地砖,因为外套从来就不是多数。

每个像素都这么来一遍,广场就空了。所有那些「把游客从旅行照里去掉」的文章,背后就是这个把戏,而它需要的不过是一串连拍和一点耐心。它只要求一件事:场景里没有哪一处被占住的时间超过一半。在你那十二帧里站着不动了八帧的人,在那些像素上就是多数,中位数会把他留下。

两样都要:Sigma 裁剪

降低独立随机噪点时,中位数比平均值效率低。它使用中间一个或两个值,而不是所有值的平均。换来的好处是,不容易被少量与其余差距很大的值影响。

Sigma 裁剪先估计各通道的平均值和分散程度,再只对所选阈值内的数值取平均。经过少数帧的物体可能被排除,其余背景仍可平均。帧数少或物体频繁出现时,可靠性更低。默认阈值下,四个相同值中的一个不同值仍可能被接受。移除物体比最大程度降噪更重要时,请用中位数。

阈值以标准差为单位,初始值为二。降低阈值会排除更多值,也可能排除真实细节。如果某通道的值全部被排除,工具会保留该通道原来的平均值,而不是留下空洞。

只有亮的东西要紧:最亮

留下每个像素出现过的最亮值。把夜空拍成两百张三十秒的曝光,再用最亮合起来,每颗星都会在结果上画出自己那道弧,也就是一条星轨,由一堆单张从没过曝的短曝光拼出来。同一个手法能把一场烟花从它自己爆开的那些帧里重新拼起来,也能把一个人举着手电在暗屋里走一圈变成一幅光绘。

它的反面是最暗,是这一对里安静的那个:一个像素只有在每一帧里都亮才会保持亮,所以窗户上的反光、开过去的车灯、被闪光灯打亮的雨滴,全都会消失。

被摄体比景深厚:景深合成

f/8 的微距大概只有一毫米是清楚的,对一只虫子来说远远不够。办法是沿着对焦环拍二十张,再从每一张里只留下它自己清楚的那一部分。工具会量每个像素跟邻居差多少,在边缘上很大,在虚化处接近零,然后取赢的那一个。

这一种比别的都更需要三脚架,因为用手拧对焦环会带动相机,而一张从稍远一点拍到的帧,并不是同一个画面换了个焦点。

更亮的混合:相加

相加把解码后的图像值求和,再乘以曝光倍率。这些是八位图片值,得到的是加法混合,而不是模拟相机更长的曝光。明亮区域可能溢出。归一化亮度把倍率设为一除以帧数,也可以直接输入更小的倍率。

堆栈手法和设置,以及计划输出尺寸、估计工作内存、堆栈计划解码次数和检查读取量。
模式就是这一节要问的问题。下面的计划,是工具在开跑之前先把这趟的代价说出来。

对齐各帧

堆栈是逐像素的算术,所以它默认某个像素在每一帧里都是场景的同一处。手持的时候并不是:一串连拍会漂开几十个像素,把那样的东西平均起来,出来的是一团糊而不是一张干净的画面。第一次堆栈让人失望,头号原因就是这个。

每一帧与标着基准的帧比较,找到可靠的修正后再移回原位。默认用第一帧,拿它当基准可更换标记而不重排列表。请选择静态细节清楚、对焦准确的一帧。有四种对齐设置:

任何对齐都修不好的,是动了的被摄体而不是动了的相机,也修不好往左挪了一步再拍的那一张。横着挪会改变近处的东西相对远处的东西挪了多少,而没有哪一个统一的修正能同时说清这两者。原地转身没问题,走动就不行。

堆栈后打开对齐详情,查看每帧的状态和修正。无法对齐的帧仍会按原位置加入,如果它让结果变模糊,请移除并重新堆栈。结果打开时,左侧为基准,右侧为堆栈。用鼠标或手指拖动分隔线,或让分隔线获得焦点后使用左右方向键。移到任一边缘就能看到完整图片。分隔线仅在适应窗口下可用。选 100% | 实际像素会显示完整的堆栈结果,并移除对比选项。在 100% 下,拖动图片即可移动查看,也可以让预览获得焦点后使用方向键。用显示单独检查基准或堆栈。回到适应窗口即可再次使用分隔线对比。

分屏对比,左侧为基准帧,右侧为堆栈结果,中间有可移动的分隔线。
在噪点和细小边缘上移动分隔线,对比两张图的同一区域。如果堆栈模糊,请检查对齐详情。

RAW 文件在这里是什么位置

CR2、CR3、NEF、ARW、DNG、RAF、RW2、ORF 等文件内含可用 JPEG 预览图时可以打开。这里的处理与冲洗 RAW 传感器数据不同,需要说明清楚。

很多 RAW 文件内含一张相机渲染的 JPEG 预览图。工具会找到最大的可用预览图,用浏览器常规图片解码器打开。它可能比传感器图像小,有些文件则没有预览图。请检查每帧显示的尺寸。

由此有两个结果,一个是好处,一个值得知道:

可用的预览图可能足够用于降噪、星轨、移除路人和景深合成,限制是尺寸和相机的渲染。要自选白平衡、调整色调或恢复 RAW 暗部,请先冲洗各帧,导出 JPEG 或 PNG,再来这里堆栈。保存的结果仍是八位图片。

跑一次要花多少

值得知道,因为这是一次八秒和一次两分钟的分别。

六种手法的累加器大小不随帧数增加。平均值、最亮、最暗、相加和景深合成每条堆栈一遍,Sigma 裁剪两遍:先估计平均值和分散程度,再对保留的数值取平均。检查和对齐也会解码文件,所以一遍堆栈不等于总共只读取一次。

中位数必须保存正在合成的条带中每一帧的值。二十张 2400 万像素的帧,仅这些值就需要约 1.4 GB。分条可以减少同时处理的行数,代价是每条都要重新解码各帧。其他手法的工作缓冲区超过预算时,也可以分条。

开始前,工具会显示计划结果尺寸、估计工作内存、堆栈计划解码次数和检查读取字节数。内存估计包括建模的工作缓冲区,浏览器内部和内存回收可能让总用量更大。工作分辨率每降一档,图像面积缩小到四分之一,可能减少重复解码。对齐后裁剪的结果可能比原计划需要更少的条带。

为堆栈而拍

一次堆栈的质量,大半在任何软件看到它之前就已经定下来了。

这里没有一样东西离开过你的机器

二十个 RAW 帧差不多是一个 G 的照片,为了让人算一次平均值就把这么多交给一个网站,实在是多了。图片堆栈从你自己的硬盘读文件,在你自己的浏览器里做算术。没有上传这一步,没有账号,也没有排队。而这个说法你可以像核实任何人的说法那样核实:在它跑的时候打开浏览器的网络面板,或者干脆断网再堆一次。

与之相关的那个问题,也就是对任何一个工具,怎么判断把文件交给它到底有没有必要,有它自己的一篇指南。