ãŸããã

ãã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯å®çšçãªäŸ¡å€ã¯ãªããããããŸããããå®éã«ã¯å€ãã®çµéšãç©ãã§ããŸãã ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã«ã€ããŠå°ãã話ãããããšæããŸãã ãã®é åã¯ãçŸä»£ã®ã³ã³ãã¥ãŒã¿ãŒã³ã³ãã¥ãŒãã£ã³ã°ã§æãåºæ¿çãªãã®ã®1ã€ã§ãããéåžžã«è€éã§ãã 人éã®è³ã«ãšã£ãŠç°¡åã§ã·ã³ãã«ãªããšã¯ãã³ã³ãã¥ãŒã¿ãŒã«ãšã£ãŠéåžžã«å°é£ã§ãã ä»æ¥ã®ã¬ãã«ã®ITéçºã§ã¯ãå€ãã®ããšãäŸç¶ãšããŠäžå¯èœã§ãã
ãã®ããã°ã©ã ã¯äœã¬ãã«èšèªC ++ã䜿çšããŠèšè¿°ãããŠããŸããããã¯ããã¹ãŠãå éšããã©ã®ããã«æ©èœããããæ¬åœã«ç解ãããã£ãããã§ãã ãŸããã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã®åŠç¿ãéå§ããå Žåã¯ãOpenCVã©ã€ãã©ãªã圹ç«ã¡ãŸãã CodeProjectã§ã¯ãããã€ãã®ã¬ãã¹ã³ãèŠã€ããããšãã§ããŸãã ãŠã§ãã«ã¡ã©ããã®ç»åã¯ãVadim Gorbatenkoã®ãœãŒã¹ã³ãŒãïŒAviCap CodeProjectïŒã䜿çšããŠååŸãããŸãã
以äžã®ç»åã¯ãããã°ã©ã ã®ä»çµã¿ã説æããŠããŸãã

以äžã®æéééã¯ã640 x 480ãŠã§ãã«ã¡ã©è§£å床ã®2.8 GHz PCã§ã®ããªç§åäœã®é 延ã§ãã èå³æ·±ãçµæãåŸãããŠããŸãã ããšãã°ãæãé ãã¹ãããã¯ãã«ã¡ã©ãããã¬ãŒã ãååŸããããšã§ãã 100ããªç§ããããŸããããã¯ã1ç§ããã10ãã¬ãŒã ããåä¿¡ããªãããšãæå³ããŸãã ããã§ã¯ååã§ã¯ãããŸããã ãŠã§ãã«ã¡ã©ã¯éåžžé ãã§ãã 解å床ãå€æŽããããšã§é床ãäžããããšãã§ããŸãã ãããæžãããšãæ®åœ±ã®é床ã¯äžãããŸãããå質ãç ç²ã«ãªããåæã«å®å šã«é©ããªããªãå¯èœæ§ããããŸãã ãã1ã€ã®é©ãã¯ãç»åããã€ããªïŒçœãŸãã¯é»ã®ã¿ïŒã«å€æããã®ã«ã12ããªç§ãšããé·ãæéããããããšã§ãã äžæ¹ãOCRã®ä¿®æ£ãšæ°ç¬èªäœã®è§£æ±ºã«ã¯å€ãã®æéãããããšäºæ³ããŠããŸãããããããã®æé ã8ããªç§ã§äžç·ã«å®è¡ãããããšãããã£ããšãã¯ããããé©ãã§ããã 以äžã§ã¯ãåã¹ãããã詳现ã«èª¬æããæ¹åã§ããç¹ã瀺ããŸãã
ã¢ãã¯ããžã®å€æã®ä»çµã¿
ãããå€ã®éžæ
åã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ããªã±ãŒã·ã§ã³ã¯ãã«ã©ãŒïŒãŸãã¯çœé»ïŒç»åãã¢ãã¯ãã«å€æããããšããå§ãŸããŸãã å°æ¥çã«ã¯ãè²ã䜿çšããã¢ã«ãŽãªãºã ãååšããå¯èœæ§ããããŸãããä»æ¥ã®ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ããªã±ãŒã·ã§ã³ã¯ã¢ãã¯ãç»åã§åäœããŸãïŒè²èŠç°åžžã§ãïŒã
ç»åãå€æããæãç°¡åãªæ¹æ³ã¯ãäžè¬çãªãããå€ã§ãã RGBã«ã©ãŒïŒ200ã200ã200ïŒã®ãã¯ã»ã«ããããšããŸãã ã³ã³ããŒãã³ãã®åŒ·åºŠã¯0ãã255ãŸã§å€åããããããã¯ã»ã«ã¯éåžžã«æãããªããŸãã 匷床ã®ååãšããŠãããå€ãéžæãããšã256/2 = 128ã«ãªãããã¯ã»ã«ãçœã«å€ããã¯ãã§ãã ããããäžè¬çãªãããå€ã¯ã»ãšãã©äœ¿çšãããªããããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ã»ãšãã©äœ¿çšãããŸããã ããŒã«ã«ãããå€ã¢ã«ãŽãªãºã ã¯ã¯ããã«äŸ¿å©ã§ãã
ç»åãã¢ãã¯ãã«æ£ããå€æããããã«ãé©å¿ãããå€éžæã䜿çšããŸãã 128ã®åºå®ãããå€ã¯äœ¿çšããŸããã代ããã«ãåãã¯ã»ã«ã®ãããå€ãåå¥ã«èæ
®ããŸãã ããã¯11ãã¯ã»ã«ã®èŸºãšãã¯ã»ã«ã®äžå¿ãæã€æ£æ¹åœ¢ãåãããã¹ãŠã®ãã€ã³ãã®åŒ·åºŠãèŠçŽããŸãã 匷床ã®å¹³åå€ã¯ãç¹å®ã®ãã¯ã»ã«ã®ãããå€ã«ãªããŸãã çŸåšã®ãã¯ã»ã«ã®åŒ·åºŠã®åŒïŒãããå€=åèš/ 121ãããã§121 = 11x11ã ãã¯ã»ã«ã®åŒ·åºŠããããå€ãè¶
ããå Žåãçœã«å€æãããããã§ãªãå Žåã¯é»ã«å€æãããŸãã 以äžã®ç»åã§ã¯ããããå€ã決å®ããããã¯ã»ã«ã¯èµ€ã§ããŒã¯ãããŠããŸãã ãããŠããããã®èšç®ã¯åãã¯ã»ã«ã«å¯ŸããŠè¡ãããŸãã ãããã£ãŠãã¢ã«ãŽãªãºã ã§ã¯ç»åãã¯ã»ã«ã®å¹
*é«ã* 121ã®èªã¿åããå¿
èŠã«ãªãããããã®ã¹ãããã¯éåžžã«é
ããªããŸãã

æŽæ°åœ¢åŒ
ãã®ã¹ãããã¯ããæŽæ°åœ¢åŒãã䜿çšããŠæé©åã§ããŸãã æŽæ°åœ¢åŒã¯ãç»åãµã€ãºã®æŽæ°ã®é åã§ãã æå³ã¯çŽ æŽããããšã·ã³ãã«ã§ãã ç»åãæ®ããŸãã ãã¯ã»ã«ã®åŒ·åºŠã1ã§ãã12x12ã®é åããããšä»®å®ããŸãïŒçŸå®ã®äžçã§ã¯æ±ºããŠçºçãããããã»ã©ç°¡åã«çºçããŸããïŒãæŽæ°ç»åã¯ãå·ŠäžããçŸåšïŒå³äžïŒãŸã§ã®ãã¹ãŠã®ãã¯ã»ã«ã®åèšã§ãã

次ã®ç»åã¯ãæŽæ°ç»åãã©ã®ããã«åœ¹ç«ã€ãã瀺ããŠããŸãã ç®æšã¯ãç°è²ã®é·æ¹åœ¢å ã®ãã¯ã»ã«ã®åèšãèšç®ããããšã§ãã
åŒïŒåèš= DC-B + A ç§ãã¡ã®å ŽåïŒ110-44-40 + 16 = 42ïŒæåã§èšç®ããŠã¿ãŠãã ããïŒã
ã°ã¬ãŒã®é·æ¹åœ¢ãããã¹ãŠã®ãã¯ã»ã«ãèªã¿åã代ããã«ïŒäŸãããã¯ããã«å€§ãããªãå¯èœæ§ããããŸãïŒã1åã®ã¡ã¢ãªèªã¿åãã®ã¿ãå¿ èŠã§ãã ããã¯ãã¢ã«ãŽãªãºã ã®å€§å¹ ãªæé©åã§ãã ããããããã§ããç»åãã¢ãã¯ãã«å€æããããšã¯éåžžã«å°é£ã§ãã

å転è§ã決å®ããæ¹æ³
Webã«ã¡ã©ã¯ã¹ãã£ããŒã§ã¯ãããŸããã ãŸããç»åã¯å®å šã«æ»ããã«ãªãããšã¯ãããŸãããã€ãŸããç©äºã®é åºã§å°ãæãã«å転ããç»åã«ãªããŸãã å転è§åºŠã決å®ããããã«ãæ°ç¬ã®ç»åã«ã¯åžžã«æ°Žå¹³ç·ãšåçŽç·ããããšããäºå®ã䜿çšããŸãã ç»åã®äžå€®ä»è¿ã§æãè¡šæ è±ãã§å€ªãç·ã決å®ããŸãã æãè¡šæ è±ããªã©ã€ã³ã¯ãã€ãºã®åœ±é¿ãåããŸããã ç»åå ã®ã¢ãã¯ãã®ç·ãèŠã€ããããã®ã¢ã«ãŽãªãºã ã¯ãããå€æãšåŒã°ããŸãã
ã©ã®ããã«æ©èœããŸããïŒ åŠæ ¡ã®å ¬åŒy =ïŒx * cosïŒthetaïŒ+ rhoïŒ/ sinïŒthetaïŒãèŠããŠããå¿ èŠããããŸãã

