2021. 9. 12. 21:30 자기개발/OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝
6장 영상의 산술 및 논리 연산
6장 영상의 산술 및 논리 연산
6.1 영상의 산술 연산
영상은 일종의 2차원 행렬이기 때문에 행렬의 산술 연산(arithmetic operation)을 그대로 적용할 수 있습니다. 즉, 두 개의 영상을 서로 더하거나 빼는 연산을 수행함으로써 새로운 결과 영상을 생성할 수 있습니다.
OpenCV에서 두 영상의 가중치 합을 구하려면 addWeighted() 함수를 사용합니다. addWeighted() 함수 원형은 다음과 같습니다.
add() 함수를 사용하여 두 개의 영상을 더하는 코드는 다음과 같이 작성할 수 있습니다.
Mat src1 = imread(“aero2.bmp”, IMREAD_GRAYSCALE);
Mat src2 = imread(“camera.bmp”, IMREAD_GRAYSCALE);
Mat dst;
add(src1, src2, dst);
만약 덧셈 연산의 두 입력 영상 타입이 같다면 add() 함수 대신 + 연산자 재정의를 사용할 수 있습니다. 다음은 + 연산자 재정의를 이용하여 두 영상을 더하는 예제 코드입니다.
Mat src1 = imread(“aero2.bmp”, IMREAD_GRAYSCALE);
Mat src2 = imread(“camera.bmp”, IMREAD_GRAYSCALE);
Mat dst = src1 + src2;
두 영상을 더할 때 각 영상에 가중치를 부여하여 덧셈 연산을 할 수도 있습니다. 두 개의 행렬에 각각 가중치를 부여하여 덧셈하는 연산을 수식으로 표현하면 다음과 같습니다.
Mat src1 = imread(“aero2.bmp”, IMREAD_GRAYSCALE);
Mat src2 = imread(“camera.bmp”, IMREAD_GRAYSCALE);
Mat dst;
addWeighted(src1, 0.5, src2, 0.5, 0, dst);
OpenCV에서는 subtract() 함수를 통해 두 영상의 뺄셈 연산을 수행할 수 있습니다. subtract() 함수의 인자 구성과 설명은 add() 함수와 동일합니다.
OpenCV에서는 absdiff() 함수를 이용하여 차영상을 구할 수 있습니다.
차이 연산을 이용하면 두 개의 영상에서 변화가 있는 영역을 쉽게 찾을 수 있습니다. 그림 6-4는 차이 연산을 이용하여 움직임이 있는 영역을 추출하는 예입니다.
영상도 일종의 행렬이므로 두 입력 영상을 행렬로 생각하여 행렬의 곱셈을 수행할 수도 있습니다. 그러나 영상을 이용하여 행렬의 곱셈을 수행하는 경우는 거의 없습니다. 다만 두 영상에서 같은 위치에 있는 픽셀 값끼리 서로 곱하거나 나누는 연산을 수행할 수 있으며, 이를 위해 OpenCV에서는 multiply() 함수와 divide() 함수를 제공합니다.
6.2 영상의 논리 연산
영상의 논리 연산(logical operation)은 픽셀 값을 이진수로 표현하여 각 비트(bit) 단위 논리 연산을 수행하는 것을 의미합니다. OpenCV에서는 다양한 논리 연산 중에서 논리곱(AND), 논리합(OR), 배타적 논리합(XOR), 부정(NOT) 연산을 지원합니다.
OpenCV에서는 영상의 비트 단위 논리 연산을 수행하는 bitwise_and(), bitwise_or(), bitwise_xor(), bitwise_not() 함수를 제공합니다. 각 함수의 이름에서 쉽게 알 수 있듯이, bitwise_and() 함수는 비트 단위 논리곱, bitwise_or() 함수는 비트 단위 논리합, bitwise_xor() 함수는 비트 단위 배타적 논리합, bitwise_not() 함수는 비트 단위 부정 연산을 수행합니다. 각 함수의 인자 구성은 다음과 같습니다.
'자기개발 > OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝' 카테고리의 다른 글
7장 필터링 (0) | 2021.09.23 |
---|---|
5장 영상의 밝기와 명암비 조절 (0) | 2021.09.12 |
4장 OpenCV 주요 기능 (0) | 2021.09.06 |
3장 OpenCV 주요 클래스 (0) | 2021.09.05 |
1장 컴퓨터 비전과 영상의 이해, 2장 OpenCV 설치와 기초 사용법 (0) | 2021.08.27 |