【ポケモン剣盾】高個体値量産!?特徴点抽出による孵化判定【裏技】

f:id:otama_jaccy:20200307011003p:plain

皆さんは個体値ポケモン量産する方法をご存知でしょうか?

実は,とある方法を実践するだけで個体値・色違い量産する方法があるって知ってましたか?

方法もすごく簡単で,卵が産まれているかどうかを画像処理によってお姉さんのポーズを識別するだけ!!!

f:id:otama_jaccy:20200305151514p:plain

ACCELERATED-KAZE FEATURES

前述の通り,お姉さんがどのようなポーズ取っているかを識別することによって卵が産まれているかが判定可能です. なので,お姉さんの胸部画像(図1)の特徴点とゲーム画面の特徴点をマッチングすることによってポーズの識別をします. 特徴点抽出には,AKAZEを利用しました.

f:id:otama_jaccy:20200305170754p:plain
図1. お姉さんの胸部画像

特徴点に使いたい画像の範囲はかなり狭いため(図2),そのままの状態で特徴点抽出をしてもうまくいきません. そのためいくつか,前処理とAKAZEのパラメータを調整しています.以下にそれらを示します.

  • 画像の大きさを2倍にする
  • AKAZEのパラメータ変更
    • nOctaves=2:解像度が高くないため
    • nOctaveLayers=3:解像度が高くないため
    • descriptor_type=cv2.AKAZE_DESCRIPTOR_KAZE_UPRIGHT:マッチング対象が回転しないため

f:id:otama_jaccy:20200307023303p:plain
図2. 特徴点のマッチングに使いたい範囲

この結果得られるマッチング画像を図3に示します. きれいにマッチングできてると思います. また,お姉さんが腕を組んでいなかったり,お姉さんが画面に写ってない場合は,特徴点がマッチングしませんでした. そのため,マッチングした特徴点の数を数えるだけで卵が産まれているかどうかの判定ができそうです*1

f:id:otama_jaccy:20200307024416p:plain
図3. 特徴点のマッチング結果

特徴点抽出とそのマッチングを行っているコードを抜粋したものを次に示します.

# 画像の拡大
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以上マッチングしてれば産まれていると判定して良さそうです

乳首の探索アルゴリズム(実践編)

前回の続き。

 

実行環境は以下の通りである。

人間:ちぎちゃん

季節:夏

服:薄着

乳首:若干黒い

 

今回は、前回書いたアルゴリズム3つを試した。

それでは、結果と考察を書いていく。

 

1:勘

勘で押した結果がこれだ

f:id:otama_jaccy:20130923230914p:plain

 

 

!!!!!??????????!!!!!!!!???????!!?!?!?!?

 

 

なんかコツ掴んでるんだけど・・・

 

たまげたなぁ 

 

 

 

2:2分探索

「横から見て盛り上がってる所で乳首のy座標が求まるんじゃないか」ってアドバイスを貰ったのでy座標はそれで、決定した。

 

なので、2分探索で乳首のx座標を求めることにした。

 

以下、結果である。

f:id:otama_jaccy:20130923231443p:plain

 

電車の中で揺れながら(別に胸は揺れてない)したけど、安定してた。

 

アルゴリズムじゃないか!?!?!?

 

3:服を脱がす

ここに服を脱ぐ前の男がおるじゃろ?

f:id:otama_jaccy:20130923232548p:plain

 

 

 

 

 

 

 

 

これが

 

 

 

 

 

 

 

 

 

 

 

 

 

こうじゃ

f:id:otama_jaccy:20130914115806j:plain

 

 

結果

 

 

まあ、服を脱がしてO(1)という最強アルゴリズムだしね。結果は見えてるね。

 

 

 

 

 

 

 

 


いとうかなこ『悲しみの向こうへ』『約束~girlhood's end~』

 

 

その前にBGMです。

 

 

 

 

 

 

うおおおおおおおおお!!!!!!?!?!?!

 

 

 

f:id:otama_jaccy:20130923234123p:plain

 

 

おりゃ

 

f:id:otama_jaccy:20130923234157p:plain

 

 

 

 

ぷにっ

 

 

 

 

 

 

 

 

 

 

あっもうやだ・・・・

 

 

 

 

 

 

 

f:id:otama_jaccy:20130923234457p:plain

 

 

 

 

無敵に見えたアルゴリズム

 

 

なんで男の乳首直で触らなきゃいけないのかという理性と戦わなければいけなかった。

 

 

 

もう、乳首触るのやめます

 

 

 

 

 

 

 

 

乳首の探索アルゴリズム(理論編)

人間一度は遊んだ遊びがある。

 

f:id:otama_jaccy:20130824234530p:plain

f:id:otama_jaccy:20130824234711p:plain

 

そう、乳首あてげーむである

 

人は古来より乳首を当てることにより、文明を発展させてきた。

 

だがそこには、勘・経験などといった要素が絡んでくる。

 

人によっては乳首の場所を当てれないなどといった悲しみに包まれる人も出てくる。

 

では、どのようにすれば人間の乳首に高速に触れることができるのであろうか。

 

この問題は以下のようにして考える事が可能である。

 

N*Mのフィールドに乳首が2個存在する。この2つの乳首の位置を当てろ。また、フィールド上に手を当てた場合、その手の座標から乳首がどの方向にあるかが出力される。なお、乳首を触られる人は服を着ているため乳首が見えないとし、男であるとする。

f:id:otama_jaccy:20130825000456p:plain

 

この問題は男として考える。

 

理由は、アクセス拒否される(その人との関係による)・3次元の問題になる(人による)からである。

 

このように問題を設定することにより、以下3つのアルゴリズムでこの問題を解くことができる。

 

1:勘

 

最も人間らしいアルゴリズムである。

 

だが、このアルゴリズムを用いた場合最悪の場合いつまでも乳首を当てられずに、計算量が、O(∞)になってしまう。

 

これではよろしくない。

 

次のアルゴリズムを考えてみる。

 

2:2分探索

「にぶたん」などといった愛称で愛されるアルゴリズムである。

 

まず、乳首のx座標を2分探索で探り当て、次にy座標の乳首の位置を探り当てる。

 

この場合、計算量は、O(log2 N)となる。

 

早いがこれよりも高速なアルゴリズムが存在する。

 

 

 3:服を脱がせる

乳首を触られる人は服を着ている(脱がせていけないとは書いてない)。

 

見えないなら脱がせる。当たり前だよなぁ

 

この場合の計算量はO(1)となる。神アルゴリズムである。

 

 

 

以上の3つを検証する「実践編」は気が向いたら行う。