< RGB 색 공간에서 녹색 영역 추출 >
TrueColor 영상에서 아래와같이
Red Green Blue 색상타입만 추출하도록 할 수 있는 기능을 구현해본다.
간단히 생각해보면 각각의 픽셀값에 저장되어있는 RGB 성분 중 추출하고자 하는 성분의 값이
상대적으로 또는 절대적으로 높은 픽셀값만 Binary 시키면 될 것 같다.
위와 같은 방법도 간간히 사용되지만 원색을 찾을때에는
RGB 보다는 HSV 색 공간에서의 색 추출이 더 많이 사용된다.
H는 Hue 성분으로 색상을 표현하므로 H 성분으로 어떤 색을 추출할지 결정한다.
S는 Saturation 성분으로 색상의 선명도 ( 순수 색 ) 으로 어느정도 큰 값을 가져줘야한다.마지막으로 V는 밝기 성분으로 밝은 색상인지 어두운 색상인지 구분하는 성분이다.
따라서 해당 성분의 조건을 잘 갖춰주면 원하는 색상을 잘 추출할 수 있다.
위 사진들만 보고 어? RGB가 더 깔끔하게 추출 되는데 왜 HSV 를 더 많이 사용한다고 하지? 라고 의문을 품을 수 있다.하지만영상 획득을 어떻게 했는지에 따라서 RGB의 추출방식이 굉장히 효율적이지 않을 수 있다.
위와같이 영상이 조금이라도 어두워지면 G값을 제대로 추출하지 못하는 경우가 발생한다.
하지만 HSV 에서 V값을 0 ~ 255 로 넓게 설정해준다면 어두운 녹색이든 밝은 녹색이든 모두 추출하게 된다.
위와 같은 작업을 효율적으로 할 수 있게 도와주는 함수들이 몇가지 있다.
- cv2.inRange ( src, lowerb, upperb, dst )
특정 범위안에 있는 행렬 원소를 검출하는 함수로
src의 입력영상들중 lower ( 하한값 ) 부터 upper ( 상한값 ) 까지의 픽셀값을 가진 픽셀들을 골라서
dst로 return 해주는 함수이다. ( 범위안에 들어가는 픽셀은 255 , 나머지는 0 )
( Mask Binary 영상 )
GrayScale 영상과 TrueColor 영상 모두 사용할 수 있는데
그레이스케일 영상은 사용하기 쉽기때문에 컬러영상 사용법을 알아본다.
위와같이 RGB or HSV 의 각각의 성분값의 상한값과 하한값을 설정해주어 Binary 시킬 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 기본적인 영상처리 기법 _ 실전코딩 ( 크로마키 합성 ) (0) | 2022.05.14 |
---|---|
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 역투영 (0) | 2022.05.13 |
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 평활화 (0) | 2022.05.11 |
[Open CV] 기본적인 영상처리 기법 _ 영상의 명암비 조절 (0) | 2022.05.10 |
[Open CV] 기본적인 영상처리 기법 _ 히스토그램 분석 (0) | 2022.05.10 |