ã¯ããã«
åæçš¿ã§ãããããããé¡ãããŸãã
ãµã€ãŒãªã€ã®ééãæ¢ããç»ååŠçãçšããŠè§£ãããã°ã©ã ãäœæããŸããã
åºæ¬çã«ã¯ç»åã®å·®åããšã£ãŠãªãããããããŠééããèŠã€ããããšããææ³ã§ãããããã«å ãä»åã¯ããã¹ãæ§ã«çç®ããŸããã
ãŸãã¯å®è¡çµæãã芧ãã ããã
â»ããã¹ãæ§âŠ æ¬çŸ©ã¯å€ä¹±ã®åœ±é¿ã®åãã¥ãããå·®åã§ééãç®æãæœåºãããšãã¯å šãåãè·é¢ã»è§åºŠããæ®åœ±ãã2æã®ç»åãå¿ èŠãšãªããŸãã(å°ãã§ããããŠãããšèª€æ€åºããã£ã¡ãå¢ãã)ãå°ãããã2æã®ç»åå士ã®ééããæ€åºã§ãããšããæå³ã§ããã¹ãæ§ãšèšã£ãŠããŸãã
å®è¡çµæ
éåžžãå·®åã§ééããæ¢ãææ³ã§ã¯2æã®ç»åããã¡ããšäœçœ®åããããå¿
èŠãããã®ã§ãããæãããèŠãç»åå士ããã§ãééãç®æãæ€åºã§ããŠããŸãã
æçµç®æšã¯ãã¹ããã®ã«ã¡ã©ã§ãµã€ãŒã®ééãæ¢ããæ®åœ±ãããã®åçãããšã«ééããèŠã€ããããšã§ãã


ã¢ã«ãŽãªãºã ã®æŠèŠ
以äžã䜿çšããæè¡çãã€ãã€ããšæžããŠãããŸãã
æ¥ããããªããåããŠGitHub䜿ã£ãã®ã§ã¡ãããšèŠããããäžå®ã§ãããäžå¿ãœãŒã¹é¡ãã¢ããããã®ã§ããã£ããã芧ãã ããã
https://github.com/ika-kk/SaizeriyaPj
å®è£ ãšç°å¢
C#
.NET Framework 4.6.1
OpenCvSharp4
Windows 10 Home
Intel Core i7-6700 @ 3.40GHz
RAM 16.0GB
ã°ã©ãã¯éæèŒ
ãããŒãã£ãŒã
- ç»åã2æèªã¿èŸŒã(以äžSrcãšTargetãšèšèŒããŸã)
- OpenCVã®ç¹åŸŽéãããã³ã°ã§SrcãšTargetã®å¯Ÿå¿ç¹ãååŸãã
- 察å¿ç¹ã®æ å ±ãããšã«Srcã«å°åœ±å€æãé©çšããTargetãšåº§æšãäžèŽããã
- SrcãšTargetã®å·®åç»åãååŸãã
- å·®åç»åã®éèŠç®æã®ã¿ãç®ç«ããããã¹ã¯ãäœæãã
- ãã¹ã¯ãSrcãšTargetã«ãã¶ããééãç®æãç®ç«ããã
1. ç»åã2æèªã¿èŸŒã
ãŸãã¯ãµã€ãŒãªã€ã®ééãæ¢ãã®ç»åãèªã¿èŸŒã¿ãŸãã
ä»åã¯ãµã€ãŒãªã€ã®ããŒã ããŒãžããç»åãããã ããŸããã
ãªããå®éã«ãµã€ãŒã«è¡ã£ãŠééãæ¢ãã®åçãæ®ããšããç¶æ³ãæ³å®ããPhotoshopã§æªã¿ãå ããç»åãäœæããŸããã
ãŸããééãæ¢ã以å€ã®äœåãªæ
å ±ãæ¥µååãããã«ããã¹ã¯æ©èœ(æå)ã远å ããŠãããŸãã
ããã«é¢ããŠã¯ãã¡ãã®ããã°ãåèã«ããŸããã
ãC#ãã¬ã€ã€ãŒæ©èœãäœãïœããã²ã®ããã°ã©ãã³ã°éšå±
ããšæè¿ã®ã¹ããã®åçã¯è§£å床ã倧ãããªã®ã§ãåŠçæéãçµæ§ãããããŸãã
ãã®ãããæ¬¡ã®åŠçã«é²ãéã«ãç»åãµã€ãºã**800[px]*600[px]**ã«ãããŸããµã€ãºã«çž®å°ããããã«ããŸããã
ãã®ãµã€ãºã«çž®å°ããŠãåè§£èœã¯ã ããã0.4[mm/px]ã«ãªããããå¹
ã»é«ããšãã«1~2mm以äžã®ééãç®æã§ããã°æ€åºã§ããã¯ãã§ãã
2. OpenCVã®ç¹åŸŽéãããã³ã°ã§SrcãšTargetã®å¯Ÿå¿ç¹ãååŸãã
ç»åå士ã®ãããã³ã°ã«ã¯ãè²ã
ãªçš®é¡ããããŸãã
ã»ãã³ãã¬ãŒããããã³ã° (ç»åã®æ¿æ·¡ãäž»ã«çšãããããã³ã°)
ã»å¹Ÿäœåœ¢ç¶ãããã³ã° (ãšããžæ
å ±ãçšãããããã³ã°)
ã»ç¹åŸŽç¹ãããã³ã° (屿çãªç¹åŸŽç¹ãå©çšãããããã³ã°)
ã»ãã®ä»
è²ã æ¯èŒããçµæãä»åã¯ç¹åŸŽéãããã³ã°ã䜿ãããšã«ããŸããã
| æ¹åŒ | OpenCV | 圢ç¶å€åãžã®åŒ·ã | è²å³ã®å€åãžã®åŒ·ã |
|---|---|---|---|
| ãã³ãã¬ãŒããããã³ã° | å¯Ÿå¿ | à | à |
| 幟äœåœ¢ç¶ãããã³ã° | éå¯Ÿå¿ | à | â |
| ç¹åŸŽç¹ãããã³ã° | å¯Ÿå¿ | â | â³ |
幟äœåœ¢ç¶ãããã³ã°ã¯OpenCVã«ã¯éå®è£ ã ã£ããããèªåçã«åè£ããé€å€ãããŸããå人çã«ã¯ããªã䟿å©ãªãããã³ã°æ¹åŒã ãšæãã®ã§ãå®è£ ããŠã»ãããã§ããã©ãâŠã
次ã«ã圢ç¶å€åãžã®åŒ·ãã¯ç¹åŸŽç¹ãããã³ã°ãåªç§ã§ãã
ãã³ãã¬ãŒããããã³ã°ãšå¹Ÿäœåœ¢ç¶ãããã³ã°ã¯ããããã³ã°ã®å
ç»åãšå¯Ÿè±¡ç»åãæ¡å€§ã»çž®å°ã»å転ãçšããŠäžèŽãããã®ãã察å¿ã§ããŸããã
äžæ¹ã®ç¹åŸŽç¹ãããã³ã°ã¯ãæ¡å€§ã»çž®å°ã»å転ã«å ããããæã»æªã¿ãŸã§å¯Ÿå¿ã§ããŸããåé ã«ãããããã«æãããèŠãç»å(=æªã¿å€åœ¢ããç»å)åå£«ãæ¯èŒãããã®ã§ãç¹åŸŽç¹ãããã³ã°ãæ¡çšããŸããã
ã¡ãªã¿ã«ãæ¡å€§ã»çž®å°ã»å転ã»ããæãå¯èœã§ãæŽã«ç§»åãå®çŸã§ããå€åœ¢ãã¢ãã£ã³å€æ(å€åœ¢)ããã®ã¢ãã£ã³å€æã«æªã¿å€åœ¢ãå ãããã®ã**å°åœ±å€æ(å€åœ¢)**ãšåŒã³ãŸãã

