Mobile QR Code QR CODE : The Transactions P of the Korean Institute of Electrical Engineers
The Transactions P of the Korean Institute of Electrical Engineers

Korean Journal of Air-Conditioning and Refrigeration Engineering

ISO Journal TitleTrans. P of KIEE
  • Indexed by
    Korea Citation Index(KCI)

  1. (Dept. of Information Security Engineering Sangmyung University, Korea.)



Neural Network, Image Processing, Image Distortion, Camera Calibration

1. Introduction

인터넷 쇼핑이 대중화되고 결제가 간편해지면서 인터넷으로 볼 수 있는 물건의 범위가 급격히 늘어났다. 이로 인해 물건 구매가 간편하고 편리해졌지만, 물건을 직접 보고 구매하지 않는다는 점을 이용한 사기 행각도 만연해졌다. 대표적인 사례로 부동산 매물이 있는데, 직방, 다방과 같은 관련 인터넷 사이트에서 매물을 보고 선택할 수 있어서 편리한 매물 정보 습득이 가능하지만, 왜곡된 이미지로만 정보를 얻은 후 직접 매물을 보러 가면 사진과 상당히 다른 경우가 빈번히 발생한다[1]. 현재는 이를 개선하고자 부동산에 3D 기술을 접목하여 방을 3D 형태로도 볼 수 있도록 3D 뷰어 서비스를 도입하고 있지만, 아직 3D 뷰어 서비스가 도입되지 않은 사이트들도 다수 존재한다. 또한 부동산 매물뿐만 아니라 수많은 곳에서 사용자에게 왜곡된 2D 사진만을 제공하고 있기 때문이다.

카메라를 통해 3차원 객체를 촬영할 경우, 카메라 렌즈의 고유특성과 객체의 위치에 따라 다른 좌표에 영상이 투영되어서 왜곡이 생기게 된다. 이러한 카메라를 통해 촬영된 이미지 왜곡의 요인은 내부요인(초점거리, 주점, 비틀림, 방사왜곡, 접선왜곡), 외부요인(회전각도, 이동위치)에 의하여 발생한다. 왜곡요인 중 가장 많이 발생하는 방사 왜곡은 볼록렌즈의 굴절률에 의한 것으로서, 직선이 곡선으로 보이게 되고 렌즈의 중심에서 물체가 멀어질수록 왜곡의 정도가 심해진다. 이런 경우는 보통 광각 렌즈에서 많이 발생한다. 접선 왜곡은 렌즈와 영상 평면이 평행을 이루지 않아 발생하는 왜곡으로 이미지의 일부 영역이 실제보다 가깝게 보이는 왜곡 현상이 발생한다. 일반적으로 촬영 각도(Angle)의 문제로 발생한다[2]. 본 논문에서는 주요 카메라 매개변수라고 판단되는 초점거리(Focal length)와 내·외부 왜곡변수를 사용하여 영상처리와 딥러닝을 통해 사용자가 가진 사진이 왜곡된 사진인지 판별한 후 판별된 왜곡 이미지를 보정하여 사용자에게 2D 형태의 보정된 이미지를 제공하는 왜곡 판별 및 보정 방법을 제안한다.

2. Related Work

2.1 관련 연구

카메라로 사진을 촬영하면 광각 렌즈 왜곡 및 각도 왜곡이 발생하여 이미지가 왜곡되는 현상이 발생한다. 기존에 연구된 이미지 왜곡을 판별하고 보정하는 시스템은 하나의 장소를 보정하기 위해 여러 각도에서 찍은 사진 데이터 혹은 사진의 왜곡 매개변수가 필요한 시스템[3]과 특정 카메라의 왜곡을 보정하는 시스템이 존재한다[4]. 또한 직선의 성분을 가지는 건축물 등을 이용하여 왜곡을 보정하는 방법[5]도 존재한다. 데이터 하나를 판별 및 보정하기 위해 다양한 데이터가 필요하였던 선행 연구와 다르게 본 논문에서는 카메라 종류와 상관없이 단일 사진으로 왜곡을 판별하고 보정하는 방법을 제안한다.

2.2 Inception-V3

