DOI QR코드

DOI QR Code

Correction of Perspective Distortion Image Using Depth Information

깊이 정보를 이용한 원근 왜곡 영상의 보정

  • Kwon, Soon-Kak (Dept. of Computer Software Engineering, Dongeui University) ;
  • Lee, Dong-Seok (Dept. of Computer Software Engineering, Dongeui University)
  • Received : 2014.12.05
  • Accepted : 2015.02.23
  • Published : 2015.02.28

Abstract

In this paper, we propose a method for correction of perspective distortion on a taken image. An image taken by a camera is caused perspective distortion depending on the direction of the camera when objects are projected onto the image. The proposed method in this paper is to obtain the normal vector of the plane through the depth information using a depth camera and calculate the direction of the camera based on this normal vector. Then the method corrects the perspective distortion to the view taken from the front side by performing a rotation transformation on the image according to the direction of the camera. Through the proposed method, it is possible to increase the processing speed than the conventional method such as correction of perspective distortion based on color information.

Keywords

1. 서 론

현재 영상처리를 통해 미리 저장된 기준 영상과 비교하여 패턴을 인식하는 기술이 보편적으로 사용되고 있다. 예를 들어 인쇄회로기판(PCB: Printed Circuit Board) 제조라인에서 광학 카메라를 통한 검사시스템을 통하여 정상 보드의 영상과 비교하여 PCB의 불량 유무를 판정할 수 있다[1,2]. 또한 지능형 교통 시스템의 중요한 핵심 기술인 차량 번호판의 자동 인식에 대하여 번호판 영역을 검출하여 번호 패턴을 인식하는 방법도 활발하게 연구되어지고 있다. 이 밖에도 다양한 분야에서 패턴 매칭 기술이 이용되어 지고 있으며 사물인터넷(IOT: Internet of Things)기술의 비약적인 발전으로 인하여 사물인터넷 기술 분야 중 한 가지인 인식기술에서의 패턴 매칭 기술에 대한 요구는 점차 늘어날 것이라 기대된다.

이렇게 패턴 인식을 위해 카메라로 영상을 촬영할 때, 영상이 카메라의 위치에 따라 원근에 의해 기하학적으로 왜곡된 영상이 촬영되어 패턴의 검출 및 인식을 어렵게 하는 요인이 된다. 이러한 왜곡을 보정하기 위해 여러 방법이 제안되었다.

Weng [3]는 왜곡 계수를 구하기 위해 보정 물체를 사용하였고, Zhang [4]는 3차원 정보를 사용하지 않고 다른 방향의 패턴 영상을 사용하는 방법을 제안하였다. 또한 영상 내에서의 모서리 등의 특징점을 추출하여 원근 왜곡을 제거하는 방법[5]도 제안되었다. 이러한 방법들을 사용하여 문서 처리 영역에서는 페이지 레이아웃이나 텍스트 조직 등을 추출하여 원근 보정을 하는 방법[6]이 제안되었고, 광학 카메라를 통한 검사시스템에서는 특징점을 추출하여 호모그래피 변환을 이용하는 방법[7]이 제안되었다.

이와 같이 지금까지의 연구들은 색상 영상 기반의 처리 방법으로, 보정 물체 또는 패턴을 이용한 방법과 영상 내에서의 특징점을 추출하여 원근 왜곡을 제거하는 방법이 있었다. 하지만 이러한 영상 기반의 처리 방법은 영상 내의 잡음에 영향을 많이 받는다는 단점이 있다. 또한 보정 물체 및 패턴 영상을 이용하는 방법은 왜곡 계수를 특정 영상을 통해 얻어내는 작업을 한 후에는 촬영 카메라와 보정 대상 객체의 위치가 고정되어야 하므로 제한된 분야에서만 적용이 가능하다는 단점이 존재한다. 그리고 영상 내의 특징점을 이용한 기존 연구에서는 특정 분야에서만 적용이 가능하다는 단점도 존재하였다. 만약 깊이 카메라를 이용하여 영상의 깊이 정보를 같이 얻어 처리를 한다면 이러한 단점들을 극복할 수 있다.

