일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 | 31 |
Tags
- Deep learning
- probability
- 김양재
- Machine Learning
- WebGL
- openCV
- c++
- 인공지능
- MongoDB
- 확률
- 우리들교회
- R
- No SQL
- 데이터 과학
- 빅 데이터
- 김양재 목사님
- 몽고디비
- data science
- 주일설교
- 김양재 목사
- Artificial Intelligence
- node.js
- 통계
- Statistics
- 빅 데이타
- 딥러닝
- 빅데이타
- Big Data
- 빅데이터
- nodeJS
Archives
- Today
- Total
Scientific Computing & Data Science
[OpenCV] Color Map 본문
이번 글에서는 OpenCV의 applyColorMap 함수를 이용하여 Color Map을 적용하는 법에 대하여 알아보겠습니다.
Color Map이란?
가령 미국 지도 상에 여러 지역의 온도를 표현한다고 해보자. 회색조 이미지로 지도 상에 온도 데이터를 입힐 수 있습니다. 즉, 차가운 온도는 어두운 색으로 더운 온도는 밝은 색으로 표현하는 것입니다. 이렇게 표현하는 것은 매우 지루할 뿐만아니라 표현에 있어 다음 두 가지 큰 약점을 가지고 있습니다:
첫째, 인간의 시각 인식 체계는 회색조 강도에 대한 변화를 인식하기에 최적화 되어 있지 않습니다. 우리는 컬러 변화를 더 잘 인식합니다.
둘째, 우리는 다양한 컬러에 다른 의미를 연관시킵니다. 파란색을 시원한 온도로, 빨간색을 따뜻한 색으로 표현하는 것이 더 의미가 있습니다.
온도 데이터는 하나의 예이지만, 데이터를 시각화하는데 있어 단일 데이터 값이라도 다양한 컬러로 변환하는 것이 의미있는 수많은 경우들이 존재합니다. 다음은 OpenCV가 기본으로 제공하는 컬러맵의 예들입니다.
Value | Name | Scale |
0 | COLORMAP_AUTUMN | |
1 | COLORMAP_BONE | |
2 | COLORMAP_JET | |
3 | COLORMAP_WINTER | |
4 | COLORMAP_RAINBOW | |
5 | COLORMAP_OCEAN | |
6 | COLORMAP_SUMMER | |
7 | COLORMAP_SPRING | |
8 | COLORMAP_COOL | |
9 | COLORMAP_HSV | |
10 | COLORMAP_PINK | |
11 | COLORMAP_HOT |
applyColorMap 함수 Prototype
void applyColorMap(InputArray src, OutputArray dst, int colormap);
Example Code
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include "opencv2/opencv.hpp" #include <iostream> using namespace std; using namespace cv; /*///////////////////////////////////// @ function: colormap_name return: name of the colormap *////////////////////////////////////// string colormap_name( int id ) { switch( id ){ case COLORMAP_AUTUMN : return "COLORMAP_AUTUMN"; case COLORMAP_BONE : return "COLORMAP_BONE"; case COLORMAP_JET : return "COLORMAP_JET"; case COLORMAP_WINTER : return "COLORMAP_WINTER"; case COLORMAP_RAINBOW : return "COLORMAP_RAINBOW"; case COLORMAP_OCEAN : return "COLORMAP_OCEAN"; case COLORMAP_SUMMER: return "COLORMAP_SUMMER"; case COLORMAP_SPRING : return "COLORMAP_SPRING"; case COLORMAP_COOL : return "COLORMAP_COOL"; case COLORMAP_HSV : return "COLORMAP_HSV"; case COLORMAP_PINK : return "COLORMAP_PINK"; case COLORMAP_HOT : return "COLORMAP_HOT"; } return "NONE"; } /*///////////////////////////////////// @ function: main *////////////////////////////////////// int main() { /// Read 8-bit grayscale image cv::Mat im = cv::imread( {YOUR_IMAGE_PATH}, IMREAD_GRAYSCALE ); cv::Mat im_out = cv::Mat::zeros( 600, 800, CV_8UC3 ); for( int i = 0 ; i < 4 ; i++ ) { for( int j = 0 ; j < 3; j++ ) { int k = i + j * 4; cv::Mat im_color = im_out( Rect( i * 200, j * 200, 200, 200 ) ); cv::applyColorMap( im, im_color, k ); cv::putText( im_color, colormap_name( k ), Point( 30, 180 ), CV_FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all( 255 ), 1, CV_AA ); } } cv::imshow( "Pseudo Colored", im_out ); cv::waitKey(0); } | cs |
Results
Original Image
Result Images
'Programming > OpenCV' 카테고리의 다른 글
[OpenCV] Histogram (0) | 2015.10.03 |
---|---|
[OpenCV] Custom Color Map (0) | 2015.09.28 |
[OpenCV] Face Detection & Put Mask on Face (0) | 2015.09.26 |
[OpenCV] 이미지 윈도우 상에서 마우스 이벤트 감지하기 (0) | 2015.09.23 |
[OpenCV] Bitwise Operation (0) | 2015.09.20 |
Comments