<그림 1>과 같이 Inception V3는 노드 간의 연결을 줄이고, 행렬 연산은 Dense 연산을 하는 구조이다. 기존의 Inception 모델과의 차이점은 Stem layer의 7×7 컨볼루션 연산을 3×3 연산을 세 번 하는 것으로 대체하고, 최적화 알고리즘으로 RMSProp을 사용한다는 점이다. 이전의 딥러닝 모델의 경우 layer 증가에 따라 연산량도 함께 많아져 학습에 많은 시간이 소요되었지만, Inception V3 모델은 컨볼루션 layer에서 사용하는 커널을 개선하여 연산의 복잡도를 줄이고 파라미터 수를 적게 사용함으로써 학습 속도를 향상하게 시킨다는 장점이 있다[6]. 본 논문에서는 Inception-V3 모델을 이용하여 광각 렌즈 왜곡 판별에 적용하였다.

그림 1. Inception-V3 구조

Fig. 1. Structure of Inception-V3

../../Resources/kiee/KIEEP.2022.71.3.190/fig1.png

2.3 CNN(Convolutional Neural Network)

CNN 이란 영상을 학습하기 위해 주로 사용되는 딥러닝 네트워크의 한 종류이다. 일반적인 딥러닝은 한 층의 노드가 그다음 층의 노드와 전부 연결되는 완전 연결 형태인데, 이는 과도한 파라미터를 만드는 원인이 되어 학습 속도를 느려지게 하고, 과적합의 원인이 된다. 이러한 문제를 해결하기 위해 합성곱 연산을 도입한 딥러닝인 CNN이 개발되었다[7]. <그림 2>는 CNN의 구조이다. 본 논문에서는 CNN 모델을 이용하여 각도에 따른 왜곡 여부를 판별하고, 왜곡 판별을 위해 이미지 각도 및 색상을 변화시켜 적용하였다.

그림 2. Convolutional Neural Network 구조

Fig. 2. Structure of Convolutional Neural Network

../../Resources/kiee/KIEEP.2022.71.3.190/fig2.png

3. Proposed System

3.1 System Overview

본 연구에서 제안하는 시스템 구성은 <그림 3>과 같다. 왜곡 판별을 하고자 하는 이미지가 입력되면 Inception-V3 모델을 이용하여 입력된 이미지에 광각 렌즈 왜곡이 있는지를 판별한다. 이미지에 광각 렌즈 왜곡이 있다고 판별되었을 경우 영상보정 과정을 통해 광각 렌즈에 의한 왜곡 발생하기 전의 이미지로 보정한다. 광각 렌즈 왜곡 보정이 완료되었거나, 광각 렌즈 왜곡이 발생하지 않으면 CNN(Convolutional Neural Network) 모델을 이용하여 해당 이미지에 대한 각도 왜곡 여부를 판단한다.

그림 3. 제안하는 시스템 순서도

Fig. 3. System Overview

../../Resources/kiee/KIEEP.2022.71.3.190/fig3.png

이미지의 판별 결과는 왜곡이 없는 경우, 하이 앵글(High angle)인 경우, 로우 앵글(Low angle)인 경우 세 가지로 나뉜다. 그 중 하이 앵글 혹은 로우 앵글로 나타났을 경우, 영상보정 과정을 통해 원본 이미지 좌표를 변환하여 보정한다. 하이 앵글인 경우는 위쪽 부분의 폭이 좁아지도록 변환하고, 반대로 로우 앵글일 때 아랫부분의 폭이 좁아지도록 변환한다. 이미지가 실제로 볼 수 있는 모습의 차이가 줄어지도록 보정되어 출력된다.

3.2 Wide-angle lens distortion classification and calibration

카메라를 통해 3D 공간을 2D 이미지로 변환할 때 왜곡이 발생한다. 기존의 왜곡 보정 방법들은 여러 시점에서 촬영한 이미지를 이용하여 캘리브레이션을 진행하거나[8], 카메라 매개변수를 미리 알고 있어야 이미지의 왜곡 보정이 가능하다. 그러나 본 논문에서는 딥러닝 및 영상보정 과정을 통해 입력된 이미지에 대한 광각 렌즈 왜곡(Wide-angle lens distortion)을 판별 및 보정을 하고자 한다.

