2Dアレイでのピーク検出

| | | | | | | | | | | | | | | | | | | | | |

私は犬の足の下の圧力を測定する獣医クリニックを支援しています。データ分析にPythonを使用していますが、足を(解剖学的)サブ領域に分割しようとして立ち往生しています。

作成しました各足の2Dアレイ。これは、時間の経過とともに足によってロードされた各センサーの最大値で構成されます。これは、Excelを使用して「検出」したい領域を描画した、1つの足の例です。これらは、センサーの周囲に極大値を持つ2 x 2のボックスであり、合計が最大になります。

alt text

そこで、実験を試みて、単に探してみることにしました。各列と行の最大値(足の形状のために一方向を見ることができません)。これは、別々のつま先の位置をかなりうまく「検出」しているようですが、隣接するセンサーもマークします。

alt text

では、Pythonにこれらのどれを伝えるのが最善の方法でしょうか。最大値は私が望むものですか?

注:2x2の正方形は、別々のつま先である必要があるため、オーバーラップできません!

また、2x2を使用しました便宜上、より高度なソリューションを歓迎しますが、私は単なる人間の動きの科学者であり、実際のプログラマーでも数学者でもないので、「シンプル」にしてください。

ここに np.loadtxt


結果

そこで、@ jexteeのソリューションを試しました(以下の結果を参照)。ご覧のとおり、前足では非常に効果的ですが、後足ではあまり効果がありません。

より具体的には、4番目のつま先である小さなピークを認識できません。これは明らかに、ループがどこにあるかを考慮せずに、ループが最小値に向かって上から下に見えるという事実に固有のものです。

@jexteeのアルゴリズムを微調整して、4番目のつま先も見つけられるようにする方法を知っている人はいますか?

 alt text

他の試行をまだ処理していないため、他のサンプルを提供できません。ただし、以前に提供したデータは各足の平均でした。このファイルは、プレートに接触した順に9本の足の最大データを含む配列です。

この画像は、足がプレート全体にどのように空間的に広がっているかを示しています。< / p>

alt text

更新:

興味のある人のためにブログを作成しましたすべての生の測定値を使用してSkyDriveをセットアップしました。より多くのデータを要求する:あなたにより多くの力を!


新しいアップデート:

ヘルプの後、に関する質問がありました。足の検出と足の並べ替えで、ようやくすべての足のつま先の検出を確認できました。結局のところ、私自身の例のようなサイズの足以外ではうまく機能しません。もちろん、後から考えると、2x2を任意に選択したのは私自身の責任です。

ここに」うまくいかない例:爪がつま先として認識され、「かかと」が非常に広いため、2回認識されます!

 alt text

足が大きすぎるため、重なりのない2x2サイズを使用すると、一部のつま先が2回検出されます。逆の場合、小型犬では、5番目のつま先を見つけることができないことがよくあります。これは、2x2の領域が大きすぎることが原因であると思われます。

すべての測定で現在の解決策を試してみる私は、ほとんどすべての小型犬について、5番目を見つけられなかったという驚異的な結論に達しました。つま先とそれは大型犬の影響の50%以上で、もっと見つかるでしょう!

だから、明らかに私はそれを変更する必要があります。私自身の推測では、 Neighborhood のサイズを、小型犬の場合は小さく、大型犬の場合は大きいサイズに変更しました。しかし、 generate_binary_structure では、配列のサイズを変更できません。

したがって、他の誰かがつま先を見つけるためのより良い提案を持っていることを望んでいます。足のサイズに合わせた面積スケール?