読者です 読者をやめる 読者になる 読者になる

東京高専プロコン競技部門をした話

はじめに

  • 文化祭前で忙しいので、落ち着いたらこの地獄みたいな文章を書き直します。
  • 書いてあることはうちのチームの総意ではありません。

写真とる

  • カメラのピントを合わせる
  • フレーム、ピースの順で写真を撮る
  • カメラからSDカードを引っこ抜いてパソコンにぶっ刺す

画像処理

  • 普通のピース部分と焦げの部分とを分けて、色抽出
  • ANDとる
  • きたない f:id:kinironote:20161013184309p:plain
  • openCVLSD(Line Segment Detector)をつかって線分を検出する
  • きたない f:id:kinironote:20161013184347p:plain
  • がんばって点同士を繋げる
  • ピースはboost::geometoryという多角形格納クラスを使った。回転と移動くらいにしか使ってないと思うが便利だった。
  • 他の高専はみんな綺麗に画像処理できてるらしいので、なんでこんなに完全人力が多かったのか謎だ。

ピースを枠にくっつける

  • 角が360度で一致するところ、辺の長さが一致するところを探す。(連続して一致した場所数をそのまま(メインの)評価値にした。)
  • 重複してなかったらフレームの一部としてピースをくっつける
  • ピースとフレームの重複チェックは線分同士の交差判定を用いて行った。が、誤差で多少ピースがフレーム内に埋め込まれるのを考慮するとスパゲッティおいしいですあああ(まだバグが残ってるかもしれない)

ソルブ

  • beamSearchを使った。ここは主に他の人が書いたのでよく知らない。
  • 誤差のせいで下手に枝切りできない、つらい
  • 勝戦の問題。大会前日にこれをみたら予選落ちかなって言うと思う f:id:kinironote:20161013185146p:plain
  • 想定問題ではわりかし埋まってた(問題の予想が足りなかった) f:id:kinironote:20161013184647p:plain

人力部門

  • GUIで次に置くべきピースの置いてある場所、置く場所を表示していたので機械的にできると思い練習をしていなかったが、甘かった。
  • 未参加の人は知らないだろうが、人力で並べるのはとてもむずかしい。みんなすごい();

反省点

  • 夏休み前全然やってなかった。反省
  • 下級生に上手く仕事を回せなかった。反省
  • pullRequest文化。反省
  • 誤差に時間を取られて肝心のソルブアルゴリズムに殆ど手をだせなかった。他の人が作ったコードのマージとかも間に合わなかった。反省
  • チーム名は一週間くらい使ってでもいいからかっこいい名前にするべきだった

まとめ

  • 完全解答したかった
  • 複数領域あり、枠の形は不定という条件であの問題は無いと思います。いや、決勝であの問題っていうならわかるけど最初から最後まで同じような問題だったし…
  • 来年は、毎年数校いたありえん強いチームが出場してくれることを願います(=問題が悪いぞ)