ç»åã®å€ãã®ç®æãåæã«è²å³ã®å€åãèµ·ããããšã¯ãªãã ãããšäºæ³ããç¹åŸŽç¹ãããã³ã°ã§åé¡ãªããšå€æããŸããã
ã¡ãªã¿ã«ãè²å³ãå€ãã£ãŠããšããžããæ€åºã§ããã°ãããã³ã°ã®ç²ŸåºŠã«åœ±é¿ããªããšããæå³ã§ã幟äœåœ¢ç¶ãããã³ã°ã¯åªç§ã§ããäžæ¹ãã³ãã¬ãŒããããã³ã°ã¯èŒåºŠæ
å ±ããã¢ã«ãªãã®ã§ãè²ãå€ãããšæ€åºã§ããªããªã£ãããç²ŸåºŠãæªããªã£ããããŸãã
ç¹åŸŽç¹ãããã³ã°ã«ã¯SIFTæ³ãSURFæ³ãªã©è²ã
ãªææ³ãååšããŸãããOpenCVã§ã¯AKAZEãšããæ¹åŒãäžè¬çã ããã§ãã
å®è£
ã«ããã£ãŠã¯ãã¡ãã®èšäºãåèã«ãããŠããã ããŸããã
OpenCvSharpã§AKAZEãçšããŠç¹åŸŽéãæ€åºãã - Qiita
æçµçã«ã以äžã®ç»åã®ããã«ç¹åŸŽç¹å士ã察å¿ä»ãããããšãã§ããŸããã
察å¿ããç¹åŸŽç¹å士ãã€ãªãã ç·ãããããå¹³è¡ã«ãªã£ãŠããã®ãããããŸãã
誀ã£ãç¹åŸŽç¹ã察å¿ä»ããããŠããç®æãããã€ããããŸãããããã¯æ¬¡ã«è¡ã倿ã®éã«å€ãå€ãšããŠç¡èŠãããã®ã§ããããŸãæ°ã«ããªããŠãããã§ãã
ã¡ãªã¿ã«ãä»å䜿çšããç¹åŸŽç¹ã®æ°ã¯ãå
šäœã®**10%**ã§ããã€ãŸãæ¬æ¥ã¯ãã®10åã®ç¹åŸŽç¹ãæ€åºãããŠããã®ã§ãããåŠçãéããªãããšãå€ãå€ãå€ãå«ããã䜿çšããæå³ããªãããšããã**äžèŽåºŠäžäœ10%**ã®ã¿ãæœåºããŠããŸãã

3. 察å¿ç¹ã®æ å ±ãããšã«Srcã«å°åœ±å€æãé©çšããŠTargetãšåº§æšãåããã
æ¡å€§çž®å°å転ãšããæã§ããã°åè¿°ã®ããã«ã¢ãã£ã³å€æã§äºè¶³ããŸãããä»åã¯æªã¿ãæ³å®ããŠãããããå°åœ±å€æã䜿çšããŸãããSrcãTargetã«åãããããããªã€ã¡ãŒãžã§ããåŠçã®å ·äœçãªãããŒã¯ãããªæãã§ãã
- ç¹åŸŽç¹ã®å¯Ÿå¿ããã¯ãã«ã§è¡šçŸãã
- ãã¯ãã«ã®å§ç¹ãšçµç¹ãäžèŽããããããªå°åœ±å€æãå®çŸããã
- ãããªããããªå€æè¡åãäœæãã
- 倿è¡åã«ããšã¥ããç»åã®å€åœ¢ãè¡ã
以äžã¯ã€ã¡ãŒãžç»åã§ããç°¡åã®ããã«4é ã®ãã¯ãã«ããæžããŠããŸããããå®éã¯ç»åäžã®äžèŽåºŠäžäœ10%ã®ç¹åŸŽç¹å士ã®ãã¯ãã«å šãŠãèæ ®ãããã€å€ãå€ã¯ç¡èŠãã€ã€å€åœ¢ãè¡ãããŠããŸãã

