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

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

[打开图片堆栈](https://abox.tools/zh/stack-images/): 二十张变一张，不用传二十次，也不用 RAW 转换器。

最后更新 2026 年 10 月 8 日

## 先说结论

打开[图片堆栈](https://abox.tools/zh/stack-images/)，把整串连拍放进去，然后按你想甩掉什么来挑手法：

- **噪点**，而且什么都没动过 | 平均值。
- **噪点**，但有东西动过 | Sigma 裁剪。
- **人、车、飞机** | 中位数。
- **想变成星轨的暗夜空** | 最亮。
- **景深浅得可怜的微距** | 景深合成。

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

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

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

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

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

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

## 决定手法的那个问题

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

### 什么都没动：平均值

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

### 有东西横穿过画面：中位数

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

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

### 两样都要：Sigma 裁剪

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

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

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

### 只有亮的东西要紧：最亮

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

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

### 被摄体比景深厚：景深合成

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

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

### 更亮的混合：相加

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

![堆栈手法和设置，以及计划输出尺寸、估计工作内存、堆栈计划解码次数和检查读取量。](https://abox.tools/screens/stack-photos-to-reduce-noise/plan.webp)

模式就是这一节要问的问题。下面的计划，是工具在开跑之前先把这趟的代价说出来。

## 对齐各帧

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

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

- **自动透视校正**是默认设置。它校正偏移、旋转和缩放，在整张图上的可靠测量支持时也校正透视。适合中央对齐、边缘星星却仍有拖影的广角夜空连拍。无法找到稳定的透视拟合时，就使用较简单的修正。
- **只平移**用于位置偏移但没有旋转或透视变化的连拍，只校正平移。
- **平移、旋转、缩放**适用于稍有转动或变焦发生变化的一组。每帧都需要额外测量，即使这些帧原本很正。
- 静态各帧已经对齐，或想让移动的星星形成星轨时，用**不对齐**。三脚架并不能让星星在整个夜空序列中保持在同一像素。

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

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

![分屏对比，左侧为基准帧，右侧为堆栈结果，中间有可移动的分隔线。](https://abox.tools/screens/stack-photos-to-reduce-noise/result.webp)

在噪点和细小边缘上移动分隔线，对比两张图的同一区域。如果堆栈模糊，请检查对齐详情。

## RAW 文件在这里是什么位置

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

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

由此有两个结果，一个是好处，一个值得知道：

- **省去传感器解码。**寻找预览图通常只需少量读取目录和文件头，随后浏览器读取 JPEG 片段来解码。页面显示的检查读取量统计这些目录和文件头，不包括图片解码器读取的所有字节。
- **那是相机的解释，不是你的。**每通道八位，带着相机当时设定的白平衡和照片风格，而不是转换器会给你的那十二位或者十四位线性传感器数据。

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

## 跑一次要花多少

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

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

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

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

## 为堆栈而拍

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

- **比你以为需要的多拍几张。**那条平方根曲线前松后紧：从四张走到九张，看得出的变化比从二十张走到四十张还大。
- **别在帧与帧之间改曝光。**堆栈默认这些帧是同一个场景、同一个亮度。把曝光锁住，否则这个工具就是在给两张不同的画面取平均。
- **要去人，就在帧与帧之间等一等。**两秒内拍完的一串连拍，会把同一个人钉在每一帧的同一处，中位数就会把他留下。隔几秒拍十张，比连拍五十张管用得多。
- **要星轨，就把间隔压短。**最亮画出来的就是这些帧记录下的东西，所以两次曝光之间的停顿，会在每一条轨迹上变成一段看得见的断口。

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

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

与之相关的那个问题，也就是对任何一个工具，怎么判断把文件交给它到底有没有必要，[有它自己的一篇指南](https://abox.tools/zh/guides/is-it-safe-to-upload-files/)。
