기본 매트릭스로 무엇을합니까?

존 크 테직

여러 2D 이미지에서 3D 모양을 재구성하려고합니다. 기본 행렬을 계산했지만 이제 어떻게해야할지 모르겠습니다.

스택 오버플로 및 학술 논문에서 여러 상충되는 답변을 찾고 있습니다. 예를 들어 여기 에서는 기본 행렬에서 회전 및 변환 행렬을 계산해야한다고 말합니다.

여기 에서 카메라 매트릭스를 찾아야한다고 말합니다.

여기 에서 동형을 찾아야한다고 말합니다.

여기 에 epipolar 라인을 찾아야한다고 말합니다.

무엇 이니?? (어떻게하면 되나요? H & Z 책을 읽었 는데 이해가 안 돼요. 9.14 결과에서 '직접 공식'을 '쉽게'사용할 수 있지만 결과 9.14는 이해하기 쉽지도, 직접 적이지도 않습니다.)

스택 오버플로는 코드를 원하므로 지금까지 내가 가진 내용은 다음과 같습니다.

    # let's create some sample data

    Wpts = np.array([[1, 1, 1, 1],  # A Cube in world points
                     [1, 2, 1, 1],
                     [2, 1, 1, 1],
                     [2, 2, 1, 1],
                     [1, 1, 2, 1],
                     [1, 2, 2, 1],
                     [2, 1, 2, 1],
                     [2, 2, 2, 1]])


    Cpts = np.array([[0, 4, 0, 1],  #slightly up
                     [4, 0, 0, 1],
                     [-4, 0, 0, 1],
                     [0, -4, 0, 1]])
    Cangles = np.array([[0, -1, 0],  #slightly looking down
                        [-1, 0, 0],
                        [1, 0, 0],
                        [0,1,0]])



    views = []
    transforms = []
    clen = len(Cpts)
    for i in range(clen):
        cangle = Cangles[i]
        cpt = Cpts[i]

        transform = cameraTransformMatrix(cangle, cpt)
        transforms.append(transform)
        newpts = np.dot(Wpts, transform.T)
        view = cameraView(newpts)
        views.append(view)



H = cv2.findFundamentalMat(views[0], views[1])[0]
## now what???  How do I recover the cube shape?

편집 : 나는 카메라 매개 변수를 모른다

그릴 플레이트

기본 매트릭스

처음에는 기본 매트릭스 노래를 들어요 ;).