OpenCvSharpã§ã®å®è£
æ¹æ³ã¯ãã¡ããåèã«ããŸããã
ç»åããç¹åŸŽéãæœåºããéèŠå€æè¡åãå°åºããŠç»åãå€åœ¢ãã - Qiita
OpenCvSharpã§éèŠæåœ±ã®è£æ£ - SourceChord
å®è£ (æãããã¿)
Mat SrcMat, TargetMat; // çŽ æç»å
public Mat WarpedSrcMat; // å°åœ±å€æåŸã®ç»å
KeyPoint[] KeyPtsSrc, KeyPtsTarget; // ç¹åŸŽé
IEnumerable<DMatch> SelectedMatched; // ãããã³ã°çµæ
public void FitSrcToTarget()
{
// 䜿çšããç¹åŸŽç¹ã®éã ããã¯ãã«çšæ
int size = SelectedMatched.Count();
var getPtsSrc = new Vec2f[size];
var getPtsTarget = new Vec2f[size];
// SrcãšTargetç»åã®å¯Ÿå¿ããç¹åŸŽç¹ã®åº§æšãååŸãããã¯ãã«é
åã«æ ŒçŽããŠããã
int count = 0;
foreach (var item in SelectedMatched)
{
var ptSrc = KeyPtsSrc[item.QueryIdx].Pt;
var ptTarget = KeyPtsTarget[item.TrainIdx].Pt;
getPtsSrc[count][0] = ptSrc.X;
getPtsSrc[count][1] = ptSrc.Y;
getPtsTarget[count][0] = ptTarget.X;
getPtsTarget[count][1] = ptTarget.Y;
count++;
}
// SrcãTargetã«ããããã倿è¡åhomãååŸãããããã¹ãæšå®æ³ã¯RANZACã
var hom = Cv2.FindHomography(
InputArray.Create(getPtsSrc),
InputArray.Create(getPtsTarget),
HomographyMethods.Ransac);
// è¡åhomãçšããŠSrcã«å°åœ±å€æãé©çšããã
WarpedSrcMat = new Mat();
Cv2.WarpPerspective(
SrcMat, WarpedSrcMat, hom,
new OpenCvSharp.Size(TargetMat.Width, TargetMat.Height));
}
4. SrcãšTargetã®å·®åç»åãååŸãã
ãããã2æã®ç»åãåŸãããšãã§ããŸãããããããã¬ã¬ã·ãŒãªç»ååŠçã®åºçªã§ãã
ãšããããå°åœ±å€æåŸã®ç»åãPhotoshopã§æ¯èŒããŠã¿ãŸãã(ã¬ã€ã€ãŒã¹ã¿ã€ã«ïŒå·®ã®çµ¶å¯Ÿå€ã䜿çš)ããªããªãããæãã§ãã

æŽã«ããã£ã³ãã«ãå¥åã«äœ¿çšããã°æ€åºç²ŸåºŠãäžãããšæã£ããããRGBãšHSVã®åãã£ã³ãã«å士ã®å·®åç»åãäœæããŸããããã ãH(è²çž)ãS(圩床)ã®å·®åã¯ãã€ãºãå€ããŠäœ¿ãç©ã«ãªããŸããã§ãããå€åœ¢æã®è£å®ã«åå ããããããªæ°ãããŸãã
ãã®ãããä»åã¯RGBãšV(èŒåºŠ)ã®èš4ãã£ã³ãã«ã®ã¿ã䜿çšããããšã«ããŸããããããã®ç»åã«å¯ŸããŠåŠçãæœããééãç®æã®ã¿ãç®ç«ããããã¹ã¯ãäœã£ãŠãããŸãã

