독학하는 학생의 정리노트

독학하며 정리노트를 올리는 학생 공부 블로그입니다.

IT 프로그래밍/Python 파이썬

cv2.HoughLinesP(edges,rho,theta,threshold,np.array([]),min_line_length,max_line_gap)

공부 안 하는 학생 2020. 10. 4. 10:49

서론쓸 힘이 없다. 게임하고 싶은 마음을 뒤로 하고 알고리즘 공부를 해보자

 

cv2.HoughLInes에서는 image를 쓴다.

p는 probabilistic 즉 확률적이라는 말이 포함된 허프변환이다.

image = 8bit 즉 1 채널인 흑백이미지, 보통 canny를 통해 edge를 찾은 후에 이 함수를 적용하므로 이미 흑백으로 변환된 상태이다.

rho = hough space에서 p값을 한번에 얼만큼 증가시키면서 조사할 것인지 묻는것. 보통 1을 넣는다.

theta = 단위는 라디안이다. 따라서 보통 각도 값을 입력한 후에 pi/180을 곱해서 라디안 값으로 변환 시킨다. 180도를 넘는 순간부터 직선이 유니크 해지지 않다. 한번에 얼만큼 증가시키면서 조사할 것인지 묻는것이므로 보통 1도를 넣는다 즉 pi.180라디안.

threshold = 서로 일직선 위에 있는 점의 수가 threshold 갯수 이상인지 아닌지를 판단하는 척도와 같은 말이다. 값이 작으면 그만큼 기준이 낮아져 많은 직선이 검출될 것이고 , 값을 높게 정하면 그만큼 적지만 확실한 직선들만 검출될것이다.

np.array([]) = 그냥 빈 array이니 무시.

min_line_length = 말그대로 선의 최소 길이이다. 너무 짧은 선을 검출하기 싫다면 이 값을 높이면 된다.

max_line_gap = 선 위의 점들 사이 최대 거리이다. 즉 점 사이의 거리가 이 값보다 크면 나와는 다른 선으로 간주하겠다라는 것

HoughLinesP 는 선분을 출력한다. output에서 선분의 시작점과 끝점에 대한 좌표값을 출력하고 그렇기 때문에 함수 안에 선의 최소 길이라든지, 점 사이의 최대 간격을 설정해야하는것이다.

image space를 parameter space로 변환하는 이유는 하나의직선이 하나의 점으로만 표현이 가능하여 활용성이 있다. 이미지에 있을 수 있는 수 많은 직선들을 각각 하나의 점으로 표현할 수 있다.

m.blog.naver.com/windowsub0406/220894462409 이 블로그를 통해 공부하였습니다 감사합니다.

드디어 lesson 하나 끝낸 공부 안 하는 학생이였습니다

'IT 프로그래밍 > Python 파이썬' 카테고리의 다른 글

Machine learning 머신러닝이란 - 1 (+영어)  (0) 2020.10.14
Line 기본 총정리  (0) 2020.10.05
Gaussian 가우시안 필터 openCV  (0) 2020.10.03
Canny Edge openCV, python  (1) 2020.10.03
허프 변환 hough transform  (0) 2020.10.03