IT/언어

[python/OpenCV] OpenCV를 이용한 픽셀 논리연산 - AND, OR, XOR, NOT

개발자 두더지 2021. 11. 15. 23:59
728x90

 python 이미지 처리 라이브러리인 OpenCV를 이용해 2개의 이미지를 합성하거나 겹치는 방법으로 bitwise를 사용할 수 있다. 

 이번 포스팅에서 간단히 논리연산 AND, OR, XOR, NOT에 대해 2개의 이미지를 사용해 각각 어떤 원리인지 간단하게 살펴보고자한다.

 

 

2개의 이미지를 준비


 다음의 코드로 두 가지 이미지를 읽어들였다.

import cv2
import matplotlib.pyplot as plt
%matplotlib inline

img1 = cv2.imread('images/img1.jpg')
img2 = cv2.imread('images/img2.jpg')

 각각의 이미지를 살펴보면 다음과 같다.

plt.imshow(img1)
plt.imshow(img2)

 

 

 

AND 연산 - bitwise_and()


 논리연산 AND의 계산은 다음과 같다.

A B A AND B
1 1 1
1 0 0
0 1 0
0 0 0

 준비한 2개의 이미지에 적용하면 다음과 같다.

bitwise_and = cv2.bitwise_and(img1, img2)
plt.imshow(bitwise_and)

 

 

OR 연산 - bitwise_or()


논리연산 OR의 계산은 다음과 같다.

A B A OR B
1 1 1
1 0 1
0 1 1
0 0 0

bitwise_or()를 사용한 논리곱을 이미지로 표현하면 다음과 같다.

bitwise_or = cv2.bitwise_or(img1, img2)
plt.imshow(bitwise_or)

 

 

 

XOR 연산 - bitwise_xor()


배타적 논리합 XOR의 계산은 다음과 같다.

A B A XOR B
1 1 0
1 0 1
0 1 1
0 0 0

bitwise_xor()를 사용한 논리곱 XOR을 이미지로 표현하면 다음과 같다.

 

 

NOT 연산 - bitwise_not()


논리 부정의 계산은 다음과 같다.

A NOT A
1 0
0 1

이것은 반전의 의미이다.

bitwise_not()을 사용해서 논리 부정을 계산해보자.

bitwise_not = cv2.bitwise_not(img1)
plt.imshow(bitwise_not


참고자료

https://code-graffiti.com/opencv-bitwise-boolean-operation-in-python/

 

728x90