본 논문에서는 깊이카메라를 통해 하나의 평면 영역을 촬영한 영상에 대해 기존의 색상카메라를 통해 획득한 색상 정보를 대체하여 깊이 정보를 통해 원근 왜곡을 보정하는 알고리즘을 제안한다. 먼저 깊이 카메라에서 평면에 대한 영상을 촬영하여 그 평면의 깊이 정보를 얻고, 이를 이용하여 각 화소의 카메라 좌표계에서의 위치를 계산한다. 그 후 각 화소의 주변정보를 이용하여 그 화소의 국소적 법선 벡터를 계산한다. 이를 이용하여 전체 평면의 법선 벡터를 얻고, 영상의 회전축과 사이 각을 계산하여 회전 변환을 적용시킴으로써 카메라의 위치에 따른 영상의 왜곡을 보정한다.

 

2. 카메라 촬영 영상의 원근 왜곡

카메라는 3차원 공간상에 놓여있는 물체의 한 점 좌표를 2차원 평면상의 한 점 좌표로 투영시키는 일종의 좌표 변환장치이다. 일반적으로 카메라와 공간 물체의 좌표관계를 규명하기 위해서는 기하학적 관점에서 카메라를 해석하는 것이 필요하다. 기하학적 해석에 있어 유용한 모델이 핀 홀 카메라 모델(pinhole camera model)이다[8]. 공간상에 놓여있는 물체 위의 어떤 점 좌표가 영상 면에 투영될 때 바늘구멍(pinhole)를 통해 영상 면(image plane)에 맺힌다고 가정한다. 실제로는 영상이 맺힌 면은 바늘구멍면의 뒤에 위치하지만 이 면을 바늘구멍 면과 물체 사이에 존재하는 임의의 가상 면으로 이동시킨다고 가정한다면 물체의 상은 뒤집혀 지지 않고 원래 상과 같은 방향으로 보인다. Fig. 1는 핀 홀 카메라 모델의 개념도를 나타낸 것이다.

Fig. 1.Pinhole camera model. (a) Geometry of a pinhole camera, (b) Geometry of a pinhole camera seen from the X axis.

공간상의 한 점 X는 영상 면 위의 한 점 x로 사영된다. Fig. 1의 (a)는 좌측 그림을 측면에서 본 그림이다. 이 때 식 (1)의 비례식을 얻을 수 있다[8].

즉 공간 점 X의 3차원 (X,Y,Z)T 좌표는 2차원의 영상 면상의 로 투영된다. 여기서 카메라 중심과 영상 면 사이의 거리를 초점거리 f 라 하면, 공간좌표 X가 2차원 평면좌표 x로 투영되는 것은 식 (2)와 같이 표현할 수 있다[8].

식 (2)에서 (X,Y,Z,1)T와 (fX,fY,Z)T 벡터는 각각 3차원 공간좌표 X와 영상 면상의 2차원 좌표 x를 동차좌표(homogeneous coordinate)로 표시한 것이다.

동차좌표란 이 좌표 내의 마지막 항으로 행렬 내의 다른 모든 항들을 나누어주면 원래 좌표가 나오는 것으로 의 동차좌표 표현은 (fX,fY,Z)T가 된다.

 

3. 제안하는 원근 왜곡의 보정 방법

3.1 제안한 알고리듬의 개요

논문에서는 평면 영역을 깊이 카메라로 촬영한 영상에서 깊이 정보를 이용하여 원근 왜곡을 보정하는 방법을 제안한다. Fig. 2는 제안하는 보정 알고리듬의 전체적인 흐름도를 나타낸다.

Fig. 2.Correction method of perspective distortion using depth information algorithm.

먼저 평면영역을 깊이카메라로 촬영하게 되면 깊이 정보를 통하여 각 화소의 카메라 좌표계 내에서의 좌표 위치를 얻을 수 있다. 그리고 각각의 화소에서 주변의 화소의 위치 정보를 통하여 국소적 법선 벡터를 계산한 후 이를 토대로 평면의 법선 벡터를 계산한다. 평면의 법선벡터를 통해 회전변환에서 사용할 회전축과 회전 각도를 계산하며, 각각의 화소에 대해 회전 변환을 거친 후의 매핑 된 위치를 얻게 되어 원근 왜곡을 보정할 수 있다.

본 논문에서 제안하는 알고리듬은 기존에 연구되었던 왜곡 계수를 미리 얻어서 처리하는 알고리듬[3,4]이나, 영상내의 특정한 점이나 선을 검출하여 처리하는 알고리듬[5]과 달리 깊이 정보를 통하여 얻은 평면의 정보를 이용하여 원근 왜곡을 보정하는 알고리듬을 이용한다. 따라서 기존 원근 왜곡 보정 알고리듬에서 공통적으로 존재하는 패턴 분석 단계가 생략되었기 때문에 연산 횟수가 줄어들어든다. 또한 기존 연구에서 특정 분야를 대상으로 적용하는 알고리듬[6,7]과 달리 이 알고리듬은 평면 대상의 원근 왜곡을 보정하는 모든 분야에 적용할 수 있기 때문에 범용성이 크다.