3.2.1 Generate Dataset

카메라 매개변수를 모르는 경우, 왜곡된 영상을 보정하는 것은 어렵다. 따라서 여러 매개변수 중 주요 카메라 매개변수라고 판단되는 초점거리(Focal length)와 왜곡 매개변수(ξ)를 선정하였다. 이렇게 선정된 특정 카메라 매개변수가 적용된 이미지를 직접 생성하여 직접 촬영한 이미지가 아니라도 데이터셋 이미지들의 특정 카메라 매개변수를 얻어낼 수 있었다.

특정 카메라 매개변수를 알아내기 위해서는 360도 방향이 모두 담겨있는 파노라마 사진이 가장 최적이라 판단하여 인터넷에서 약 20,000개의 파노라마 이미지를 수집하였다. 이후 각각의 파노라마 이미지에서 초점거리(Focal length)와 왜곡 매개변수(ξ)를 무작위로 적용해, 360도가 모두 보이는 실제 3D 환경에서 카메라로 특정한 부분을 찍는 것처럼 하나의 파노라마 사진에서 수많은 특정 초점거리와 특정 왜곡 매개변수를 지니는 이미지가 생성된다. 이때 특정 카메라 매개변수를 적용하기 위해서 파노라마 이미지를 구형(Sphere)으로 변환한 후, 구형 이미지를 회전시켜 파노라마 이미지의 일부분에 대한 왜곡을 적용하는 방식을 사용했다[9]. 생성된 이미지는 약 60만 개 정도로, 학습, 테스트, 검증에 각각 8:1:1의 비율로 데이터셋을 나누었다.

3.2.2 Classification for Wide-angle lens distortion

광각 렌즈 왜곡 보정을 위해서는 사용자가 입력한 이미지가 광각 렌즈에 대한 왜곡 이미지인지 판별하는 작업이 필요하다. 이러한 이유로 CNN 모델을 이용하여 광각 왜곡된 이미지와 그 외의 왜곡, 그리고 비 왜곡 이미지로, 총 3가지 class를 분류한다.

3.2.3. Calibrates for Wide-angle lens distortion

분류된 광각 렌즈 왜곡 이미지 데이터셋으로 Bogdan 등[9]의 논문에서 제공된 github를 참고하여 왜곡 보정을 수행했다. 동작은 두 단계로 나뉘는데, 첫 번째로는 초점거리(Focal length)와 왜곡 매개변수(Distortion)를 각각 46개, 61개의 범주로 나누어 이를 class(Feature)로 설정하여 분류를 진행한다. 이후 직접 생성한 데이터셋을 사용해서 Inception-V3 모델로 학습을 진행하며, 저장한 가중치로 예측을 수행한다. 카메라 매개변수를 모르는 새로운 이미지를 넣으면 46, 61개의 class 중 실제와 가장 근접한 class가 매칭되어 예측값으로 출력되는 구조이다. 두 번째로, 이 예측된 카메라 매개 변숫값을 가지고 보정을 진행한다. 보정은 매트랩(Matlab)으로 구성된 코드를 파이썬 코드로 변환하여 아래의 수식 (1)을 중심으로 보정하였다. 왜곡 이미지를 입력하면 수식 (1)과 추정된 고유 매개변수를 사용하여 단위 구(Sphere)에 다시 투영된다. 이후 이 구형 이미지는 수식 (2) 를 이용하여 양선형 보간법 적용 및 2D 좌표를 매핑함으로써 원하는 고유 매개변수로 영상 평면에 투영된다. 왜곡 매개변수(ξ)가 0으로 설정되면 다른 초점거리의 값을 사용하여 다양한 확대/축소 효과를 얻을 수 있다. 이렇게 보정된 결과는 <그림 4>와 같다.

(1)
$P_{s}=(\omega x,\: \omega y,\: \omega -\xi)w h\omega =\dfrac{\xi +\sqrt{1+(1-\xi^{2})(x^{2}+y^{2})}}{x^{2}+y^{2}+1}$
(2)
$ P=q(\beta A+\alpha B)+p(\beta D+\alpha C)\\ =q\beta A+q\alpha B+p\beta D+p\alpha C $