ããã§ãã·ãŒã¿ã¯ã©ã€ã³ã®è§åºŠã§ãããããŒã¯ã©ã€ã³ãã座æšã®äžå¿ãŸã§ã®è·é¢ïŒ0ã0ïŒã§ãã
åŸæè§ãšåº§æšäžå¿ãŸã§ã®è·é¢ãšãã2ã€ã®å€æ°ã ãã§ç·ãèšè¿°ã§ããããšãéèŠã§ãã
ãã®ã¢ã«ãŽãªãºã ã¯ãã¢ãã¯ãç»åã®ãã¹ãŠã®ãã¯ã»ã«ãééããçœããã¯ã»ã«ãã¹ãããããŸãã 圌ãé»ããã¯ã»ã«ã«åœãã£ããšãã圌ã¯ãã®ãã¯ã»ã«ãééããããããçš®é¡ã®ç·ã1床ãã€ãæç»ãããããšããŠããŸãã ããã¯ãåãã¯ã»ã«ã«180æ¬ã®æ³åç·ãéãããšãæå³ããŸãã 360ãéžã°ãªãçç± ã¯ããè§åºŠ180-360ã¯è§åºŠ0-180床ã®ç·ã®ã³ããŒã§ããããã§ãã
ãã®äžé£ã®æ³åäžã®ç·ã¯ãã©ã€ããšåŒã°ããã·ãŒã¿ãšããŒã®æ¬¡å ãæã€2次å é åã§ãããäžèšã®åŒã«ãããŸããã åä»®æ³ç·ã¯ããã©ã€ãå ã®1ã€ã®å€ã§è¡šãããŸãã ãšããã§ããã®ã¡ãœããã¯è¡ãïŒxãyïŒããé åïŒthetaãthoïŒã«å€æãããããå€æãšåŒã°ããŸãã åæ³åç·ã¯ãã©ã€ãã«äŸ¡å€ãè¿œå ããæ³åç·ãå®éã®ãã®ãšäžèŽããå¯èœæ§ãé«ããŸãã ããã¯æ祚ã®ãããªãã®ã§ãã ãããã®è¡ã«ã¯æããæ祚ãããããŸãã
ãã¹ãŠã®ãã¯ã»ã«ãšãã®180ã®ä»®æ³ç·ããæ祚ããããåŸããã©ã€ãã®æ倧å€ãèŠã€ããå¿ èŠããããŸãã ïŒã¡ãªã¿ã«ãããã¯æ祚ãèç©ããããããã©ã€ããšåŒã°ããŸãïŒæ祚ã®åè ã¯ãæãè¡šçŸåã®ããè¡ã§ãã ãã©ã¡ãŒã¿thetaããã³rhoã¯ãäžèšã®åŒã§äœ¿çšããŠæç»ã§ããŸãã
次ã®ç»åã¯å°ããªäŸã瀺ããŠããŸãã å·ŠåŽã«ã¯ã3ã€ã®ãã¯ã»ã«ã§æ§æãããç·ããããŸãã ããã¯å·Šããå³ãžã®å¯Ÿè§ç·ã§ããããšã¯ç¢ºãã«ããã£ãŠããŸãããã³ã³ãã¥ãŒã¿ãŒã®å Žåãããã¯ããã»ã©æçœã§ã¯ãããŸããã

ãã®ç»åãèŠããšãã©ã€ã³æ€åºã®ä»çµã¿ãç解ã§ããŸãã ããå€æã¢ã«ãŽãªãºã ã¯ãçœããã¯ã»ã«ãã¹ãããããŸãã ããããã®é»ããã¯ã»ã«ã«ãçŸåšã®ãã¯ã»ã«ãéã4æ¬ã®æ³åäžã®ç·ã®ç·ïŒå®éã«ã¯180æ¬ã§ãããç°¡åã«ããããã«4æ¬ãåãïŒãæç»ããŸãã æåã®ãã¯ã»ã«ã¯ã©ã€ã³AãBãCãDã«æ祚ããŸãã2çªç®ã®ãã¯ã»ã«ã¯ã©ã€ã³EãBãGãHã«æ祚ããŸãã3çªç®ã¯IãBãKãLã«æ祚ããŸãã3ã€ã®ãã¯ã»ã«ãã¹ãŠãã©ã€ã³Bã«æ祚ããæ®ãã®ã©ã€ã³ã¯åèšã§äžã€ã®å£°ã ãããã£ãŠãè¡Bã祚ãç²åŸããŸããã
次ã®ç»åã¯ãããè€éãªäŸã§ãã å·ŠåŽã«ã¯æ°ç¬ã°ãªããããããå³åŽã«ã¯ããå€æã¢ã«ãŽãªãºã ã®ç»åãééããåŸã®ãã©ã€ãã®é åããããŸãã æããæããé åã¯ãå€ãã®ç¥šãç²åŸããè¡ã§ãã æãã¯ãç»åå ã§ãã®ãããªãã©ã¡ãŒã¿ãæã€ç·ãèŠã€ããæ©äŒããªãããšãæå³ããŸãã æããç¹ã«ã®ã¿çŠç¹ãåœãŠãŸãã åè¡ïŒAUïŒã«ã¯ããã©ã€ãå ã«æããç¹ããããŸãã ãã¹ãŠã®ç·ããããã«å転ããŠããããšãããããŸãïŒçŽ6床ïŒã ã©ã€ã³Aã¯ã©ã€ã³Kãããå転ããŸãããç»åã¯å転ããã ãã§ãªããé¢åãããããããã§ãã ãŸããããèŠããšãç·AãšBãBãšCãããäºãã«è¿ãããšãããããŸããããã¯äž¡æ¹ã®ç»åã§ç¢ºèªã§ããŸãã

