PTT評價

[作品] 日環蝕4K縮時 開發專屬穩定化程式 [P950]

看板DSLR標題[作品] 日環蝕4K縮時 開發專屬穩定化程式 [P950]作者
hotdogee
(hotdog)
時間推噓 2 推:2 噓:0 →:0

作品連結:
* 穩定前: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像素


--

※ PTT 留言評論
PTT 網址
※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 04:53:00

seth542107/06 05:00頭推

※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 05:09:50

antitank07/06 07:16高手

changmada07/06 07:45大神!作品真是完美

AzureSoul07/06 07:58看到傅立葉轉換我就跪了

Lian94907/06 07:59已跪

carl310407/06 08:46該快推不然網友以為我看不懂

zaqwer07/06 08:52這裡不是DSLR板嗎?為什麼我都看不懂?!

lvlvlv2g07/06 08:55傅立葉到底是誰啊啊啊啊啊啊啊啊(崩潰

carl310407/06 09:16樓上 我記得是某個風景攝影大師吧

soarling07/06 09:24不囉嗦 看到FT就推

notsmall07/06 09:29原來是影像處理大師啊

zebirlin07/06 09:32太強 已跪

Rogozov07/06 09:33看到攝影版出現傅立葉轉換真的是只能跪了

AnewMitch07/06 09:36跪了

x8108913007/06 09:36

hchen1807/06 09:44第一次在攝影版看不懂文章XDD

DaJoJo07/06 10:01

Wangdy07/06 10:20快推不然別人因為我看不懂

shachitw07/06 10:22太神啦

Jokering556607/06 10:25科學精神 給推

taleschia07/06 10:31我媽問我為什麼大中午要跪柏油地面...

penguin017207/06 10:32想請問原po將兩張相片做convolution可以得到中心座標

penguin017207/06 10:32的原理是什麼?謝謝

meimeiamy07/06 10:39我媽問我為什麼跪著看手機

eiki78707/06 10:46傅立葉轉換 早就忘光光的東西

haze07/06 10:53好強!!!

enderboy765207/06 10:58

briantw07/06 11:00推,這我跪了...

yen061907/06 11:08跪了

blessme07/06 11:10下次有人說學數學沒用我就拿這篇打臉他

louis233307/06 11:11有沒有人支援一下白話文..

XiaoSung07/06 11:20?????先跪了

octboy197807/06 11:28不懂……快推

GohHiong07/06 11:32我記得明明學過傅立葉可是看不懂這篇XD 真的太神了!

pupuliao07/06 11:33我的理解是 因為每一張照片的中心點會有所偏差

pupuliao07/06 11:34所以要透過找出太陽中心 重新調整每一張照片

cowboy1793507/06 11:34看不懂 只好推了

kblover07/06 11:34超神~

pupuliao07/06 11:35那這樣說天文台的設備應該可以抵銷這類誤差

SonyA7RIII07/06 11:38您是神

st21011307/06 11:39我以為走錯版了 原PO太強大啦

ceoper25607/06 11:4122樓:把convolution想像成兩個函數的空間乘積的話

ceoper25607/06 11:43就可以把捲積結果當成「遮罩與太陽輪廓重疊面積最大」

ceoper25607/06 11:45的位置,因為是圓形所以這位置就是太陽圓心,大概吧

ceoper25607/06 11:46低智商文組建構式理解勿嗆QQ 有請高手說明實際的計算

感謝幫忙說明,我也試試補充說明,以本文太陽版用法來說,請看文內附圖輔助, 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

m1868076807/06 12:40好猛!

john80111007/06 12:42所以這個程式是大大自己設計的?能出下載版嗎XDD我極

john80111007/06 12:42軸沒對準也是慢慢偏移

diablohinet07/06 12:59超強...已跪

godchildtw07/06 13:01還以為有EXE可以用了,2300多張手動一張一張調,

godchildtw07/06 13:01剩下200張就調完了。

jeffc81573107/06 13:53好強 最後幾乎是教科書級的照片

tom2541c207/06 14:18我媽叫我不要再跪著滑手機了

Epsilon07/06 15:50強!要不要考慮釋出原始碼或可執行檔讓其他人下載?

andy302007/06 15:53學生時期沒搞懂過傅立葉........太猛

pirrysal07/06 16:01太神啦!

erig2507/06 16:23autocorrelation?

rainxo6p07/06 16:27…是神

IslandHeart07/06 16:57這可以寫論文了XD

windblood07/06 17:07先跪在說...

leion23707/06 17:23推推推,我日環蝕是手動追日五分鐘拍一張,再土法煉鋼用

leion23707/06 17:24PS圖層去對齊超花時間XD 原PO實在是實作高手

看來也有幾位版友有類似的需求,我正在整理一個比較能看的版本並會釋出原始碼, 目前的狀況是參數是寫死在程式內,我覺得至少還需要再寫一個文字介面, 也要寫一下使用說明,並打包成 EXE 給沒有安裝過 Python 執行環境的人使用, 這些工作還需要花一點時間,如果沒有花太久會直接更新在本篇~

janghow07/06 17:30太強大了

Kln07/06 17:55跪得我膝蓋好痛

HsuHsiangYun07/06 18:14看不懂XDD

newsbow07/06 18:53

SDGGF07/06 19:35這光看懂就夠我頭昏,佩服大大的實作精神

Chdolodocha07/06 19:38 看不懂 跪

mjrt07/06 19:42你的海堤全景照片竟然錄到我在收東西…

robin8082907/06 20:02太猛了!推

※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 20:22:52

ray603151507/06 20:39讚 完全看不懂哈哈哈

※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 21:20:15

bluefancy07/06 21:32道具太專業

ferrinatice07/06 21:53我以前學傅立葉只會時域轉頻域,看不懂為何這樣可以

ferrinatice07/06 21:53降低運算量耶,是否能補充說明

如果輸入影像大小為為 M x N,遮罩大小為 m x n 直接計算捲積的計算複雜度為 O(MNmn) 傅立葉法的計算複雜度為 O(MNlog(MN)) 主因在於時域下的捲積等於頻域下的相乘;頻域下的捲積等於時域下的相乘這個理論。 如果有夠快的傅立葉算法,頻域下只要處理 MN 個複數乘法, 相較於時域下 MNmn 個實數乘法。 配合 FFT (Fast Fourier transform) 演算法的發明, 讓離散傅立葉轉換的計算複雜度得以接近理論最小值 O(NlogN)。 實務上當你的輸入與遮罩大小比較小時,例如教科書上常見的 3x3 或 5x5 時, 用傅立葉法反而會比較慢。

hotdogee07/06 21:56其實是道具、經驗、技術都不足,只會靠後製qq

Kln07/06 22:53原po的解釋很清楚,很清楚地讓我明白,我真的完全聽不懂XDDD

※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 23:19:29

mikechang07/06 23:21推!

chen84111507/06 23:32跪了

ahaw9907/06 23:46對不起 我沒有資格拿相機

※ 編輯: hotdogee (140.112.93.11 臺灣), 07/06/2020 23:49:31

cutebowbe07/07 01:24我以為我走錯版了 路過抱歉

cutebowbe07/07 01:25第一次逛完DSLR版不是去google設備規格,而是去google

cutebowbe07/07 01:25數學名詞XDDD

alan77342107/07 10:16誰說數學沒用

pupuliao07/07 11:23研究所做影像分析的路過 好強 我只看懂 最前面的方法

pupuliao07/07 11:23傅立葉轉換我不會 不過 第一種方法 實際運算量不會那麼

pupuliao07/07 11:25大 因為 每次運算實際上 只有B框的 最外一圈會改變

pupuliao07/07 11:26痾 好像不太對 算了XD 畢業太久了

kblover07/07 11:57工數有教啦 簡單講就是透過時頻轉換後結果相同

kblover07/07 11:58但是在頻域做速度快 做完再把結果轉回時域

kblover07/07 11:58不過好像不是每個系所都有教到這段XD

kblover07/07 11:58我自己要不是看這段也都忘得差不多了XDDD

kblover07/07 11:59我沒記錯的話是這樣啦 記錯就...請幫補充

ttamura07/07 21:09推 傅立葉轉換也能用在影像鑑識領域!

DrFuck07/07 21:19不明覺厲.......。

wbenjin07/07 23:38我覺得你直接在空間域convolution會比較快,畢竟pixel沒

wbenjin07/07 23:38很多

wbenjin07/07 23:39喔你的kernel很大,那應該是轉到頻域比較快,沒事

canandmap07/08 00:52

molk07/08 10:43哇嗚…

rgbff07/08 12:57同事問我為什麼跪著看PTT,還有傅先生是誰

runJ1307/08 21:39推,最後一張好像我以前色彩學的作業

crayon3shawn07/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

capri7508/04 19:32推 雖然完全看不懂 Orz

LzHH08/06 10:37先跪