2D 어레이의 피크 감지

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

나는 개 발 아래의 압력을 측정하는 동물 병원을 돕고 있습니다. 저는 데이터 분석을 위해 Python을 사용하고 있으며 지금은 발을 (해부학적) 하위 영역으로 나누는 데 어려움을 겪고 있습니다.

제가 만들었습니다. 시간이 지남에 따라 발에 로드된 각 센서의 최대값으로 구성된 각 발의 2D 배열. 다음은 한 발의 예입니다. Excel을 사용하여 "감지"하고 싶은 영역을 그렸습니다. 이들은 로컬 최대값이 있는 센서 주변의 2x2 상자로, 합이 가장 큽니다.

alt text

그래서 몇 가지 실험을 시도했고 단순히 각 열과 행의 최대값(발 모양으로 인해 한 방향으로 볼 수 없음). 이것은 개별 발가락의 위치를 상당히 잘 "감지"하는 것처럼 보이지만 인접 센서도 표시합니다.

alt text

Python에게 다음 중 무엇을 알려주는 가장 좋은 방법은 무엇입니까? 최대값이 내가 원하는 것입니까?

참고: 2x2 정사각형은 서로 다른 발가락이어야 하므로 겹칠 수 없습니다!

또한 2x2를 사용했습니다. 편의상 더 고급 솔루션은 환영합니다. 그러나 저는 단순한 인간 운동 과학자이므로 실제 프로그래머도 수학자도 아니므로 "단순"하게 유지하십시오.

여기"sa np.loadtxt로 로드할 수 있는 버전


결과

그래서 @jextee" 솔루션을 시도했습니다(아래 결과 참조). 보시다시피 앞발에는 매우 효과가 있지만 뒷다리에는 잘 작동하지 않습니다.

더 구체적으로 말하면 네 번째 발가락인 작은 봉우리를 인식하지 못합니다. 이것은 루프가 이것이 어디에 있는지 고려하지 않고 가장 낮은 값을 향해 하향식으로 보인다는 사실에 분명히 내재되어 있습니다.

4번째 발가락도 찾을 수 있도록 @jextee"의 알고리즘을 조정하는 방법을 아는 사람이 있습니까?

alt text

아직 다른 시도를 처리하지 않았기 때문에 다른 샘플을 제공할 수 없습니다. 하지만 이전에 제공한 데이터 각 발의 평균값입니다. 이 파일은 최대 9개의 발이 접시에 닿은 순서대로 배열된 배열입니다.

이 이미지는 접시에 공간적으로 어떻게 퍼져 있는지 보여줍니다.

alt text

업데이트:

관심 있는 사람을 위해 블로그를 개설했습니다저는 모든 원시 측정값으로 SkyDrive를 설정했습니다. 그래서 누구에게나 더 많은 데이터 요청: 더 많은 권한!


새 업데이트:

그래서 도움을 받은 후 발 감지발 정렬 덕분에 마침내 모든 발의 발가락 감지를 확인할 수 있었습니다! 내 자신의 예와 같은 크기의 발 외에는 아무 것도 잘 작동하지 않는 것으로 나타났습니다. 물론 돌이켜 생각해보면, 2x2를 그렇게 임의로 선택한 내 잘못입니다.

여기" 어디가 잘못되었는지에 대한 좋은 예입니다. 손톱이 발가락으로 인식되고 "발뒤꿈치"가 너무 넓어서 두 번 인식됩니다!

alt text

발이 너무 커서 겹치지 않고 2x2 크기를 취하면 일부 발가락이 두 번 감지됩니다. 반대의 경우 , 소형견의 경우 5번째 발가락을 찾지 못하는 경우가 많은데, 이는 2x2 영역이 너무 커서 발생하는 것으로 의심됩니다.

모든 측정에 대해 현재 솔루션 시도 나는 거의 모든 소형견에 대해 5위를 찾지 못했다는 놀라운 결론에 도달했습니다. 발가락과 대형견에 대한 영향의 50% 이상에서 더 많이 발견됩니다!

분명히 변경해야 합니다. 제 추측으로는 neighborhood의 크기를 소형견에게는 더 작은 크기로, 대형견에게는 더 큰 크기로 변경하는 것이었습니다. 그러나 generate_binary_structure에서는 배열의 크기를 변경할 수 없습니다.

따라서 다른 사람이 발가락을 찾는 데 더 나은 제안을 하기를 바랍니다. 발 크기에 따른 면적 척도?