Augmented Reality 32

Camera Calibration with Homography

카메라 캘리브레이션 대충 알고있는것처럼, 카메라가 가진 내부 파라미터와 외부 파라미터를 구하는 것을 의미한다. 여기서 내부, 외부(intrinsic, extrinsic) 파라미터가 뭔지 알아보자 내부파라미터 (intrinsic parameter) - 3차원 공간상에 존재하는 것들을 2차원 이미지 평면에 투영시키기 위해 필요한 파라미터들이다. 카메라라는 장비가 만들어지면서 가지게되는 내부적인 정보와 오차를 의미한다. 카메라의 구조는, 보통 렌즈가 있고 렌즈를 통해 CCD패널(빛이 맺혀 전기적 신호로 바뀌는 평평한 패널)에 빛이 맺히게 된다. 그럼 CCD는 빛을 컴퓨터가 이해할 수 있는 신호로 변환하고, 이것이 바로 영상이 되는 것이다. 우선, 렌즈는 구와 같이 동그란 돔의 형태를 띄고 있다, 하지만 인간은..

증강현실의 기본

어쨋든 여태 소스분석만 잔뜩하다가 갑자기 산으로 왔다 좋은 정보가 있어서 원문 : http://qtboy.egloos.com/2638750 내 느낌을 더해서 옮겨적겠다 증강현실을 처음 구현하고자 할 때 어려움을 느끼게 되는데, ARToolKit을 보고있지만 이걸 보고있어도 이게 통 무슨 소린지 OpenGL을 가지고 놀고있는 듯한 느낌인데 감이 안올 수 있다. 사실 나도 아직까지 확실하게 감을 잡지는 못했다. 하지만, 증강현실의 기본에 입각해서 모든 기술을 생각해 보면 전체 구조는 그리 복잡하지 않다. 가장 핵심은 웹캠과 OpenGL or DirectX상의 카메라를 일치시키는 것이다. 카메라를 일치시키는 작업에는 두가지가 있는데, 초점거리와 중심점 등 실제 내부 속성을 일치시키고, 웹캠이 실제 공간에서 위..

ARToolKit - 설치방법

ARToolKit 증강현실 구현 툴킷이다. SDK http://www.artoolworks.com/support/library/Installing_ARToolKit_Professional 일본에서 개발된 툴킷인데, 마커기반이다. 많은사람들이 쓰고있어서, 대중화되어있다. 나는 이미지 피쳐트래킹 기반인데, 구시대의 유물이 될 마커기반의 증강현실 툴킷을 강아지 정맥주사 실습용 증강현실 프로그램이 바로 이 ARToolKit 기반으로 만들어졌기 때문이다. - 이전 버전을 이해하기 위해 구시대의 유물이지만 설치 1. ARToolKit Win버전 다운로드 http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ Win버전을 다운받고, 2.72.1, 그리고 ..

Android 개발 시 항상 주의해야 할 점

까먹지 말고 항상 주의해야 할 것 - 기본중에 기본, 기본이 중요하다 이클립스는 항상 프로젝트 저장, Refresh와 Clean을 컴파일 할 때 마다 해줘야한다. - 안그러면 현재 수정된 코드로 컴파일 하는게 아니라 정상적이었던 이전 코드를 컴파일한다 안드로이드 폰으로 컴파일 할 때는 휴대폰 내 개발중인 어플을 항상 지우고 컴파일 해줘야한다. - 이것 역시 이전 컴파일 내용을 그대로 내보내는 경우가 있다. - 그래서 항상 개발중인 타겟 어플을 지우고 컴파일 해야 한다. 별거 아니지만 컴파일 할때마다 이걸 지키지 못하면 에러를 잡아놓고도 안잡힌것처럼 보이기 때문에 삽질을 거듭거듭하는 경우가 있다.

JNI에서 string 사용 방법

그러니까 사건의 발단은 트래킹할 이미지가 바뀔때마다 NDK-Build를 돌리는게 싫었다 - 트래킹 할 이미지가 바뀔 때마다 이미지 이름이 바뀌기 때문에 경로 수정을 해야하는데 그때마다 수정된 경로로 NDK를 새로 빌드해야했다 그래서 네이티브 메서드에서 string 인자를 받아서 트래킹할 이미지를 바꾸려고했따! 그래서 자바 : private native void renderframe(); C++ Native : JNIEXPORT void JNICALL Java_augmented_AR_Renderer_renderFrame (JNIEnv*, jobject); renderframe()의 원래 형태를 자바 : private native void renderframe(string str); C++ Native : ..