ããå€æã¯ããã¿ãŒã³èªèãè¡ãå Žåã«ç解ããããšãéèŠã§ãã æ祚ãéããŠçŸå®çãªä»®æ³ç·ã®æŠå¿µã¯ãä»»æã®å¹ŸäœåŠç圢ç¶ã«æ¡åŒµã§ããŸãã è¡ã¯ãããã®äžã§æãåçŽã§ãããããç解ããã®ãæãç°¡åã§ãã
åãèŠã€ããå¿ èŠãããå Žåã¯ãxãyãrã®3次å ã®ãã©ã€ããå¿ èŠã§ãã ããã§ãxãšyã¯åã®äžå¿ã®åº§æšãrã¯ååŸã§ãã
ããå€æã¯ãå ã®ç»åã®é åãšå¯èœãªè§åºŠãå¶éããããšã«ããæé©åã§ããŸãã ãã¹ãŠã®ç·ãåæããå¿ èŠã¯ãªããäžå¿ã«è¿ãç·ã®ã¿ãåæããå¿ èŠããããŸãã ç§ãã¡ã®ã±ãŒã¹ã§ã¯ããããããæ§ç¯ããããšãã§ããŸãã
ã°ãªãããå®çŸ©ããæ¹æ³
æ°ç¬ã°ãªããããæ°å€ãååŸããã«ã¯ãã°ãªããã®éå§äœçœ®ãšçµäºäœçœ®ã決å®ããå¿ èŠããããŸãã ãã®éšåã¯äººéã®è³ã«ãšã£ãŠæãåçŽãªéšåã§ãããã³ã³ãã¥ãŒã¿ãŒã«ãšã£ãŠã¯æãé£ããéšåã§ãã ãªãã§ïŒ åã®æé ã§ããå€æã䜿çšããŠèŠã€ãã£ãè¡ã䜿çšããªãã®ã¯ãªãã§ããïŒ äœåãªããŒã¿ãå€ãããŸãã éåžžã«å€ãã®å Žåãæ°èãéèªã¯ããã€ãã®æ°ç¬ã䞊ã¹ãŠå°å·ããŸãïŒããŒããæããã«åŸè ã¯ã³ã³ãã¥ãŒã¿ãŒã§èªèãããŠããŸããïŒã ç»åã«äœåãªè¡ãå€ãããŸãã ããšãã°ã次ã®ç»åãã芧ãã ããã

ã³ã³ãã¥ãŒã¿ãŒãã©ã®ã©ã€ã³ãå¿ èŠãªãã®ã«å±ããã©ããåãªãæ å ±ãã€ãºã§ããããå€æããããšã¯éåžžã«å°é£ã§ãã ã°ãªããã®çµãããšæ¬¡ã®å§ãŸãã¯ã©ãã§ããã
ãã®åé¡ã解決ããããã«ãé»ãç·ãå®çŸ©ããŸããã 代ããã«ãã°ãªããã®åšãã«çœãé åãå®çŸ©ããŸãã 次ã®ç»åã§ã¯ããããèŠãããšãã§ããŸãã ç·ã®ç·1ã¯é»ã®ãã¯ã»ã«ãšäº€å·®ããŸããããç·2ã¯ããã10åè¡ããŸãã ããã¯ãã°ãªããã©ã€ã³1ã®èåŸãã©ã€ã³2ãããé«ãå¯èœæ§ãããããšãæå³ããŸããç·ã®ã©ã€ã³ãé»ã®ãã¯ã»ã«ãšäº€å·®ããåæ°ãèšç®ããã ãã§ãã°ãªããã®å¢çå€ã«ãããšçµè«ä»ããããšãã§ããŸãã ç·ã®äžã«ããçœããé»ã®ãã¯ã»ã«ãžã®é·ç§»ã®æ°ãåçŽã«èšç®ããã ãã§ååã§ãã ãšããã§ãåè¡ã調ã¹ãå¿ èŠã¯ãããŸãããå®è¡é床ãäžããã«ã¯ã3è¡ããšã«ãããã®ã¢ã¯ã·ã§ã³ãå®è¡ããã ãã§ååã§ãã

