马赛克，其实就是平时摄影里面说的接片。在望远镜视角不够的情况下，马赛克可以提供更大的视角。同样的对象，更小的镜子可能一张就可以搞定，马赛克就是用更大的镜子接片来拍摄。这样可以提供远远更多的细节，即使缩图后也可以一眼看出来。同时对器材星点的要求也要低很多。我进入深空马赛克摄影这个大坑中的大坑也有半年多了，被它的地狱难度折磨之余，也因为它的魅力一直坚持着。可是网上讲解马赛克的文章很少，就算有介绍基本技术流程的，也大都着眼具体步骤的操作而没有更实战的内容。在这篇文章里，我会比较详细地介绍一下马赛克摄影中间可能会遇到的问题，以及如何解决。希望可以成为一个比较完备的入门进阶的资料。
 
## 前期
 
我们器材党，开拍之前需要先问一个问题，到底什么样的器材才适合马赛克呢？马赛克的优势主要是分辨率和信噪比。分辨率方面比较简单，口径越大的镜子光学分辨率就越高。马赛克信噪比的分析和一般的对象比较不同，一般从etendue的角度进行计算。[这里](/astrophotography-snr-telescope.html)有一个比较直观的介绍。基本思路就是一个光学系统的集光能力不仅和口径相关，同时也和传感器的面积相关。在拍摄小对象的时候，我们总是可以保证传感器能装下这个对象，所以往往说信噪比仅和口径相关。但在分析马赛克的时候，同时还要考虑传感器的面积。经过一些计算，最终的结论是，在大家都用同种相机的情况下，马赛克系统的集光能力（效率）仅和焦比相关，越快的镜子效率越高。所以我们在做[广域巡天](/duck-sky-survey.html)的时候，在保证不秃头的情况下，一般都用比较快+成像圈大的镜子。具体需要计算一下镜子的etendue（通光面积 x 视野）。
 
有了趁手的器材以后，马赛克和一般拍摄看上去唯一，或者说最明显的不同是拍摄计划更加复杂。我们不再是指向一个地方猛拍，而是需要做一个更复杂的拍摄计划。在ZWO的盒子里面叫多目标拍摄，NINA里面一般用高级序列进行处理。有很多网站/软件可以做马赛克的计划，比如Telescopius，或者NINA里面也有这个功能。我个人感觉Telescopius是功能比较强的一个平台，可以兼容有电动CAA和没有电动CAA的情况，对高赤纬的兼容性也比较好。它的使用非常直观，可以导出csv文件，直接贴到盒子/NINA里面就可以直接生成拍摄计划了。NINA的工具的好处是可以直接生成NINA里面的目标，但坏处是对高赤纬的兼容性比较差。
 
啥叫高赤纬的兼容性呢？这牵涉到天球的坐标系。类似地球，天球也有赤道，用相对赤道的纬度（赤纬）和经度（赤经）来定位。其中，每条纬线都是相互平行的（东西向），但每条经线相交于天球的南北极，并不是互相平行的。这在低纬的地方问题并不明显，可以近似为是平行的，但在高纬的地方就会有明显的偏差。所以即使我们的相机角度固定了，比如就是90度，也就是相机的x轴平行于经线，但我们在高赤纬的天区，从一条经线goto到另一条经线的时候，相机的x轴其实还是旋转了。体现在马赛克的规划上，就是横着的一排相机视角不再是互相平行的矩形，而是带有一些倾角。如下图所示。这个倾角会带来一些问题，比如中间可能会出现一些洞，比如图中的4，8，3号区域中间的一小块。这样的洞在最终合成的时候就会因为没有拍到任何信息，看上去就是一个黑的补丁。所以我们在高赤纬的地方要尤其注意这一点，要么增大帧与帧之间的重叠，要么引入电动CAA来纠正这一点。
 
