내맘대로 공부기록.

분류 전체보기 50

[ openCV | C++ ] ( 2 / 6 ) 차선검출. 이미지 전 처리. Perspective Transform (getPerspectiveTransform, warpPerspective 함수 사용법)

차선 검출을 위한 이미지 전 처리해보기 🛣 ⚙️ 기본 설명 ⚙️ 왜곡 제거(카메라 보정) 👍 Perspective Transform(원본 이미지 ⏩ 2D) Color Filtering(HLS, LAB color space) 픽셀 값 정규화(feat. 최대값) 및 이미지 픽셀(HLS 1개, LAB 1개) 합치기. Window Search Show Detected Lines and Info. 개념 🧐 인풋으로 사용되는 이미지 형태(또는 영상 데이터)는 보통 기울어져 있거나, 카메라의 위치가 모두 다르기 때문에 차선검출에 사용하기 위한 소스로써 적합하지 않습니다. 그렇기 때문에 날 것(Raw)의 이미지 소스를 용도에 맞게 위치, 사이즈를 변환시키는 등 전처리 작업이 필요할 것 같습니다. 우리 주변에서 찾아볼 ..

[ C++ ] 2021.08.13

[ 깃헙 사용법 ] 깃 커맨드로 특정 파일의 업데이트(반영) 무시하는 방법.

보통은 파일 및 폴더 변경을 무시하기 위해 .gitignore 파일을 이용합니다. 하지만, 경우에 따라서는 깃 리포지토리에 더 이상 변경사항을 반영하고 싶지 않지만 살려두고 싶거나, 특정 파일의 변경 반영을 꺼버리고 싶을 때 사용하면 좋을 것 같습니다. 다음 각 커맨드 입력은 리포지토리가 연결되 있는 로컬 환경에서 입력하세요. ⚙️ 설정 방법 git update-index --assume-unchanged "파일이름" 위의 코드와 같이 특정 파일을 변경하지 않은 것으로 가정하겠다는 커맨드를 입력합니다. 복수의 파일을 스페이스 구분으로 연속 입력도 가능합니다. 📋 현재 설정된 파일 확인 git ls-files -v|grep "^h" 🖥 출력 내용 파일이름 앞에 "h" (소문자)가 붙은 상태로 출력됩니다. ..

[ STUDY ] 2021.06.19

[ openCV | C++ ] ( 1 / 6 ) 차선검출. 이미지 전 처리. 왜곡 제거(카메라 보정)

차선 검출을 위한 이미지 전 처리해보기 🛣 ⚙️ 기본 설명 ⚙️ 왜곡 제거(카메라 보정)👍 Perspective Transform(원본 이미지 ⏩ 2D) Color Filtering(HLS, LAB color space) 픽셀 값 정규화(feat. 최대값) 및 이미지 픽셀(HLS 1개, LAB 1개) 합치기. Window Search Show Detected Lines and Info. 최초 카메라로 입력되는 이미지 프레임에 대해서, 왜곡현상을 제거합니다. 화면에 출력되는 이미지는 2D 형태이지만, 이 이미지는 실제 세계의 3차원의 형상을 2차원 데이터로 변환시킨 후 디스플레이에 투영시킵니다. 우리는 그 변환된 이미지를 보고 있는 거죠. 이 과정에서 물리적으로 사용되는 카메라의 렌즈 및 그 외 카메라의 ..

[ C++ ] 2021.06.02

[ openCV | C++ ] ( 0 / 6 ) 차선검출. 이미지 전 처리. 파이프 라인.