3.2 깊이 정보를 이용한 카메라 좌표계로의 전환

깊이 카메라를 통해 평면을 촬영함으로써 영상에서의 화소의 위치 P(x,y)와 그 화소에서의 깊이 값, 즉 카메라를 중심으로 하는 xy평면으로부터의 거리 D(x,y)를 얻을 수 있다. 이 때 P(x,y)는 영상의 왼쪽상단 모서리를 원점으로 하는 영상 좌표계에서의 위치 정보이다. 따라서 영상처리를 통해 영상을 보정하기 위해서는 화소에서의 깊이 정보 D(x,y)와 깊이 카메라의 인자를 이용하여 카메라의 초점을 원점으로 하고 카메라의 정면 광학축 방향을 Z축으로 하는 카메라 좌표계로 변환하는 작업이 필요하다. 이 때 깊이 정보 D(x,y)는 카메라 좌표계 내에서 z축의 거리 zc가 된다. 영상 좌표계 내에서의 위치 P(x,y)를 영상 중앙이 원점이 되는 좌표계 상의 위치정보 Pv (xv, yv) 로 변환한다. Fig. 3에서는 촬영된 영상 (a)에서 원점을 중앙으로 하는 좌표계 (b)로 영상의 좌표를 변환하는 것을 나타낸다.

Fig. 3.Position information in each coordinate system. (a) Image coordinate system, (b) Image coordinate system with origin on center point, and (c) Camera coordinate system.

깊이 카메라의 내부 정보인 시야각과 해상도를 사용한다면 카메라에서 영상이 투영되는 뷰포트까지의 거리 f를 식 (3)이나 식 (4)을 통해 알아낼 수 있다 [9]. 이 때 식 (3)은 카메라의 수직 시야각 fovv와 카메라의 수직 해상도 h를 통해 f를 구하고, 식 (4)는 카메라의 수평 시야각 fovh과 카메라의 수직 해상도 w를 통해 구하는 식이다[9]. 두 식을 통해 계산된 결과는 동일하다.

이렇게 구해진 f를 적용하여 Fig. 4와 같이 핀 홀카메라 모델에 적용하여 유도되는 식 (5)을 통해 카메라 좌표계에서의 위치 Pc(x, y) = (xc, yc, zc)로 변환한다. 이를 통해 Fig. 3의 (c)에서 나타내는 카메라 좌표계에서의 위치정보를 구할 수 있다.

Fig. 4.Converting to camera coordinate system by depth information.

3.3 평면의 법선 벡터를 통한 원근 왜곡 보정

평면 영상을 이루고 있는 각각의 화소에서 한 화소의 주변 화소를 통해 그 화소에 속한 평면에 대해 국소적인 법선 벡터를 구할 수 있다[10]. Fig. 5에서와 같이 P(x,y)에서의 주변 화소간의 공간적인 관계는 카메라 좌표계를 통해 나타낼 수 있다.

Fig. 5.Obtaining local normal vector using surrounding pixels.

영상 좌표계에서의 위치 P(x,y)에서의 카메라 좌표계에서의 위치를 Pc(x,y)라고 한다면 화소의 상하에 위치한 점들의 카메라 좌표계에서의 위치정보 Pc(x,y+1), Pc(x,y-1)와 좌우에 위치한 점들의 카메라 좌표계에서의 위치정보 Pc(x+1,y), Pc(x-1,y)를 토대로 식 (6)와 같이 두개의 벡터를 생성한다.

이 후 두 벡터의 외적으로 생성된 벡터는 그 두 벡터와 수직이라는 것을 이용하여 식 (7)를 통해 두 벡터의 외적을 구하여 화소 P(x,y) 에서의 국소적인 법선 벡터 Nxy 를 구한다.

이렇게 구해진 각 화소의 국소적 법선 벡터를 더하게 되면 평면 영역에서의 법선 벡터 N을 구할 수 있다. 깊이카메라로 촬영한 영상을 회전 변환을 통해 평면영역의 법선 벡터 N를 z축에 평행하게 하면 평면 영상은 xy평면에 평행한 영상으로 보정되어 원근 왜곡을 제거할 수 있다. 이 때 회전 변환을 거친 후의 평면 법선 벡터의 단위 벡터는 N'(0,0,1)가 된다.

