2.2 딥러닝 기반 왜곡 보정
수신부의 카메라와 결상판 사이의 거리는 항상 일정하기 때문에 재현성 있고 정밀한 결과를 획득하기 위하여 초기에 보정을 실시하여야 한다. Vision
system의 왜곡은 크게 광학적 왜곡과 기학학적 왜곡으로 구분할 수 있다.
광학적 왜곡은 렌즈의 비이상적인 굴절 특성으로 인해, 실제 세계의 점이 이미지 평면에 비선형으로 매핑되는 현상으로, 이상적인 핀홀 카메라 모델에서는
모든 직선이 직선으로 투영되어야 하지만, 실제 렌즈는 다양한 비선형 왜곡을 유발할 수 있다. 대표적으로 방사형 왜곡(radial distortion)과
접속 왜곡(tangential distortion)이 존재한다. 방사형 왜곡은 렌즈 중심에서의 거리가 멀어질수록 왜곡이 커지는 현상으로 이미지의 가장자리에서
직선이 휘어지는 특징을 보인다. 접속왜곡은 렌즈의 광축이 이미지 센서와 완전히 수직하지 않을 때 발생하는 것으로 점이 경사 방향으로 비선형 이동하는
특징을 보인다(Fig. 3 참조).
기하학적 왜곡은 이미지 투영 또는 센서 구조, 이미지 처리 과정에서 발생하는 시스템 전반의 비선형적 왜곡이다. 이는 렌즈의 광학적 특성 외에도, 투영
모델의 한계, 센서 불완전성, 기하학적 구성이 잘못된 경우 등에서 기인한다(Fig. 4 참조).
Fig. 3 Radial distortion and tangential distortion(source: https://www.geeksforgeeks.org/machine-learning/calibratecamera-opencv-in-python)
Fig. 4 Illustration of geometric distortion
Vision system의 왜곡보정을 위하여 수신기 내부에 카메라를 고정 설치하고 laser target에는 기지 거리의 체스 보정판을 설치하고 촬영한다.
Fig. 5에서 보는 바와 같이 광학적 왜곡과 기하학적 왜곡이 복합적으로 작용되고 있다.
보정판의 좌표를 검출한 후, 상대적으로 왜곡의 영향이 작은 중앙 위치의 좌표점과 실제 보정판의 거리를 근거로 환산계수를 산정한다. 이 환산계수를 사용하면
픽셀로 촬영된 이미지 좌표들 사이의 픽셀거리를 실제 거리로 환산할 수 있다. 이렇게 계산된 환산계수를 보정판의 검출 좌표에 반영하여 실제 거리로 환산
후, 보정판의 실제 좌표와 비교하여 시각화하면 Fig. 6과 같다. X-좌표의 최대, 최소차는 0.0과 –4.943 mm이며, Y-좌표의 최대, 최소차는 3.895과 1.034 mm로 상당히 큰 오차가 발생됨을
알 수 있다.
Fig. 5 Image of the calibration plate
Fig. 6 Error distribution without distortion correction
따라서 본 연구에서는 vision system의 왜곡 보정을 위하여 렌즈 왜곡 보정, 투영 보정, 스케일 자동 보정과 딥러닝 기반 cross-correlation
좌표보정을 실시하였다. 왜곡보정을 위한 절차는 다음과 같다.
체스판 패턴은 컴퓨터가 쉽게 인식할 수 있어서 카메라 보정용으로 자주 사용된다. 본 보정에 사용된 체스보드에는 (43, 23)개의 사각형 모서리(코너)가
있으며, 각각의 간격은 5 mm이다. 이 정보는 실제 세계에서의 정확한 거리를 알려준다.
정밀한 평균 좌표 보정 위하여 30장의 이미지를 촬영하여 사용하였다. OpenCV의 calibrateCamera( ) 함수를 사용하여, mtx(카메라
렌즈 특성)와 dist(왜곡 정보)을 계산한다. 여러 장의 사진에서 같은 점이 약간씩 다르게 잡힐 수 있으므로, 여러 이미지에서의 평균 좌표를 계산해
좀 더 안정적인 기준점을 만든다. UndistortPoints( ) 함수로 휘어진 좌표를 원래대로 펴준다. 이 때 상기에서 계산한 mtx와 dist를
활용하여 렌즈의 휘어짐을 제거하고 영상의 왜곡을 보정한다.
원근 투영은 3D 세계의 평면 상의 물체가 카메라에 비스듬하게 보일 때, 직사각형이 사다리꼴로 보이는 왜곡현상을 설명하는 모델이다. 예들 들어 체스보드를
비스듬히 찍으면 네 모서리가 직사각형이 아닌 사다리꼴 형태로 나타난다. 이를 바로잡기 위해 이미지 상의 점들을 실제 평면 좌표로 맵핑해야 하는데,
이 때 사용하는 것이 호모그래피이다. 4개의 점 쌍을 기반으로 3x3 투시 변환 행렬(H)을 계산하고, cv2.getPers pectiveTransform
사용하여, 기하학적 보정과 스케일 보정을 실시하였다.
마지막으로 딥러닝 기반 cross-correlation 좌표 보정을 새롭게 제안하였다. 광원수신부에 복수개의 교차점을 가지도록 격자가 형성된 보정판을
설치하고 카메라로 촬영하여 보정영상을 취득한 후, 보정영상에서 2개의 보정영상 교차점을 추출한다. 보정영상 교차점의 픽셀좌표를 취득하고 보정영상 교차점
각각에 대응되는 보정판 교차점 간의 실거리를 파악하되, 상기 보정영상 교차점의 픽셀좌표 취득 작업 및 상기 보정판 교차점 간의 실거리 파악 작업을
보정영상의 모든 보정영상 교차점에 대해 수행한다. 예를 들어 5개의 좌표가 있다면, 1-1, 1-2, 1-3, 1-4, 1-5 그리고 2-2, 2-3,
2-4, 2-5, 3-3, 3-4, 3-5, 4-4, 4-5와 같이 모든 쌍에 대하여 관계를 분석하며, 본 연구에서는 cross-correlation(의미상,
pairwise distance relationship analysis 또는 inter-point relationship analysis)이라고 정의하였다.
모든 보정영상 교차점의 쌍에 대한 픽셀좌표 및 보정영상 교차점 쌍에 대응되는 보정판 교차점 쌍 사이의 실거리를 취득하고, 취득된 모든 보정영상 교차점의
쌍에 대한 픽셀좌표와, 보정영상 교차점 쌍에 대응되는 보정판 교차점 쌍 사이의 실거리를 입력 데이터로 이용하여, 인공지능 모델을 학습한다. 인공지능
학습시 교차점의 쌍에 대한 픽셀좌표는 특성 데이터로, 교차점 쌍 사이의 실거리는 타겟 데이터로 사용된다.
촬영영상 속 2개의 점에 대한 픽셀좌표를 입력하면, 촬영영상 속 2개 점에 대응되는 원판 상의 2개 점 사이의 실거리를 출력하도록 학습된 인공지능
실거리 예측모델을 구축하였다.
결상영상에서 레이저 빔의 도트가 이동하기 전의 위치에 해당하는 레이저 빔 시작점의 픽셀좌표와, 레이저 빔의 도트가 이동한 후의 위치에 해당하는 레이저
빔 이동점의 픽셀좌표를 파악한다. 레이저 빔 시작점과 레이저 빔 이동점의 픽셀좌표를 인공지능 실거리 예측모델에 입력하여 레이저 빔 시작점과 레이저
빔 이동점 사이의 결상 플레이트 상의 실거리를 산출하도록 한다.
본 연구에서는 30장의 보정판 이미지를 사용하였으며, 5×5 mm 간격으로 격자를 형성(체스보드에는 (43, 23)개의 사각형 모서리)하여, 한장의
이미지에서는 총 989개의 좌표가 도출된다. 이를 cross-correlation하면, 한장의 이미지에는 총 989×989 = 978,121개의 좌표쌍과
실거리 데이터가 생성된다. 또한 30장의 이미지를 사용하므로, 총 데이터 set의 개수는 978,121×30 = 29,343,630개가 된다. 이
중 29개의 이미지 데이터인 978,121×30 = 28,365,509개는 학습 데이터로 사용하였으며, 1개의 이미지 데이터인 978,121개는 테스트
데이터로 사용하였다.
(x1, y1, x2, y2) 형태의 두 지점 간 픽셀 좌표를 입력받아 실제 거리 변화량 (dx, dy)를 예측하는 ANN 모델을 설계하였다. 각
층에는 ReLU 활성화 함수를 사용하였으며, 모델은 MSE Loss를 손실 함수로 사용하고 Adam 옵티마이저로 학습하였다. 최대 1,000 에포크
동안 학습하며, early stopping 기법을 적용하여 과적합 방지 및 최적 성능 확보를 도모하였다. 검증 손실이 개선되지 않는 경우 10번의
연속 에포크 이후 학습을 종료하도록 하였으며, 학습률은 0.001을 사용하였다.
학습된 PyTorch 모델은 추후 실시간 추론 및 경량화를 위해 ONNX(Open Neural Network Exchange) 포맷으로 변환하여 사용하였다.
예측 성능은 R²(결정 계수)로 평가하였으며, 테스트 데이터 평가결과 0.9999997615임을 확인할 수 있었다.
Fig. 7 Test Accuracy of ANN correction model
Fig. 8 Error distribution with distortion correction
본 연구에서 제안된 딥러닝 기반 cross-correlation 좌표 보정을 실시한 결과, X-좌표의 최대, 최소차는 0.0484과 0.08545
mm, Y-좌표의 최대, 최소차는 0.06256과 0.05961 mm로 개선됨을 확인할 수 있었다.
2.3 Vision DAQ 및 post processing
Vision DAQ는 픽셀 기반 영상 처리 및 저장 GUI 프로그램으로, 고해상도 카메라로부터 실시간 영상을 수신하고, 영상 내 밝은 도트를 검출하여
이를 실시간으로 화면에 시각화하며, 사용자가 지정한 경우 감지된 좌표를 CSV 파일로 저장하는 기능을 제공한다.
⋅ OpenCV를 사용하여 고해상도 카메라 영상(2560x1440, 30 fps)을 수신
⋅ 실시간 fps 계산 및 표시
⋅ 이미지 전처리: 축소, 그레이스케일, CLAHE 대비 향상, 가우시안 블러
⋅ 밝기 임계값 기반 이진화 및 컨투어 분석
⋅ 타원 피팅 및 모멘트 기반 중심 추정으로 도트 좌표 추출
⋅사용자 조절 슬라이더로 임계값 조정
본 시스템은 영상 기반으로 밝은 도트를 실시간 검출하고 저장할 수 있는 GUI 기반 소프트웨어로, 교량 구조물 등에서 변위 검출 및 위치 추적과 같은
영상 계측 응용에 유용하게 사용될 수 있다. 고해상도, 고속 프레임 처리와 사용자 중심의 인터페이스를 통해 신뢰도 높은 도트 데이터 획득이 가능하다.
Vision post processing은 교량 처짐 측정 시스템에서 수집된 픽셀 단위 시계열 좌표 데이터에 대해 이동평균 필터링, 왜곡 보정, 투시
보정 및 ONNX 기반 딥러닝 보정을 수행하는 GUI 기반 후처리 프로그램이다. 본 시스템은 센서로부터 수집된 수십 개의 점 좌표 데이터를 일괄 처리하여
실측 기준의 mm 단위 변위를 추정하고 이를 시각화 및 저장하는 기능을 제공한다.