å¢çãå®çŸ©ããããããå€æã¢ã«ãŽãªãºã ãå®è¡ããŠã°ãªããç·ãæ£ç¢ºã«æ±ºå®ããŸãã ãããŸã§ãæªã¿ããã®ä»ã®ç»åã®æ¬ é¥ã¯æ°ã«ããŸããã§ããã å転è§ã«ã€ããŠã®ã¿ã ãã®ã¹ãããã§ä¿®æ£ãããŸãã ããå€æãéå§ããããšã«ãããã°ãªããç·ã®æ£ç¢ºãªäœçœ®ãååŸããŸãã ããã¯ãã°ãªããå ã®æ°å€ã決å®ããã®ã«åœ¹ç«ã¡ãŸãã
TODO ïŒãã®ã¹ãããã¯ããããã€ãºã«åŒ·ãå ŽåããããŸãã 次ã®ããŒãžã§ã³ã§ã¯ãçŸåšã®æ¹æ³ãšHaarã®ãããªã¢ã«ãŽãªãºã ãçµã¿åãããŠãã°ãªããã®è§åºŠã決å®ããäºå®ã§ãã ããã«ããå質ãåäžããããšãé¡ã£ãŠããŸãã åé¡ã¯ãHaarã®ãããªæ¹æ³ãç·ã§ã¯ãªãããœãªããé åã§ããŸãæ©èœããããšã§ãã ç·ã¯å°ããªé åãå ãããããæããé·æ¹åœ¢ãšæãé·æ¹åœ¢ã®éãã¯ããã»ã©å€§ãããããŸããã
10x10ã°ãªãããæ€åºããããšãããšã©ããªããã¯èå³æ·±ãã§ã...
OCRã¯ã©ã®ããã«æ©èœããŸããïŒ
çªå·ã®å Žæã決å®ããããããããèªèããå¿ èŠããããŸãã æ¯èŒçç°¡åã§ãã ã¢ã«ãã¡ãããã«ã¯1ã9ã®æ°åã®ã¿ãå«ãŸããŸãã
çè«
åèªèã¢ã«ãŽãªãºã ã«ã¯3ã€ã®ã¹ãããããããŸãã
- å¿ èŠãªç¹æ§ã®æ±ºå®
- ãã¬ãŒãã³ã°
- åé¡ïŒå®è¡æã®èªèïŒ
å¿
èŠãªå±æ§ã®èå¥ã¯ãã¢ããªã±ãŒã·ã§ã³éçºã®äžéšã§ãã ããšãã°ããã³ããŒã¯ã³ã¯èããŠé«ãã§ãã ããã圌女ãä»ã®äººãšåºå¥ãããã®ã§ãã æ°å8ã«ã¯ãäžååãšäžååãªã©ã«2ã€ã®åããããŸãã
å¿
èŠãªå±æ§ã決å®ããããšã¯ãäœãèªèããå¿
èŠããããã«ãã£ãŠã¯é£ãããçŽæçã§ã¯ãããŸããã ããšãã°ã誰ãã®é¡ãèªèããããã«äœãå¿
èŠã§ããïŒ èª°ã§ãã§ã¯ãªããç¹å®ã®ãã®ã§ãã
ãŸãŒã³
ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŸãŒã³ã®å¯åºŠã®æ¹æ³ã䜿çšãããŸããã 次ã®ã¹ãããïŒäºåã«è¡ãå¿ èŠããããŸãïŒã¯ã1ãã9ãŸã§ã®æ°åã§ã¢ããªã±ãŒã·ã§ã³ããã¬ãŒãã³ã°ããŸãããããã®ç»åã¯./resãã£ã¬ã¯ããªã«ãããŸãã ãããã¯ãµã€ãº5x5ã«çž®å°ãããæ£èŠåãããéçé åOCRDigit :: m_zon [10] [5] [5]ã«æ ŒçŽãããŸããããã¯æ¬¡ã®ããã«ãªããŸãã

5x5ãµã€ãºã«çž®å°ããããšããŸãŒãã³ã°ãŸãã¯ãŸãŒãã³ã°ãšåŒã³ãŸãã äžèšã®é åã¯é¢æ°å¯åºŠãšåŒã°ããŸãã
æ£èŠåãšã¯ãå¯åºŠã0ãã1024ãŸã§å€åããããšãæå³ããŸãããŸãŒã³ãæ£èŠåããªããšãæ£ããæ¯èŒã§ããŸããã
ããã°ã©ã ã®å®è¡äžã«äœãèµ·ãããïŒå ã®ç»åããæ°åãååŸããããšã5x5ã®ãµã€ãºã«çž®å°ãããŸãã ãã®åŸããã®åãã¯ã»ã«ãããã¬ãŒãã³ã°ãããé åã®9æ¡ã®åãã¯ã»ã«ãšæ¯èŒãããŸãã ç®æšã¯ãæå°éã®éãã§ãã£ã®ã¥ã¢ãèŠã€ããããšã§ãã

ãããã®å Žåã5x5ãŸãŒã³ã䜿çšããããããã®æ¹æ³ã¯ç»åãµã€ãºã«å¯ŸããŠäžå€ã§ãã 圌ã¯ã¿ãŒã³ã«ææã§ãããç§ãã¡ã¯ãã§ã«ãããé¢åãèŠãŸããã åé¡ã¯ãäœçœ®ãšãã€ã¢ã¹ã«ææã§ããããã¬ïŒé»å°ã«çœïŒãšæ°åãäžäžéã«ãªã£ãŠããå Žåã«ãæ©èœããªãããšã§ãã
å¹ /é«ãã®æ¯ç
ãã³ããŒã¯ã³ã¯ç¹å¥ãªå Žåã§ãã 4ãš7ã«é¡äŒŒããŠãããããäžèšã®æ±ºå®æ¹æ³ã¯ä¿¡é Œã§ããªãå ŽåããããŸãã ç¹å®ã®åäœãã©ã¡ãŒã¿ãŒïŒãã®å Žåãå¹ ã¯é«ããã40ïŒ å°ãããªããŸãã åãæ¯çã®ãã®ãããªæ°åã¯ä»ã«ãããŸããã ãã§ã«25ã®ãŸãŒã³ïŒæšèïŒããããããããã¯26çªç®ã®æšèã§ãã

