天天看點

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

雲栖号: https://www.aliyun.com/#module-yedOfott8 第一手的上雲資訊,不同行業精選的上雲企業案例庫,基于衆多成功案例萃取而成的最佳實踐,助力您上雲決策!

現在隻需拍張照片,就能快速解決數獨問題了。

數獨對計算機來說不是什麼難事,但就是這樣一個“平平無奇”的項目卻登上了GitHub今日的熱榜。

這個登上熱榜的項目,名字就叫AI Sudoku,其實就是用AI裡的計算機視覺,把照片變成計算機能看懂的網格和數字。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

接下來求解數獨問題當然不難。重要的是,在這個過程中,我們也學習到了一些常用的計算機圖檔處理算法。

拍張照片解數獨

智能數獨求解器(Smart Sudoku Solver)的安裝使用并不複雜,隻需把項目代碼克隆到本地即可。

Windows系統下支援圖形化界面,把拍攝圖檔傳輸到電腦上就能給出答案。

首次運作需要連接配接網絡下載下傳MNIST資料集,訓練模型并建立knn.sav檔案,整個過程可能需要5~10分鐘,之後就可以離線運作了。

python Run.py

運作上面的代碼後,将顯示KNN算法的訓練結果

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

之後将很快出現GUI界面,選擇上傳你拍攝的數獨謎題圖檔。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

一直點選下一步,就能得到這道題的答案:

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

原理

作者在程式中提供了卷積神經網絡或k近鄰兩種算法,供你選擇。

運作應用程式之前,隻需将Run.py檔案中的modeltype變量設定為“CNN”或“KNN”。預設情況下,程式設定為“ KNN”,而且現階段使用KNN可以獲得更高的準确性。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

在我們點選“下一步”的過程中,程式展示了圖檔處理的步驟。

首先是對圖檔進行高斯模糊處理,去除噪聲和其他細節。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

接下來,生成一張清晰的掃描圖。由于一張圖檔中不同區域的光照,采用自适應高斯門檻值的方法可以避免這一問題:

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

反轉圖檔,讓文字和網格都變成白色,背景變成黑色。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

之後找出邊緣的四條線,通過這四條線,将拍到的數獨題目變成一張正方形圖檔。

拍張照片求解數獨,計算機如何看懂題目,這個GitHub項目告訴你

最後将圖檔切割成81個小塊,識别出每個小塊裡的數字。

原文釋出時間:2019-12-30

本文作者:曉查

本文來自阿裡雲雲栖号合作夥伴“

量子位

”,了解相關資訊可以關注“