카메라 보정
보정 테이블을 사용해 이미지에서 카메라 렌즈 왜곡을 제거합니다.
카메라 렌즈 보정 파라미터(초점 거리, 광학 중심, 왜곡 계수)를 사용하여 이미지에서 렌즈 왜곡을 제거해, 카메라 렌즈로 인해 생긴 방사 왜곡과 접선 왜곡을 보정하고, 정확한 측정, 기하학적 분석, 정밀 컴퓨터 비전 응용에 적합한 왜곡 없는 이미지를 생성합니다.
이 블록의 작동 방식
카메라 렌즈는 직선이 휘어져 보이게 하고 이미지 가장자리 근처의 물체가 늘어나거나 압축되어 보이게 만드는 왜곡을 유발합니다. 이 블록은 알려진 카메라 보정 파라미터를 사용해 이러한 왜곡을 보정합니다. 이 블록은:
입력 이미지와 카메라 보정 파라미터(초점 거리 fx/fy, 광학 중심 cx/cy, 방사 왜곡 계수 k1/k2/k3, 접선 왜곡 계수 p1/p2)를 받습니다
기본 내재 파라미터(초점 거리와 광학 중심)로부터 표준 OpenCV 형식의 카메라 행렬을 구성합니다: 대각선에 fx, fy가 있고, 광학 중심으로 cx, cy가 있으며, 오른쪽 아래 모서리에 1이 있는 3x3 행렬
방사 왜곡과 접선 왜곡 파라미터를 나타내는 5개 요소 배열(k1, k2, p1, p2, k3)로 왜곡 계수를 조립합니다
OpenCV의
getOptimalNewCameraMatrix를 사용해 보정 후 사용할 수 있는 이미지 영역을 최대화합니다(왜곡 보정으로 인해 생기는 검은 테두리를 제거합니다)OpenCV의
undistort함수를 적용해 방사 왜곡(직선이 휘어지게 만드는 배럴 왜곡 및 핀쿠션 왜곡)과 접선 왜곡(렌즈 정렬 불량으로 인한 기울어진 이미지)을 모두 보정합니다직선이 바로잡히고 가장자리 왜곡이 제거되며 기하학적 정확성이 복원된 보정된 왜곡 없는 이미지를 반환합니다
이 블록은 OpenCV의 카메라 보정 함수를 내부적으로 사용하며, 표준 컴퓨터 비전 카메라 보정 방법론을 따릅니다(자세한 보정 파라미터 획득 방법은 OpenCV 보정 튜토리얼 을 참조하세요). 방사 왜곡 계수(k1, k2, k3)는 광학 중심에서 이미지 포인트가 반경 방향으로 이동하는 배럴/핀쿠션 왜곡을 보정합니다. 접선 왜곡 계수(p1, p2)는 렌즈 정렬 불량으로 인한 왜곡을 보정합니다. 보정 파라미터는 사전에 카메라 보정 과정을 통해(일반적으로 체커보드 패턴을 사용) 획득하거나 카메라 제조업체가 제공해야 합니다.
요구 사항
카메라 보정 파라미터: 이 블록은 카메라 보정을 통해 얻은 사전 계산된 카메라 보정 파라미터를 필요로 합니다:
초점 거리 (fx, fy): x축과 y축을 따른 픽셀 초점 거리입니다(정사각형 픽셀이 아닌 경우 서로 다를 수 있음)
광학 중심 (cx, cy): 주점 좌표(이상적인 카메라에서 이미지 중심)
방사 왜곡 계수 (k1, k2, k3): 배럴 및 핀쿠션 왜곡을 보정합니다
접선 왜곡 계수 (p1, p2): 렌즈 정렬 불량으로 인한 왜곡을 보정합니다
이 파라미터는 일반적으로 체커보드 패턴이나 유사한 보정 타깃을 사용한 OpenCV의 카메라 보정 과정을 통해 얻습니다. 보정 방법론은 OpenCV 카메라 보정 문서 를 참조하세요.
일반적인 사용 사례
측정 및 계측 응용: 정확한 측정 워크플로를 위해 렌즈 왜곡을 보정합니다(예: 물체 크기를 측정하기 전에 왜곡 제거, 정밀 측정을 위한 기하학적 왜곡 보정, 차원 분석을 위한 이미지 왜곡 제거)하여 카메라 이미지로부터 정확한 측정을 가능하게 합니다
기하학적 분석 워크플로: 기하학적 컴퓨터 비전 작업을 위한 이미지를 준비합니다(예: 선 검출 전에 이미지 왜곡 제거, 기하학적 도형 분석을 위한 왜곡 보정, 정확한 각도 측정을 위한 이미지 준비)하여 보정된 이미지로 정밀한 기하학적 분석을 가능하게 합니다
다중 카메라 시스템: 서로 다른 렌즈 특성을 가진 여러 카메라의 이미지를 표준화합니다(예: 서로 다른 카메라 각도에서의 이미지 왜곡 제거, 광각 렌즈 왜곡 보정, 스테레오 비전을 위한 여러 카메라 이미지 표준화)하여 카메라 설정 전반에서 일관된 이미지 기하를 가능하게 합니다
정밀 모델용 전처리: 높은 기하학적 정확성이 필요한 모델을 위해 이미지를 준비합니다(예: 기하학적 모델 실행 전에 이미지 왜곡 제거, 정확한 특징 검출을 위한 왜곡 보정, 정밀한 자세 추정을 위한 이미지 준비)하여 기하학적 컴퓨터 비전 작업의 정확도를 높입니다
광각 및 어안 보정: 광각 또는 어안 렌즈로 인한 심한 왜곡을 보정합니다(예: 광각 렌즈의 배럴 왜곡 보정, 어안 왜곡 효과 제거, 광각 이미지의 휘어진 직선 교정)하여 표준 컴퓨터 비전 워크플로에서 광각 렌즈를 사용할 수 있게 합니다
비디오 안정화 준비: 비디오 안정화 पाइ프라인의 일부로 렌즈 왜곡을 보정합니다(예: 안정화 전에 비디오 프레임 왜곡 제거, 비디오 스트림의 카메라별 왜곡 보정, 모션 분석을 위한 프레임 준비)하여 더 정확한 비디오 처리를 가능하게 합니다
다른 블록에 연결하기
이 블록은 이미지를 받아 왜곡 없는 이미지를 생성합니다:
이미지 로딩 블록 다음에 처리 전에 렌즈 왜곡을 보정하여 기하학적으로 올바른 이미지로 정확한 분석을 가능하게 합니다
측정 및 분석 블록 이전에 기하학적 정확성이 필요한 블록(예: 크기 측정, 각도 측정, 거리 계산, 기하학적 도형 분석)에서 사용하여 왜곡 없는 이미지로부터 정밀한 측정을 가능하게 합니다
기하학적 컴퓨터 비전 블록 이전에 선, 도형 또는 공간 관계를 분석하는 블록(예: 선 검출, 윤곽선 분석, 기하학적 패턴 매칭, 자세 추정)에서 사용하여 보정된 이미지로 정확한 기하학적 분석을 가능하게 합니다
다중 카메라 워크플로에서 처리 전에 서로 다른 카메라의 이미지를 표준화합니다(예: 서로 다른 카메라 각도에서의 이미지 왜곡 제거, 비교 전에 카메라별 왜곡 보정, 스테레오 비전을 위한 이미지 표준화)하여 카메라 설정 전반에서 일관된 처리를 가능하게 합니다
검출 또는 분류 블록 이전에 기하학적 정확성이 중요한 정밀 응용에서 사용합니다(예: 정확한 위치 파악을 위해 왜곡 없는 이미지에서 객체 검출, 기하학적으로 올바른 이미지에서 객체 분류, 정밀한 공간 관계가 필요한 모델 실행)하여 검출 및 분류 작업의 정확도를 향상시킵니다
비디오 처리 워크플로에서 비디오 프레임의 왜곡을 보정합니다(예: 모션 분석을 위해 비디오 프레임 왜곡 제거, 비디오 스트림의 카메라 왜곡 보정, 추적 알고리즘을 위한 프레임 준비)하여 보정된 프레임으로 정확한 비디오 분석을 가능하게 합니다
유형 식별자
단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/camera-calibration@v1 워크플로우에 이 블록을 단계로 추가하려면.
속성
이름
유형
설명
참조
name
str
이 단계에 대한 고유 식별자를 입력하세요..
❌
fx
float
x축 방향의 픽셀 단위 초점 거리입니다. 카메라의 내재 파라미터의 일부입니다. 일반적으로 카메라 보정을 통해 획득됩니다(예: 체커보드 패턴을 사용한 OpenCV 보정). 카메라의 수평 초점 거리를 나타냅니다. 정사각형 픽셀의 경우 fx와 fy는 보통 같습니다. 카메라 보정 또는 제조사 사양으로부터 얻어야 합니다..
✅
fy
float
y축 방향의 픽셀 단위 초점 거리입니다. 카메라의 내재 파라미터의 일부입니다. 일반적으로 카메라 보정을 통해 획득됩니다(예: 체커보드 패턴을 사용한 OpenCV 보정). 카메라의 수직 초점 거리를 나타냅니다. 정사각형 픽셀의 경우 fx와 fy는 보통 같습니다. 카메라 보정 또는 제조사 사양으로부터 얻어야 합니다..
✅
cx
float
픽셀 단위의 광학 중심(주점) x좌표입니다. 카메라의 주점 x좌표(이상적인 카메라에서의 이미지 중심)를 나타내는 내재 파라미터의 일부입니다. 일반적으로 이미지 너비의 절반 근처입니다. 카메라 보정을 통해 얻습니다. cy와 함께 카메라의 광학 중심을 정의하는 데 사용됩니다..
✅
cy
float
픽셀 단위의 광학 중심(주점) y좌표입니다. 카메라의 주점 y좌표(이상적인 카메라에서의 이미지 중심)를 나타내는 내재 파라미터의 일부입니다. 일반적으로 이미지 높이의 절반 근처입니다. 카메라 보정을 통해 얻습니다. cx와 함께 카메라의 광학 중심을 정의하는 데 사용됩니다..
✅
k1
float
첫 번째 방사 왜곡 계수입니다. 직선이 휘어져 보이게 만드는 배럴 및 핀쿠션 왜곡을 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k1은 일반적으로 가장 지배적인 방사 왜곡 항입니다. 양수 값은 보통 배럴 왜곡을, 음수 값은 핀쿠션 왜곡을 나타냅니다. 카메라 보정을 통해 얻습니다..
✅
k2
float
두 번째 방사 왜곡 계수입니다. 더 높은 차수의 방사 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k2는 1차 k1 항을 넘어 더 복잡한 방사 왜곡 패턴을 보정하는 데 도움을 줍니다. 카메라 보정을 통해 얻습니다. 보통 k1보다 크기가 작습니다..
✅
k3
float
세 번째 방사 왜곡 계수입니다. 추가적인 고차 방사 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k3는 일반적으로 가장 작은 방사 왜곡 항이며, 특히 광각 렌즈의 매우 정밀한 왜곡 보정에 사용됩니다. 카메라 보정을 통해 얻습니다. 일반 렌즈의 경우 보통 0으로 설정됩니다..
✅
p1
float
첫 번째 접선 왜곡 계수입니다. 렌즈 정렬 불량으로 인한 접선 왜곡을 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. p1은 렌즈가 이미지 센서와 완전히 정렬되지 않았을 때 발생하는 기울어짐 왜곡을 보정합니다. 카메라 보정을 통해 얻습니다. 잘 정렬된 렌즈의 경우 p1과 p2는 보통 0에 가깝습니다..
✅
p2
float
두 번째 접선 왜곡 계수입니다. 추가적인 접선 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. p2는 p1과 함께 렌즈 정렬 불량으로 인한 왜곡을 보정합니다. 카메라 보정을 통해 얻습니다. 잘 정렬된 렌즈의 경우 p1과 p2는 보통 0에 가깝습니다..
✅
use_fisheye_model
bool
어안 왜곡 모델(Rational/Divisional)을 활성화합니다. true이면 어안 렌즈에 더 적합한 다른 수학적 모델을 사용합니다. 활성화되면 k1이 주요 파라미터가 되며, 다른 계수는 일반적으로 0입니다..
✅
이 참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.
입력 및 출력 바인딩
사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 카메라 보정 버전 v1 을 가지고 있는지.
입력 및 출력 바인딩
입력
이미지(이미지): 입력 이미지에서 렌즈 왜곡을 제거합니다. 제공된 카메라 보정 파라미터를 사용하여 이미지가 방사 왜곡과 접선 왜곡에 대해 보정됩니다. 알려진 보정 파라미터가 있는 카메라의 이미지와 함께 작동합니다. 왜곡이 제거된 출력 이미지는 직선이 곧게 펴지고 가장자리 왜곡이 제거된 보정된 기하를 갖습니다..fx(float): x축 방향의 픽셀 단위 초점 거리입니다. 카메라의 내재 파라미터의 일부입니다. 일반적으로 카메라 보정을 통해 획득됩니다(예: 체커보드 패턴을 사용한 OpenCV 보정). 카메라의 수평 초점 거리를 나타냅니다. 정사각형 픽셀의 경우 fx와 fy는 보통 같습니다. 카메라 보정 또는 제조사 사양으로부터 얻어야 합니다..fy(float): y축 방향의 픽셀 단위 초점 거리입니다. 카메라의 내재 파라미터의 일부입니다. 일반적으로 카메라 보정을 통해 획득됩니다(예: 체커보드 패턴을 사용한 OpenCV 보정). 카메라의 수직 초점 거리를 나타냅니다. 정사각형 픽셀의 경우 fx와 fy는 보통 같습니다. 카메라 보정 또는 제조사 사양으로부터 얻어야 합니다..cx(float): 픽셀 단위의 광학 중심(주점) x좌표입니다. 카메라의 주점 x좌표(이상적인 카메라에서의 이미지 중심)를 나타내는 내재 파라미터의 일부입니다. 일반적으로 이미지 너비의 절반 근처입니다. 카메라 보정을 통해 얻습니다. cy와 함께 카메라의 광학 중심을 정의하는 데 사용됩니다..cy(float): 픽셀 단위의 광학 중심(주점) y좌표입니다. 카메라의 주점 y좌표(이상적인 카메라에서의 이미지 중심)를 나타내는 내재 파라미터의 일부입니다. 일반적으로 이미지 높이의 절반 근처입니다. 카메라 보정을 통해 얻습니다. cx와 함께 카메라의 광학 중심을 정의하는 데 사용됩니다..k1(float): 첫 번째 방사 왜곡 계수입니다. 직선이 휘어져 보이게 만드는 배럴 및 핀쿠션 왜곡을 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k1은 일반적으로 가장 지배적인 방사 왜곡 항입니다. 양수 값은 보통 배럴 왜곡을, 음수 값은 핀쿠션 왜곡을 나타냅니다. 카메라 보정을 통해 얻습니다..k2(float): 두 번째 방사 왜곡 계수입니다. 더 높은 차수의 방사 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k2는 1차 k1 항을 넘어 더 복잡한 방사 왜곡 패턴을 보정하는 데 도움을 줍니다. 카메라 보정을 통해 얻습니다. 보통 k1보다 크기가 작습니다..k3(float): 세 번째 방사 왜곡 계수입니다. 추가적인 고차 방사 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. k3는 일반적으로 가장 작은 방사 왜곡 항이며, 특히 광각 렌즈의 매우 정밀한 왜곡 보정에 사용됩니다. 카메라 보정을 통해 얻습니다. 일반 렌즈의 경우 보통 0으로 설정됩니다..p1(float): 첫 번째 접선 왜곡 계수입니다. 렌즈 정렬 불량으로 인한 접선 왜곡을 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. p1은 렌즈가 이미지 센서와 완전히 정렬되지 않았을 때 발생하는 기울어짐 왜곡을 보정합니다. 카메라 보정을 통해 얻습니다. 잘 정렬된 렌즈의 경우 p1과 p2는 보통 0에 가깝습니다..p2(float): 두 번째 접선 왜곡 계수입니다. 추가적인 접선 왜곡 효과를 보정하는 데 사용되는 카메라 왜곡 파라미터의 일부입니다. p2는 p1과 함께 렌즈 정렬 불량으로 인한 왜곡을 보정합니다. 카메라 보정을 통해 얻습니다. 잘 정렬된 렌즈의 경우 p1과 p2는 보통 0에 가깝습니다..use_fisheye_model(boolean): 어안 왜곡 모델(Rational/Divisional)을 활성화합니다. true이면 어안 렌즈에 더 적합한 다른 수학적 모델을 사용합니다. 활성화되면 k1이 주요 파라미터가 되며, 다른 계수는 일반적으로 0입니다..
출력
calibrated_image(이미지): 워크플로의 이미지입니다.
마지막 업데이트
도움이 되었나요?