TIL
[OpenCV] 공간 도메인 필터링(Spatial Filtering)
Spatial Filtering Spatial Filtering는 spatial filters을 이용해 전처리를 하는것으로, spatial mask, kernel, templates, windows 등으로 불린다. Spatial filtering하는 방법은 간단하다. 영상의 좌상단부터 이동하면서 saptial 필터를 적용한다. Spatial filters을 수행하고 싶은 특정한 픽셀을 가운데로 놓고 필터를 위치시킨다. 이 때 필터는 보통 3x3, 5x5, 7x7크기이다. 영상의 픽셀값과 그에 위치하는 필터값을 곱한 값을 모두 더한값으로 변환시킨다. 만약 3x3 saptial filters를 사용한다면, f(x,y)값에 g(x,y) = w(-1,-1)f(x-1,y-1)+w(-1,0)f(x-1,y) +…w(..
[OpenCV] 히스토그램 평활화(Histogram Equalization)
히스토그램(=도수분포도) intensity levels의 범위가 [0, L-1]인 영상의 히스토그램에서 - ℎ (𝑟𝑘) = 𝑛𝑘 - 𝑟𝑘: 𝑘^𝑡ℎ intensity value(k번째 인텐시브 값), 𝑛𝑘 : the number of pixels with intensity 𝑟𝑘 (인텐시브 rk의 픽셀 수) - 이 경우 bin의 개수는 L이다. 히스토그램의 bin의 개수가 256개, 이미 픽셀 값도 0~255라고 할때, 제일 첫번째 bin에 해당하는 값은 intensity 값(픽셀 값)이 0인 픽셀의 개수로 결정된다. Histogram normalization(히스토그램 정규화) - 각 구성 요소를 총 픽셀 수로 나눔. 즉, 각각의 bin에 있는 값을 영상을 포함하고 있는 전체 픽셀 값으로 나눠준다. 영상..
[OpenCV] 밝기값 변환(Intensity Transformation)
밝기값 변환(Intensity Transformation)이란? 입력 영상의 픽셀 값을 사전에 정의한 매핑 관계를 토대로 다른값으로 매핑시키는 것. Image negatives(이미지 반전, 색상반전) 영상의 intensity level 이 [0, L-1] 사이일 때, 이미지를 반전시키는 것. s= L-1-R (r: 입력, s : 출력) 이미지의 어두운 영역에서의 흰색 또는 회색 디테일을 찾아내는데 적합하다. 어두운 색상의 이미지를 반전시켜서, 보기 용이하도록 함 Log transformation (로그 변환) s=c log(1+r) (c: constant(상수), r: 입력, s: 출력) 낮은 intensity 값의 범위가 좁을 경우에, intensity 값을 넓혀줄 때 활용하는데, 이때 어두운 영역(..
[OpenCV] 메모리 관리 및 픽셀 액세스(Memory Management/Pixel Access)
목표 openCV에서 메모리를 어떻게 관리하는지 영상의 각각의 픽셀을 어떻게 접근하는지 Memory Management 1. shallow copy mat은 헤더 부분/ 데이터 부분으로 구성 헤더에 포함되있는 데이터의 주소값 부분만 copy됨 = 라는 기호를 등호로 사용해 copy copyTo()라는 함수 이용. 특정한 경우에서는 shallow copy로 작용됨. 입력(source) matrix와 결과 matrix의 데이터타입과 크기가가 같을 경우 주소값만 복사되고, 그렇지 않은 경우에는 deep copy로 이루어진다. m1 메트릭스가 데이터와, 데이터를 가르키는 주소값으로 구성되어있을 때, m1에 대한 shallow copy를 통해서 m2를 만들었다면 m2에 대한 데이터가 다시 만들어지는 것이 아니라 ..
[OpenCV] Drawing 함수(Drawing Function)
목표 openCV 활용해서 영상 내에 다양한 도형 그리기 및 글자 쓰기 Rectangle (사각형그리기) void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0) - Pt1, Pt2 : 사각형을 구성하는 꼭지점 (pt2는 pt1의 반대방향에 있는것) - Color : 색상 - thickness : 두께 - lineType: 선의 타입 - shift : 사각형을 정교하게 그리고 싶을 때 사용함 void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int sh..
[OpenCV] Mat 연산자(Mat operator)
목표 openCV에서 사용하는 기본적인 Matrix 연산자(operator)에 대해 알아보기 Color space conversion 색공간(Color space)이란? Ex. RGB, HSV, YCbCr 색공간에 대한 자세한 개념은 밑의 게시글을 참고. [컴퓨터 비전] 색공간의 이해 [컴퓨터 비전] 색공간의 이해 컴퓨터비전, 영상처리 분야에서는 색상을 표현하는데 빛의 삼원색(rgb)을 사용한다. - 빛의 삼원색(Primary colors of light) : Blue, Green, Red - 색의 삼원색(Secondary colors of light) : Magenta, Yellow, C.. hu-coding.tistory.com void cvtColor(Mat src, Mat dst, int code..
[OpenCV] Open CV 기초
목표 Open CV의 기본데이터 타입 Mat에 대해 알아보기 영상, 비디오 읽고 출력하는 방법을 알아보기 1. Mat이란? Open CV의 기본 데이터 타입으로 Matrix(행렬)의 약어이다. 영상은 픽셀들의 집합으로 구성되어있고, 각의 픽셀들은 2차원 좌표로 그 위치를 표현가능하다. 즉, 영상은 2차원배열로 생각할 수 있다는 의미이다. Mat 선언방법에는 Mat(int rows, int cols, int type) 행,열 개수와 각각의 픽셀타입 설정 Mat(Size size, int type) size 함수로 메트릭스 크기 설정함 Mat(const Mat & m) 이미 선언되어있는 메트릭스가 있는 경우, 그 메트릭스을 받아오는 방법. m과 크기가 같으면서 메트릭스를 복사해온다. Mat(Size size..
[컴퓨터 비전] 색공간의 이해
컴퓨터비전, 영상처리 분야에서는 색상을 표현하는데 빛의 삼원색(rgb)을 사용한다. - 빛의 삼원색(Primary colors of light) : Blue, Green, Red - 색의 삼원색(Secondary colors of light) : Magenta, Yellow, Cyan - 무채색(Achromatic color) : 색상 정보가 존재하지 않는, 각각의 color component의 비율이 같은 경우.(rgb의 비율이 같다.) 유채색 Color Models 1. RGB R-channel, G-channel, B-channel로 이루어져있다. intensity level은 일반적으로 256이므로 [0,255]로 표현가능하다 Red = (255,0,0) White = (255,255,255) (..