![High Declination Mosaic Failure](https://yage.ai/images/astro-mosaic-high-dec.jpg)
 
马赛克前期还有一个坑是中天翻转。这个在拍广域比如4x4的马赛克的时候特别明显。我有次拍的时候，运气不好，一晚上翻了四次，头都秃了。这个问题其实基本上只要注意到了就不会太惨。我自己的习惯是按列拍，也就是拍的时候固定赤经，变动赤纬南北方向拍。然后估计每一列需要多少时间，这个拍摄的速度和实际天球转动的速度只要差的比较大，就不会遇到赤道仪反复横跳的事情。
 
所以我们可以看到，如果想拍好马赛克，不仅需要更繁琐的步骤，同时还要对各个基本知识有更深刻的理解，比如etendue的概念，天球坐标系的理解，才能保证前期不出错或者效率高。所以我觉得这个是天文摄影里面一个相对进阶的内容。下面我们继续介绍一些后期的内容。这些要点有的也会影响前期。
 
## 后期
 
马赛克后期我比较推荐的基本流程是，在PI（PixInsight）里面使用WBPP校准叠加；对master做一些处理，比如剪裁，DBE等等；然后扔到APP（Astro Pixel Processor）里面马，出来每个通道马好的master；最后回到PI正常后期。为什么不用PI马呢，是因为实在是太慢了，效果也不好。为什么不用APP叠呢，是因为WBPP实在是太香了。WBPP可以用一个grouping keyword（分组关键字）来自动把马好的图分成很多组，每个组分别对齐叠加。比如我们拍摄的时候，把帧（panel）的编号放到目标的名字里，拍出来的图片可能就叫Panel_1_xxx.fit, Panel_1_yyy.fit, Panel_2_xxx.fit, Panel_2_yyy.fit。然后在WBPP里面我们把"Panel"设置成一个grouping keyword，就可以实现前两个图和后两个图分别对齐叠加，出两张master，非常方便。具体如何使用有很多细节需要注意，我们这里不再赘述，可以找一下网上相关的教程看一下。
 
在马赛克后期的过程中，一个非常重要的技巧就是批量处理。比如4x4 LRGBSHO的马赛克，光master就112张。但PI输出的是xisf文件，APP不认xisf，只能用fits。要一张张打开另存为头发早掉光了。所以就需要用一些技巧把xisf文件批量转为fits。这里主要用PI里面的ImageContainer。我们这里提供一个非常繁琐的文字叙述，以后会加上一个小视频来解释。大概地说，我们先用Ctrl+Alt+I打开ImageContainer，加载需要处理的文件，填入输出的路径和文件名，注意文件名的扩展名要设置成.fit。然后拖动小三角图标把它变成一个icon。接下来打开需要的process，比如这里是Resample，把缩放的比例设成100%（就是默认值，也就是不缩放），然后拖动小三角到刚才的icon上，PI就会开始批量处理所有指定的文件了。（这里还有一些细节是Resample会报一个错，所以要把里面的代码改成noGUIMessages = true，此处不赘述，具体可以搜索报错信息）
 
马完以后，一个很常见的问题就是图像一格一格的（如下图）。这往往是因为校准不完美导致的，可能是平场没拍好，或者是在拍摄的时候有眩光进入（比如大月亮的时候拍摄）。解决方法有前期的也有后期的。最理想的情况是，把平场和亮场拍摄的条件完全统一，比如不要在大月亮的时候硬拍。或者有条件的时候把每个通道分散在几个晚上多拍拍，这样平场纠正的缺陷就不会那么单一和极端。如果不能改变前期的话，后期的时候也可以对每个master进行DBE或者LocalNormalization，可以减轻这样的瑕疵。但我发现如果要对每个master进行修整的话，一定要用DBE而不能用ABE，否则整个图像的大尺度反差会被不自然地拉大，比如亮星云的外围有个黑圈等。
 
![Mosaic Flat Failure](https://yage.ai/images/astro-mosaic-flat-failure.jpg)
 
有些比较特殊的天区还有一些特殊的挑战。比如猎户这种亮星比较多的地方会有很多"圣光"，也就是视野外亮星的光打到某些组件，比如CMOS针脚上面辗转反射进CMOS感光区域的光。这种情况可以通过前期增大重叠，后期把圣光裁剪掉来解决。但是要注意同一个视野（panel）不同通道的裁剪方式要完全相同，否则可能出现通道对不齐的情况。在天赤道附近，还有一个问题是同步卫星非常多。同步卫星相对我们来说是静止的，在星轨里面会显示成一个点。但相对于恒星来说跑得就很快了，在赤道仪里面会拉成一条线。所以天赤道附近的区域在前期规划的时候就不要用长曝光，而要用稍短的曝光，保证张数来排异。
 
## 展示
 
在后期完成以后，另一个非常有挑战的问题是展示。直接传图到图片分享网站上去不是一个特别好的选择。虽然在仔细看或者稍微放大看的时候，马赛克会和一般单张的妖艳贱货很不一样，但现在大家都是手机看片，一张图扫个2秒，觉得平平无奇就过了，太可惜。这种大图比较适合像轰炸一样把所有的细节一下展示出来，让观众直接迷失在细节的海洋里。所以我觉得实体打印或者灯箱展示是比较好的。我自己先打印了一个1米长的图，挂在家里感觉很爽，现在还在打印一个2米长的图，等有结果了再来更新。
 
如果实在需要网络分享，也只能退而求其次了。但99%的人都是没有耐心等一张100多MB的马赛克图片加载完成的。所以我们需要一些技术手段来实现逐层渲染（progressive rendering），就像百度地图一样，随着你不断放大，总会有新的细节出来给你惊喜。而且因为只要动态加载视野里面相应分辨率的图片，速度也很快。这里有一个例子：[https://lab.grapeot.me/gigapixel/DeepAndWideFieldOrion/](https://lab.grapeot.me/gigapixel/DeepAndWideFieldOrion/)。这样的图做起来也很简单，在Photoshop里面直接选择文件->导出->Zoomify就可以了。
 
以上简述了一些马赛克的过程中可能会遇到的挑战，如何在实战中解决，以及相关的理论知识。希望可以让大家在开始马第一张图的时候不要那么头秃。我现在在做天马球赛克，不是，天球马赛克，里面遇到的问题又更复杂了一个层次，比如要了解不同球面投影的方式从而进行坐标换算，自己写程序来生成每天的拍摄计划（几百个panel一个个加进NINA手要点烂掉），使用更复杂的可视化软件来实现VR观星等等。等有更多进展我再来汇报鸭。

<script async data-uid="49b08a3e73" src="https://yage-ai.kit.com/49b08a3e73/index.js"></script>
