×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
数独ではじめるアルゴリズム 第三章 OCR Ryosuke Uchiyama step63r
Slide 2
Slide 2 text
グラフ構造と深さ優先探索(DFS) 0 1 2 3 4 11 5 8 6 7 9 10 12 13 14 前 回 の あ ら す じ
Slide 3
Slide 3 text
入れられる数字の選択肢が少ないマスから埋めていく 3 6 5 4 8 7 9 4 5 1 9 7 3 5 6 8 9 6 5 4 4 6 5 5 6 5 3 5 3 4 5 6 5 3 4 4 4 6 5 5 5 4 4 5 5 5 4 4 5 5 5 4 7 3 3 4 3 4 4 5 6 4 4 5 6 5 4 4 6 4 5 7 7 4 6 7 7 5 6 6 8 問題 入れられる数字の残数 ここから処理するよりも… この辺から処理した方が速い! 前 回 の あ ら す じ
Slide 4
Slide 4 text
一意に決まるマスはあらかじめ埋めておく 3 6 5 4 8 7 9 4 5 1 9 7 3 5 6 8 9 問題 5 8 3 6 5 4 8 7 5 9 4 6 5 9 1 5 9 7 3 5 6 8 5 9 5 前処理後の問題 前 回 の あ ら す じ
Slide 5
Slide 5 text
MVVMパターン View ViewModel Model データ バインディング コマンド メソッド呼出し プロパティ設定 変更通知 変更通知 前 回 の あ ら す じ
Slide 6
Slide 6 text
Xamarin.Forms Shared C# Backend Shared UI Code iOS Android Windows 前 回 の あ ら す じ
Slide 7
Slide 7 text
今後やること • UI実装(WPFかXamarinあたり) • モバイル対応(iOSアプリをビルドする環境がない……つらたん……) • OCR(問題をカメラで撮ってAzure Cognitive Servicesとかで盤面認識&自動解答) • マルチスレッド(たぶんやらないやつ) 前 回 の あ ら す じ
Slide 8
Slide 8 text
数字の検出
Slide 9
Slide 9 text
Computer Visionを用いたテキスト抽出 問題発生!
Slide 10
Slide 10 text
Text = "3", BoundingBox = [ (115, 16), (133, 17), (132, 39), (114, 38)] どのマスにどの数字が 入るんだ……? 数独のマスも検出する必要があった!
Slide 11
Slide 11 text
マスの検出
Slide 12
Slide 12 text
どんなフレームワークが使えるか 案1 Azure Cognitive Servicesの既存モデルを活用 案2 Custom Visionに独自モデルをデプロイ 案3 画像解析ライブラリで交点検出 「数独のマスを検出するAPI」があるわけないので却下。 学習(データ採取)が面倒くさすぎるので却下。 PythonとOpenCVで似たようなことをやったことがあるな? 1)Harrisのコーナー検出 → 精度イマイチ 2)Shi-Tomasiのコーナー検出 → 精度イマイチ 3)Canny → いけそう! 採 用 採 用
Slide 13
Slide 13 text
XamarinでどうやってOpenCVを使うか Windows ランタイム コンポーネント - UWP applications | Microsoft Docs
Slide 14
Slide 14 text
Microsoftは神か? OpenCV でのビットマップの処理 - UWP applications | Microsoft Docs 問題発生!
Slide 15
Slide 15 text
cv::Mat Platform::Collections::Vector マネージ/ネイティブ間のマーシャリング 結局、フレーム検出機能はPythonで実装することに
Slide 16
Slide 16 text
つくったもの
Slide 17
Slide 17 text
ソースコード SudokuApp uchi-sudokuapp-functions
Slide 18
Slide 18 text
全体構成 SudokuApp ローカルストレージ OpenFileAsync RandamAccessStream Function App Cognitive Services DetectSudokuFrame JSON Response Stream IList
Slide 19
Slide 19 text
Demo