TODO ïŒæ¬¡ã®ããŒãžã§ã³ã§ã¯ãæ°ããæ©èœã®å°å ¥ã«ããOCRã®å質ãæ¹åã§ããŸãã ããšãã°ããŸãŒã³ããŒãã£ã·ã§ã³ã䜿çšããå Žåã5ã6ãããã³9ãšããæ°åã¯éåžžã«äŒŒãŠããŸãã ããããåºå¥ããããã«ããããã¡ã€ã«ãå±æ§ãšããŠäœ¿çšã§ããŸãã ãã®æ©èœã®æ©èœã¯ãæ°åã®ãã¬ãŒã ã®ç«¯ãšãã®å¢çã®éã®ãã¯ã»ã«æ°ïŒè·é¢ïŒã§ãã
äžã®ç»åã§ã¯ãæ°å5ãš6ã®ãããã¡ã€ã«ã¯äŒŒãŠããŸããããããã¡ã€ã«9ãšã¯ç°ãªã£ãŠããŸããå·ŠåŽã®ãããã¡ã€ã«5ãš9ã¯äŒŒãŠããŸããããããã¡ã€ã«6ãšã¯ç°ãªããŸãã

ããã«ããã€ãã®æ¹åãè¿œå ã§ããŸãã ãããã§ãã·ã§ãã«OCRãšã³ãžã³ã¯å€ãã®æ©èœã䜿çšããŸãã ãããã®ããã€ãã¯éåžžã«ãšããŸããã¯ã§ãã
OCRçµæã®èª¿æŽ
OCRãå®äºãããšãæ°ç¬ã«ãŒã«ã«åŸã£ãŠçµæã調æŽãããŸãã 1ã€ã®è¡ãåã3x3ãããã¯ã«åãæ°åãå«ããããšã¯ã§ããŸããã ã«ãŒã«ã«éåããå Žåãçµæã«èª¿æŽãå°å ¥ããå¿ èŠããããŸãã ééã£ãæ°åããæ®ãã®æ°åããå¯èœãªæ°åã«çœ®ãæããŸãã ããšãã°ãäžã®ç»å12ã§ã¯ãdiff = 5210ãæå°ã®å·®åå€ã§ãããããçµæã¯5ã§ãã ãã®å Žåãdiff = 5508ã§ããããã次ã«å¯èœãªçµæã¯6ã§ãã ãããã£ãŠã5ã6ã«çœ®ãæããŸãã2æ¡ã®ãã¡ã©ã¡ããééã£ãŠããããå€æããããã«ããããã®å·®ã®å€ããµã³ãã«ãšæ¯èŒããå€ãå°ããæ¹ãæ£ãããšèŠãªããŸãã ä¿®æ£ã®ãœãŒã¹ã³ãŒãã¯ãé¢æ°SudSolver :: FixitïŒïŒ;ã«ãããŸãã
æ°ç¬ãœãªã¥ãŒã·ã§ã³æ©èœã¯ã©ã®ããã«æ©èœããŸããïŒ
æ°ç¬ã解決ããã«ã¯ããã€ãã®æ¹æ³ããããŸãã äžç·ã«æ©èœããäºãã«è£å®ãã3ã€ã®ç°¡åãªæ¹æ³ã䜿çšããŸãããªãŒãã³ãã³ããŒãé ããã³ããŒããªãŒããŒãã«ã§ãã
ãã«ãŒããã©ãŒã¹
ããã¯ãé£æ床ã«é¢ä¿ãªãããœãªã¥ãŒã·ã§ã³ãæ£ç¢ºã«æäŸããããã°ã©ããŒã«ãã£ãŠæãåºã䜿çšãããŠããæ¹æ³ã§ãã ããããæ€çŽ¢ã¯éåžžã«é·ããªãå¯èœæ§ããããååž°ã®æ·±ãã«äŸåããŸãã å¿ èŠãªå埩åæ°ã¯ããããŸããã æ€çŽ¢äžã«ã1ãã9ãŸã§ã®å¯èœãªå€ãã»ã«ã«é çªã«å ¥åãããèšå®ãããçªå·ã®æ°ç¬ã®è§£æ±ºçãç¶è¡ãããŸãã åæ¢ããŠããå ŽåïŒ1ã€ã®è¡/å/ãããã¯ã§åãçªå·ãååŸãããããã®çªå·ã次ã®çªå·ã«å€æŽããŸãïŒã å®éãè€æ°ã®è§£æ±ºçãååšããå ŽåããããŸãããå°ãªããšã1ã€ã®è§£æ±ºçãèŠã€ãã£ããã¯ãŒã«ã§ãã ïŒç¿»èš³è ã¯æ€çŽ¢ã§è§£æ±ºçãæã£ãŠããŠãé©ãã»ã©éãåããŸããïŒã
æåã«ãåè£ã®ããŒãã«ãæºåããå¿ èŠããããŸã-å空ã®ã»ã«ã®å¯èœãªå€ã 以äžã®ç»åã¯ãåè£è ãæ£ç¢ºã«äœã§ãããã説æããŠããŸãã ãããã¯éãå¡ãããŠããŸãã æ°ç¬ã®èŠåã«ããã°ãæåã®ã»ã«ã«ã¯æ°åã®1ã4ã8ã®ã¿ãå«ããããšãã§ããŸãã3ã€ã¯ããã«ååšã§ããŸãããæ¢ã«2ã€ã®ã»ã«ãäœãããã§ãã

