분류 전체보기 28

Venv 가상환경

Python 3.3 버젼 이상부터는 venv 모듈을 내장하고 있으므로 별도의 설치 없이 가상환경 생성이 가능하다. 가상환경 생성 python3 -m venv MyEnvironment 가상환경 생성을 하게 되면 해당 위치에 'MyEnvironment' 라는 이름의 가상환경 폴더가 생성된다. 가상환경 진입 python3 MyEnvironment/bin/activate 가상환경 종료 deactivate 설치된 패키지 목록 확인 pip3 list 패키지 목록 export pip3 freeze > requirements.txt 패키지 목록 import pip3 install -r requirements.txt

Programming/Python 2022.06.30

Euler angles

Terminology Euler axis 회전의 기준이 되는 축 Euler pole Euler axis가 가르키는 방향 Euler angle Euler axis를 기준으로 한 rotation의 변화량 Sign convention clock-wise counter clock-wise (Usally used) Composition convention As matrix multiplication does not commute, order or rotation axes will affect the result Two successive rotations must be performed with different axes. There are 12 conventions for the combination of th..

Singular value decomposition

SVD는 정말 유용하게 쓰이는 matrix decomposition 기법 중 하나이다. 특히나 over-determined system의 해를 구할 때 많이 사용된다. SVD란, 어떤 square matrix A 행렬이 주어졌을 때 AUDVT로 factorization하는 과정을 의미한다. (이 때 U,V는 orthogonal matrix 이며, D는 non-negative entry를 갖는 diagonal matrix이다.) 또한 D의 대각 성분들은 descending order를 따른다. (descending order가 아닌 방법으로 factorization 하는 방법도 있지만 여기서는 항상 descending order를 따른다고 가정한다.) SVD는 non-square ..

[SLAM] ORB-SLAM

논문 링크 (↓) 더보기 https://arxiv.org/pdf/1502.00956.pdf Background ORB SLAM은 가장 대표적인 monocular SLAM 이다. ORB SLAM은 BA를 적용해서 실시간으로 동작하는 SLAM인 PTAM과 place recognition 기법인 Bag of Words, 그리고 covisibility information을 사용하여 만들어졌다. Map initialization ORB-SLAM의 map initialization 방법이다. Map initialization을 위해서는 두 개의 frame 간의 relative pose를 계산해야 한다. ORB-SLAM에서는 scene이 planar한 경우와 non planar한 경우 2가지에 대해서 모두 계산을 ..

Paper review 2022.06.18

string literal은 어디에 저장될까?

C++ 프로그램에서 string 값을 어떤 변수에 담지 않고, 곧바로 값으로 표현한 것을 string literal 이라고 부른다. 그렇다면 string literal은 어디에 저장될까? Heap memory는 일단 절대 아닐 것이고, 그렇다면 Stack 인가? 정답은 둘다 아니다.. [저장되는 위치] ○ 스트링 리터럴은 대부분 내부적으로 메모리의 읽기 전용 영역에 저장된다. ▶ '대부분'인 이유는 이 동작이 platform 마다 다를 수 있기 때문이다. ▶ 하나의 예로, 간단한 구조를 가지는 칩에서는 read-only memory segment를 지원하지 않을 수 있기 때문에 writable 할 수 있다. ○ 읽기 전용 영역에서 데이터 영역 [저장되는 방식] ○ string은 static storage..

std::string_view

String view는 C++ 17부터 지원한다. [Background] string 타입 변수를 읽기만 하고 수정하지 않는 함수가 있다고 하자. C++17 이전에는 이 함수의 parameter type을 쉽게 결정할 수 없었다. 왜냐하면 string은 char[], char*, std::string 과 같이 종류가 다양하기 때문이다. 이런 문제를 해결하기 위해서 도입된 것이 string_view type이다. [string_view] ▶ string_view는 대부분 pass-by-value로 전달한다. string에 대한 pointer와 길이만 가지고 있기 때문에 복사하는데 오버헤드가 적기 때문이다. ▶ string_view를 사용하면 함수를 호출하는 부분에서 복사 연산이 발생하지 않는다. ▶ 따라서..

[Benchmark] Passing std::string as function parameter

어떤 class의 멤버변수로 string을 넘겨주어야 할 경우, 크게 두 가지 옵션이 있다. 1. const reference로 받은 뒤 멤버변수에 복사한다. 2. value로 받은 뒤 std::move를 사용해서 멤버변수를 초기화 시킨다. 이론상 2번 방법이 좀 더 효과적이라고 생각했는데, 실제 benchmark 결과 1번이 더 빠른 것을 확인했다. Function parameter로 받아은 값을 class member variable로 설정해야 하는 경우 이 경우에는 외부의 값을 받아서 class member variable로 설정해야 한다는 점에서 특수성이 생긴다. (주로 constructor에서 이런 작업들이 일어난다) (class member variable이 어떤 데이터의 reference v..

FFmpeg 사용법

[FFmpeg 이란?] 개념 : https://wikidocs.net/78484 설명: https://www.clien.net/service/board/lecture/15601536 [FFmpeg 설치] sudo apt update sudo apt install ffmpeg -y [FFmpeg 기본 명령어 구조] ffmpeg [global_option] -i [input_path] [output_path] [options] [동영상 to 동영상] ○ 동영상 사이즈 변환 ffmpeg -i input.mp4 -vf scale=1280:960 output.mp4 -c:v libs265 -an -x265-params crf=0 [동영상 to 이미지] ○ h265 → png ffmpeg -i ./input_vid..

Programming/Tools 2022.06.12