그림 4. 광각 렌즈 왜곡 보정 전(왼쪽)과 후(오른쪽)

Fig. 4. Wide-angle lens distortion calibration before(left) and after(right)

../../Resources/kiee/KIEEP.2022.71.3.190/fig4.png

3.3 Camera angle distortion classification and calibration

카메라 앵글(Camera angle)은 피사체를 찍기 위해 조절하는 피사체와 카메라 사이의 각도를 말한다. 카메라 앵글의 각도가 달라지면 같은 대상을 촬영하더라도 사진 및 동영상에서 전혀 다른 느낌의 결과물이 나오게 된다. 카메라 앵글의 종류는 크게 ‘아이 레벨 앵글(Eye level angle)’, ‘하이 앵글(High angle)’, ‘로우 앵글(Low angle)’ 세 가지로 나눌 수 있다. 아이 앵글의 경우 실제 눈높이와 흡사하게 촬영한 경우를 말하며, 하이 앵글은 카메라가 피사체를 위에서 아래로 내려다보며 촬영하는 경우를 말한다. 로우 앵글은 카메라가 피사체 아래에서 위를 향해 촬영한 경우를 말한다[10]. 카메라 앵글과 아이 레벨 앵글의 차이가 벌어질수록 이미지 왜곡의 정도 또한 커지기 때문에 본 논문에서는 딥러닝을 이용하여 사용한 앵글의 종류를 판단하고, 영상보정을 통해 앵글의 차이로 인해 발생할 수 있는 이미지 왜곡을 보정하고자 한다.

3.3.1. Classification for Camera angle distortion

CNN(Convolutional Neural Network) 모델을 이용하여 각도에 따른 왜곡 여부를 판별하였으며, 왜곡 판별을 위한 딥러닝 작업을 수행시키기 위해 이미지의 각도 및 색상을 변화시켜 데이터셋의 양을 증가시켜 실험에 사용하였다. 실험 진행을 위해 사용한 학습 횟수는 100회이며, 약 1,500개의 데이터를 이용하여 훈련을 진행하였다. 카메라 앵글 왜곡 판별 딥러닝 정확도는 <그림 5>와 같다.

그림 5. 훈련 및 검증 정확도

Fig. 5. Training and Validation Accuracy

../../Resources/kiee/KIEEP.2022.71.3.190/fig5.png

3.3.2 Calibrates for Camera Angle Distortion

딥러닝을 이용한 왜곡 판별을 거친 결과가 하이 앵글 혹은 로우 앵글인 이미지는 실제 눈으로 보는 장면과 차이가 존재해서 각도 보정을 진행하여야 한다. 카메라 앵글 왜곡을 보정하기 위해서는, 멀리 있는 것은 작게 보이고, 가까이 있는 것은 크게 보이는 원근법의 원리를 적용하여야 한다. 이를 바탕으로 만들어진 것이 원근 변환 방식이며, 본 논문에서는 원근 변환 방법을 통해 보정을 한다. 이때 사용된 수식 (3)은 다음과 같이 표현된다[11].

(3)
$w\begin{bmatrix}x'\\y'\\1\end{bmatrix}=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}$

$x',\: y'$는 입력된 원본 이미지의 픽셀 좌표를 의미하며, $x,\: y$는 원근 변환을 거친 후 나온 이미지의 픽셀 좌표를 의미한다.

보정 동작은 다음과 같이 진행되게 된다. 왜곡 판별이 끝난 이미지 중 보정을 원하는 이미지는 가로, 세로 크기를 측정하여 임시 변수에 값을 저장한다. 저장된 값을 일정한 범위별로 나누어, 해당하는 범위에 따라 정해진 임시 값을 받아오게 된다. 그렇게 받아온 임시 값을 이용해 이미지의 좌푯값을 이동시켜 이미지의 폭을 변환하게 된다. 판별의 결과가 로우 앵글 이미지의 경우에는 원본 이미지의 아랫부분 폭이 좁아지도록 보정을 진행하고, 판별 결과가 하이 앵글 이미지의 경우에는 원본 이미지의 위쪽 부분의 폭이 좁아지도록 보정 한다.

