5. 영상의 산술 및 논리 연산

OpenJR·2022년 4월 11일
0
post-custom-banner

영상의 산술 연산

덧셈 뺄셈

dst(x,y)=saturate(src1(x,y)+src2(x,y))dst(x,y)=saturate(src1(x,y)src2(x,y))dst(x,y)=saturate(src_1(x,y)+src_2(x,y))\\ dst(x,y)=saturate(src_1(x,y)-src_2(x,y))
void add(InputArray src1, InputArray src2, OutputArray dst,
	InputArray mask = noArray(), int dtype = -1);
void subtract(InputArray src1, InputArray src2, OutputArray dst,
	InputArray mask = noArray (), int dtype = -1 );

Mat dst1, dst2;
add(src1, src2, dst1);
subtract(src1, src2, dst2);

src1: 첫 번째 입력 행렬 또는 스칼라

src2: 두 번째 입력 행렬 또는 스칼라

dst: 출력 행렬. dst의 깊이는 src1, src2의 깊이와 같거나 또는 dtype 인자에 의해 결정됨.

mask: 마스크 영상. mask 행렬 원소 값이 0이 아닌 위치에서만 연산을 수행함.

dtype: 출력 행렬의 깊이.

가중치의 합(weighted sum)

dst(x,y)=saturate(αsrc1(x,y)+βsrc2(x,y))dst(x, y) = saturate(\alpha src_1(x, y)+\beta src_2(x, y))
void addWeighted (InputArray src1, double alpha, InputArray src2, double beta,
	double gamma, OutputArray dst, int dtype = -1);

addWeighted(src1, 0.8, src2, 0.2, 0, dst2);

src1: 첫 번째 입력 행렬

alpha: src1 행렬의 가중치

src2: 두 번째 입력 행렬

beta: src2 행렬의 가중치

gamma: 가중합 결과에 추가적으로 더할 값

dst: 출력 행렬. 입력 행렬과 같은 크기, 같은 채널 수.

dtype: 출력 행렬의 깊이.

평균 연산(average)

dst(x,y)=12(src1(x,y)+src2(x,y))dst(x, y) = \frac{1}{2}(src_1(x, y)+src_2(x, y))
addWeighted(src1, 0.8, src2, 0.2, 0, dst2);

행렬의 차이 연산

dst(x,y)=src1(x,y)src2(x,y)dst(x, y) = |src1(x, y)– src2(x, y)|
void absdiff(InputArray src1, InputArray src2, OutputArray dst);

src1: 첫 번째 입력 행렬 또는 스칼라

src2: 두 번째 입력 행렬 또는 스칼라

dst: 출력 행렬(차영상). 입력 행렬과 같은 크기, 같은 채널 수.

profile
Jacob
post-custom-banner

0개의 댓글