一次成功用 Open CV 拼圖的經驗

2018-11-01

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

One Piece Jigsaw 路飛…你害我近視加深了

一星期的堅持…

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

Lack of focus 你收聲!

然後…

然後我就把拼圖封印在床下底了…咦?不應該是這樣的,難道這不是一個天才工程師用神跡般的技術完成拼圖的故事嗎?

… 不是。

半年後…用程式挑戰!

不過我又怎能讓它一直放在床下呢,於是我就打算用自己的專長把這又麻煩、又礙事的東西解決掉。這就是我當時的程式,我把原圖拆分成九格進行運算,這樣做除了計算速度比較快,也比較準確!

Open CV Jigsaw Program 惡夢…

學習了兩種不熟悉的程式語言

這就是我喜歡做 Side Project 的原因,因為我經常要學習一些陌生的技術,每次都讓我感到很新鮮有趣。這次我總共寫了兩個程式

一個是 iOS App,主要是 real-time 拍下拼圖片然後傳送到伺服器,這花了我不少時間,還迫我裝了個黑蘋果…

另一個是 Python 伺服器再加上 OpenCV 3.0,CV 就是電腦視覺 Computer Vision 的縮寫,用於圖像比對,雖然 OpenCV 很有趣,但我不太喜歡 Python

OpenCV and Python

難題 1、沒有原圖

我只能靠印在拼圖盒上的圖片作比較,大小最多就只 800pixel,加上小弟沒有攝影的習慣,所以全程都只是在用我的手機 iPhone 6S 進行拍攝,難免有準確性問題…

難題 2、不規則的形狀

因為拍照得來的拼圖的大小和形狀都跟原圖不一樣,所難度又增加了一點…

One Piece Jigsaw Piece 你爺爺丫!

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

Opencv 官方效果圖,這是騙人的…

結果還是要用肉眼看

雖然這個程式是有一點幫助,但是程式只能顯示大概的位置…

Homer Jigsaw

改善方法  —  擴增實境(AR)

從那時候開始就一直有加入 AR 的想法,我只要拍下拼圖,App 就會「叮」一聲然後把正確的位置顯示出來,完美!

談何容易!經過多番嘗試,發現以現在的技術來說還有一定的難度,確準性是一大難題。但最近聽到 Apple 將推出 ARKit 2 的消息,又給了我一絲希望,我拭目以待!

完成品

幾經辛苦,我的拼圖在程式的協助下也花了約一星期才完成,短時間內我大概不會再碰 1000pic 的拼圖了…

One Piece Jigsaw p.s. 這程式只適用顏色有一定對比度的拼圖,好險我不是買純白地獄…