[안드로이드로 배우는 OpenCV] 크로마 키 합성

크로마 키(Chroma Key) 크로마 키는 두개의 영상을 합성하는 기술을 말한다. 보통 녹색 또는 파란색 배경에서 촬영한 영상에 다른 배경영상을 합성한다. 한국에서는 파란색배경을 주로 사용하고, 서양에서는 초록색을 자주사용 한다고 한다. 그 이유는 서양 사람들의 눈이 파란색인 경우도 있기 때문에 블루 스크린을 사용하면 파란색의 눈이 배경영상으로 바뀌는 결과를 낳을 수 있기 때문이다. 더보기…

[안드로이드로 배우는 OpenCV] 히스토그램 역투영

히스토그램 역투영(Histogram backprojection) 히스토그램 역투영이란 영상의 각 픽셀이 주어진 히스토그램에 얼마나 일치하는지 검사하는 방법으로, 객체의 모양은 무시하고 단순히 컬러 분포만으로 임의의 색상 영역을 검출할 때 효과적이다. 다음의 이미지에서 살색을 검출해보도록 하자. 우선 입력 영상에서 미리 살색영역에 대한 히스토그램을 구해야한다. 빨강색으로 지정한 영역을 살색이라 가정하고, 해당 영역의 히스토그램을 구했다. 원한다면 다른 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 특정 색상 영역을 추출하기

만약 다음과 같은 이미지가 있다고 가정할 때 녹색 초콜렛(m&m)만 검출 하고 싶다면 어떻게 해야할까? RGB 색공간에서 녹색영역을 추출한다고 가정해보자. 다음과 같이 각각의 색성분에 대한 범위(Range)를 특정하여 조건에 부합하는 픽셀만 검출하면 된다. 하지만 특정 색상을 검출하기 원한다면 RGB 색공간보다는 HSV 색공간을 사용하는 것이 적합하다.  HSV 색공간을 가시화한 위의 그림을 살펴보자. H는 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지의 논리 연산

이미지는 픽셀들의 집합이며, 하나의 픽셀은 색상에 따라 n바이트로 표현되곤한다. 회색조 이미지의 경우 보통 한 픽셀이 0~255값을 가지는데 값의 경우의수가 256가지인셈이다. 그러면 2^8 = 256 이므로 8bit(1byte)의 메모리가 필요하다. 예) 10101000 두 이미지의 같은 좌표에 있는 픽셀들에 비트 연산을 수행할 수 있다. 비트 연산을 통해 특정 영역을 도려내거나 합성하고, 이미지를 반전시킬 더보기…

[안드로이드로 배우는 OpenCV] 히스토그램 그리고 스트레칭 및 평활화

히스토그램 히스토그램은 도수분포표를 그래프로 나타낸 것이다. OpenCV에서는 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것을 말한다. OpenCV에서는 calcHist() 함수를 통해 히스토그램을 구할 수 있다. 예제코드를 살펴보자. val images = listOf(src) val channels = MatOfInt(0) //grayscale은 채널이 하나이므로 0 val mask:Mat = … // 마스크 val hist = Mat() // 히스토그램 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지의 덧셈 연산

덧셈 연산 dst( x, y ) = saturate(src1( x, y ) + src2( x, y )) 덧셈 연산은 두 이미지의 같은 위치에 존재하는 픽셀 값을 더해 결과 영상의 픽셀 값으로 설정하는 연산을 말한다. 덧셈결과가 픽셀의 표현범위 보다 크면 특정 픽셀 값으로 설정한다. 예를 들면 픽셀이 0~255으로 표현되는데 두 픽셀의 값을 더보기…

[안드로이드로 배우는 OpenCV] 이미지의 픽셀 처리 및 밝기 조절하기

이미지 밝기 조절하기 아래 이미지와 같이 원본이미지의 밝기를 조절하는 방법에 대해서 알아본다. 픽셀 처리하기 이미지를 밝게 하거나 어둡게 하기 위해서는 각 픽셀에 대한 특정 연산을 해줘야한다. 이미지는 여러 픽셀들로 구성되며 픽셀의 총 갯수는 다음과 같이 구할 수 있다. 이미지의 가로 길이 * 이미지의 세로 길이 = 총 픽셀 갯수 일반적인 더보기…