728x90

영상처리 오픈 라이브러리인 OpenCV를 사용하려면 기본적인 구조와 이용 방법을 알아야 합니다. 이번 이야기에서는 OpenCV 활용을 위해 가장 기본 함수 중 하나인 Line’에 대해 알아 보겠습니다. 단어에서처럼 한 점에서 다른 한 점까지 선을 긋는 함수이고 OpenCV 홈페이지에도 설명이 잘 되어 있습니다. 초기에는 C/C++ 언어만 제공되었는데 현재에는 Python에서도 활용될 수 있게 기능을 제공하고 있네요.

 

 

함수에 첫 번째 “img”는 선을 그릴 영상, “pt1 / pt2”는 선에 시작 점과 끝나는 점을, “color”는 선에 색깔을 나타냅니다. “thickness”는 선의 두께, “line type” 4, 8, CV_AA 중 하나를 선택할 수 있는데 선을 표현하는 거칠기 정도로 이해하면 됩니다. C 또는 C++ 함수를 사용 시 “img” 앞에 구조체 형이 다르기 때문에 주의해서 사용해야 되고 C 함수에서는 보통 “IplImage” 구조체를 사용합니다.

 

사용 예)

cvLine( Input_Image, cvPoint(10,10), cvPoint(100,100), CV_RGB(255, 255, 255), 1, CV_AA, 0);

 

C 함수 이용 시 위 예에서 처럼 활용할 수 있습니다. 설명했듯이 “Input_Image” IplImage 구조체이며 “pt1 / pt2” cvPoint(x, y)“color” CV_RGB(red, green, blue)로 대입 할 수 있습니다. CvPointOpenCV 사용에 맞게 정의된 구조체로 볼 수 있습니다. 몇 번 실습을 해보면 쉽게 익힐 수 있고, Line 함수를 활용할 수 있으면 Circle, Rectangle, Ellipse OpenCV에서 제공되는 기본 함수들을 쉽게 이용할 수 있게 됩니다.

경험 상 함수에 사용법은 개인 블로그 등을 참조하는 것보다 그 라이브러리 설명서를 이용하여 익히는 것이 가장 정확한 방법인 듯 합니다. 기본 함수를 잘 익히면 유사한 함수들은 쉽게 익힐 수 있고 응용이 가능해 질 수 있습니다.

728x90
728x90

영상처리 시스템 또는 컴퓨터 비젼 시스템(Computer Vision System)은 영상처리기술이 적용될 수 있는 영상획득부터 정보에 출력까지 전체를 포함하는 시스템을 의미합니다. 영상처리 시스템에 이해는 우리가 만들고자 하는 영상처리기술이 어떻게 응용이 되고 실무에 적용이 되는지 알 수 있고, 상세하게는 아니겠지만 어떻게 사용할 지 유추하기 위함입니다.

 

 

산업 전반에 사용되고 있는 영상처리 시스템을 단순화 시켜 보면 크게 세 부분으로 나뉘어지는데 첫 단계는 사람에 눈에 역할을 하는 센서에서 영상을 획득하고, 두 번째 단계에선 획득된 영상을 이용하여 프로세서에 의해 목적에 따라 영상처리를 하며, 마지막 단계에서 처리된 정보를 사용 또는 보여주는 과정으로 진행됩니다. 그림에서처럼 센서는 카메라, 프로세서는 컴퓨터 그리고 정보에 사용은 모니터 정도로 생각할 수 있습니다.

 

728x90
728x90

(See below for English version.) 

영상처리라는 기술 또는 학문을 어떻게 정의할 수 있을까요? 위키피디아(WIKIPEDIA)에서는 정지영상 또는 동영상을 입력으로 하고 신호처리에 한 부분으로 수학적 연산을 이용한 영상의 처리를 의미하며 결과물로는 하나에 영상 또는 영상에 관계된 특징에 집합이 될 수 있다라고 정의하고 있습니다. 다시 설명 하면 인간에 눈으로 보여지는 부분을 영상이라고 한다면 자동차가 어느 방향으로 움직이고 있는지 아래 그림에서처럼 꽃이 몇 개인지 등에 영상에서 필요로 하는 정보라면 이를 특징이라고 정의할 수 있고 이러한 특징들을 시각적 또는 수치적으로 구현해주는 제반 기술을 영상처리라고 말할 수 있습니다.

 

 

 

영상처리 기술들은 산업, 의료, 항공, 교통, 애니메이션 등 다양한 분야에 폭넓게 응용되고 있습니다. 제조 산업에 경우 영상을 이용한 자동화 검사에 주요하게 적용되고 있으며 의료분야에서도 PET, X-Ray, CT 영상 등에 처리를 통해 의학적 검사에 도움을 주고 있습니다. 더 나아가 3차원 가상 현실을 그려내는 그래픽 분야에서도 응용되며 빅 데이터 처리에 정보 추출을 위한 Deep Learning 분야에 연계하여 특징 추출에 사용되고 있습니다.

 

서두 정의에서 같이 일반적으로 영상처리는 디지털 신호에 대한 처리를 의미하며 영상이라는 2차원 공간에 디지털 신호 처리를 말합니다. 디지털 신호는 어떻게 정의할 수 있을까요? 실세계에 신호들을 아날로그 신호로 본다면 샘플링이라는 과정을 통해 디지털 형태로 변환된 신호로 볼 수 있습니다. 아날로그 신호를 연속된 하나에 선이라면 디지털 신호는 일정 시간 간격으로 선에서 떼어낸 점들에 집합이라고 생각할 수 있습니다. 다만 영상은 평면에 점들이 모였으니 2차원 디지털 신호라고 볼 수 있습니다.

 

영상처리에 필요한 기본지식들은 좋은 참고 서적들이 나와있고 수많은 강좌 블로그들을 통해 쉽게 습득할 수 있습니다. 따라서 본 영상처리 이야기에서는 자유롭게 난이도에 관계없이 기술과 응용 주제등 필요에 따라 내용을 연재해 나 갈 예정입니다.

 

How can we explain “Image processing technology”? WIKIPEDIA(KOR) descript “Image processing is a part of signal processing and means the processing of still or successive images using mathematical operation and the result can be a set of features related to the image”. In other words, the features are the information such as the direction of moving car and a number of flowers in above fig.

 

Image processing application has various areas such as industry, medical imaging, security, transportation, satellite, etc. Further, we can apply 3D graphics and machine learning for the big data analysis. Technically, Image processing means the processing of digital signal in 2D space. Digital signal can be representing by a sequence of digit values differently from Analog signal by continuous values.

 

We can easily find basic knowledge and information of image processing technologies through books and the other web sites. This blog will focus on some topics such as the algorithm, programming and library.

 

 

728x90

+ Recent posts