Computer Vision
영상의 산술 및 논리 연산 - 2. 영상의 논리 연산
ksb0511
2020. 2. 26. 02:34
OpenCV에서 지원하는 연산은 논리곱, 논리합, 배타적 논리합, 부정으로 총 네가지 연산을 지원
입력비트 | 논리연산결과 | ||||
a | b | AND | OR | XOR | NOT a |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
영상의 논리 연산은 각 픽셀 값에 대해 비트 단위로 이뤄짐.
- 우선 십진수를 이진수로 표시한다.
- 두 이진수를 비트단위로 논리곱, 논리합, 배타적 논리합, 부정 연산을 수행하여 계산한다.
// 비트 단위 논리 연산을 수행하는 함수 네가지
void bitwise_and(InputArray src1, InputArray src2,
OutputArray dst, InputArray mask = noArray());
void bitwise_or(InputArray src1, InputArray src2,
OutputArray dst, InputArray mask = noArray());
void bitwise_xor(InputArray src1, InputArray src2,
OutputArray dst, InputArray mask = noArray());
void bitwise_not(InputArray src1, OutputArray dst, InputArray mask = noArray());
- 모두 마스크 인자를 가지고 있어서 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 논리 연산을 수행하도록 설정 가능.
- If 마스크 인자를 따로 정하지 않거나 noArray() 혹은 Mat()을 마스크 인자로 설정하면 영상 전체에 대해 논리 연산을 수행.
- 비트 단위 논리 연산 또한 OpenCV에서 연산자 재정의를 지원함.
- &, |, ^, ~