반응형
ㅇ OpenCV에서 제공하는 함수 중에 normalize( )가 있다.
- 이 함수는 값들을 새로운 범위로 변환해주는 역할을 한다.
- 예를 들어, 원래 값들이 1부터 10부터 사이에 있다면,
- 이들을 0부터 1사이 값들로 변환한다.
- 변환 값들은 원래 값에 비례한 크기를 갖게 된다.
ㅇ 아래 프로그램은 원래 값들이 2 ~ 7일 때, 이를 1 ~ 10사이의 값으로 변환하는 예이다.
- 1) 실수형 값 10개가 주어졌을 때 이를 Mat로 만든다.
- 2) normalize함수의 인수로 입력값을 의미
- 3) 출력값을 의미
- 4) 변환방식이 NORM_MINMAX일 때, 변환 최소값
- 5) 변환 최대값
- 6) 변환 방식을 의미한다.
|
ㅇ 함수 normalize에 의해 변환된 결과는 아래와 같다.
- 변환 전의 원래 데이터이다
- 값들이 2 ~ 7까지의 값들을 갖는다.
|
- 변환범위가 0 ~ 1일 때의 결과이다.
- 원래 값에서 최소값이었던 2가 변환 후에는 0으로,
- 최대값이었던 7이 1로 변환된 것을 볼 수 있다.
|
- 변환범위가 1 ~ 10일 때의 결과이다.
- 원래 값에서 최소값이었던 2가 변환 후에는 1으로,
- 최대값이었던 7이 10로 변환된 것을 볼 수 있다.
|
ㅇ normalize를 이용한 예제 프로그래이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { float data[10] = { 3, 4, 5, 6, 7, 3, 4, 2, 5, 3 }; Mat m(1, 10, CV_32F, data); normalize(m, m, 1.0, 10.0, NORM_MINMAX); for (int r = 0; r < m.rows; r++) { for (int c = 0; c < m.cols; c++) { printf("%.2f ", m.at<float>(r, c)); } } cout << endl; return 0; } |
- line 9-11: 1차원배열을 이용하여 Mat 값을 만든다
- line 13: normalize 수행
- line 15-19: 변환 후의 값을 출력한다
ㅇ normalize()의 간단한 용도
- Gray image의 픽셀값의 범위를 조절하여, 이미지를 전체적으로 밝게 할 수 있다.
- 아래 야경이미지는 전체적으로 어둡다.
- normalize를 이용해서 픽셀들의 값을 128 ~ 255로 바꾸면, 이미지 전체가 환해지도록 할 수 있다.
|
- 함수 normalize()를 이용하여
- 위 이미지의 픽셀값들을 128 ~ 255로 변환한 결과
|
ㅇ 위 결과 관련한 소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat gimage, nimage; Mat src = imread("img_osaka_night.jpg"); resize(src, src, Size(), 0.15, 0.15); cvtColor(src, gimage, CV_BGR2GRAY); normalize(gimage, nimage, 128, 255, NORM_MINMAX); imshow("Original", gimage); imshow("Normalized:128-255", nimage); cout << ("Press any key to exit...\n"); waitKey(); return 0; } |
- line 17: 픽셀값을 128 ~ 255로 변환하기 때문에, 전체적으로 환해진다.
반응형
'Computer Vision by OpenCV' 카테고리의 다른 글
CommandLineParser: 명령행 인수의 처리, Command line arguments (0) | 2017.04.13 |
---|---|
Histogram Equalization의 원리 (0) | 2017.04.11 |
파노라마, panorama by OpenCV 3.2 (0) | 2017.04.04 |
OpenCV Mat 이미지 형식 출력하기 (0) | 2017.01.14 |
Connected Component Analysis (1) | 2016.07.11 |