위의 과정을 거치면서 소실된 외각 부분을 잘라내면 <그림 6>과 같은 결과 이미지를 얻게 된다. 그림 (a)는 하이 앵글로 촬영한 이미지를 보정한 결과이고, 그림 (b)는 로우 앵글로 촬영한 이미지를 보정한 결과이다.

4. Experiments Result

4.1 System Operation

본 연구에서 제안한 프로그램의 동작을 전체적으로 확인할 수 있게 간단히 웹과 서버를 구축하였다. Flask 프레임 워크를 사용하여 서버를 구축하였으며, HTML을 이용하여 웹을 구축하였다. 본 연구에서 학습시킨 각각의 딥러닝 모델을 .h5 파일로 저장한 후, 웹에서 시스템이 동작할 수 있도록 해당 파일이 동작하도록 설계하였다. 자세한 실험 환경은 <표 1>과 같다.

그림 6. 카메라 앵글 왜곡 보정 전(왼쪽)과 후(오른쪽)

Fig. 6. Camera Angle distortion calibration before(left) and after(right)

../../Resources/kiee/KIEEP.2022.71.3.190/fig6.png

표 4 실험 환경

Table 4 Experiment Environments

Section

Sub-Part

Specification

Hardware

CPU, GPU

Intel(R)CORE i9-12900K, 3090Ti

RAM

128GB

Software

OS

Microsoft windows 10, 64bit

Python

3.7.3

Flask

2.1.2

Keras

2.4.3

Tensorflow

2.2.0

4.2 Experimental Result

프로그램을 동작시키기 위한 웹페이지의 프로토타입은 <그림 7, 8>과 같다.

그림 7. 실험 환경 프로토타입

Fig. 7. Prototype of Experiment Environment

../../Resources/kiee/KIEEP.2022.71.3.190/fig7.png

그림 8. 실험 환경

Fig. 8. Experiment Environment

../../Resources/kiee/KIEEP.2022.71.3.190/fig8.png

<그림 9, 10>은 왜곡된 이미지를 입력하면, 제안하는 시스템 구성 순서에 기반하여 <그림 9>와 같이 광각 렌즈 왜곡 및 앵글 왜곡 판별한 후 해당하는 왜곡을 보정하는 화면이 출력된다. <그림 9>는 광각 렌즈 왜곡과 카메라 앵글 왜곡이 모두 존재하고, 광각 렌즈 왜곡 정도는 초점거리 278.51, 왜곡 매개변수 0.49로 측정되었으며 카메라 앵글 왜곡은 하이 앵글로 판별된 결과이다. <그림 10>은 광각 렌즈 왜곡과 카메라 앵글 왜곡이 모두 존재하지 않아서 광각 렌즈 왜곡 정도에서의 왜곡 매개변수가 0.04로 측정되었다. 카메라 앵글 왜곡 또한 아이 레벨의 앵글로 판별된 결과이다.

그림 9. 카메라 광각 렌즈 왜곡 및 각도 왜곡 결과

Fig. 9. The Result of Wide Lense Distortion and Camera Angle Distortion

../../Resources/kiee/KIEEP.2022.71.3.190/fig9.png

그림 10. 비 왜곡 결과

Fig. 10. The Result of Non-Distortion

../../Resources/kiee/KIEEP.2022.71.3.190/fig10.png

5. Conclusion

본 논문에서는 왜곡된 이미지를 사용할 때 발생할 수 있는 사고를 방지할 수 있도록 이미지 왜곡을 판별하고 보정하는 프로그램을 제안하였다. 제안하는 시스템은 시각적으로 판단하기 어려웠던 이미지 왜곡을 딥러닝 작업을 통해 정확하게 판단할 수 있어, 2D 이미지만으로도 왜곡이 발생하기 이전에 실제 모습을 확인할 수 있다. 또한, 어떤 방식으로 왜곡되었는지에 따라 왜곡된 이미지를 딥러닝, 영상보정을 통해 실제에 가까운 상태로 보정할 수 있다. 이를 통해 왜곡으로 인해 생긴 실제 이미지와의 차이를 줄여, 잘못된 정보 인식으로 발생할 수 있는 각종 문제를 보완할 수 있다. 정확한 왜곡 판별을 위해서는 지금보다 더 많은 데이터를 이용하여 세밀한 판별 기준이 요구된다. 또한, 본 연구에서는 보정 과정에서 이미지 가장자리의 일부 픽셀값이 소실되는 현상이 발생한다. 이러한 사항들은 향후 연구를 통해 보완할 필요가 있다.

