7.2.1 AND 연산
AND 연산은 논리곱이라고도 하며, 두 입력 값이 모두 참일 경우에만 참을 만족한다. C/C++에서는 거짓FALSE을 0으로 표현하고, 참TRUE은 1로 대표하여 표현한다. 논리곱을 정리하면 표 7-1과 같다.
a |
b |
a AND b |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
영상의 논리 연산은 각 픽셀 값에 대하여 비트 단위로 이루어진다. 영상의 그레이스케일 값이 BYTE 자료형에 저장되기 때문에, 8개의 비트에서 논리 연산이 이루어진다. 예를 들어 입력 영상의 특정 좌표에 있는 픽셀의 그레이스케일 값이 각각 15와 200이라면, 이 두 값에 대하여 AND 연산을 수행하면 다음과 같다.
그림 7-7은 두 영상의 AND 연산의 예를 보여준다. 이 예제에서 첫 번째 영상은 lenna.bmp 파일이고, 두 번째 영상은 gray128.bmp 파일이다. gray128.bmp 파일은 전체 픽셀의 그레이스케일 값이 128을 갖는 영상이다. 두 영상에 대하여 AND 연산을 수행한 결과가 오른쪽에 나타난 영상이다. 이는 원본 lenna.bmp 파일에서 그레이스케일 값이 128보다 큰 픽셀의 값은 모두 128로 바뀌었고, 128보다 작은 픽셀의 값은 모두 0으로 바뀐 영상이다. gray128.bmp 파일의 픽셀 값인 128을 2진수로 표현하면 10000000(2)이기 때문에 이러한 현상이 발생하는 것이다.