【ポケモン剣盾】高個体値量産!?特徴点抽出による孵化判定【裏技】
皆さんは高個体値のポケモンを量産する方法をご存知でしょうか?
実は,とある方法を実践するだけで高個体値・色違いを量産する方法があるって知ってましたか?
方法もすごく簡単で,卵が産まれているかどうかを画像処理によってお姉さんのポーズを識別するだけ!!!
ACCELERATED-KAZE FEATURES
前述の通り,お姉さんがどのようなポーズ取っているかを識別することによって卵が産まれているかが判定可能です. なので,お姉さんの胸部画像(図1)の特徴点とゲーム画面の特徴点をマッチングすることによってポーズの識別をします. 特徴点抽出には,AKAZEを利用しました.
特徴点に使いたい画像の範囲はかなり狭いため(図2),そのままの状態で特徴点抽出をしてもうまくいきません. そのためいくつか,前処理とAKAZEのパラメータを調整しています.以下にそれらを示します.
- 画像の大きさを2倍にする
- AKAZEのパラメータ変更
- nOctaves=2:解像度が高くないため
- nOctaveLayers=3:解像度が高くないため
- descriptor_type=cv2.AKAZE_DESCRIPTOR_KAZE_UPRIGHT:マッチング対象が回転しないため
この結果得られるマッチング画像を図3に示します. きれいにマッチングできてると思います. また,お姉さんが腕を組んでいなかったり,お姉さんが画面に写ってない場合は,特徴点がマッチングしませんでした. そのため,マッチングした特徴点の数を数えるだけで卵が産まれているかどうかの判定ができそうです*1.
特徴点抽出とそのマッチングを行っているコードを抜粋したものを次に示します.
# 画像の拡大 def expand(self, img, times, interpolation=cv2.INTER_CUBIC): ret_img = cv2.resize(img, None, interpolation=interpolation, fx=times, fy=times) return ret_img # マッチングした特徴点の数を返す def match_by_akaze(self): src = cv2.imread("キャプチャ画像", 0) img1 = self.expand(img1, 2) img2 = cv2.imread("テンプレート画像のファイル", 0) img2 = self.expand(img2, 2) akaze = cv2.AKAZE_create(nOctaves=2, nOctaveLayers = 3, descriptor_type=cv2.AKAZE_DESCRIPTOR_KAZE_UPRIGHT) kp1, des1 = akaze.detectAndCompute(img1, None) kp2, des2 = akaze.detectAndCompute(img2, None) bf = cv2.BFMatcher() matches = bf.knnMatch(des1, des2, k=2) # 距離がある程度近いやつを採用 good = [] for m, n in matches: if m.distance < 0.6 * n.distance: good.append([n]) good = sorted(good, key=lambda x: x[0].distance) good = good[:30] return good
おわりに
いかがでしたか?
今回は,高個体値の色違いを厳選する方法を紹介しました! みなさんもぜひ理想のポケモンをゲットしてくださいね!!
*1:経験的に6以上マッチングしてれば産まれていると判定して良さそうです
乳首の探索アルゴリズム(実践編)
前回の続き。
実行環境は以下の通りである。
人間:ちぎちゃん
季節:夏
服:薄着
乳首:若干黒い
それでは、結果と考察を書いていく。
1:勘
勘で押した結果がこれだ
!!!!!??????????!!!!!!!!???????!!?!?!?!?
なんかコツ掴んでるんだけど・・・
たまげたなぁ
2:2分探索
「横から見て盛り上がってる所で乳首のy座標が求まるんじゃないか」ってアドバイスを貰ったのでy座標はそれで、決定した。
なので、2分探索で乳首のx座標を求めることにした。
以下、結果である。
電車の中で揺れながら(別に胸は揺れてない)したけど、安定してた。
神アルゴリズムじゃないか!?!?!?
3:服を脱がす
ここに服を脱ぐ前の男がおるじゃろ?
これが
こうじゃ
結果
まあ、服を脱がしてO(1)という最強アルゴリズムだしね。結果は見えてるね。
いとうかなこ『悲しみの向こうへ』『約束~girlhood's end~』
その前にBGMです。
うおおおおおおおおお!!!!!!?!?!?!
おりゃ
ぷにっ
あっもうやだ・・・・
無敵に見えたアルゴリズム
なんで男の乳首直で触らなきゃいけないのかという理性と戦わなければいけなかった。
もう、乳首触るのやめます
乳首の探索アルゴリズム(理論編)
人間一度は遊んだ遊びがある。
そう、乳首あてげーむである
人は古来より乳首を当てることにより、文明を発展させてきた。
だがそこには、勘・経験などといった要素が絡んでくる。
人によっては乳首の場所を当てれないなどといった悲しみに包まれる人も出てくる。
では、どのようにすれば人間の乳首に高速に触れることができるのであろうか。
この問題は以下のようにして考える事が可能である。
この問題は男として考える。
理由は、アクセス拒否される(その人との関係による)・3次元の問題になる(人による)からである。
このように問題を設定することにより、以下3つのアルゴリズムでこの問題を解くことができる。
1:勘
最も人間らしいアルゴリズムである。
だが、このアルゴリズムを用いた場合最悪の場合いつまでも乳首を当てられずに、計算量が、O(∞)になってしまう。
これではよろしくない。
次のアルゴリズムを考えてみる。
2:2分探索
「にぶたん」などといった愛称で愛されるアルゴリズムである。
まず、乳首のx座標を2分探索で探り当て、次にy座標の乳首の位置を探り当てる。
この場合、計算量は、O(log2 N)となる。
早いがこれよりも高速なアルゴリズムが存在する。
3:服を脱がせる
乳首を触られる人は服を着ている(脱がせていけないとは書いてない)。
見えないなら脱がせる。当たり前だよなぁ
この場合の計算量はO(1)となる。神アルゴリズムである。
以上の3つを検証する「実践編」は気が向いたら行う。