äœè«ã§ãããOpenCVã«ã¯ç»çŽ ã«ã¢ã¯ã»ã¹ããã¡ãœããSet/GetPixelãçšæãããŠããŸããæåã¯ããã䜿ã£ãŠå®è£
ããã®ã§ãããã¯ãœé
ãã£ãã§ã(800px*600pxã®å·®åç»åã1æäœãã®ã«5ç§ãããããã£ã)ã
ãã®åŸLockBitsã䜿ã£ãŠã¡ã¢ãªé åãçŽæ¥ãããæ¹æ³ãç¥ã£ãŠããããã6æã§1ç§ãšããã®ãªèããããããªã£ãŠé床ã«ãªããŸãããããã§ãé
ããã©ã
æŽã«ããã°ã©ã 宿åŸã«ç¥ã£ããã§ããã©Pythonã ãšãããªæãã§å·®åç»ååãããã§ããâŠâŠäŸ¿å©âŠâŠãC#ãããã
diff = src.astype(int) - target.astype(int)
2020/05/17远èš
@albireo æ°ããã³ã¡ã³ããé ããOpenCVã«ãå·®åç»åãååŸãã cv::absdiff ãããããšãç¥ããŸãããåœç¶ OpenCvSharpã«ãçµã¿èŸŒãŸããŠããã®ã§ãããã䜿çšããã°åŠçæéã®å€§å¹
ãªççž®ãèŠèŸŒãããã§ããæ
å ±ããããšãããããŸããã
ãŸãã¯äœäºã調ã¹ãã®ã¯å€§äºã§ãããããããªC#ã
5. å·®åç»åã®éèŠç®æã®ã¿ãç®ç«ããããã¹ã¯ãäœæãã
åŸãããRGBãšVã®èš4æã®å·®åç»åã2å€åããŸããããã®ãŸãŸã ãšãã€ãºãçµæ§ããã®ã§ãã¡ãã£ã¢ã³ãã£ã«ã¿ãé©çšããŠããŸå¡©ãã€ãºãåã£ãŠããŸãã
ã¡ãã£ã¢ã³ãã£ã«ã¿ãç»ååŠçãœãªã¥ãŒã·ã§ã³
ãã€ãºé€å»ã®æ¬¡ã¯4æã®ç»åãBitwizeOrã§çµ±åããŸããããªãã¡ãåç»åã®ç»çŽ ããšã«ORæŒç®ãè¡ããã©ãã1æã§ãçœã®ç®æããã£ãããã®ç»çŽ ã¯çœãšããããšã§1æã®çµ±åç»åãäœæããŸãããã®åŠçã«ãã£ãŠãæ€åºã¢ã¬ãé²ãããšãã§ããŸãã
ãã¯ã»ã«æ¯ã®è«çæŒç® AND NOT OR XOR | OpenCVç»åè§£æå
¥é
次ã«ãããåŠçã§äžå®ã®å€§ããããå°ãã差忀åºé åãçããŠããã€ãºé€å»ãè¡ããŸããã¡ãã£ã¢ã³ãã£ã«ã¿ãšè¢«ã£ãŠããããã«æããŸãããã¡ãã£ã¢ã³ãã£ã«ã¿ãšãããã®éãã¯åœ¢ç¶ã«äŸåãããåŠããšãããšããã§ãããŸãããããåŠçã¯ãããã¯ãã倧ããã®ãããŸããã«ãŠã³ãããããšãã§ããããšããå©ç¹ããããŸããä»åã¯å®è£
ã§ããªãã£ãããŠããŸããããâåã®ééãã衚瀺ããããšãã£ãããã«æå®ããããšãå¿çšæ¬¡ç¬¬ã§ã§ãããšæããŸãã
ãããè§£æïœãŽã£ã¹ã³ã®ç»ååŠçæè¡ | ãŽã£ã¹ã³ã»ãã¯ãããžãŒãºæ ªåŒäŒç€Ÿ
æåŸã«ãèšåŒµåŠçãé©çšããŸããèšåŒµåŠçãšã¯ãããç»çŽ ãçœã ã£ãããã®è¿åã®ç»çŽ ãçœã«ãããšããåŠçã®ããšã§ãã
宿ã€ã¡ãŒãžãšããŠãééãç®æãå²ããããªãã¹ã¯ãäœãããã£ãã®ã§ã差忀åºé åãåºããããã«ãã®åŠçãããŸããŠããŸããããã§æçµçãªãã¹ã¯èª¿æŽãè¡ããŸãã
èšåŒµã»åçž®ã»ãªãŒããã³ã°ã»ã¯ããŒãžã³ã°ãç»ååŠçãœãªã¥ãŒã·ã§ã³
ãããŒã®æŠç¥å³ã¯ãããªæãã§ã(Vãã£ã³ãã«æãå¿ããŸããããå®éã¯åè¿°ã®ãšãã4ãã£ã³ãã«ã®ç»åã䜿çšããŠããŸã)ã

ãªããã¡ãã£ã¢ã³ãã£ã«ã¿ã®ã«ãŒãã«ãµã€ãºã¯3pxã2å€åéŸå€ã¯128ãèšåŒµã¯5pxããããé¢ç©äžéå€ã¯10pxãšããŸããããã®å€ã§ããããè¯ãããã§ãããå®éã«ã¯çްãã調æŽãããããšãããããããããªæãã®GUIãäžå¿äœæããŸããã

6. ãã¹ã¯ãSrcãšTargetã«ãã¶ãã
å°åœ±å€æããSrcãšTargetã䞊ã¹ãŠè¡šç€ºããäž¡æ¹ã«ãã¹ã¯ããã¶ããŸãã
ä»åã®ããã°ã©ã ã§ã¯ã差忀åºé åã¯éæè²ããã以å€ã¯äœéæåºŠã®é»ãšããããšã§ãééãç®æãéç«ãããŠããŸãã
ç¡äº10åã®ééãã®åšèŸºããã€ã©ã€ããããŠããŸããã
äž¡èããã€ã©ã€ããããŠããã®ã¯ãããŠã³ããŒãã§ããééãæ¢ãã®ç»åãµã€ãºãããããäžèŽããŠããããç«¯ã®æ¹ãåããŠããŸã£ãŠããããã§ãã

æºäžè©äŸ¡çµæ
é©åœã«3çš®é¡ã®ééãæ¢ããéžãã§ããã°ã©ã å®è¡ãããšããããããã10åã®ééããååŸã§ããŠããŸãïŒ
ã«ããŠãæ¬åœã«é£ããã§ããã**å人çã«ã€ãããšæã£ãã®ã¯2ã€ãã®å³äžã®çŒãé³¥ã®äž²ã®è§åºŠã§ãã**ããã€ã¯ãã°ãã



ãããŠçŸå®ãžâŠ
ããã°ã©ã ã¯å®æãããæããã¯ãªããå®ç§ã ã
ãã宿Šãšãããã
å®éã«ãµã€ãŒã§åçãæ®ã£ãŠã¿ãçµæ
ãã©ãããã§ãããä»åããã¹ãæ§ãéèŠããã®ã¯ããµã€ãŒã«è¡ã£ãŠééãæ¢ãã®åçãæ®ã£ãŠãã®æµãã§çããèŠã€ãããšãããªã¢ã«ã¿ã€ã æã®å®çŸãç®æããŠã®ããšã§ãã
ãã®ãããå®éã«iPhone Xã§åçãæ®ã£ãŠãã®ããã°ã©ã ã«çªã£èŸŒãã§ã¿ãŸãããæãããŠçµæãããã«ã

ãã³ãïŒïŒ