Fundamental Matrix 는 2 개의 이미지 (x '-이미지 2, x-이미지 1)에서 포인트 대응 사이의 수학적 관계 보여줍니다. "즉, 모든 쌍의 해당 포인트에 대해 eq1" (Wikipedia)가 유지 됩니다. 이는 또한 이상치 또는 잘못된 포인트 대응이있는 경우 기본 매트릭스의 품질에 직접적인 영향을 미친다는 것을 의미합니다.

또한 Trifocal Tensor라고하는 3 개의 이미지 간의 점 대응 관계에 대해서도 유사한 구조가 존재합니다 .

Fundamental Matrix의 속성만을 사용하는 3D 재구성 은 불가능합니다 . "에피 폴라 기하학은 두 뷰 사이의 본질적인 투영 기하학입니다. 장면 구조와 무관하며 카메라의 내부 매개 변수 및 상대 포즈에만 의존합니다." (HZ, p.239).

카메라 매트릭스

여러 이미지에서 모양을 재구성하는 방법에 대한 질문을 참조하면 이미지의 카메라 매트릭스 (K ', K)를 알아야합니다. 카메라 매트릭스는 카메라 초점 거리 또는 기본 거리 (fx, fy)와 광학 중심 또는 기본 포인트 (cx, cy)로 구성된 3x3 매트릭스입니다.


eq2

카메라 보정을 사용하여 카메라 매트릭스를 유도 할 수 있습니다.

필수 매트릭스

카메라 매트릭스를 알고 있으면 Fundamental Matrix를 Essential Matrix E로 확장 할 수 있습니다.


eq3

기본 매트릭스가 이제 "보정"되었다고 매우 엉성하게 말할 수 있습니다.

Essential Matrix는 투영 재구성 까지만 첫 번째 이미지와 비교하여 두 번째 이미지의 회전 (회전 행렬 R) 및 변환 (벡터 t)을 얻는 데 사용할 수 있습니다 . t는 단위 벡터가됩니다. 이를 위해 OpenCV 기능 을 사용 decomposeEssentialMat하거나 recoverPose(cheirality 검사를 사용하는) HZ의 자세한 설명을 읽을 수 있습니다.

프로젝션 매트릭스

번역과 회전을 알면 이미지에 대한 투영 행렬을 만들 수 있습니다. 투영 행렬은로 정의됩니다 eq4. 마지막으로 삼각 측량 ( triangulatePoints)을 사용하여 이미지 포인트의 3D 좌표를 유도 할 수 있습니다 . 적절한 구성을 받으려면 후속 번들 조정을 사용하는 것이 좋습니다. openCV에는 sfm 모듈도 있습니다.

3D 재구성을 위해 동형이나 에피 폴라 라인 지식이 본질적으로 필요하지 않기 때문에 이러한 개념을 설명하지 않았습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다debugcn@gmail.com 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

"기본"제네릭 제약은 무엇을합니까?

분류에서Dev

NTFS 드라이브 / 파티션에서 '기본값'마운트 옵션은 무엇을 의미합니까?

분류에서Dev

매트 아이콘으로 기본 SVG 색상을 유지하는 방법은 무엇입니까?

분류에서Dev

매트릭스 위치를 기반으로 전체 점수를 계산하는 방법은 무엇입니까?

분류에서Dev

Firefox Javascript "기본 유형으로 변환 할 수 없음"오류는 무엇을 의미합니까?

분류에서Dev

파생 클래스는 기본 클래스에서 정확히 무엇을 상속합니까?

분류에서Dev

매트릭스를 기반으로 색상을 채우는 그림을 만드는 방법은 무엇입니까?

분류에서Dev

때때로 기본 유형을 기본 클래스로 컴파일하는 이유는 무엇입니까?

분류에서Dev

Swift에서 컬러 매트릭스로 적용하기 위해 5x5 매트릭스를 구성하는 방법은 무엇입니까?

분류에서Dev

그램 매트릭스를 기반으로 파이썬에서 거리 매트릭스에서 점의 좌표를 찾는 방법을 구현하는 방법은 무엇입니까?

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

NTFS 드라이브 / 파티션에서 '기본값'마운트 옵션은 무엇을 의미합니까?

분류에서Dev

네트워크 인터페이스가 기본이된다는 것은 무엇을 의미합니까?

분류에서Dev

OpenVZ 기반 VPS에 대한 액세스에서 기본적으로 무엇을 기대해야합니까?

분류에서Dev

인스턴스 속성을 기본 매개 변수로 사용할 수없는 이유는 무엇입니까?

분류에서Dev

데이터베이스에 "기본"SQL 연결을 사용한다는 것은 무엇을 의미합니까?

분류에서Dev

부트 스트랩 다중 선택을 기본값으로 숨기는 방법은 무엇입니까?

분류에서Dev

소프트웨어가 기본적으로 실행된다는 것은 무엇을 의미합니까?

분류에서Dev

데이터 매트릭스의 다른 열을 기반으로 새 열 생성

분류에서Dev

iptables 기본 규칙 번호는 대괄호로 무엇을 의미합니까?

분류에서Dev

인터페이스에서 "기본값"은 무엇을 의미합니까?

분류에서Dev

Fedora Workstation 29는 기본 I / O 스케줄러로 무엇을 사용합니까?

분류에서Dev

목록 목록을 고정 크기 매트릭스로 변환하려면 어떻게해야합니까?

분류에서Dev

ClamAV- "clamd @ scan"서비스는 기본적으로 무엇을합니까?

분류에서Dev

탭 홀드 또는 클릭 홀드는 기본적으로 무엇을해야합니까?

분류에서Dev

값 범위를 기반으로 SSRS 매트릭스에서 글꼴 색상을 설정하는 방법은 무엇입니까?

분류에서Dev

로드 된 파일을 기반으로 매트릭스 항목 수정

Related 관련 기사

  1. 1

    "기본"제네릭 제약은 무엇을합니까?

  2. 2

    NTFS 드라이브 / 파티션에서 '기본값'마운트 옵션은 무엇을 의미합니까?

  3. 3

    매트 아이콘으로 기본 SVG 색상을 유지하는 방법은 무엇입니까?

  4. 4

    매트릭스 위치를 기반으로 전체 점수를 계산하는 방법은 무엇입니까?

  5. 5

    Firefox Javascript "기본 유형으로 변환 할 수 없음"오류는 무엇을 의미합니까?

  6. 6

    파생 클래스는 기본 클래스에서 정확히 무엇을 상속합니까?

  7. 7

    매트릭스를 기반으로 색상을 채우는 그림을 만드는 방법은 무엇입니까?

  8. 8

    때때로 기본 유형을 기본 클래스로 컴파일하는 이유는 무엇입니까?

  9. 9

    Swift에서 컬러 매트릭스로 적용하기 위해 5x5 매트릭스를 구성하는 방법은 무엇입니까?

  10. 10

    그램 매트릭스를 기반으로 파이썬에서 거리 매트릭스에서 점의 좌표를 찾는 방법을 구현하는 방법은 무엇입니까?

  11. 11

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  12. 12

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  13. 13

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  14. 14

    NTFS 드라이브 / 파티션에서 '기본값'마운트 옵션은 무엇을 의미합니까?

  15. 15

    네트워크 인터페이스가 기본이된다는 것은 무엇을 의미합니까?

  16. 16

    OpenVZ 기반 VPS에 대한 액세스에서 기본적으로 무엇을 기대해야합니까?

  17. 17

    인스턴스 속성을 기본 매개 변수로 사용할 수없는 이유는 무엇입니까?

  18. 18

    데이터베이스에 "기본"SQL 연결을 사용한다는 것은 무엇을 의미합니까?

  19. 19

    부트 스트랩 다중 선택을 기본값으로 숨기는 방법은 무엇입니까?

  20. 20

    소프트웨어가 기본적으로 실행된다는 것은 무엇을 의미합니까?

  21. 21

    데이터 매트릭스의 다른 열을 기반으로 새 열 생성

  22. 22

    iptables 기본 규칙 번호는 대괄호로 무엇을 의미합니까?

  23. 23

    인터페이스에서 "기본값"은 무엇을 의미합니까?

  24. 24

    Fedora Workstation 29는 기본 I / O 스케줄러로 무엇을 사용합니까?

  25. 25

    목록 목록을 고정 크기 매트릭스로 변환하려면 어떻게해야합니까?

  26. 26

    ClamAV- "clamd @ scan"서비스는 기본적으로 무엇을합니까?

  27. 27

    탭 홀드 또는 클릭 홀드는 기본적으로 무엇을해야합니까?

  28. 28

    값 범위를 기반으로 SSRS 매트릭스에서 글꼴 색상을 설정하는 방법은 무엇입니까?

  29. 29

    로드 된 파일을 기반으로 매트릭스 항목 수정

뜨겁다태그

보관