뺄셈 연산

dst( x, y ) = saturate(src1( x, y ) − src2( x, y ))

뺄셈 연산은 두 이미지의 같은 위치에 존재하는 픽셀 값을 뺀 결과를 픽셀 값으로 설정하는 연산을 말한다. 뺄셈 결과가 픽셀의 표현범위 보다 작으면 특정 픽셀 값으로 설정한다. 예를 들면 픽셀이 0~255으로 표현되는데 두 픽셀의 값을 뺀 결과가 0보다 작은 경우 0으로 설정한다. 이를 포화 연산(saturate)라고 한다.

예제코드를 살펴보자.

val src1:Mat = ...
val src2:Mat = ...
val dst = Mat()
Core.subtract(src1, src2, dst)

두 이미지 src1, src2 뺀 결과를 dst에 담는다. 여기서 src1,src2는 이미지의 크기가 같은 것으로 가정한다.

src1(레나)에서 src2(그라데이션이 적용된 원형 이미지)를 빼는 연산을 했다.
src2는 외각이 흰색(255)이고 이미지의 중심으로 갈수록 검정색(0)인 이미지다. src1에서 src2를 뺀 결과 자연스럽게 그라데이션이 적용된 원형 속 사람을 볼 수 있다.

subtract함수에는 src2 대신 스칼라 값을 매개변수로 하여 src1 전체 픽셀에 해당 스칼라값을 뺄 수도 있고, 마스크를 매개변수로 전달하여 마스킹 된 부분만 연산을 진행할 수도 있다.

카테고리: OpenCV

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.