ãã¡ã ã£ããã
倱æã®åå
ãã®å€±æã®åå ã¯ãå®éã®å¯Ÿè±¡ã¯Jpgã§ãPngã§ããªãåçŽã«å°å·ãããŠãããšãããšããã«ããããã§ããã€ãŸããç»åã«ãã£ãŠ3次å
çãªåãã®å
·åãç°ãªã£ãŠããŸã£ãŠããããã®æªã¿ãè£æ£ããããŠããŸãããå°åœ±å€æã§ã¯ãã®ã¿ã€ãã®æªã¿ã«å¯Ÿå¿ã§ããªãã®ã§ãã
ãã®çµæã端ã«ããã°ããã»ã©ç»åéã®ããã倧ãããªããçµæãšããŠç«¯ã®æ¹ã§èª€æ€åºãå¢å€§ããŠããŸãã巊端ã®å¥³ã®åããããããå³ç«¯ã®çŸãªãããé¡èã§ãã

ãã ããç»åã®äžå€®ä»è¿ã¯ããæãã«æ€åºã§ããŠããŸããç¹ã«è±ã®éããæ€åºã§ããŠããã®ã§å人çã«ã¯ããªãéææããããŸãããã®è±ã ããèªå(人å)ã§è§£ããªãã£ããã§ãããâŠâŠã