ãã«ãŒããã©ãŒã¹æ³ã¯ã解決çãèŠã€ãããŸã§ããã¹ãŠã®éãæ°åãçµã¿åãããããšããŸãã æåã®ã»ã«ãèŠãŠã¿ãŸãããã ã¢ã«ãŽãªãºã ã¯1ã€ããèªã¿åãã5çªç®ã®ã»ã«ã«ã¯å€3ããããŸããããæ¡ãä»ã®å€ãšäžèŽããªãå Žåãã¢ã«ãŽãªãºã ã¯å¥ã®å€ãè©ŠããŸãã ããšãã°ãå·Šã®6çªç®ã®ã»ã«ã«ãåè£ãšããŠçªå·3ããããŸãããããã¯5çªç®ã®ã»ã«ãšäžèŽããªããããã¢ã«ãŽãªãºã ã¯æ¬¡ã®æ°åãã€ãŸã4ãªã©ãè©Šè¡ããŸãã
ãœãªã¥ãŒã·ã§ã³ãå€æ°ã®å埩ãå¿ èŠãšããå Žåãåæã¯éåžžã«é ããªãå¯èœæ§ããããŸãã ããšãã°ã次ã®ç»åã¯ã¢ã«ãŽãªãºã ã«ãšã£ãŠéåžžã«æªãã±ãŒã¹ã§ãã å·Šäžã®ã»ã«ããéå§ãããšæ€çŽ¢æ°ãå€ãããŸãããè¯ããã¥ãŒã¹ããããŸãããªãã·ã§ã³ãå°ãªãã»ã«ããéå§ããŠãã ããã ããã«ããããœãªã¥ãŒã·ã§ã³ãé«éåãããŸãã

ã¢ã«ãŽãªãºã ã®ããã©ãŒãã³ã¹ãåäžãããããã®æé©åãããã«ããã€ããããŸããããšãã°ãåè£ã®æ°ãæå°ã®ã»ã«ããæ倧ã®ã»ã«ã«ååž°ã·ãŒã±ã³ã¹ã䞊ã¹æ¿ãããªã©ã§ãã ãã ããããã¯éšåçãªæé©åã«ãããªãããããã®ã¢ã«ãŽãªãºã ã¯äœ¿çšããŸããã ãã¹ãŠã®æ°ç¬ã«ã¯äžè¯ã»ã«ãããããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã®å Žåã»ã©é«éã«åŠçãããŸããã
ãªãŒãã³ãã³ããŒ
次ã®å³ã¯ããã®æ¹æ³ã説æããŠããŸãã ã»ã«ã«åäžã®åè£ãããå Žåããã®æ°åã¯ãã®ã»ã«ã«ãããšèªä¿¡ãæã£ãŠèšããŸãã å€ãèšå®ãããã次ã®ã¹ãããã¯åè£ãªã¹ããåæ§ç¯ããããšã§ãã åè£ã®ãªã¹ãã¯ãåäžã®åè£ãååšããéãçž®å°ãããŸãã ããã¯ãã³ã³ãã¥ãŒã¿ãŒã«ãšã£ãŠæçœã§ç°¡åãªæ¹æ³ã§ãã ããããç§ãæãã»ã©äººã ã«ã¯æããã§ã¯ãããŸããã ã©ã€ããã¬ãŒã€ãŒã¯ãåè£è ã®ãªã¹ããé ã®äžã§ä¿æããåžžã«åæ§ç¯ããŠèª¿æŽããããšã¯ã§ããŸããã

é ãçªå·
åãšåæ§ã«ã以äžã®ç»åã¯ãã®æ¹æ³ã説æããŠããŸãã æ°åã®7ãèŠãŠãã ãããæ°ç¬ã解ãå Žåã7ã¯æå®ãããã»ã«ã«ããã¹ãã ãšèšãã§ãããã