References

1 
The Dong-A ILBO news, Wow, is that the room? - The secret of a real estate camera, 2019.11.29. (https://www.donga.com/news/Economy/article/all/20191129/98589213/1)URL
2 
Choi ChangHyun, 2018, An Automated Image Rectification Method using Convolutional Nerual Network(CNN) for Crack Image, master's thesis, Hanyang UniversityGoogle Search
3 
D. Scaramuzza, A. Martinelli, R. Siegwart, 2006, A Toolbox for Easily Calibrating Omnidirectional Cameras, 2006 IEEE/RSJ International Conference on Intelligent Robots and Systems, pp. 5695-5701DOI
4 
Hyungtae Kim, Seokmok Park, Sangpil Han, Jaehoon Jung, Miri Kim, Min-jae Kim, Joonki Paik, 2017, Geometric distortion correction and vanishing point estimation for spatial information reconstruction of ultra-wide angle image, Proceedings OF HCI Korea 2017, pp. 17-19Google Search
5 
M Friel, C Hughes, 2010.07, Automatic calibration of fish-eye cameras from automotive video sequences, Proc. of IET, Intelligent Transport SystemDOI
6 
A. Krizhevsky, I. Sutskever, G. E. Hinton, May 2017, ImageNet classification with deep convolutional neural networks, Communications of the ACM, Vol. 60, No. 6, pp. 84-90DOI
7 
J. K. Lee, S. J. Kim, N. J. Kwak, D. W. Kim, J.H. Ahn, 2020, A Deep Learning Model for Judging Presence or Absence of Lesions in the Chest X-ray Images, The Journal of the Korean Institute of Information and Communication Engineering, Vol. 24, No. 2, pp. 212-218DOI
8 
Z. Zhang, 2000, A flexible new technique for camera calibration, IEEE Trans. on Pattern Analysis and Machine Intelligence, Vol. 22, No. 11, pp. 1330-1334DOI
9 
J. Monteiro, S. Devadas, B. Lin, 1994, A Methodology for Efficient Estimation of Switching Activity in Sequential Logic Circuits, ACM/IEEE Design Automation Conf., pp. 12-17DOI
10 
Kim JongMoo, 2010, Analysis of Emotional Preference Subsequent to the Position of a Camera Angle, Design Convergence Study, Vol. 9, No. 1, pp. 13-24Google Search
11 
Keunho Park, Kwangjin Lim, Donghoon Kim, Kangin Choi, Seojeong Kim, Shunghwan Jeong, 2022.02, Method of Calculating Ground Area of Drone Image Using Perspective Transformation, Proceedings of Symposium of the Korean Institute of communications and Information Sciences, pp. 871-872Google Search

저자소개

김선화(SeonHwa Kim)
../../Resources/kiee/KIEEP.2022.71.3.190/au1.png

상명대학교 정보보안공학과 재학

관심분야: 인공지능, 영상처리, 보안시스템, 데이터처리

이메일: sundal21827@gmail.com

김유진(YuJin Kim)
../../Resources/kiee/KIEEP.2022.71.3.190/au2.png

상명대학교 정보보안공학과 재학

관심분야 : 영상처리, 보안소프트웨어

이메일: dbwls0925@naver.com

최수민(SuMin Choi)
../../Resources/kiee/KIEEP.2022.71.3.190/au3.png

상명대학교 정보보안공학과 재학

관심분야: 영상처리, 보안시스템

이메일: qsoomp@gmail.com

서창진(ChangJin Seo)
../../Resources/kiee/KIEEP.2022.71.3.190/au4.png

부산대학교 멀티미디어 공학박사

경력 : 센서기술연구소 연구원, 상명대학교 정보보안공학과 교수

관심분야 : 인공지능, 보안시스템, 악성코드, 딥러닝

이메일 : cjseo@smu.ac.kr