Python
[OpenCV with Python] 영상의 특징 추출 : 영상에서 직선 검출하기 - 허프 변환
허프 변환(Hough transform) 직선 검출이란? 에지(윤곽선) 영상은 검정색 배경에 에지부분만 흰색이다. 이 입력 영상에서 에지가 있는 좌표를 추출하는 것이다. 에지 영상에서 좀 더 고차원적인 정보를 얻기 위해 에지 영상의 분포를 보고 직선, 사각형 등 고차원적인 형태 정보를 추출한다. 직선을 추출해내는 가장 유명한 알고리즘이 허프 변환이다. 축적 알고리즘을 이용하여 내가 원하는 파라미터를 찾아낸다. 허프 변환 직선 검출은 2차원 영상 좌표에서의 직선의 방정식을 파라미터(parameter) 공간으로 변환하여 직선을 찾는 알고리즘이다. 축적 배열 accumulation array 축적 배열은 직선 성분과 관련된 원소 값을 1씩 증가시키는 배열이다. x, y 좌표평면에서의 직선의 한 점을 a, b ..
[OpenCV with Python] 영상의 특징 추출 : 캐니 에지 검출 cv2.Canny
그래디언트 크기를 구하고 임계값을 설정해줘서 에지를 검출할 경우, 윤곽선이 너무 두껍게 표현된다는 단점이 있다. 이를 보완한 것이 캐니 에지 검출 방법이다. 캐니 에지 검출 - 좋은 에지 검출기의 조건 정확한 검출 - Good detection 픽셀이 조명에 의해 미세한 영향을 받게 되어 임계점보다 크거나 낮아질 수 있다. 이처럼 에지가 아닌 점을 에지로 찾거나 또는 에지인데 에지로 찾지 못하는 확률을 최소화 한것을 정확한 검출이라고 한다. 정확한 위치 - Good localization 실제 에지의 중심을 검출하는 것 단일 에지 - Single edge 하나의 에지는 하나의 점으로 표현한다는 것 이 세가지 조건을 충족해야 좋은 에지라고 할 수 있다. 케니 에지 검출 4단계 1. 가우시안 필터링 가우시안..
[OpenCV with Python] 영상의 특징 추출 : 영상의 미분과 소벨 필터
에지 검출과 미분 ✔︎ 에지 edge 에지는 영상에서 픽셀의 밝기 값이 급격하게 변하는 부분을 말한다. 객체와 객체, 객체와 배경에 어떤 경계를 나타내는 용어이다. 경계부분에는 픽셀값이 크게 변경된다고 가정하고 에지를 구한다. 영상에 미분을 하는 이유는 에지를 검출하기 위함입니다. ✔︎ 기본적인 에지 검출 방법 에지 검출을 위해 픽셀값이 급격하게 변하는 부분을 찾아야한다. 미분은 변화율을 나타내는 척도로, 영상을 미분하여 에지를 검출할 수 있다. 영상을 (x,y) 변수의 함수로 간주했을 때, 이 함수의 1차 미분 값이 크게 나타나는 부분을 검출한다. 검출한 미분값에 T 임계값을 설정해주는 것이 중요하다. 임계값보다 높으면 에지로 판단하게 된다. ✔︎ 1차 미분의 근사화 미분은 전진 차분(Forward d..
[OpenCV with Python] 영상 기하학적 변환 : 리매핑(remapping) - cv2.remap
리매핑(remapping) 리매핑을 잘 활용하면 입력 영상을 직선이 아닌 곡선으로 표현할 수 있어 좀 더 자유도 있는 변환을 할 수 있다. 리매핑은 영상의 특성 위치 픽셀을 다른 위치에 재배치하는 일반적인 프로세스이다. 리매핑은 기하학적 변환을 맵핑한다. 출력 영상의 x,y 좌표에서 픽셀 값을 입력 영상에서 참조할건데 어느 위치를 참조할 것인지 나타내는 map x와 map y 함수를 정의한다. 출력 영상의 좌표를 입력 영상의 어느 좌표를 참조해서 갖고올 것이냐를 설정해서 출력 영상의 모든 픽셀 값을 셋팅해 출력 영상을 만들어내는 방법이다. 따라서 영상을 꿀렁꿀렁하게 하거나 휘게하는 것도 리매핑으로 할 수 있다. 어파인 변환, 투시 변환을 포함한 다양한 변환을 리매핑으로 표현할 수 있다. ✔︎ cv2.re..