察ç
åãªãæªã¿ã§ããã°ä»»æçŽç·äžã®ç¹åŸŽç¹å士ã®è·é¢ã®æ¯ã¯å€ãããªãããå°åœ±å€æã§å¯Ÿå¿ã§ããŸãããä»åã®å Žåã¯3次å
çã«åã£ãŠãããããããé«åºŠãªå€åœ¢ã«ãã£ãŠäž¹å¿µã«ããã蟌ãå¿
èŠããããŸãã
è²ã
調ã¹ããšãããä¹å·å€§åŠã®æ
å ±ç³»ã®ç 究宀ã®è³æããããããŸããã
ãã¹ã©ã€ããïŒæ¬¡å
ã¯ãŒããçšããé¡ç»ååŠçé¡ç»ååŠç - å
ç°èª äžæ°ãä»2å
ãè«æãç²å¯DPã«åºã¥ãç»åã®åŒŸæ§ãããã³ã°ã¢ã«ãŽãªãºã - å®®åŽæŽå
æ°ãä»2å
äžå¿æŠèŠãæžããŠãããŸãã
- å°åœ±å€æããããã¬ãã·ãã«ã«å€åœ¢ã§ãã匟æ§ãããã³ã°ãšããã¢ã«ãŽãªãºã ããã
- 察å¿ããç¹å士ãäžèŽãããã¢ã«ãŽãªãºã ãäŸãã°ãããäººã®æ£é¢ããã®åçãšæãããã®åçããããã³ã°ããŠãæãããã®åçãæ£é¢ããã®åçã«å€æã§ããã
- ãã®åçã§åãã«å¯Ÿå¿ã§ããã
- ãã ãèšç®éã**$O(N^{2}9^{2N})$**ããããããã€ã¯ãã°ãã
- ææ°ãªãŒããŒã®ã€ãã â ãYouTubeããã«ã·ã®ã®æ°ãæ¹
- ãããç·©åããããã«ç²å¯DPãšããåçèšç»æ³ãé©çšãã
- ããã«ããèšç®éã¯**$O(N^{4})$**ãšãªããããçšåºŠçŸå®çãªã¢ã«ãŽãªãºã ãšãªã
- ç²å¯DPãäœè§£å床ã®ç»åã«é©çšããããšãåæ
ãªãã»ã©ããããããã ãæ¬è«æãå·çãããã®ã¯2004幎ãšã ãã¶åãªã®ã§ãæè¡èªäœã¯æ¯ããŠããŠãããããããŸãããå匷ããŠãã€ãå®è£ ãããã§ããã
ãã®ä»èª²é¡
極端ã«å°ããééãã¯æ€åºã§ããªã
ç»åãåããèŸŒãæ®µéã§ç»åå
šäœã®ç¹åŸŽç¹ã䜿ã£ãŠãããããåœç¶ãªããééãç®æã®ç¹åŸŽç¹ã䜿çšããŠããŸããçŸç¶ããããã£ãç®æã¯éŸå€ãèšå®ããŠå€ãå€ãšããããšã§ç¡èŠããŠããŸãã
ãã ãã2æã®ç»åäž¡æ¹ã«äŒŒããããªç¹åŸŽç¹ãããããã€ãã®2ç¹ã®è·é¢ãæ¯èŒçè¿ãå Žåããã®2ç¹ã¯åãã§ãããšã¿ãªãããå°åœ±å€æã®ç²ŸåºŠã«åœ±é¿ããå¯èœæ§ããããŸãããµã€ãŒã®ééãæ¢ãã«ã¯å¯Ÿè±¡ããããŠããã ãããšããééããçµæ§ããã®ã§ããã®åœ±é¿ã¯ç¡èŠã§ããŸããã
å®éã以äžã®ç»åã®å Žåã ãšééãã®ç®æãããªã现ããããããã°ã©ã ãå®è¡ããçµæãã€ãºãšã¿ãªãããŠããŸããŸããã
2006幎8æã®ééãæ¢ã - å·Šäžã®æèšã®çéã«æ³šç®
ãã®è§£æ±ºçãšããŠãããããã³ã°ã®éŸå€ã远ã蟌ãããç»åã®äžéšåã®ã¿ã®ç¹åŸŽç¹ãçšããŠå°åœ±å€æããããšãã£ãæ¹æ³ãèããããŸãã
ãã ããåè
ã¯éŸå€ãäžåãééãç®æã®ç¹åŸŽç¹ãç¡ãããšã蚌æã§ãããåŸè
ã¯ãã®äžéšåã«ééãããã£ãå Žåæå³ããªãäžã«ãäžéšåã ãã ãšå°åœ±å€æã®ç²ŸåºŠãäžå®ã§ãããã£ãŠããããã®è§£æ±ºçã¯æ ¹æ¬çãªãã®ã§ã¯ãããŸããã
ããšã¯çŽèªäœã®åããè£æ£ããäžã§ã®è©±ã«ãªããŸãããééãæ¢ãã®ååã®ãšããžãå©çšã§ãããããªæ°ãããŸããèŠæ€èšã§ããã
ãµã€ãŒã§å®è¡ããã
**ããµã€ãŒã«è¡ãâæ³šæããâåçãæ®ãâå®è¡ããâæçãæ¥ããŸã§ã«ééããå
šãŠèŠã€ããã**ãšããã®ãçæ³ã®ãããŒã§ãã
ã§ãã¹ããã¢ããªäœã£ãããšãªãã®ã§è«ŠããŸãããXamarinå匷ããŸãã
ãŸããã¹ããã§åããããã«ã¯ãã£ãšåŠçã軜ãããå¿
èŠããããŸããããã·ã³ãã¯ãŒã«é Œããªãå®è£
âŠâŠã
ãããã«
ãã®ãã³åããŠOpenCVïŒOpenCvSharpïŒããŸãšãã«ããããŸããããæãã®å€è²ã ãªããšãå®çŸã§ããŠæ¥œããã£ãã§ãã
ãŸããä»å䜿çšããå®åç»åã¯ããµã€ãŒã«ãã€ã¯ã¢ãŠããè²·ãã«è¡ã£ããšãã«æ®åœ±ããŸããã
ãã€ã¯ã¢ãŠãããªãè¯ãã£ãã®ã§æ¯éã¿ãªããŸãããã¡ã§ãµã€ãŒããŸãããã
ãµã€ãŒãªã€ãããããŒãžïœãµã€ãŒãªã€
