// 一次成功用 Open CV 拼圖的經驗 //
懶惰,造就科研人才,所以我從小就注定投身這行業!上年我在日本因酒醉而買了一幅平常連碰都不會碰的拼圖,結果呢?看標題就知道了吧。

路飛…你害我近視加深了
一星期的堅持… #
最初的一星期,我也堅持每天砌一點,可是七天很快便過去了,我看到的只有一幅拚圖的邊緣,根本連十分一也沒有!

你收聲!
然後… #
然後我就把拼圖封印在床下底了…咦?不應該是這樣的,難道這不是一個天才工程師用神跡般的技術完成拼圖的故事嗎?
… 不是。
半年後…用程式挑戰! #
不過我又怎能讓它一直放在床下呢,於是我就打算用自己的專長把這又麻煩、又礙事的東西解決掉。這就是我當時的程式,我把原圖拆分成九格進行運算,這樣做除了計算速度比較快,也比較準確!

惡夢…
學習了兩種不熟悉的程式語言 #
這就是我喜歡做 Side Project 的原因,因為我經常要學習一些陌生的技術,每次都讓我感到很新鮮有趣。這次我總共寫了兩個程式
一個是 iOS App,主要是 real-time 拍下拼圖片然後傳送到伺服器,這花了我不少時間,還迫我裝了個黑蘋果…
另一個是 Python 伺服器再加上 OpenCV 3.0,CV 就是電腦視覺 Computer Vision 的縮寫,用於圖像比對,雖然 OpenCV 很有趣,但我不太喜歡 Python

難題 1、沒有原圖 #
我只能靠印在拼圖盒上的圖片作比較,大小最多就只 800pixel,加上小弟沒有攝影的習慣,所以全程都只是在用我的手機 iPhone 6S 進行拍攝,難免有準確性問題…
難題 2、不規則的形狀 #
因為拍照得來的拼圖的大小和形狀都跟原圖不一樣,所難度又增加了一點…

你爺爺丫!
我用了 OpenCV 的 Feature Matching 和 Homography 技術解決這個問題,這技術可以無視大小和 rotation 進行比較,但就如上面說的,我的原圖跟拼圖的圖像質素都不太好,所以效果就不太理想…

官方效果圖,這是騙人的…
結果還是要用肉眼看 #
雖然這個程式是有一點幫助,但是程式只能顯示大概的位置…

改善方法 — 擴增實境(AR) #
從那時候開始就一直有加入 AR 的想法,我只要拍下拼圖,App 就會「叮」一聲然後把正確的位置顯示出來,完美!
談何容易!經過多番嘗試,發現以現在的技術來說還有一定的難度,確準性是一大難題。但最近聽到 Apple 將推出 ARKit 2 的消息,又給了我一絲希望,我拭目以待!
完成品 #
幾經辛苦,我的拼圖在程式的協助下也花了約一星期才完成,短時間內我大概不會再碰 1000pic 的拼圖了…