Android LOG

Android에는 뻘짓을 방지하기위한 Log클래스가 있다. 이걸 쓰면 코드가 진행되다가 어디에서 오류가 났는지 알 수 있다. http://d.android.com/reference/android/util/Log.html android.util.log 클래스에서 지원한다. Log.e() - 오류 기록 Log.w() - 경고 기록 Log.i() - 메시지 기록 Log.d() - 디버그 기록 Log.v() - 상세 메시지 기록 클래스나 메서드의 진입점이나 종료지점에 써두면 어디서 잘못됐는지 알 수 있다. 메시지형태로 남기는 형태 선언형태private static final String DEBUG = "{LOG}"; 사용형태 코드코드코드코드 Log.i(DEBUG, "error"); 코드코드코드코드 이클립스 오른..

Android NDK

9단계의 절차를 통해 Native C, .so라이브러리를 사용할 수 있게된다. 1. Android Project 작성 2. 자바 클래스 작성 3. Header 파일 작성 4. 라이브러리 생성할 소스 디렉토리 생성 5. Android.mk 설정 파일 생성 6. C 소스파일 작성 7. 소스 컴파일/공유 라이브러리 생성 8. Native Method 호출 9. 결과 확인 1. Android Project 작성 일반적인 안드로이드 프로젝트를 작성한다. 패키지 이름은 적어도 두개 이상으로 나누어져야한다. Android.AREng 등... 아무렇게나 임의로 작성하면 된다. 그러면 Android 폴더 아래 AREng 폴더 아래 자바 파일이 생성되게 된다. 2. 자바 클래스 작성 자바 클래스를 작성한다. 패키지익스플로..

Android App 구조

QCAR은 안드로이드를 기반으로 돌아가기 때문에, 안드로이드 공부를 하지 않을 수 없다. JAVA는 그렇다치고 JNI, NDK, Android, Unity 3D, OpenCV를 공부해야한다. QCAR Multitargets의 프로젝트 폴더구조다 src : 현재 개발중인 안드로이드 소스 코드 gen : 안드로이드가 자동적으로 생성한 R.java 소스 코드 libs : 라이브러리 폴더, NDK로 JNI소스를 돌리면 자동적으로 생성된다. jni : 자바 네이이티브 파일들, C, C++, Header파일이 들어있다. 이걸 NDK-build하면 .so라이브러리가 생성된다. res : 안드로이드가 자동으로 생성하는 자원 폴더 - drawable : 이미지파일 객체생성을 위한 실제 jpg와 같은 이미지나 이미지 생성..

Qualcomm AR SDK - QCAR

2011.8.16일 작성된 내용입니다. 이 점 유의해 주시기 바랍니다. - 현재 Qualcomm AR SDK는 Vuforia로 명칭이 변경되었습니다. - 이렇게 변경 된 후에는 프로그래밍을 해보지 못해 자세한 정보 전달해 드릴 수 없는 점 글을 읽으실 때 참고 하시기 바랍니다. - 아래 작성된 포스팅은 QCAR에 대한 내용입니다. QCAR SDK : Qualcomm Augmented Reality SDK 개발환경부터 만들자 깔아야할게 한두가지가 아니다 우선 한번 보자 JDK Eclipse IDE Android SDK Downloader Android ADT Android SDK platform support Cygwin Environment Android NDK 이렇게 일곱가지를 설치해야한다. 과정도 그..

Kalman Filter

워,,, 이거하나만 가지고도 책 한권이 나올정도구나 아무튼 칼만필터 비행기 위치 제어, 네비게이션, 영상처리 등 여러 분야에서 각 시스템 작동 중에 필수적으로 요구되는 주요 변수(비행기의 자세, 이동체의 위치 또는 트래킹하는 객체의 위치 등)를 예측하는데 사용하는 필터 수학적으로는 선형시스템의 상태를 예측해서 발생할 수 있는 오류를 최소화 하면서 예측한다. 선형 시스템 (Linear System) 시스템을 모델링한 수식이 선형 연산자들로 표현이 가능한 시스템을 말한다. 칼만필터는 선형시스템의 예측을 위한 필터 칼만필터가 추출된 신호에서 잡음을 제거하기 위해서는 현재 모델링하는 프로세스가 선형시스템으로 서술이 가능해야 한다. (즉, Y = aX + b같은 수식으로 표현이 가능해야 한다) 길을 따라 주행 중..