OpenCV 특징추출을위한 전처리단계
안녕하세요 여러분
오늘은 영상에서 특징을 추출하기 위한 전처리 단계에
대해서 포스팅하고자합니다.
1. 명암도 영상 변환
· 영상의 곱셈과 나눗셈을 통해 영상의 명암을 조절함.
- (결과 영상) = { (입력 영상) - (밝기조절 상수) } * (명암조절 상수)
· 1보다 큰 명암 조절 상수를 곱했을 때 영상의 모든 픽셀의 값이 증가해 영상 전체의 밝기가 과도하게 증가하는 것을 보정하기 위해 명암조절 상수를 곱하기 전에 밝기조절 상수를 빼는 연산을 수행함.
· alpha 상수는 1.1, beta 상수는 50을 적용해 영상의 명암을 밝게 변경함.
· 해당 코드의 실행 결과는 아래 그림2와 같음.
2. 가우시안 블러링
· 가우시안 블러는 가우시안 분포를 영상처리에 적용한 것으로 정규분포·확률분포에 의해 생성된 잡음을 제거하기 위한 필터(랜덤하게 분포된 영상의 잡음을 분석하면 가우시안 분포도를 나타냄)
· 마스크연산을 통해 수행할 수 있으나, OpenCV 라이브러리에서는 GaussianBlur Method를
제공하고 있음.
<함수 원형>
GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT )
3. 영상 이진화
· 영상 이진화는 영상을 흑/백으로 구분하는 것으로 전역 고정 이진화·지역 가변 이진화 방법이 있음
· 전역 고정 이진화는 주어진 임계값(threshold)보다 밝은 픽셀은 모두 1(흰색), 그렇지 않은 픽셀들은 모두 0(검은색)으로 바꾸는 것을 지칭함
· 하나의 임계값으로는 물체와 배경을 분간하기 어려워 이진화를 수행하기 힘든 경우가 많으므로, 픽셀의 위치마다 다른 임계값을 사용하는 가변 thresholding 기법을 사용함
· OpenCV에서는 adaptiveThreshold 메소드를 제공해 지역 가변 이진화를 수행하도록 함
4. 모폴로지 열림 연산
· 모폴로지 필터링은 60년대에 영상 분석과 처리를 위해 처음 등장하였으며 미리 특정한
형태를 띠는 필터를 만들고 이 필터를 영상에 씌워 새로운 영상을 얻어내는 기법
· 모폴로지 연산은 침식/팽창 연산을 의미하며 현재 픽셀을 기준으로 필터를 적용해 필터 영역 안의 값을 확인하고, 이에 맞춰 현재 픽셀의 값을 수정하는 작업을 말함
· 팽창 연산을 수행하면 영역이 넓어지게 되며, 침식 연산을 수행하면 영역이 좁아지게 됨
· OpenCV에서는 erode 메소드와 dilate 메소드를 통해 침식과 팽창을 수행할 수 있음
· 모폴로지 열림 연산은 다른말로 제거연산이라고 부르며, 침식->팽창 2번의 모폴로지 연산을 연이어 수행하는 것을 말함. 침식을 통해 영상의 잡음을 제거하고 팽창을 통해 크기가 줄어든 영역을 다시 키우는 작업을 수행함
· 모폴로지 닫힘 연산은 다른말로 채움연산이라고 부르며, 팽창->침식 2번의 모폴로지 연산을 연이어 수행하는 것을 말함. 팽창을 통해 작은 구멍들을 채우고 침식을 통해 커진 영역을 다시 줄이는 작업을 수행함
·OpenCV에서 모폴로지 열림/닫힘 연산은 morphologyEx 메소드를 통해 사용할 수 있음
<함수 원형>
morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue() )
다음 포스팅에서는 보다 자세하게 영상에서 특징을 추출하는 작업에 대해
설명하려고 합니다. 감사합니다.