이 때 법선 벡터가 N인 평면으로부터 법선 벡터가 N'인 평면으로 회전변환을 하는 회전변환 행렬 R은 회전축이 되는 단위벡터 u와 회전각 θ를 구하여 식 (8)을 통해 구할 수 있다[11].

이 때 회전 변환의 축이 되는 단위 벡터 u는 두 법선 벡터의 외적을 통해 두 법선 벡터가 이루는 평면과 수직이 되는 정규 벡터를 식 (9)를 통해 구할 수 있고, 회전각 θ는 두 법선 벡터가 이루는 사이각을 식 (10)을 통해 구한 것을 사용한다.

Fig. 6.Correction by rotation transformation. (a) Image before correction, (b) Image after correction by matching the normal vector in the xy plane through equilibrium rotation, and (c) Rotation transformation using normal vector of plane.

이 변환 행렬을 통해 각 화소의 카메라 좌표계에서의 위치 Pc(i,j)를 식 (11)를 통해 회전 변환을 하면 변환 후의 위치 P'c(i,j) = (x'c,y'c,z'c)를 구할 수 있다.

이 때 P'는 카메라 좌표계 상의 좌표이므로 이를 영상처리에 이용하기 위해서는 다시 영상 좌표계로 변환하여야 한다. 식 (12)을 통해 원점이 화면 중심에 존재하는 영상 좌표계에서의 위치 P'v(x'v,y'v)로 변환한 다음 원점을 다시 원래대로 설정하여 보정 변환 시 화소 P(x,y)에 사상되는 화소 P'(x',y')를 구할 수 있다.

 

4. 모의 실험 결과

4.1 실험 환경

본 논문에서 제안된 알고리즘을 검증하기 위해 깊이 카메라는 ASUS사의 Xtion Pro을 사용하였다. 본 깊이 카메라의 해상도는 색상 영상 해상도와 깊이 영상 해상도가 각각 320 × 240이며, 시야각은 수직 45도, 수평 58도이다. 또한 실험을 위해 Fig. 7의 패턴을 촬영하여 이진화시킨 영상을 이용하였다.

Fig. 7.Pattern image for simulation.

또한 제안된 원근 왜곡 보정의 정도를 측정하기 위해, 보정된 영상에서 각각의 격자에 대해 두 변의 사이각을 측정하였다. 격자를 이루는 수직 직선과 수평 직선에 대해 사이각이 직각에 가까울수록 원근 왜곡의 보정이 잘 되었다고 판단할 수 있다. 이는 n번째 격자를 이루는 수직 직선을 이루는 벡터 vn과 수평 직선을 이루는 벡터 hn의 내적을 통해 식 (13)과 같이 각 격자 내 직선 간의 사이각의 평균을 측정 할 수 있으며, 이 수치가 0에 가까울수록 원근 왜곡의 정도가 약하다고 판단할 수 있다.

4.2 실험 결과

Fig. 8과 Fig. 9는 카메라의 위치를 평면의 정면이 아닌 위치에서 촬영한 영상이다. (a)는 원근 왜곡이 일어난 영상이고 (b)는 본 알고리듬을 적용하여 보정한 후의 영상이다.

Fig. 8.Image taken on the left side of the plane. (a) Image before correction, (b) Image after proposed correction

Fig. 9.Image taken on the top side of the plane. (a) Image before correction, (b) Image after proposed correction.

Table 1은 각각의 영상에 대해 각 격자들이 이루는 사각형들의 꼭짓점들을 검출하여 식 (13)을 적용한 결과이다.

Table 1.Performance for proposed algorithm

각각의 카메라의 위치에 대해 총 3회에 걸쳐 수치를 측정하였다. 본 알고리듬을 적용한 결과 Fig. 8영상에 대해서는 격자가 이루는 변들의 평균 사이각이 76.92°에서 85.45°로 직각에 가까워짐을 확인할 수 있었으며 Fig. 9영상에 대해서도 69.67°에서 87.08°로 직각에 가까워졌음을 확인할 수 있었다. 이를 통해본 실험 결과에서 제안한 방법이 원근 왜곡이 일어난 평면 영역에 대해 효과적으로 보정을 수행할 수 있음을 알 수 있다.

 

5. 결 론

