머신 비전 산업을 보면 가장 중요한게 있는데 그건 연산 시간이다.
어떤 제품의 검사나 검사결과 도출까지의 시간 및 결과들이 그 산업들의 이익과 직결되기때문에
가장 짧은 시간에 가장 정확하게 검사하고 그 결과를 도출해낼 수 있는 능력을보면
머신비전 업체의 능력을 가늠할 수 있다.
일단 컴퓨터 비전은 대용량 데이터를 처리하고있기때문에 매 단계에서 연산 시간을 측정하고 그 시간을
관리해줄 필요가 있다.
전체 알고리즘 중 어떤 한 알고리즘의 영상처리시간이 늦어지는 병목현상이 일어나게 된다면 전체적으로
연산처리시간이 늘어나기때문에 주의할 필요가 있다.
그래서 OpenCV에서는 연산시간을 측정할 수 있는 함수가 있다.
- 연산시간 측정 ( cv2.TickMeter )
tm 은 cv2.TickMeter의 객체이고
tm.start 측정 시작
tm.stop 측정 끝
tm.restet 측정 초기화
등의 기능을 사용할 수 있다.
* 여기서 주의할 점은 함수 1 앞 뒤에 start stop 을 넣고
함수 2 앞 뒤에 start stop을 넣게되면
각각의 함수 연산 시간을 측정하는게 아닌 전체 함수의 연산시간을 측정해버리기 때문에
중간에 꼭 reset 기능을 넣어주어야 한다.
그리고
getTimeSec getTimeMilli getTimeMicro 의 함수를 사용하게 되면 측정 시간을
각각의 단위로 변환시켜 주는 기능을 사용할 수도 있다.
아래의 코드를 보면 더욱 잘 이해할 수 있다.
위 코드를 보게되면 hongkong 이라는 jpg 파일을 로드해서 Canny 라는 엣지처리를 해주는 연산 시간을 측정하게
되었을때 약 66ms의 시간이 도출되는 것을 알 수 있다.
보통 카메라가 초당 30frame을 찍기때문에 전체 연산 속도가 30ms 이하로 나오는 것이 좋기는 하지만
성능과 알고리즘 , 환경에 따라 많이 달라지기 때문에 참고만 하면 좋을 것 같다.그래서 더 빠르게 처리할 수 있는 알고리즘이 있다면 찾아보는 노력이 필요하다는 말씀을 해주셨다.
그리고 위 코드에서 time.time() 이라는 함수를 볼 수 있는데 이는 python에서 제공되는 함수이다.위 time 함수를 사용할 수도 있는데 시간의 차이가 크게 나지않기때문에
둘 중 하나만 사용해도 무관하다.
* 좀 더 정확한 TackTime을 측정하고싶다면 for루프를 사용해서 해당 함수의 택타임의 평균을 내서
측정하는 것이 가장 좋다고 한다. 가끔 첫 함수 연산시간보다 한번 더 실행했을때 이후의 연산시간이
평균적으로 더 적게 측정되는 경우도 있을수 있기에 그렇다. 물론 이도 처리할 수 있는 방법은 있다고한다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 기본적인 영상처리 기법 _ 영상의 밝기 조절 (0) | 2022.05.06 |
---|---|
[Open CV] OpenCV-Python 기초 사용법 _ 실전코딩 (0) | 2022.05.05 |
[Open CV] OpenCV-Python 기초 사용법 _ 트랙바 사용하기 (0) | 2022.05.03 |
[Open CV] OpenCV-Python 기초 사용법 _ 마우스 이벤트 처리하기 (0) | 2022.05.02 |
[Open CV] OpenCV-Python 기초 사용법 _ 키보드 이벤트 처리하기 (0) | 2022.05.01 |