내맘대로 공부기록.

[ C++ ] 23

[ openCV | C++ ] 기본기만 배우고 차선검출 하는 방법.

다음의 순서로 차선 검출을 구현해봤습니다. 매우 기본적인 부분을 이용했다고 생각합니다. 1. 이미지 준비 🖼 2. 이미지 가공 🛠 이진화 작업 블러 캐니엣지 3. 차선 검출 기능(사용한 함수) 🛣 ① HoughLines ② HoughLinesP 1. 이미지 준비 🖼 차선 검출 이미지는 BDD100K(Berkeley DeepDrive) 소스를 이용했습니다. 데이터 발행기관의 자세한 설명은 여기에서 확인할 수 있습니다. BDD100K 데이터는 웹사이트 회원가입만 하면 데이터를 다운 받을 수 있습니다. 제공하는 데이터 수가 말 그대로 100K(100,000개 : 10만개) 갯수이며, 각 데이터는 40초 영상으로 구성되어 있습니다. 또한, 영상에서 추출한 이미지 데이터도 제공하고 있어서, 그 데이터를 사용했습니..

[ C++ ] 2021.04.17

[ openCV | C++ ] HoughLinesP 함수 사용 방법. (+HoughLines함수와 비교)

어떤 함수 ❓ 🤔 직선을 추출하는 개념으로는 HoughLines과 같습니다. 하지만 이 함수에서는 확률적인 방법으로 접근하는데요. 구체적으로 말하자면 직선 속성을 추출하기 위해 픽셀을 랜덤 하게 선택하는 거죠.(기본 허프 변환에서는 모든 픽셀에 대한 알고리즘 검사를 하게 되기 때문에, 계산에 대한 비용이 매우 큽니다.) 그래서 기본 HoughLines 함수에다가 P(Probabilistic, 확률적인.)만 덧붙이는 형태로 구분됩니다. 간단하게 Probabilistic Hough transform 알고리즘을 써서 직선을 검출하는 겁니다. 알고리즘에 대한 공부는 각자 해보도록 합시다. HoughLinesP( 타겟이미지, 직선속성변수(vector 타입의 어레이 변수), r 방향변위값(경계값), 회전방향각도(경..

[ C++ ] 2021.03.28

[ openCV | C++ ] HoughLines 함수 사용 방법. (차선 검출 준비단계)

어떤 함수 ❓ 🤔 직선을 "검출하는" 함수입니다. 직선을 검출하는 방법으로 Hough Line Transform 알고리즘이 사용되었습니다. 이진화된 이미지(엣지 검출 데이터)를 기반으로, 픽셀 포인트가 같은 직선상에 있다는 조건을 만족하면, 직선의 속성(r, θ) 값을 반환해줍니다. 이론 편은 다음 글을 참고하세요. [ openCV | C++ ] Hough Line Transform 이론편.개념정리. 1. 기본개념 2. 조금 더 깊이(논문) FINITE LINE 1. 기본개념 허프 변환 - 위키백과, 우리 모두의 백과사전 허프 변환 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 허프 변환(Houg fwanggu-lee.tistory.com HoughLines( 타겟이미지, 직선속성..

[ C++ ] 2021.03.26

[ openCV | C++ ] Hough Line Transform 이론편.개념정리.

1. 기본개념 2. 조금 더 깊이(논문) FINITE LINE 1. 기본개념 허프 변환 - 위키백과, 우리 모두의 백과사전 허프 변환 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 허프 변환(Hough transform)은 디지털 화상 처리, 컴퓨터 비전 등에서 사용하는 용어이다. 한 평면 위에 놓여 있는 점들의 집합 P 에서 원소 (xi, yi)를 지나는 모든 직 ko.wikipedia.org 일반적인 1차 직선 방정식은 x, y 평면에서 다음과 같이 표현할 수 있습니다. y=ax+b 여기서 결론적으로 먼저 얘기하면, Hough Line Transform 은 x, y 평면 도메인을 r, theta(θ, 각도) 평면으로 변환하는 작업을 의미합니다. 물론, r, theta 평면 데이..

[ C++ ] 2021.03.23

[ openCV | C++ ] approxPolyDP 함수 사용 방법.

어떤 함수 ❓ 🤔 "형상을 근사" 하는 함수입니다. 검출된 형상(외곽선)을 표현하기 위해, 점 데이터가 사용되어지는데요. 그 데이터 수를 수많은 어레이 점 데이터에서, 보다 적은 점으로 커브 또는 다각형 형상을 표현할 수 있게 됩니다. 조금 더 쉽게 풀어 얘기하면, 사각형 물체의 컨투어(외곽선)를 점 20개로 세밀하게 표현했다고 합시다. 하지만 우리는 사실 사각형(다각형)을 표현하기 위해 꼭지점 네 점만 있으면 되죠. 즉, 사각형(특정 형상)을 표현하기 위한 최소 데이터를 20에서 4개로 근사화 했다 ! 라고 하는 작업을 해주는 함수입니다. (근사 정확도 설정에 따라서, 커브 또는 점 데이터 갯수는 변경될 수 있습니다.) approxPolyDP( 컨투어 포인트 어레이, 근사된 포인트 어레이, 근사 정확도..

[ C++ ] 2021.03.17

[ 머신 비전 ] 자율 주행을 구현하기 위해 필요한 것들.(feat. openCV)

🖐 들어가면서. openCV의 기본적인 내용들을 학습하고, 본격적으로 자율주행을 구현하기 위해 필요한 것들을 찾기 시작했습니다. openCV 패키지를 이용해 봄으로써, 자율주행에 사용되는 각 기능들의 기초적인 원리를 이해할 수 있었고, openCV 패키지를 시작으로 자율주행을 구현하기 위해 어떤 기능들이 필요하고 사용 되는지 학습하고자 합니다. 🔗 openCV의 기본적인 내용 학습 📺 참고한 유투브 : www.youtube.com/user/Mhproductionhouse Murtaza's Workshop - Robotics and AI Weekly videos regarding Robotics & AI Projects. www.youtube.com 📋 내가 정리한 글 : [ openCV | C++ ] 머..

[ C++ ] 2021.03.15

[ openCV | C++ ] drawContours 함수 사용 방법.

어떤 함수 ❓ 🤔 "그리는" 함수 입니다. 컨투어를 검출하는 작업이 아닌, 검출된 컨투어 데이터를 이미지에 뿌려서, 이미지를 표현 하는 함수입니다. drawContours( 타겟이미지, 검출된 컨투어 포인트 어레이, 포인트 어레이 인덱스, 컨투어 색상, 컨투어 라인 두께, 컨투어 라인 타입, ... ) 매개변수 (설명) 🔑 타겟이미지 : 컨투어 라인을 그릴 이미지를 지정합니다. Mat 형태의 이미지 파일을 지정하면 됩니다. 🔑 검출된 컨투어 포인트 어레이 : approxPolyDP 함수를 이용하여 얻어진, 다각형을 표현하는 (근사된) 포인트 집합 데이터를 대입합니다. 이 데이터를 생성하기 위해서는 findContours 작업이 선행되어야 합니다. 🔑 포인트 어레이 인덱스 : 두번째 인수(어레이)의 인덱스..

[ C++ ] 2021.03.07

[ openCV | C++ ] 비주얼 스튜디오 코드(Visual Studio Code)에서 openCV 환경 설정 하는 방법(맥 버전)

1. 비주얼 스튜디오 코드 설치 2. C++ 컴파일 환경 구성(일반) 🔗 tasks.json 파일 3. C++ 디버그 환경구성(일반) 🔗 launch.json 파일 4. opencv 패키지 설치 5. opencv 환경 설정 🔗 c_cpp_properties.json 파일 5.1 pkg-config 설정 5.2 pkg-config PATH 설정 5.3 opencv 패키지를 참조하여 컴파일하기 환경 설정을 해 본 결과, Xcode를 이용하는 편이 환경설정은 간단합니다. [ openCV | C++ ] Xcode 에서 openCV 환경 설정 하는 방법 맥의 Xcode IDE 사용자를 대상으로 하는 글인 점 참고 부탁드립니다. 그리고, 이 내용은 유투부 튜토리얼 및 게시자의 웹사이트 내용과 동일하며, 본인의 학습..

[ C++ ] 2021.03.05

[ openCV | C++ ] findContours 함수 사용법, 입력 출력(포인트) 값의 이해

🔗 함수와 매개변수 : findContours(매개변수입력) 🔗 DEMO. 🖼 이미지 이진화 하기 😷 HSV 이미지 마스킹 하기 📏 컨투어 찾기 이진화(Binary) 이미지 소스로 부터 사물의 외곽 형상을 검출하여, 사물인식에 사용될 수 있습니다. 여기서 이진화 이미지는 GRAY SCALE 또는 HSV SPACE 색으로 변환된 이미지에 대해서 적용 될 수 있습니다. GRAY SCALE, HSV SPACE 이미지 변환은 아래 글을 참고 부탁드립니다. [ openCV | C++ ] 머신비전 이해를 위한 openCV 기초 리뷰 🙋🏻‍♂️ openCV를 시작하면서, 무(無) 일 때 openCV의 느낌? 📋 튜토리얼 시작 📏 이미지 리사이징 🖼 이미지 변환 1. 그레이 스케일링 2. HSV 스케일링 ⭕️ 엣지검출..

[ C++ ] 2021.02.23

[ openCV | C++ ] Xcode 에서 openCV 환경 설정 하는 방법

맥의 Xcode IDE 사용자를 대상으로 하는 글인 점 참고 부탁드립니다. 그리고, 이 내용은 유투부 튜토리얼 및 게시자의 웹사이트 내용과 동일하며, 본인의 학습을 위해 리뷰 개념으로 작성되었음을 알려드립니다. ☑️ 개요 0. Homebrew 설치 1. openCV 설치 2. 프로젝트 생성 3. 다이나믹 라이브러리 불러오기 4. 헤더 패스(Header Path) 설정 5. 리소스 폴더 설정하기(이미지, 영상 소스 참조하기) 6. 카메라 액세스 설정하기 0.Homebrew 설치(brew 셋팅이 돼있는 분들은 넘어가세요.) 아래의 웹사이트로 들어가서 Homebrew를 설치해야 합니다. https://brew.sh/ 아래 내용을 terminal에 붙여놓고 실행(엔터)하며, Homebrew가 인스톨됩니다. /b..

[ C++ ] 2021.02.12
반응형