18年11月01日

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

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

路飛…你害我近視加深了

一星期的堅持…

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

你收聲!

然後…

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

… 不是。

半年後…用程式挑戰!

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

惡夢…

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

這就是我喜歡做Side Project的原因,因為我經常要學習一些全新的技術,有種像是離開comfort zone的感覺,所以每次都感到很新鮮有趣。這次我總共寫了兩個程式

一個是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的拼圖了…

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