Upload
dotram
View
220
Download
0
Embed Size (px)
Citation preview
12장 컬러 영상 처리
트루컬러 비트맵 다루기
다양한 색 모델
색상 평면 나누기와 합치기
컬러 영상 처리
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 2 -
12.1. 트루컬러비트맵다루기
트루컬러 비트맵(Truecolor bitmap) 하나의 픽셀이 R, G, B 세 개의 색상 성분의 조합으로
표현되는 비트맵
2563 = 16,777,216 가지의 색상을 표현
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 3 -
12.1. 트루컬러비트맵다루기
CDib 클래스에서 컬러 픽셀 참조 방법 RGBBYTE 클래스 사용
K
KM MRGBBYTE** ptr = m_Dib.GetRGBPtr();
ptr[0][0].r
ptr[0][0].g
ptr[0][0].b
ptr[h-1][0].r
ptr[h-1][0].g
ptr[h-1][0].b
ptr[h-1][w-1].r
ptr[h-1][w-1].g
ptr[h-1][w-1].b
ptr[0][w-1].r
ptr[0][w-1].g
ptr[0][w-1].b
ptr[0][1].r
ptr[0][1].g
ptr[0][1].b
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 4 -
12.1. 트루컬러비트맵다루기
트루컬러 영상의 반전
RGBBYTE** ptr = m_Dib.GetRGBPtr();
for( j = 0 ; j < h ; j++ )for( i = 0 ; i < w ; i++ ){
ptr[j][i].r = 255 - ptr[j][i].r;ptr[j][i].g = 255 - ptr[j][i].b;ptr[j][i].b = 255 - ptr[j][i].g;
}
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 5 -
12.1. 트루컬러비트맵다루기
트루컬러 영상을 그레이스케일 영상으로 변환
0.299 0.587 0.114Y R G B
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 6 -
12.2. 다양한색모델
색(color) 사람의 눈에 있는 원추 세포가 빛의 파장에 따라 다르게
반응하여 인지하는 것
가시 광선의 파장: 400~700nm
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 7 -
12.2. 다양한색모델
색상 표현 방법 모든 색상은 세 개의 주된 색상(primary color)의 조합
으로 표현된다. (T. Young)
1 2 3C aC bC cC 445nm 535nm 570nm445nm 535nm 570nm
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 8 -
12.2. 다양한색모델
RGB 색 모델 빨간색(Red)
녹색(Green)
파란색(Blue)
Red
(255, 0, 0)R
G
B
Green
(0, 255, 0)
Blue (0, 0, 255)
Magenta
(255, 0, 255)
Cyan
(0, 255, 255)
White
(255, 255, 255)
Black
(0, 0, 0)
Gra
ysca
le
Yellow
(255, 255, 0)
Red
(255, 0, 0)R
G
B
Green
(0, 255, 0)
Blue (0, 0, 255)
Magenta
(255, 0, 255)
Cyan
(0, 255, 255)
White
(255, 255, 255)
Black
(0, 0, 0)
Gra
ysca
le
Yellow
(255, 255, 0)
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 9 -
12.2. 다양한색모델
빛의 삼원색 (RGB)
가산 혼합 모델(Additive color model)
색의 삼원색 (CMY)
감산 혼합 모델(Subtractive color model)
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 10 -
12.2. 다양한색모델
CMY(K) 색 모델 청록색(Cyan)
자홍색(Magenta)
노란색(Yellow)
Red
(255
, 0, 0
)R
G
B
Green
(0, 2
55
, 0)
Blu
e (0, 0
, 25
5)
Mag
enta
(255
, 0, 2
55)
Cyan
(0, 2
55
, 255)
White
(255
, 25
5, 2
55)
Black
(0, 0
, 0)
Grayscale
Yello
w
(255
, 25
5, 0
)
Red
(255
, 0, 0
)R
G
B
Green
(0, 2
55
, 0)
Blu
e (0, 0
, 25
5)
Mag
enta
(255
, 0, 2
55)
Cyan
(0, 2
55
, 255)
White
(255
, 25
5, 2
55)
Black
(0, 0
, 0)
Grayscale
Yello
w
(255
, 25
5, 0
)
Cyan (255,0,0)
Magenta (0,255,0)
Yellow (0,0,255)
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 11 -
12.2. 다양한색모델
HSI 색 모델 색상(Hue)
채도(Saturation)
명도(Intensity)
Red
Black
White
0I
1I
IH
SCyan
Blue Magenta
Green Yellow
Red
Black
White
0I
1I
IH
SCyan
Blue Magenta
Green Yellow
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 12 -
12.2. 다양한색모델
RGB HSI HSI RGB
if
360 if
B GH
B G
1
2
1 ( ) ( )cos
2 ( ) ( )( )
R G R B
R G R B G B
3
1 min , ,S R G BR G B
1
3I R G B
(1 )B I S
cos1
cos(60 )
S HR I
H
3G I R B
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 13 -
12.2. 다양한색모델
YUV 색 모델 PAL, SECAM 등의 컬러 비디오 표준에 사용되는 색 모델
영상의 그레이스케일 정보와 색상 정보를 따로 분리하여부호화(encoding)
Y : 밝기 정보(luma)
U, V : 색상 정보(chroma)
Y’=0.299R’+0.587G’+0.114B’
U=B’-Y’
V=R’-Y’
'
'
'
114.0587.0701.0
886.0587.0299.0
144.0587.0299.0'
B
G
R
V
U
Y
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 14 -
12.2. 다양한색모델
RGB YUV
결과 값 범위 조절
YUV RGB
결과 값 범위 조절
0.299 0.587 0.114
0.147 0.289 0.436
0.492( )
0.615 0.515 0.100
0.877( )
Y R G B
U R G B
B Y
V R G B
R Y
1.140
0.395 0.581
2.032
R Y V
G Y U V
B Y U
0.299 0.587 0.114
0.169 0.331 0.500 128
0.500 0.419 0.081 128
Y R G B
U R G B
V R G B
1.4075*( 128)
0.3455*( 128) 0.7169*( 128)
1.7790*( 128)
R Y V
G Y U V
B Y U
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 15 -
12.2. 다양한색모델
YIQ 색 모델 NTSC 의 컬러 비디오 표준에 사용되는 색 모델
영상의 그레이스케일 정보와 색상 정보를 따로 분리하여부호화(encoding)
YUV 의 UV 를 33도 회전시킨 모델
Y : 밝기 정보(luma)
I, Q : 색상 정보(chroma)
'
'
'
311878.0523083.0211205.0
321746.0274133.0595879.0
144.0587.0299.0'
33cos)''(492111.033sin)''(877283.0
33sin)''(492111.033cos)''(877283.0
B
G
R
Q
I
Y
YBYRQ
YBYRI
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 16 -
12.2. 다양한색모델
YCbCr 색 모델 Studio Quality Component Video 를 위한 표준 모델
MPEG, H.26x 계열의 비디오 코딩 포준 칼라모델
YUV 의 변형
5.0
5.0
0
'
'
'
081312.0418688.05.0
5.0331264.0168736.0
144.0587.0299.0'
5.0)402.1/)''((
5.0)772.1/)''((
B
G
R
C
C
Y
YRC
YBC
r
b
r
b
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 17 -
12.3. 색상평면나누기와합치기
RGB 색상 평면으로 나누기
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 18 -
12.3. 색상평면나누기와합치기
HSI 색상 평면으로 나누기
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 19 -
12.3. 색상평면나누기와합치기
YUV 색상 평면으로 나누기
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 20 -
12.3. 색상평면나누기와합치기
RGB 색상 평면 합치기
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 21 -
12.4. 컬러영상처리
컬러 경계선 검출
1/ 2
2 2 2
Y Y U U V VD w E w E w E
트루컬러영상
Y
U
V
경계선검출
EY
EU
EV
유클리디언거리
컬러 경계선검출
Yw
Uw
Vw
경계선검출
경계선검출
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 22 -
12.4. 컬러영상처리
컬러 경계선 검출 결과
그레이스케일정보만으로경계선 검출
YUV 색 모델을이용한 컬러경계선 검출
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 23 -
12.4. 컬러영상처리
컬러 히스토그램 균등화 밝기 성분에만 히스토그램 균등화를 수행
모든 색상 성분에 히스토그램 균등화를 수행하면 색감이 크게 변함
입력트루컬러영상
Y
U
V
히스토그램균등화
YE
U
V
출력트루컬러영상
한빛미디어 영상 처리 프로그래밍 By Visual C++ - 24 -
12.4. 컬러영상처리
컬러 히스토그램 균등화 결과 차례대로 입력 영상, RGB 색 성분 모두에서 히스토그
램 균등화를 수행한 결과, 밝기 성분에서만 히스토그램균등화를 수행한 결과
원본 영상에 비하여색감이 크게 달라짐