본문 바로가기

전체 글

(182)
[개념] Fundamental matrix 와 Essential matrix Fundamental matrix 와 Essential matrix 는 multi-view camera system 에서 나오는 개념이다. Fundamental matrix : Calibration 돼 있는 Camera 들이 있을 때, 3차원 공간상에 있는 점 P를 두 카메라가 바라본다면 위와 같이 표현될 것이다. 이 때 왼쪽 평면에 투영된 Y^u_p 가 오른쪽 평면에 어디로 투영될 지를 결정하는 결정하는것이 fundamental maxtrix 이다. Y^u_p 는 source view 에서 epipolar line 위에 있는 한점으로 투영되는데 이를 유도하는 과정과 수식은 링크에서 확인하자. Essential matrix : Essential matrix 는 Calibration 된 카메라들 사이의 관..
[동기부여] 명언 it's what you do in the dark that puts you in the light
[github] git revert를 이용해 커밋되돌리기 git을 관리하다보면 잘못된 코드를 commit해서 고치고 싶을 수 도 있고, 나중에 지나고 보니 버전을 예전버전으로 되돌려서 다시 작업을 시작해야하는 경우도 있다. 이럴 때 필요한 명령어는 git reset과 git revert가 있다. 그러나 git reset은 커밋한 내용을 아예 삭제시켜버리기 때문에 되돌아올 수 없는 강을 건너는 것이다. 따라서 원격저장소로의 git reset은 허용하지 않고 있으며 이 명령어는 굳이 추천하고 싶지는 않다. 따라서 그럼 남은 명령어는 git revert ! 이 명령어는 정확히 말하자면 과거로 되돌아가는것이 아니라, "commit한 내용을 취소하는 것" 이다. 또한 내가 이 커밋을 취소했다는 이력이 남고, git revert를 사용하기 전 코드기록도 남기때문에 안전하..
[파이썬 에러] cv2.error: opencv(4.5.2) :-1: error: (-5:bad argument) in function 'circle' > overload resolution failed: > - layout of the output array img is incompatible with cv::mat (step[ndims-1] != elemsize or step[1] != elemsize*nchannels) > -.. python에서 좌표 몇개를 cv2 라이브러리를 이용해서 간단히 plotting 하려고 했으나 다음과 같은 에러가 발생했다. cv2.error: opencv(4.5.2) :-1: error: (-5:bad argument) in function 'circle' > overload resolution failed: > - layout of the output array img is incompatible with cv::mat (step[ndims-1] != elemsize or step[1] != elemsize*nchannels) > - expected ptr for argument 'img' 나 같은 경우에는 아래의 코드에서 문제가 발생했다. # setting image display = images..
[파이썬 에러] UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. 나는 conda 로 각기 다른 코드를 각기 다른 환경에서 실행한다. 그런데 어떤 깃허브로 받아서 돌리던 코드에서 모델의 중간 feature 를 시각화 하고 싶어서 matplotlib 를 이용하여 plt.show()를 했으나 다음과 같은 에러가 발생했다. UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. plt.show() 다른 사이트들을 참고하여 이 문제를 해결하려고 했으나 사이트에서 언급한 바에 따르면 "가상환경 라이브러리의 의존성 문제" 가 원인인듯 했고 이를 해결하기 위해 이 라이브러리를 설치해라.. 이걸 저렇게 바꿔라 등등의 솔루션이 나왔지만 해봐도 문제가 해결되지..
[파이썬] 피클 pickle 파일 읽기, 쓰기 딥러닝 공부를 하며 코드들을 다루다 보면 피클 형식으로 저장되어 있는 데이터를 불러오거나 데이터를 피클 형식으로 저장해야 하는 경우가 더러 있다. 그렇다면 피클 pickle 이란 무엇일까? 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 파일로 저장하는 것을 말한다. 이 때 원하는 객체 자체를 바이너리로 저장해놓는 것이고 필요할 때 불러오기만 하면 되기 때문에 속도가 빠르다는 장점이 있다. 각설하고 피클 사용법은 아래와 같다. import pickle my_data = ['a','b','c'] ### 피클 파일로 저장할 때 ### with open("data.pickle","wb") as fw: pickle.dump(my_list, fw) ### 피클 파일 불러오기 ### with open("data.p..
[python 문법] filter 사용법 filter result = filter(lambda x : "A", "B") B 에서 가져온 값 중 A를 만족할 때 (true가 되는) 값들만 가져온다. 예제를 살펴보자. target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = filter(lambda x : x%2==0, target) print(list(result)) target이라는 리스트를 가져와서 x%2==0 를 만족하는 값들만 가져온다는 문법이다. 즉, target 중에서 짝수만 가져온다는 말. 결과는 다음과 같다. [2, 4, 6, 8, 10] 위의 예제에서 "A"조건이 항상 True 이게 만들어보자. target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = filter(l..
[좌표계 개념] 연구에서 사용하는 좌표계개념 정리 Computer vision task를 다루면서 Data loader를 만들다보면 월드좌표계, 카메라좌표계, 이미지좌표계 개념을 잘 알아야 함을 뼈저리게 느낀다. 따라서 나중에 혼동을 방지하기 위해 이 글을 정리한다. GT를 카메라좌표계상에서 정의된 KP라고 하면 모델은 추가정보 없이 이미지만 입력받고서 카메라좌표계상의 KP를 알아낼 수 있을까? 대답은 No. 모델이 받는 input 이미지는 다음과 같이 생성된다. world 좌표계상의 좌표 -> (카메라 외부 파라미터) -> 카메라 좌표계상의 좌표 -> (카메라 내부 파라미터) -> image 좌표계상의 좌표 -> (bbox crop) -> cropped image 좌표계상의 좌표 -> (resize) -> cropped, resized image 좌표..