해당 포스트는 "OpenCV로 배우는 영상 처리 및 응용", "C++ API OpenCV 프로그래밍" 책의 내용을 요약한 것이다.



※ 포인트 프로세싱

포인트 프로세싱은 입력영상의 각 화소 (x,y) 주위의 이웃 화소를 고려하지 않고 입력 화소의 값을 변환 함수 T에 의해 변환시켜 출력 영상의 화소값을 얻는 영상 처리 방법이다.


※ 반전 영상

입력 영상의 밝기값 최대값 255에서 입력 영상 화소 밝기값의 뺄셈으로 변환 영상의 화소값을 계산한다. 8비트 영상에서 최대값은 255이므로 255-(입력 영상 화소 밝기값) 으로 계산한다.


※ 임계값 영상

입력 영상의 밝기값이 주어진 임계값보다 크면 max_value, 그렇지 않으면 0으로 출력 영상의 밝기값을 설정한다.


- double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)

: type에 따라 임계값 영상을 계산한다. type에 따른 계산 방법은 다음과 같다.




- double adaptiveThreshold(InputArray src, OutputArray dst, double maxValue,int adaptiveMethod, int thresholdType, int blockSize, double C)

: 하나의 임계값이 영상 전체 화소에 동일하게 적용하는 것이 아니라, 각각의 화소마다 이웃을 고려하여 개별적으로 임계값을 계산하여 적용한다. adaptiveMethod가 ADAPTIVE_THRESH_MEAN_C 이면 blockSize*blockSize 크기의 위웃에서 평균을 계산한 다음 C를 뺄셈한 값이 임계값 T(x,y)가 된다. ADAPTIVE_THRESH_GAUSSIAN_C이면 blockSize*blockSize 크기의 이웃에서 가우시안 가중치 평균을 계산한 다음 C를 뺄셈한 값이 임계값 T(x,y)가 된다. 다음은 thresholdType에 따른 임계값 계산 방법이다.




※ 선형 변환, 로그 변환, 거듭제곱
- Mat::convertTo(OutputArray m, int rtype, doubel alpha=1, double beta=0) 
: 행렬을 m으로 복사하되 m은 rtype 자료형을 가지게 된다. alpha 값은 m의 행렬 요소에 곱해지고 beta 값은 더해진다. 따라서 출력 영상은 alpha*입력 영상 + beta로 선형 변환을 하게 된다.

- void log(InputArray src, OutputArray dst)
: src의 각 화소 값에 로그 계산을 해 dst에 저장한다.

- void pow(InputArray src, double power, OutputArray dst)
: src의 각 화소 값에 power 지수를 해 dst에 저장한다. 


+ Recent posts