
장면 속 물체의 움직임을 측정하는 것이 optical flow를 계산하는 문제이다. 먼저 3차원에서 점이 움직일 때 motion field 는 이미지에 대한 투영이다. 이미지에는 밝기 패턴만 있기에 Motion field를 측정할 수 없다. 영상에서 밝기 패턴의 움직임을 Optical Flow라 한다. Optical Flow Constraint Equeation으로 픽셀의 광학 흐름을 제한한다? 그리고 Optical flow를 추정하기 위한 Lucas-Kanade 방법을 알아보겠다. 영상 속 한 점이 3차원 장면에서 어떤 방향으로 움직이는 것을 생각해보자. 이 움직임은 이미지 평면에 투영되어 이미지 평면에서 움직임을 만들 것이다. 이를 움직이는 지점에 해당하는 `motion field` 라고 한다. 다만..

스테레오 비전두 장의 영상으로 3차원 영상정보를 얻을 수 있음 실제 월드좌표 X를 구하고 싶다면 하나의 영상만으로는 구할 수 없다. 실제 월드좌표 X가 image plan의 점 x를 지나는 선 위에 존재한다는 것만 알 수 있다.별도 추가 카메라를 이용한다면 두 직선을 구할 수 있고 접점을 구할 수 있기때문에 X를 특정할 수 있다. = Triangulation 이것이 바로 Triangulation 의 기본 개념이다. 🔷TriangulationC와 C' 카메라에서 물체를 관찰한다고 생각해보자. 이때 사전에 두 카메라에 대한 카메라 매트릭스 P 를 알고있을 때월드좌표 X에 대응되는 x(카메라C)와 x'(카메라C') 가 있을 것이다.C와 x를 잇는 직선(ray)과 C' 와 x'를 잇는 직선의 교차점을 구하면 ..
raspbian buster(10) os 라즈베리파이 3B+ROS1 실행을 위함와이파이를 겨우 연결했다.. 우분투나 최신 라즈비안 os 같은 경우 와이파이 세세한 설정이 가능한데 옛날 os를 라즈베리파이에 설치하다보니 첫 단추부터 진이 빠진다.우선 기존 우분투에서 eduroam 와이파이에 연결하려면 TLS 터널링 클릭 -> 인증기관 인증서 불필요 체크 -> 학교 웹메일 아이디 입력 -> 비밀번호 입력 하면 연결된다.하지만 라즈베리파이 (라즈비안 10 버전?) 의 경우 해당 와이파이를 클릭하기도 전에 eduroam 와이파이가 비활성화 되어있었다. 때문에 터미널창에서 수동으로 연결하는 방법밖에 없었다. 다만 검색해도 일반적으로 만 입력하는 경우가 대다수였고 학교 와이파이같은 특수한 경우는 별로 없었다.우..

기록이 정말 중요하긴 한 것 같다. 오류가 발생해도 누군가의 기록 덕분에 해결이 되고 이런 경험을 또 겪는다면 두 번째엔 더 수월해지기 때문이다. 당연하지만.라즈베리파이 구동아무튼 터틀봇3를 라즈베리파이 3b+ 로 구동하기 위해 sd카드를 굽고 부팅을 시도했다.그런데 내가 알던 우분투나 라즈비안같은 gui 화면이 뜨지않고 검은 화면만 뜨는 것이었다. 위쪽에는 ubuntu tty 라고 떴고 cmd창만 쓸 수 있었다. 물론 문제는 없을 것 같긴한데 불편하기에 gui를 어떻게 설치하는지 알아보았다. https://velog.io/@takean 터틀봇3 구동시키면서 막힌 부분들 정리 [1]: sudo apt update 안됨https://emanual.robotis.com/docs/en/platform/turt..

ROS는 2007년 스탠포드 대학 AI LAB의 프로젝트에 사용된 인공지능 로봇의 개발을 위해 만든 Switchyard 에서 시작했다. 그리고 2008년 로봇 전문 기업 윌로우게러지가 이어받아 ROS라는 이름으로 개발하기 시작했다. 2010년 ROS Box Turtle이라는 이름으로 첫 ROS가 릴리즈되었고 새로운 버전이 이어지고 있다. 현재는 OSRF(Open Source Robotics Foundation)이 관리를 맡고 있으며 오픈 소스로 공개되어 있다. ROS1은 개발 당시 단일 로봇, 리눅스 환경, 실시간 제어 불가능, 안정된 네트워크 환경, 연구용 등과 같은 제한 사항이 있었다. 때문에 새로운 개발 환경이 요구되면서 ROS2가 개발되었다. ROS1과 비교하여 ROS2에는 다음과 같은 특징이 있..

Euclidean coordinate vs Homogeneous coordinate (평행이동 변환 예시)유클리드 좌표 상 2차원의 한 point는 실수 쌍 (x, y)로 표현된다. Homogeneous 좌표는 쉽게 말해 하나의 좌표를 추가해 (x,y,1) 와 같이 표현하는 것이다.homogeneous 좌표에서 scale은 무시되기에(x,y,1)과 (2x,2y,2)는 같은 point를 의미하며 더 나아가 (kx,ky,k) 또한 같은 point를 표현한다. 때문에 역으로 유클리드 좌표를 구하기 위해서는 (x,y,w) 형태의 좌표를 끝 자리 수인 1로 나누어 (x/w,y/w,1) 형태로 만들고 유클리드 좌표인 (x/w,y/w)를 도출할 수 있다.이처럼 2차원 공간에 대한 좌표를 투영(사영) 공간(projec..
`rotate_right` 함수rotate_right 함수AVLNode *rotate_right(AVLNode *parent){ AVLNode* child = parent->left; parent->left = child->right; child->right = parent; // 새로운 루트를 반환 return child;}parent의 left를 child라 명한다. child의 right를 parent의 left로 이동시킨다.child의 right로 parent를 이동시킨다.회전된 child 노드를 반환한다.마지막 부분을 보면 child->right = parent;기존의 child가 parent 자리로 가고 parent가 child의 오른쪽으로 가야하기에 이해가 쉬움하지만 왜 parent->lef..
">정렬 알고리즘에는 다양한 방법들이 있는데 이에 대해 알아보려고 한다.기초적인 알고리즘으로 삽입정렬, 선택정렬, 버블정렬, 퀵정렬, 힙정렬, 합병정렬 등이 있으며단순한 방법부터 알아보겠다.단순한 방법선택정렬 selection sort구현방법concept: n개의 원소를 가진 배열 list[]가 있다고 가정하자. 가장 작은 값부터 순차적으로 앞쪽으로 보낼 것이다.반복문으로 배열을 순환하며 가장 작은 값을 꺼내 list[0] 값과 교환한다.다시 정렬되지 않은 나머지 배열을 순환하며 그 중 최소값을 꺼내 list[1] 과 교환한다.이를 반복하며 n-1번 반복하면 정렬이 완료된다.#define SWAP(a, b, t) ((t)=(a), (a)=(b), (b)=(t))void selection_sort(int ..
- Total
- Today
- Yesterday
- 시계 줄
- mealy
- 북문
- 배송기간
- 문서 스캔
- 리브엠
- 교체
- f-91w
- 10만포인트
- 네이버페이
- 알뜰 요금제
- 방향장
- 경북대
- 무어머신
- 메쉬 밴드
- 알리익스프레스
- 파스타
- Liiv M
- 티스토리챌린지
- 리브모바일
- 오블완
- a모바일
- 맛집
- 밀리머신
- 할인
- 계산방법
- f-94w
- 알뜰폰요금제
- 카시오
- 카카오페이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |