잡음을 생성하기 위해 컴퓨터 프로그램에서 3D 볼륨에서 임의의 2D 슬라이스를 얻고 싶습니다. 회전 행렬을 사용하기로 결정했습니다. 회전 행렬은 회전 그룹 SO (3)의 멤버 여야합니다. 이 그룹의 멤버를 일률적으로 임의로 만들려면 어떻게해야합니까?3D 볼륨에서 랜덤 2D 슬라이스
2
A
답변
3
세 랜덤 값을 선택 U 1, U 2 및 U 3is given by
균일 랜덤 쿼터니언 0 내지 1 :
=의 SQRT w (1 - u) sin (2pi * u)
X = SQRT (1 - U 1) COS (2pi * 유 2)
Y = SQRT (U 1) 죄 (2pi * U 3)
Z = SQRT (U 1) COS (2pi * 유 3)
그런 다음 생성 할 this formula를 사용하여 적절한 회전 매트릭스 :로부터 선택된 3 개 난수로부터 일정한 방향을 얻기 위하여
| 2 2 |
| 1 - 2y - 2z 2xy - 2zw 2xz + 2yw |
| |
| 2 2 |
M = | 2xy + 2zw 1 - 2x - 2z 2yz - 2xw |
| |
| 2 2 |
| 2xz - 2yw 2yz + 2xw 1 - 2x - 2y |
| |
1
3 개의 독립적 인 확률 변수로 구성된 임의의 3D 벡터를 각 축으로 그릴 수 있습니다. 그런 다음이 벡터를 임의의 2D 슬라이스의 법선 벡터와 원점에서 2D 슬라이스까지의 거리로 정의 할 수 있습니다. 나는이 접근법이 가능한 2D 슬라이스에 대해 균일 한 분포를 가져야한다는 것을 공식적인 증거 없이는 확신하지만 (이전의 진술은 근본적으로 비공식적이다).
편집 : 두 번째 생각에, 원점에서 2D 슬라이스까지의 거리를 나타내는 독립 변수를 그려야합니다. 그렇지 않으면 원점으로부터 일정 거리 떨어져있을 가능성이 높은 2D 슬라이스가 배포됩니다.
관련 문제
- 1. 2D 텍스처 입력으로 3D 텍스처 슬라이스 사용
- 2. numpy를 사용하여 볼륨에서 슬라이스 추출 및 저장
- 3. 3D 렌더링 랜덤 플래시 삽입
- 4. 랜덤 2D 좀비 워킹
- 5. Scipy?를 사용하여 3D 볼륨에서 임의의 2D 슬라이스를 추출하는 방법은 무엇입니까?
- 6. 2D/3D 벡터 곱하기
- 7. 2D 벡터에서 3D 벡터
- 8. matplotlib 3d to 2d
- 9. Three.js - 2D + 3D 메쉬
- 10. 2D 조각에서 파이썬으로 3D 플롯 만들기
- 11. DirectX의 3D 및 2D 디스플레이
- 12. CUDA 2D, 3D 스레드 블록
- 13. 평면 3D 삼각형 메쉬에서 2D
- 14. 3D 모델을 2D 이미지로 변환
- 15. 2D 이미지를 3D 이미지로 변환
- 16. 3d 파일에서 2D 드로잉 만들기
- 17. Java에서 2D/3D 세계를위한 벡터
- 18. 2D 이미지를 3D 모델로 변환
- 19. 3D 컨텍스트에 2D 점 그리기
- 20. 안드로이드 2D 및 3D 동기화
- 21. 2D 이미지에서 3D 이미지 얻기
- 22. Matlab : 3D 함수의 2D 투영
- 23. 2D 평면을 3D 큐브로 확대
- 24. 2D 3D 시뮬레이션 방법 (누워보기)
- 25. 큐브의 표면에 3D 랜덤 포인트 생성
- 26. 2D 오브젝트를 3D 공간에 맵핑하면서 2D 크기 유지
- 27. 3D 평면에서 3D 투영을 모방하도록 2D 이미지 변환
- 28. 2D 및 3D 컨텍스트를 사용하는 캔버스 3D 드로잉
- 29. NRRD 볼륨 슬라이스 방향의 2D 렌더링이 반전 되었습니까?
- 30. 파이어 폭스의 슬라이스 박스
는 '[-1..1]'는 길이가 1' '보다 큰 벡터를 거부해야한다 . 불안정을 피하기 위해 길이가 상당히 작은 값 (예 :'0.1')보다 작은 벡터를 거부 할 수도 있습니다. "거절"은 3 개의 새로운 난수를 생성하고 거절되지 않은 벡터를 생성 할 때까지 반복합니다 (평균적으로 빨리 발생해야 함). – comingstorm