차선 검출을 위한 이미지 전 처리해보기 🛣 왜곡 제거(카메라 보정)👍 Perspective Transform(원본 이미지 ⏩ 2D) Color Filtering(HLS, LAB color space) 픽셀 값 정규화(feat. 최대값) 및 이미지 픽셀(HLS 1개, LAB 1개) 합치기. Window Search Show Detected Lines and Info. 이 글은 컴퓨터 비전을 이용한 차선 검출 기능을 구현하기 위해, 선행되는 이미지 전 처리 작업을 공부하고 리뷰하는 글입니다. 레퍼런스로 사용한 글은 아래와 같습니다. 아래 글은 파이썬(주피터 노트북 환경, 스크립트 형태 모두 있음)으로 구성되어 있으며, C/C++을 사용하여 전체 내용을 재구성(구현)해보았습니다. 👨🏻‍💻 레퍼런스 : Adva..

[ C++ ] 2021.06.01

[ openCV | C++ ] 차선 검출 이미지 전처리 작업. 왜곡 현상 보정 하는 방법.

undistort 함수 사용 리뷰 🚀 서론(참고한 글) Camera Calibration 체스보드를 이용하는 이유 보정 작업 결과(with 와이드 렌즈) CODE 이미지 프레임에 반영되어 있는 왜곡현상을 없애주기 위한 작업입니다. 이런 왜곡현상은 특정 카메라의 고유특성에 의해서 발생되는데, opencv 함수를 이용해서 보정할 수 있습니다. opencv에서는 체스보드 이미지를 활용하는 함수가 있으며, 차선 검출을 구현하기 위한 전처리 작업으로서 많이 사용되는 것 같습니다. 이 글은 아래 글 들을 참고해서 학습하며 작성하였습니다. 왜곡 보정 작업 외에도 차선 검출 파이프 라인의 전반적인 내용들이 잘 설명되어 있으니 참고하면 좋을 것 같습니다. 1. Calibrating & Undistorting with O..

[ C++ ] 2021.05.08

[ openCV | C++ ] fillPoly 함수 사용 방법.(픽셀 필터링 활용 용도.)

어떤 함수 ❓ 🤔 "그리는" 함수입니다. 다각형 형상을 이미지에 표현합니다. 이때 다각형 내면을 Fill(채우기) 함으로써, 다각형 내부를 특정 픽셀 데이터로 채우게 됩니다. fillPoly( 타겟이미지, 다각형 포인트 어레이, 다각형 색상, 다각형 라인 타입, ... ) 매개변수 (설명) 📌 타겟이미지 : 다각형을 표현하기 위한 이미지 소스를 지정합니다. Mat 형태의 이미지 파일을 지정하면 됩니다. 📌 다각형 포인트 어레이 : 포인트 데이터를 그 요소로 갖는 2차원 어레이를 지정합니다. C/C++의 일반적인 어레이 설정방법을 사용해도 되지만, vector 변수를 써보려고 노력하고 있습니다. 다각형 포인트의 순서는 시계방향 또는 반시계 방향을 생각하고 지정해주면 될 것 같습니다. 맨 처음과 맨 끝 포인..

[ C++ ] 2021.04.21

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

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

[ C++ ] 2021.04.17

[ C 언어 ] 실무에서 막혔던 문자열 관련 유용한 내용.(함수만들기)

막혔던 상황. 알고 보니 초보적인 실수여서 기재하기가 부끄럽지만, 저를 위해 적습니다. 상황은 아이템이 포인터를 함수로 전달해 주고, 특정 아이템의 정보들을 구조체 멤버로 가져오게 됩니다. 쉽게 말하면, 특정 아이템을 DB로부터 검색해서 사용하려고 하는 거죠. 검색 조건문 요소로 구조체의 특정 멤버를 사용한 겁니다. (구조체 멤버 예시) typedef struct temp1 { int a1; int a2; char* a3; int a4; } myStruct; 여기서 특정 멤버는 char* 자료 형태(예시의 a3변수)의 문자열을 지칭합니다. 이 상황에서 a3의 문자열 전체 사이즈가 10이라고 하면, 6번째 문자를 if 조건문으로 비교해서 분기를 만들어주고 싶었습니다. 그래서 검색 문자가 "1"이라고 예를 ..

[ STUDY ] 2021.04.04

[ 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
반응형