본문 바로가기
영상처리 프로그래밍/Visual C++ 영상 처리 프로그래밍

영상의 산술 연산

by Glory_Choi 2022. 7. 18.
반응형
  • 영상의 산술 연산

산술 연산이란?

쉽게 말해 초등학교 때 배우는 덧셈, 뺄셈, 곱셈 나눗셈과 같은 기본적인 산수 계산을 의미한다.

이러한 연산 방법은 영상에서도 유사하게 적용될 수 있다. 그 결과로 새로운 형태의 영상을 만들어내거나 영상의 화질을 향상시킬 수 있다.

 

 

1. 덧셈 연산

 

덧셈 연산 : 두 영상의 같은 위치에 존재하는 픽셀의 그레이스케일 값을 더하여 새로운 영상을 만드는 연산이다.

위 수식에서 fg는 두 개의 입력 영상을 의미하고, h는 덧셈 연산에 의해 새로 생성된 결과 영상이다. 덧셈 연산은 영상을 2차원 행렬로 간주하면 쉽게 이해할 수 있는 연산이다. 영상 내에 존재하는 모든 픽셀들을 순회하면서, 각 픽셀에 대하여 덧셈 연산을 수행한다.

 

  • 두 개의 영상을 더하는 산술 연산의 예

두 영상의 덧셈 연산

덧셈 연산에 의해 생성된 영상은 두 입력 영상의 모습을 조금씩 포함하고 있음을 볼 수 있다. 덧셈 연산이 두 영상의 픽셀 값을 더하는 연산이므로, 결과 영상은 두 입력 영상에 비하여 전반적으로 밝아지는 특성이 있다. 만약 두 개의 픽셀 값을 더한 결과가 255보다 크면 그레이스케일 최대값인 255로 설정한다.

 

  • 덧셈 연상을 이용하여 관심 영역을 분할하는 예

검은색 동그라미 영상은 0과 255로 이루어진 완전한 흑백 영상이다. 가운데 검정색 동그라미 안쪽의 그레이스케일 값은 0이고, 원 바깥의 하얀 부분은 255값을 갖는다. lenna 영상과 hole영상을 더할 경우, 가운데 동그라미 부분이 lenna 영상의 그레이스케일 값이 되고 동그라미 바깥부분은 255이상의 값이 되는데 이때 255를 넘는값은 위에서 말한것 처럼 255로 설정 되므로 하얗게 변하기 때문에 lenna 영상의 얼굴 부분만 남는것이다.

 

if 문을 사용하여 입력으로 들어오는 두 영상 img1과 img2의 가로와 세로 크기를 비교한다. 만약 두 입력 영상의 크기가

같지 않으면 덧셈 연산을 하지 않고 false를 반환하며 함수를 종료한다. 즉, 두 입력 영상의 크기가 동일할 때에만 동작한다.

 

 

2. 뺄셈 연산

 

뺄셈 연산 : 두 영상의 같은 위치에 존재하는 픽셀에 대해 뺄셈 연산을 수행하여 새로운 영상을 만드는 산술 연산이다.

뺄셈 연산은 뺄셈의 대상이 되는 영상의 순서가 결과에 영향을 미친다. 덧셈 연산은 입력 영상의 순서가 바뀌어도 결과가 동일하지만, 뺄셈 연산은 전혀 다른 결과를 만들어낸다.

 

3. 평균 연산

 

평균 연산 : 동일한 위치에 있는 두 픽셀의 그레이스케일 값의 산술 평균을 이용하여 새로운 영상을 만드는 연산이다. 

평균 연산은 두 입력 영상을 합성하는 효과를 보여주기도 한다. 덧셈 연산의 경우 두 영상의 그레이스케일을 단순히 더하기 때문에 결과 영상이 전체적으로 밝아지는 현상이 나타나지만, 평균 연산은 두 영상이 적절하게 합쳐져서 원본 영상의 밝기 정도를 그대로 유지한다.

평균 연산은 영상의 잡음을 제거하는 용도로 사용되기도 한다. 예를 들어 정지되어 있는 카메라로부터 여러 장의 사진을 찍은 후, 이를 평균 연산을 이용하여 새로운 영상을 만들어내면 영상 내의 잡음이 효과적으로 제거되어 매끈한 사진을 얻을 수 있다.

 

IppAve 함수에서는 for 루프 안에서 limit 함수를 사용하지 않았는데, 이는 두 그레이스케일 값의 평균은 255보다 커지거나 0보다 작아지는 경우가 발생하지 않기 때문이다. 

 

 

4. 차이연산

 

차이 연산 : 두 입력 연산에 대하여 뺄셈 연산을 수행 후, 그 결괏값의 절댓값을 이용하여 결과 영상을 생성하는 연산이다.

뺄셈 연산의 경우 입력 영상의 순서가 결과에 영향을 주지만, 차이 연산은 순서에 상관없이 두 영상의 차이점을 그대로 나타낼 수 있는 장점이 있다. 그렇기 때문에 차이 연산은 두 영상의 변화된 부분을 찾는 용도로 적합하다.

 

반응형

'영상처리 프로그래밍 > Visual C++ 영상 처리 프로그래밍' 카테고리의 다른 글

화질 향상 기법  (0) 2022.07.14
[MFC] CClientDC  (0) 2022.07.04
BMP 파일(비트맵 파일)의 이해  (0) 2022.07.01
영상 처리 개요  (0) 2022.06.24