저는 최근에 OpenCV가 새롭기 때문에 카메라 보정에 어려움을 겪고 있습니다. 연구를 며칠 후에 나는 그것의 기본적인 이해를했습니다. 그러나 나는 여전히 몇 가지 기본적인 점을 이해하지 못하고있다.카메라 보정 OpenCV
1) objectpoint 매트릭스의 초기화, 왜 우리는 보드 예를 들어 3D 세계에 어디 0,0
Mat a = new MatOfPoint3f();
for(int y=0; y<SIZE_Y; ++y)
{
for(int x=0; x<SIZE_X; ++x)
{
points = new MatOfPoint3f(new Point3(x*distance_Board , y*distance_Board , 0));
a.push_back(points);
}
}
에서이 행렬은 그것을 초기화 더 많은 이해가되지 않을까요 초기화 않는다
Mat a = new MatOfPoint3f();
for(int y=1; y<=SIZE_Y; ++y)
{
for(int x=1; x<=SIZE_X; ++x)
{
points = new MatOfPoint3f(new Point3(x*distance_Board + FirstPoint.x, y*distance_Board + FirstPoint.y, 0));
a.push_back(points);
}
}
2) 나는
를 사용하여 내 카메라를 교정하려나는 15 개 이상의 이미지를 시도했지만 결과는 여전히 매우 열악하다. 왜냐하면 나는 이미지를위한 rvec와 tvec의 중요성을 이해하지 못하기 때문에 (나는 논리를 이해한다. 번역은 다르다) 그러나 다른 점/다른 심상을 가진 저희를 어떻게 도울 것이다. 나는
내가
Calib3d.projectPoints(objectPoints, rvecs.get(i), tvecs.get(i), cameraMatrix, distCoeffs, imagePoints);
을 실행할 때 정말 어떤 rvecs을 알고하지 않는 이유 그 .. 교정이 전체 장면에서 2D 점으로 3 차원 점을 변환하는 공정한 좋은 방법으로 우리를 한 것으로 생각 tvecs는 .I이 this을 시도) 3D (실제 세계에 2D (imagePoints)에서 변환하는 방법이 있나요
3)
을 선택하지만 결과 때문에 교정의 잘못된 매개 변수에 잘못된 나는 또한
x ̃ = x * (1 + k1 * r^2 + k2 * r^4) + [ 2 p1 * x * y + p2 * (r^2 + 2 * x^2) ]
y ̃ = y * (1 + k1 * r^2 + k2 * r^4 ] + [ 2 p2 * x * y + p2 * (r^2 + 2 * y^2) ],
A) 그러나 r은 무엇을 따를 때 2D에서 3D로 변환 할 시도
4)? r = sqrt (x^2 + y^2)? 그리고 x = (x 좌표 픽셀) - (카메라 중심은 픽셀 단위)?
b) 카메라 중심은 카메라 매트릭스의 픽셀 = cx = 매개 변수입니까?
c) x 좌표 픽셀 = u = 이미지 포인트입니까? 누군가가 나에게 카메라 보정 또는 지점의 좋은 설명을 줄 수 있다면
이 많은 정보가 온라인하지만 난 선택의 여지가 실행 한 100 % 신뢰할 수있는 원본
을 발견하지 않은, 정말 뵙죠 것 나는 올바른 방향으로 (종이 등).
은 이미 opnecv 교정하여 문제를 해결하는 경우 나도 몰라하지만 어쨌든 당신에게 몇 가지 힌트를 줄 것이다 사전