ãã®ã»ã«ã«4ã7ã8ã9ïŒå³15ãåç §ïŒã®4ã€ã®åè£ãããå Žåã§ããããªãã¯ã¯3x3ãããã¯ãè¡ãåã®åè£ããäžæã®çªå·ãæ¢ããŠããããšã§ãã ãã®æ¹æ³ã¯ããºã«å šäœã解ãããšãã§ãããããããŸããããæ¹æ³2ã®æ¹ãããŸãæ©èœããŸããåäžã®åè£ããªãŒãã³ãã£ãžããæ¹åŒã§çµãããšãé ããã£ãžããæ¹åŒãã·ãŒã³ã«å ¥ããŸãã
ãã¹ãŠã®æ¹æ³ãçµã¿åããã
ãã®ããã«ã¯ãåŠçé床ãšãœãªã¥ãŒã·ã§ã³ãéèŠã§ãã åæã¯éãããŸããã ãããã£ãŠã3ã€ã®æ¹æ³ãã¹ãŠãçµã¿åãããŠäœ¿çšââããŸãã æ¹æ³2ãš3ã¯éåžžã«é«éã§ãããé«éããºã«ã解ãããšãã§ããã ãã§ãã ããºã«ã解ãããã«ã¢ããªã±ãŒã·ã§ã³ã«èŠæ±ããã®ã§ãããã¯æ¬åœã«è€éã§ããããšãæå³ããŸãã 以äžã¯äœæ¥ã®ã¢ã«ãŽãªãºã ã§ãã é«éã¡ãœãã2ãš3ã¯å·ŠåŽã«ãããããºã«ã®è§£æ±ºã«å€±æããå Žåã«ã®ã¿ãåæã¡ãœããã䜿çšããŠå³åŽã«å¶åŸ¡ãæž¡ãããããããã®ã¢ã«ãŽãªãºã ã®äœæ¥ã軜æžãããŸãã

æ¹æ³2ãš3ãããºã«ã解決ã§ããªãå Žåã«ã®ã¿ãããã°ã©ã ã¯å€ããããå§ããŸãã ãããŠãããã§ãããã«ãŒããã©ãŒã¹ã¢ã«ãŽãªãºã ã¯600,000åã®å埩ã«å¶éãããŠããŸãã ãŸãã3ã€ã®è©Šã¿ãããããã®åŸããã°ã©ã ã¯attemptsããŸãã åè©Šè¡ã®éã«ãæ°ããã·ãŒã±ã³ã¹ãããºã«ãããéã解決ããã®ã«åœ¹ç«ã€ããšãæåŸ ããŠãååž°çãªã·ãŒã±ã³ã¹ãã©ã³ãã ã«åé 眮ãããŸãã æ°ç¬ã解決ã§ããªãã£ãããã«ã¡ã©ã®æ¬¡ã®ãã¬ãŒã ã§å¹žéã«ãªããããããŸããã æ瀺ããããããŒãã£ãŒãã¯ãé¢æ°SudSolver :: SolveMeïŒïŒã§èª¬æãããŠããŸãã
ãããã¡ãªã³ã°ãœãªã¥ãŒã·ã§ã³
ãœãªã¥ãŒã·ã§ã³ãèŠã€ãããšãSudResultVoteråã®é åã«ä¿åããŸãã OCRã¯çµæã®æ£ç¢ºæ§ã100ïŒ ä¿èšŒãããã®ã§ã¯ãªãããããããã¡ãªã³ã°ãå¿ èŠã§ãããæã ç°ãªããœãªã¥ãŒã·ã§ã³ãåŸãããŸãã äžå®å®ãªãœãªã¥ãŒã·ã§ã³ãåé¿ããããã«ãïŒæåŸã®12åã®ãœãªã¥ãŒã·ã§ã³ã®ç²ŸåºŠã®ããã«ïŒåžžã«æ匷ã瀺ããŸãã æã ãé åã¯ãŒãã«ãªã»ãããããå€ã決å®ãå¿ããŠæ°ãã決å®ã«ãã£ã³ã¹ãäžããŸãã
æ å
TODOïŒ
å°æ¥ã®ã¢ã€ãã¢ïŒ
- Androidçšã®ããã°ã©ã ãæžãæããŸãã ã¹ããŒããã©ã³ã§ã©ã®ããã«æ©èœããã®ã ããã
- ãã«ãããã»ããµã·ã¹ãã ã§äžéšã®æ©èœã䞊ååããŸãã çŸåšãã»ãšãã©ã®PCã«ã¯å°ãªããšã2ã€ã®ã³ã¢ããããŸãã éåžžã䞊ååã«ããããã©ãŒãã³ã¹ãåäžããŸãã ãããããŠã§ãã«ã¡ã©ãä»ãããœã«ããŒã§ã¯ã粟床ãå質ã»ã©ã¹ããŒãã¯å¿ èŠãããŸããã ååãšããŠãã¿ã¹ã¯ã®äžŠååã«ãããé¡äŒŒãããã¬ãŒã ã§ã®æäœãæ¹åãããŸãããèšå®ã¯ç°ãªããŸãã ãã¹ãŠã®ã¿ã¹ã¯ãå®äºããåŸãæè¯ã®çµæãåŸãã ãã§ãã
ãã¢ã®ããŠã³ããŒã-170 KB
ãœãŒã¹ã®ããŠã³ããŒã-307 KB
GitHubã«ã¯ãœãŒã¹ãã©ãŒããããŸãïŒ github.com/NeonMercury/Realtime-Webcam-Sudoku-Solver