2020. 9. 28. 22:15ㆍOpen CV
영상에서 산술연산은 영상의 각 픽셀에 상수값을 더하거나 빼거나 곱하거나 나누는 연산으로 픽셀기반 처리 중에서 가장 기본적인 연산이다.
덧셈연산은 영상에 일정한 값을 더하는 연산으로 어두운 영상에 덧셈연산을 수행하면 밝은 영상이 얻어지고,
뺄셈연산은 영상에 일정한 값을 빼는 연산으로 밝은 영상에 뺄셈연산을 수행하면 어두운 영상이 얻어진다.
예를 들어, 원래 영상의 픽셀값이 50과 100인 경우 100을 더하면 150과 200이 되어 원래 영상보다 더욱 밝은 영상이 되고 반대로 150과 200인 픽셀값에 100을 빼면 50과 100이 되어 원래 영상보다 어두운 영상이 얻어진다.
곱셈연산은 영상에 일정한 값을 곱하는 연산으로 원영상에 상수를 곱하면 명암대비는 증가한다.
예를 들어, 원 영상의 픽셀값 10과 100인 경우 명암대비는 90(90=100-10)이고 이 영상에 픽셀값을 2배하면 결과 영상의 픽셀값은 각각 20과 200이 되고 명암대비는 180(180=200-20)된다. 명암대비가 클수록 색상 간의 구분이 명확하여 영상의 질이 좋아짐으로서 보다 선명한 영상이 된다.
나눗셈연산은 영상에 일정한 값을 나누는 연산으로 명암대비는 감소한다.
예를 들어, 원 영상의 칙셀값 20과 200인 경우 명암대비는 180(180=200-20)이고 이 영상에 픽셀값을 2로 나누면 경과 영상의 픽셀값은 각각 10과 100이 되고 명암대비는 90(90=100-10)이 된다. 다음은 Open CV에서의 산술연산에 관한 함수들이다.
참고)
1. cvAddS 함수 : 영상에 상수값을 더하기 위해 사용하는 함수이다.
void cvAddS ( CvArr* src, CvScalar value, CvArr* dist, CvArr* mask(NULL);
src : 원 영상을 나타낸다.
value : 더하고자 하는 상수값을 지정한다. 상수값은 CvScalar 자료형을 갖는 CV_RGB와 cvScalarAll() 함수를 사용하여 지정한다. CV_RGB를 사용하여 지정하는 경우 예를 들어, 흑백영상에서 임의의 픽셀에 100을 더하고자 하는 경우 상수값은 CV_RGB(100, 100, 100)처럼 지정하고 컬러영상에서 RGB 각 채널에 상수값 100, 110, 120 을 더하고자 하는 경우 상수값은 cv_RGB(100,110, 120)처럼 지정하면 된다.
dst : 목적 영상을 나타낸다.
mask : 마스크를 지정한다. 마스크를 사용하지 않은 경우 NULL로 지정한다. 예를 들어, 우너 영상 src에 60을 더하여 목적영상 dst를 얻고자 하는 경우 다음과 같다.
cvAddS(src, CV_RGB(60,60,60), dst, NULL);
2. cvSubS 함수 : 영상에 상수값을 빼기 위해 사용하는 함수이다.
void cvSubS(CvArr* src, CvScalar value, CvArr* dst, CvArr* mask(NULL));
src : 원 영상을 나타낸다.
value : 빼고자 하는 상수값을 지정한다.
dst : 목적 영상을 나타낸다.
mask : 마스크를 지정한다. 마스크를 사용하지 않는 경우 NULL로 지정한다. 예를 들어, 원 영상 src에 60을 빼서 목적영상 dst를 얻고자 하는 경우 다음과 같다.
cvSubS( src, CV_RGB(60, 60, 60), dst, NULL);
'Open CV' 카테고리의 다른 글
히스토그램 코드로 확인 (0) | 2020.09.28 |
---|---|
ROI(관심 영역) 설정과 영상 정보 출력 (0) | 2020.09.28 |
컬러 영상 출력해보기(channel, origin, width, height, widthStep, depth, imageSize, imageData) (0) | 2020.09.28 |
히스토그램 (0) | 2020.09.28 |
컬러 영상 (0) | 2020.09.28 |