본 논문에서는 깊이카메라를 통해 평면을 촬영하였을 때의 카메라의 위치에 따른 왜곡의 보정을 다루었다. 깊이 카메라를 통하여 얻은 평면의 깊이 맵을 카메라 시선을 z축으로 하는 월드좌표계로 변환하여 평면의 법선 벡터를 구하였다. 이렇게 구한 법선 벡터를 통해 카메라의 위치 정보를 구하여 회전 변환을 통해 정면에서 카메라가 위치하였을 때의 영상으로 보정하였다. 깊이 카메라만을 가지고 실시간으로 보정을 수행할 수 있기 때문에 패턴 검사를 수행함에 있어 좀 더 효율적으로 적용할 수 있을 것으로 기대 한다.

References

  1. H.J. Cho and T.H. Park, “Wavelet Transform Based Image Template Matching for Automatic Component Inspection,” Journal of Institute of Control Robotics and Systems, Vol. 15, No. 2, pp. 225-230, 2009. https://doi.org/10.5302/J.ICROS.2009.15.2.225
  2. K.C. Koh, K.W. Ko, J.H. Kim, H.J. Choi, and J.S. Kim, “An Automatic Inspection of SMT Rectangular Chips based on PCA Algorithm,” Journal of the Korean Society of Precision Engineering, Vol. 20, No. 11, pp. 23-31, 2003.
  3. J. Weng, P. Cohen, and M. Herniou, “Camera Calibration with Distortion Models and Accuracy Evaluation,” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 14, No. 10, pp. 965-980, 1992. https://doi.org/10.1109/34.159901
  4. Z. Zhang, “A Fiexible New Technique for Camera Calibration,” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 22, No. 11, pp. 1330-1334, 2000. https://doi.org/10.1109/34.888718
  5. M. Ahmed and A. Farag, “Nonmetric Calibration of Camera Lens Distortion: Differential Methods and Robust Estimation,” IEEE Transactions on Image Processing, Vol. 14, No. 8, pp. 1215-1230, 2005. https://doi.org/10.1109/TIP.2005.846025
  6. L. Jagannathan and C.V. Jawahar, “Perspective Correction Methods for Camera Based Document Analysis,” Proceeding of First International Workshop on Camerabased Document Analysis and Recognition, pp. 148-154, 2005.
  7. J.J. Lee, K.H. Lee, C.D. Chung, K.H. Park, Y.B. Park, and B.G. LEE, “Pattern Elimination Method Based on Perspective Transform for Defect Detection of TFT-LCD,” Journal of Korea Multimedia Society, Vol. 15, No. 6, pp. 784-793, 2012. https://doi.org/10.9717/kmms.2012.15.6.784
  8. R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, Cambridge, UK, 2008.
  9. E. McCollough, Industry: A Monthly Magazine Devoted to Science, Engineering and Mechanic Arts, Industrial Publishing Company, San Francisco, 1893.
  10. H.W. Yoo, W.H. Kim, J.W. Park, W.H. Lee, and M.J. Chung, “Local Normal Vector-based Fast Plane Detection using a Depth Camera,” The 8th Korea Robotics Society Annual Conference, pp. 15-18, 2013.
  11. C.J. Taylor and D.J. Kriegman, Minimization on the Lie Group SO(3) and Related Manifolds, Yale University Technical Report, No. 9405, 1994.

Cited by

  1. Touch Pen Using Depth Information vol.18, pp.11, 2015, https://doi.org/10.9717/kmms.2015.18.11.1313
  2. Tracking Method for Moving Object Using Depth Picture vol.19, pp.4, 2016, https://doi.org/10.9717/kmms.2016.19.4.774
  3. Depth Video Coding Method for Spherical Object vol.21, pp.6, 2016, https://doi.org/10.9723/jksiis.2016.21.6.023
  4. Implementation of Nose and Face Detections in Depth Image vol.4, pp.1, 2015, https://doi.org/10.9717/jmis.2017.4.1.43
  5. 원근 왜곡 보정의 실시간 구현 방법 vol.20, pp.4, 2015, https://doi.org/10.9717/kmms.2017.20.4.606
  6. 깊이영상을 이용한 사람의 키 추정 방법 vol.22, pp.2, 2015, https://doi.org/10.9723/jksiis.2017.22.2.053
  7. 깊이 화면의 평면 부호화를 위한 가변 블록 크기 결정 방법 vol.22, pp.3, 2015, https://doi.org/10.9723/jksiis.2017.22.3.039
  8. 하방 촬영된 깊이 영상을 이용한 신장 추정 vol.20, pp.7, 2015, https://doi.org/10.9717/kmms.2017.20.7.1014
  9. 깊이 영상 부호화에서 신축 움직임 추정 방법 vol.20, pp.11, 2015, https://doi.org/10.9717/kmms.2017.20.11.1711