作者hotdogee (hotdog)
看板DSLR
标题[作品] 日环蚀4K缩时 开发专属稳定化程式 [P950]
时间Mon Jul 6 04:49:43 2020
作品连结:
* 稳定前:
https://youtu.be/71vtskpdcXA
* 稳定後:
https://youtu.be/M4H9w8yh4Fg
拍摄时间:2020/6/21
拍摄地点:海口故事露营园区
使用相机:Nikon P950
滤镜:Ice 67mm ND100000
-
https://i.imgur.com/FRsYups.jpg
赤道仪:Sky-Watcher Star Adventurer
-
https://i.imgur.com/HyhZPv8.jpg
-
https://i.imgur.com/kUtBhWJ.jpg
-
https://i.imgur.com/UIrNOHN.jpg
-
https://i.imgur.com/unEBClo.jpg
定时快门线:PIXEL TC252
三向齿轮云台:Manfrotto MHXPRO-3WG
EXIF资讯:曝光秒数 1/1000秒
光圈 F6.5
焦距 2000mm
ISO速度 100
拍摄现场:
* 摄影中:
https://i.imgur.com/NHeoc5Y.jpg
* 拍摄现场 (360全景 8K缩时):
https://youtu.be/Erfkf5JPJl0
* 现场机海 (360全景 16K):
https://kuula.co/share/7bTy7
* 蚵田日落 (360全景 16K):
https://kuula.co/share/7bTWs
出动相机:
* 日环蚀缩时:Nikon P950
* 随意拍:Nikon D7000 + Sigma 8-16 + Nikon 18-300 + Nikon 35 f1.8
* 8K全景录影:Qoocam 8K
* 16K全景摄影:Xphase Pro S
技巧解说及心得分享:
日环蚀拍摄共得 3868 张 DNG 原始档,因种种因素每张的太阳都不在定点,
因过程调整赤道仪与脚架,月球进出的角度也不固定。如果直接硬叠起来就是
开头稳定前的连结那样。
试了好多方法,但是现有稳定化与自动对准软体遇到这次日环蚀照片通通破功,
原因是背景是几乎全黑的,背景没有任何跨所有照片的固定细节可以让软体抓,
而前景太阳也因为日蚀的关系每张图的太阳的形状都不固定,
太阳本身也没有高对比的固定细节可以抓 (除非用很贵的窄频 Ha 滤镜)。
要将所有照片稳定化可分为两个工作:
1. 固定太阳的位置 (找出太阳的中心座标)
原始彩色图 -> 灰阶 -> 黑白(临界值25) -> A
制作大小与太阳一样大,宽度 50 的黑白遮罩 -> B
分别将 A 与 B 做傅立叶转换後在频域相乘後再将结果做逆傅立叶转换即为卷积 -> C
取 C 图中亮度最大的座标即为太阳中心座标
几个例子计算结果:
https://i.imgur.com/IufL1Lj.jpg
2. 固定月亮进出的角度 (找出月亮的中心座标)
将太阳置中後 -> 灰阶 -> 黑白(Otsu演算法) -> A
制作大小与月亮一样大的黑白圆盘遮罩 -> B
一样用傅立叶转换计算 A 与 B 的卷积 -> C
取 C 途中亮度最小,且最接近太阳中心的座标即为月亮中心座标
同样几个例子的计算结果:
https://i.imgur.com/k94dy4B.jpg
程式中心侦测结果,红圈为太阳,绿圈为月亮:
https://i.imgur.com/NjU8i99.jpg
两个关键座标找出来後,即可全部调整到同一个位置与角度:
https://i.imgur.com/IOidzcU.jpg
== 程式下载 ==
开放原始码与英文使用说明:
https://github.com/hotdogee/solar-eclipse-timelapse-aligner
EXE下载:
https://github.com/hotdogee/solar-eclipse-timelapse-aligner/releases/download/
v1.0/solar-eclipse-timelapse-aligner-v1.0-windows-x64.zip
缩:
https://bit.ly/3eiVabp
范例输入图档下载:
https://drive.google.com/file/d/10VEHLhs8JEQbKvKjmRGHTbSi0DoADwVS/
简易中文使用说明:
1. 把JPG图片复制到一个新的资料夹作为输入资料夹 (例如 D:\jpg),
用自己的图档前建议先用以上范例输入图档试跑看看。DNG图请先输出为JPG。
2. 挑一张太阳最完整的图,给程式自动侦测太阳半径使用 (例如 D:\jpg\DSCN3815.jpg)
指令:eclipse-aligner.exe --input=D:\jpg --sun=D:\jpg\DSCN3815.jpg
若没有完整太阳的图,或是自动侦测结果不够精准,可以手动给半径 (1210像素):
指令:eclipse-aligner.exe --input=D:\jpg --sun_radius=1210
3. 执行完成後会产生三个新资料夹与一个JSON档。
jpg-output:太阳置中後的结果图。
jpg-circled:原始图加上侦测到的圈圈,用来判断侦测结果好坏,与参数调整用。
jpg-sun-binary:黑白照片,如果太阳边缘毛毛的或不够清晰,
可以增减参数 --sun_threshold=25 预设为25,高於此灰阶亮度为白色。
circles_data.json:包含侦测到的太阳座标资料。
4. 如果置中後,月亮的进入的角度也不够稳,可以启用角度修正功能
指令:eclipse-aligner.exe --input=D:\jpg --sun=D:\jpg\DSCN3815.jpg
--fix_angle=17 --moon_radius_mod=-24
--fix_angle=17 会把角度修正为17度
--moon_radius_mod=-24 表示月亮半径比太阳小24像素
--
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DSLR/M.1593982188.A.842.html
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 04:53:00
1F:推 seth5421: 头推 07/06 05:00
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 05:09:50
2F:推 antitank: 高手 07/06 07:16
3F:推 changmada: 大神!作品真是完美 07/06 07:45
4F:推 AzureSoul: 看到傅立叶转换我就跪了 07/06 07:58
5F:推 Lian949: 已跪 07/06 07:59
6F:推 carl3104: 该快推不然网友以为我看不懂 07/06 08:46
7F:推 zaqwer: 这里不是DSLR板吗?为什麽我都看不懂?! 07/06 08:52
8F:推 lvlvlv2g: 傅立叶到底是谁啊啊啊啊啊啊啊啊(崩溃 07/06 08:55
9F:推 carl3104: 楼上 我记得是某个风景摄影大师吧 07/06 09:16
10F:推 soarling: 不罗嗦 看到FT就推 07/06 09:24
11F:推 notsmall: 原来是影像处理大师啊 07/06 09:29
12F:推 zebirlin: 太强 已跪 07/06 09:32
13F:推 Rogozov: 看到摄影版出现傅立叶转换真的是只能跪了 07/06 09:33
14F:推 AnewMitch: 跪了 07/06 09:36
15F:推 x81089130: 推 07/06 09:36
16F:推 hchen18: 第一次在摄影版看不懂文章XDD 07/06 09:44
17F:推 DaJoJo: 强 07/06 10:01
18F:推 Wangdy: 快推不然别人因为我看不懂 07/06 10:20
19F:推 shachitw: 太神啦 07/06 10:22
20F:推 Jokering5566: 科学精神 给推 07/06 10:25
21F:推 taleschia: 我妈问我为什麽大中午要跪柏油地面... 07/06 10:31
22F:推 penguin0172: 想请问原po将两张相片做convolution可以得到中心座标 07/06 10:32
23F:→ penguin0172: 的原理是什麽?谢谢 07/06 10:32
24F:推 meimeiamy: 我妈问我为什麽跪着看手机 07/06 10:39
25F:推 eiki787: 傅立叶转换 早就忘光光的东西 07/06 10:46
26F:推 haze: 好强!!! 07/06 10:53
27F:推 enderboy7652: 强 07/06 10:58
28F:推 briantw: 推,这我跪了... 07/06 11:00
29F:推 yen0619: 跪了 07/06 11:08
30F:推 blessme: 下次有人说学数学没用我就拿这篇打脸他 07/06 11:10
31F:推 louis2333: 有没有人支援一下白话文.. 07/06 11:11
32F:推 XiaoSung: ?????先跪了 07/06 11:20
33F:推 octboy1978: 不懂……快推 07/06 11:28
34F:推 GohHiong: 我记得明明学过傅立叶可是看不懂这篇XD 真的太神了! 07/06 11:32
35F:推 pupuliao: 我的理解是 因为每一张照片的中心点会有所偏差 07/06 11:33
36F:→ pupuliao: 所以要透过找出太阳中心 重新调整每一张照片 07/06 11:34
37F:推 cowboy17935: 看不懂 只好推了 07/06 11:34
38F:推 kblover: 超神~ 07/06 11:34
39F:→ pupuliao: 那这样说天文台的设备应该可以抵销这类误差 07/06 11:35
40F:推 SonyA7RIII: 您是神 07/06 11:38
41F:推 st210113: 我以为走错版了 原PO太强大啦 07/06 11:39
42F:推 ceoper256: 22楼:把convolution想像成两个函数的空间乘积的话 07/06 11:41
43F:→ ceoper256: 就可以把卷积结果当成「遮罩与太阳轮廓重叠面积最大」 07/06 11:43
44F:→ ceoper256: 的位置,因为是圆形所以这位置就是太阳圆心,大概吧 07/06 11:45
45F:→ ceoper256: 低智商文组建构式理解勿呛QQ 有请高手说明实际的计算 07/06 11:46
感谢帮忙说明,我也试试补充说明,以本文太阳版用法来说,请看文内附图辅助,
A 图解析度为 4,608 x 3,456 = 15,925,248 像素,这是 P950 的解析度 16M。
B 图(遮罩)解析度为 2,423 x 2,423,因为这是我拍到的太阳的大小。
A 与 B 图皆为黑白,来想像卷积计算:
* 对 A 图内每一个像素做以下运算,有 15,925,248 个像素,所以要做 15,925,248 次:
* 把 B 图(遮罩)中心对齐叠在该 A 图像素後,
计算 A,B 两图相叠的地方,颜色都是白色的像素位置有几个。
因此可以想像当上述遮罩中心跑到 A 图太阳中心时,A,B 两图都是白色的数量会最大化,
也可以想像当遮罩中心从太阳中心往上下左右任何一方向移动後,
A,B 两图都是白色的数量都会下降,
所以取卷积结果内,数字最大的座标即为太阳中心座标。
由此可知本法要能正确找到太阳中心座标的关键在於遮罩的设计,
与太阳能否很乾净地从背景分离出来,
遮罩的大小一定要刚好符合你所拍到的太阳的大小,遮罩太大或太小都会造成
卷积结果有多个座标都是最大值,而造成选择困难的误差。
如果太阳边界不够乾净,例如有光晕,可能需要多尝试几个转黑白的临界值,
直到找到乾净的黑白太阳边界,程式才会准。
* 额外说明:
直接计算这个卷积共需要做:
4,608 x 3,456 x 2,423 x 2,423 = 93,496,000,315,392 个乘法与
几乎一样多个加法运算,如果简单用一个时脉一个运算来看,
5GHz 的 CPU 也要花 93,496,000,315,392 / 5,000,000,000 = 18,699 秒
约 5.2 小时才算的完,而本篇每张图都用了两次卷积,
一张图要花上半天是无法接受的。
但若使用傅立叶转换法,只要 2~3 秒即可完成。
推
rinkai: 楼上土木巨巨大大大说自己文组那我们乾脆ryyyyyy 07/06 11:59
46F:推 m18680768: 好猛! 07/06 12:40
47F:推 john801110: 所以这个程式是大大自己设计的?能出下载版吗XDD我极 07/06 12:42
48F:→ john801110: 轴没对准也是慢慢偏移 07/06 12:42
49F:推 diablohinet: 超强...已跪 07/06 12:59
50F:推 godchildtw: 还以为有EXE可以用了,2300多张手动一张一张调, 07/06 13:01
51F:→ godchildtw: 剩下200张就调完了。 07/06 13:01
52F:推 jeffc815731: 好强 最後几乎是教科书级的照片 07/06 13:53
53F:推 tom2541c2: 我妈叫我不要再跪着滑手机了 07/06 14:18
54F:推 Epsilon: 强!要不要考虑释出原始码或可执行档让其他人下载? 07/06 15:50
55F:推 andy3020: 学生时期没搞懂过傅立叶........太猛 07/06 15:53
56F:推 pirrysal: 太神啦! 07/06 16:01
57F:推 erig25: autocorrelation? 07/06 16:23
58F:推 rainxo6p: …是神 07/06 16:27
59F:推 IslandHeart: 这可以写论文了XD 07/06 16:57
60F:推 windblood: 先跪在说... 07/06 17:07
61F:推 leion237: 推推推,我日环蚀是手动追日五分钟拍一张,再土法炼钢用 07/06 17:23
62F:→ leion237: PS图层去对齐超花时间XD 原PO实在是实作高手 07/06 17:24
看来也有几位版友有类似的需求,我正在整理一个比较能看的版本并会释出原始码,
目前的状况是参数是写死在程式内,我觉得至少还需要再写一个文字介面,
也要写一下使用说明,并打包成 EXE 给没有安装过 Python 执行环境的人使用,
这些工作还需要花一点时间,如果没有花太久会直接更新在本篇~
63F:推 janghow: 太强大了 07/06 17:30
64F:推 Kln: 跪得我膝盖好痛 07/06 17:55
65F:推 HsuHsiangYun: 看不懂XDD 07/06 18:14
66F:推 newsbow: 跪 07/06 18:53
67F:推 SDGGF: 这光看懂就够我头昏,佩服大大的实作精神 07/06 19:35
68F:推 Chdolodocha: 看不懂 跪 07/06 19:38
69F:推 mjrt: 你的海堤全景照片竟然录到我在收东西… 07/06 19:42
70F:推 robin80829: 太猛了!推 07/06 20:02
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 20:22:52
71F:推 ray6031515: 赞 完全看不懂哈哈哈 07/06 20:39
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 21:20:15
72F:推 bluefancy: 道具太专业 07/06 21:32
73F:推 ferrinatice: 我以前学傅立叶只会时域转频域,看不懂为何这样可以 07/06 21:53
74F:→ ferrinatice: 降低运算量耶,是否能补充说明 07/06 21:53
如果输入影像大小为为 M x N,遮罩大小为 m x n
直接计算卷积的计算复杂度为 O(MNmn)
傅立叶法的计算复杂度为 O(MNlog(MN))
主因在於时域下的卷积等於频域下的相乘;频域下的卷积等於时域下的相乘这个理论。
如果有够快的傅立叶算法,频域下只要处理 MN 个复数乘法,
相较於时域下 MNmn 个实数乘法。
配合 FFT (Fast Fourier transform) 演算法的发明,
让离散傅立叶转换的计算复杂度得以接近理论最小值 O(NlogN)。
实务上当你的输入与遮罩大小比较小时,例如教科书上常见的 3x3 或 5x5 时,
用傅立叶法反而会比较慢。
75F:→ hotdogee: 其实是道具、经验、技术都不足,只会靠後制qq 07/06 21:56
76F:推 Kln: 原po的解释很清楚,很清楚地让我明白,我真的完全听不懂XDDD 07/06 22:53
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 23:19:29
77F:推 mikechang: 推! 07/06 23:21
78F:推 chen841115: 跪了 07/06 23:32
79F:推 ahaw99: 对不起 我没有资格拿相机 07/06 23:46
※ 编辑: hotdogee (140.112.93.11 台湾), 07/06/2020 23:49:31
80F:推 cutebowbe: 我以为我走错版了 路过抱歉 07/07 01:24
81F:→ cutebowbe: 第一次逛完DSLR版不是去google设备规格,而是去google 07/07 01:25
82F:→ cutebowbe: 数学名词XDDD 07/07 01:25
83F:推 alan773421: 谁说数学没用 07/07 10:16
84F:推 pupuliao: 研究所做影像分析的路过 好强 我只看懂 最前面的方法 07/07 11:23
85F:→ pupuliao: 傅立叶转换我不会 不过 第一种方法 实际运算量不会那麽 07/07 11:23
86F:→ pupuliao: 大 因为 每次运算实际上 只有B框的 最外一圈会改变 07/07 11:25
87F:→ pupuliao: 痾 好像不太对 算了XD 毕业太久了 07/07 11:26
88F:推 kblover: 工数有教啦 简单讲就是透过时频转换後结果相同 07/07 11:57
89F:推 kblover: 但是在频域做速度快 做完再把结果转回时域 07/07 11:58
90F:→ kblover: 不过好像不是每个系所都有教到这段XD 07/07 11:58
91F:→ kblover: 我自己要不是看这段也都忘得差不多了XDDD 07/07 11:58
92F:→ kblover: 我没记错的话是这样啦 记错就...请帮补充 07/07 11:59
93F:推 ttamura: 推 傅立叶转换也能用在影像监识领域! 07/07 21:09
94F:推 DrFuck: 不明觉厉.......。 07/07 21:19
95F:推 wbenjin: 我觉得你直接在空间域convolution会比较快,毕竟pixel没 07/07 23:38
96F:→ wbenjin: 很多 07/07 23:38
97F:→ wbenjin: 喔你的kernel很大,那应该是转到频域比较快,没事 07/07 23:39
98F:推 canandmap: 强 07/08 00:52
99F:推 molk: 哇呜… 07/08 10:43
100F:推 rgbff: 同事问我为什麽跪着看PTT,还有傅先生是谁 07/08 12:57
101F:推 runJ13: 推,最後一张好像我以前色彩学的作业 07/08 21:39
102F:推 crayon3shawn: 推推 虽然看不懂 07/10 13:55
已於文末补上程式下载位址与简易使用说明罗,如果使用上有问题欢迎提问~
※ 编辑: hotdogee (140.112.93.11 台湾), 07/11/2020 01:03:16
※ 编辑: hotdogee (140.112.93.11 台湾), 07/11/2020 03:26:25
103F:推 capri75: 推 虽然完全看不懂 Orz 08/04 19:32
104F:推 LzHH: 先跪 08/06 10:37