2014-04-21 7 views
2

의학 연구에 프로그래밍을 적용하려는 신참 프로그래머. 저는 환자의 CT 스캔으로 만든 Python과 STL (3D 형식) 파일을 사용하여 생체 역학 시뮬레이션을 수행하고 있습니다. 저는 관절 운동을 시뮬레이트하고 인대 삽입 포인트 사이의 (변화하는) 거리를 측정하기 위해 임의의 축을 중심으로 하나의 뼈 부위를 회전 시키려고합니다. 그러나이를 수행하는 방법에 손실이 있습니다. STL 파일에서 포인트 클라우드로 데이터를 가져와 기본 작업을 수행 할 수 있지만 STL을 재구성하는 방법을 알지 못합니다. STL 데이터를 구조로 취급하고 기하학적 변환을 직접 수행하는 방법이 있습니까? 새로운 위치를 기반으로, 나는 효과적인 인대 길이 (기본적으로 관심있는 뼈 영역에서 한 점과 다른 점 사이의 거리)를 계산합니다. 이 값을 바탕으로 STL을 "채색"하고 3D "히트 맵"을 만들려고합니다. 기본적으로 더 높은 값은 빨간색, 파란색 등입니다. 실제로 Mayavi를 사용할 수는 없습니다. 포인트 클라우드이지만, 파이썬에서 플롯하고 조작하는 것은 대단히 느립니다. 도와 주셔서 감사합니다!파이썬에서 STL의 데이터 요소를 조작하는 방법이 있습니까? (의료 응용)

TL; 아래의 DR :

  • STL 파일이나 임의의 기하학적 변환에서 임의 축에 대한 행렬 회전은 어떻게합니까?
  • 별도의 STL 파일에서 두 지점 사이의 거리를 어떻게 측정 할 수 있습니까?
  • 값 집합을 기반으로 STL 삼각형/서페이스의 색상을 어떻게 바꿀 수 있습니까?
+0

STL은 "표준 템플릿 라이브러리"를 의미하지 않는다고 생각합니다. C++ 표준 라이브러리의 대부분을 차지하고 있습니다. 맞습니까? 그렇다면 stl 태그를 제거해야합니다. – juanchopanza

+0

정확합니다. 태그가 삭제되었습니다. 그 자리에 고마워! – allanbreyes

+0

관심이있을 수 있습니다 : [numpy-stl] (https://pypi.python.org/pypi/numpy-stl) –

답변

1

이 프로세스에는 여러 하위 작업이 있습니다. 각 몸체 부분에 속한 점을 그룹화하고 회전 점과 측정 점을 정의해야합니다.

내 의견으로는,이 작업들 중 어느 것도 프로그래밍 (파이썬 또는 기타)을 통해 수행하기에 적합하지 않습니다. 사용자 상호 작용이 많기 때문입니다. 이러한 작업을 3D 편집기에서 수행하는 방법을 배우고 싶을 수 있습니다.

Blender은 무료이며 STL을 가져올 수 있으며 학습 곡선이 조금 가파르지만 온라인 학습 자료가 많이 있습니다. vertex groups, riggingmeasuring distances을 살펴볼 수 있습니다.

일단 기본 모델을 설정하면 blender's extensive python API 덕분에 쉽게 프로그래밍 방식으로 변경할 수 있습니다. 이를 통해 테스트를 자동화하고 필요할 때 결과를 그래픽으로 검사 할 수 있습니다.

사용 가능한 많은 설명서가 블렌더 버전 시리즈 2.4에 관한 것이고 최신 버전은 2.6입니다. 둘 다 시도해보십시오.

+0

이것은 유감입니다. 일반적인 알고리즘까지 내가해야 할 일이 의미가 있습니다. 시각화 부분에 문제가 있습니다. 나는 블렌더를 시도 할 것이지만 문제는 수천 개의 값과 모델을 반복해야한다는 의미에서 최소한의 "사용자 상호 작용"이 필요하다는 것이다. 당신의 도움을 주셔서 감사합니다. – allanbreyes

+0

@ user3557448 기본 모델을 설정하자마자 블렌더 자체에서 쉽게 할 수 있습니다 (편집 참조). 모델 설정 자동화 *는 특정 데이터에 따라 가능할 수도 있지만 결과를 어떻게 든 확인해야합니다. – goncalopp