Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

各ピクセルベクトルをマッチングする #3

Open
kawaemon opened this issue Apr 19, 2021 · 7 comments
Open

各ピクセルベクトルをマッチングする #3

kawaemon opened this issue Apr 19, 2021 · 7 comments
Assignees

Comments

@kawaemon
Copy link
Member

No description provided.

@MikuroXina
Copy link
Member

MikuroXina commented Apr 19, 2021

案1: 左上の断片画像から始めて, 上下左右に別の断片画像をくっつけて伸ばしながら探索する. ただし, 結合したときに全体の幅と高さが元画像を超えないようにする.

相似な断片画像があった場合でも正しく最短の移動先座標を求める必要アリ

@kawaemon
Copy link
Member Author

左上がどの断片なのか最初わからないので、どれか一つから結合作業をはじめて、最終的に一番左上に来たやつに回転を合わせるしかない...?

@MikuroXina
Copy link
Member

@kawaemon 募集要項より,

回転させる角度および断片画像数に制限はなく,各々の断片画像の回転角度に関係性はありません。ただし,問題画像の座標00の断片画像は全体の向きの基準とするため,回転させません。

となっているので, 入力画像における最も左上の断片が向きの基準であるというだけです.

@kawaemon
Copy link
Member Author

問題ミスリードしてました。失礼しました。。。

@MikuroXina
Copy link
Member

MikuroXina commented Jun 17, 2021

O((W^2 + H^2 + WH) log WH) のアルゴリズムを思いついたのでメモしておきます.

  1. 最初の座標 00 の断片画像から, 縦に H 個の最適な断片画像を探してくっつける. この列の中で座標 00 を置く位置は H 通りあるので, このパターンを探索する. 最適な断片画像を探すには, 予め辺の画素値でソートしておき, 最も近い辺を二分法で探せばよい. O(H^2 log WH)
  2. 同じように座標 00 の断片画像から, 横に W 個の最適な断片画像を探してくっつける. O(W^2 log WH)
  3. 残りの空いている部分を同様に埋めていく. O(WH log WH)

O((W^2 + H^2 + WH) log WH) は高々 3 * 256 * 8 = 6144 回の計算となり, 十分間に合います.

@kawaemon kawaemon self-assigned this Aug 27, 2021
@MikuroXina MikuroXina linked a pull request Oct 1, 2021 that will close this issue
@kawaemon kawaemon removed a link to a pull request Oct 7, 2021
@MikuroXina
Copy link
Member

MikuroXina commented Oct 10, 2021

以下のようなケースで,

A -[近い]- B
|          |
[近い]    [遠い]
|          |
C -[近い]- D

近いと遠いの矛盾を解消するように自動でブラックリストへ追加するといいかもしれません.

@kawaemon
Copy link
Member Author

todo:

  • 'F' の undo
  • 'F' のビジュアライズ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants