'형이하학적'에 해당되는 글 12건

  1. 2018.01.23 instrumentation reference book 3e,4e
  2. 2013.09.06 android opencv ndk
  3. 2009.06.15 kalman filter
  4. 2009.01.01 multifunction interface card TROUBLE shooting log : PCI-EK01. (1)
  5. 2009.01.01 computer setup.
  6. 2008.06.11 Introduction to Finite-Difference Time-Domain Method.
  7. 2008.01.17 definition of mass.
  8. 2008.01.17 question.
  9. 2008.01.01 Blu Laser Show.
  10. 2007.12.15 The shortest metal-metal bond yet.

instrumentation reference book 3e,4e

|

pdf

Trackback 0 And Comment 0

android opencv ndk

|



출처 : http://adppark.tistory.com/303


 본 내용의 원본 출처는 이곳 입니다!

 

 

해당 방법은 crytax NDK를 이용한 cygwin에서의 ndk-build 를 사용하는 방법과 달리 

최신 ndk를 이용하여(현재 2012년 12월 2일 기준) 이클립스 상에서 c/c++ 파일을 빌드하여 so 파일까지 만들어

이클립스 상에서 모든 것이 해결되는 방법이다.

 

(현재 기존의 안드로이드에서의 opencv 설치법이라고 나오는 방법들 중 svn에서 제공하는 소스가 더 이상 제공되지 않는듯 하다. 그래서 본인 역시 아래의 방법으로 opencv 를 사용하였다)

 

 

 

 

본 문서는 OpenCV Docs 에 있는 튜토리얼 문서를 바탕으로 작성되었다.

 

 

1. Sun JDK7

Java SE 다운로드 페이지에서 해당 OS에 맞는 JDK를 다운로드 및 설치 / 환경변수 설정을 완료한다.

 

2. Android SDK

가장 최근의 안드로이드 SDK를 설치한다. http://developer.android.com/sdk/index.html

 

OpenCV의 최소 지원 플랫폼은 Android2.2 (API 8) 이다.

공식 튜토리얼 문서에서는 Android 3.0 (API 11) 이상의 버전을 추천하고 있다.

 

3. Eclipse IDE

Eclipse 3.7(Indigo) 또는 그 이상의 버전을 설치한다.

 

4. ADT 플러그인 및 android-sdk 설치

본 문서에서는 설치과정을 생략한다.

 

======== 여기까지 자바 개발을 위한 설치 과정을 마무리 합니다.

 

 

1. NDK

C++ 코드를 컴파일 하기위해 가장 최근의 NDK를 다운받는다.

http://developer.android.com/tools/sdk/ndk/index.html

 

- 다운받은 압축파일을 풀어 C:\ 경로에 옮겨둔다. (물론 자신이 원하는 경로에 옮겨도 무관하다)

 

* 환경변수 설정 :

  - NDKROOT 새로 생성 : ndk 폴더 경로 입력

  - path 에 추가 : ndk 폴더 경로 추가 

 

 

2. CDT plugin

이클립스 안에서 C++ 코드를 컴파일 하기위해 CDT 플러그인을 설치한다.

 

Help -> About Eclipse SDK -> Installation Details

 

 

 

 

 

 

만약 최근의 ADT 플러그인을 설치했다면 이미 CDT 플러그인을 설치되어 있을 수 있다.

즉 C++ 컴파일 환경이 갖춰진 상태인 것이다.

 

 

===============================================================================================

 

 

1. 이클립스의 새로운 프로젝트 생성 및 OpenCV-2.4.3-android-sdk.zip 파일 압축해제

 

:  http://opencv.org/platforms/android.html 접속

 

 

 

- 상단 메뉴에서 Downloads 메뉴를 클릭한다.

 

 

 

 

- 여러 버젼들 중 최근 버전의 OpenCV for Android(OpenCV-2.4.3-android-sdk.zip) 다운로드 한다.

 

다운받은 OpenCV-2.4.3-android-sdk.zip 파일을 이클립스로 생성한 새로운 프로젝트 폴더 아래에 해제한다.

 

2. OpenCV 라이브러리 및 샘플소스를 Import 한다.

 

 

 

File -> Import -> General -> Existing Projects into Workspace

 

 

프로젝트 내부에 압축해제 했던 OpenCV-2.4.3-android-sdk 를 Import 한다.

 

 

 

 

import 한 프로젝트들은 무시무시한 엑박들로 우리들을 위협하고 있다.

해당 엑박은 프로젝트들의 환경설정을 통해 해결할 수 있다.

 

3. 프로젝트의 OpenCV Library - 2.4.3 에 대한 JDK 1.6 설정과 Is Library 체크한다.

 

 

 

 

OpenCV Library - 2.4.3 폴더에서 우클릭하여 Properties 메뉴로 들어간다.

활성화된 화면의 메뉴트리에서 Android 선택 후 빌드 타겟을 선택한다.

타겟 버젼은 튜토리얼 문서에 따르면 3.0 이상을 권고한다고 한다.

 

그리고 Library 체크박스에 Is Library 부분을 체크한 후 적용(Apply) 버튼을 누른다.

 

 

 

 

메뉴 트리상의 Java Compiler 메뉴에서 위 그림과 같이 1.6으로 설정한다.

설정 이전에는 1.5로 설정이 되어 있었다.

 

 

 

여기까지 하면 OpenCV의 Libary 의 오류가 사라진 것을 알 수 있다!

앞으로 OpenCV를 활용하는 프로젝트들을 만들 때 해당 Library 를 가져다가 사용하면 되는 것이다!

 

 

 

4. 다음으로는 Tutorial Sample 프로젝트들의 오류에 대해 알아보자.

기본적으로 존재하는 Sample 들은 OpenCV Library -2.4.3을 이용한 순수한 자바 프로젝트와 JNI를 포함하나 프로젝트로 이뤄져있다.

 

 

 

 

그 중 Tutorial 2 는 자바 코드만으로 이루어져 있으며

 

Tutorial 4 의 경우 jni를 포함한 프로젝트로 구성되어 있습니다.

 

 

4-1-1. OpenCV Tutorial 2 - Use OpenCV Camera 를 기준으로 환경 구성해보자.

         (case1. 자바코드로만 이루어진 경우) 

 

 

 

우선 Tutorial 2 프로젝트 폴더를 우클릭하여 Properties 메뉴로 들어간다.

그림과 같이 Target은 4.1.2로 선택하고 (3.0 이상으로 설정한다)

Library 부분에 OpenCV Library를 추가해 주기 위해 Add를 선택하여 라이브러리 추가를 한다.

 

혹시 기존에 추가되어 있던 라이브러리가 있었다면 Remove로 제거한 뒤 Open CV 라이브러리를 추가해 준다. 

 

 

 

간단하게 에러가 사라졌고 Tutorial 2 샘플이 무사히 실행되는 것을 볼 수 있다.

 

 

4-2-1. JNI 코드를 포함한 OpenCV Tutorial 4 - Mix Java+Native OpenCV 프로젝트의 환경설정을 해보자.

         (case2. JNI 코드를 포함한 경우) 

 

 

4-2-2. 문제는 디폴트로 잡혀 있던 NDK 라이브러리경로와 OpenCV SDK 경로 문제로 인한 에러다.

 

 

 

 

 

동일하게 프로젝트 선택하여 우클릭을 통해 Properties 메뉴로 들어간 후 그림과 같이 설정한다.

 

 

 

모듈 생성을 위해 cygwin을 이용하지 않고 이클립스에서 바로 c/c++ 파일에 대해 바로 빌드하기 위한 부분이다.

C/C++ Build 메뉴트리를 선택하신 후 그림과 같이 설정한다.

${NDKROOT}/ndk-build.cmd

(위의 환경 변수를 제대로 설정했다면 ${NDKROOT} 를 사용 가능하다)

 

환경변수를 따로 지정하지 않았다면 ${NDKROOT} 부분을 위에서 다운받았던 NDK 폴더 경로를 입력해 주면 된다.

 

 

 

 

메뉴 트리상의 C/C++ General 아래 Paths and Symbols를 선택 후 Includes 탭에 GNU C++ 메뉴를 선택 한다.

 

Include할 라이브러리들의 경로가 적혀있는데 최근 ndk 버전의 경우 

ndk/sources/cxx-stl/gnu-libstdc++/ 아래에 include가 있지 않고

버전 별 폴더가 추가되어 존재한다.

 

그렇기 때문에 디폴트로 잡혀 있던 경로를 수정해야한다.

 

 

 

4개의 파일에 관한 경로를 본인 설정에 맞게 수정하면 된다.

(이곳 역시 위에서 NDK 폴더에 관한 환경변수 설정을 정상적으로 했다면 ${NDKROOT} 는 수정하지 않아도 된다)

 

 

 

4-2-2. Android.mk 파일에 기재된 경로를 수정한다.

 

 

 

 

수정 전의 Android.mk 파일의 추가할 OpenCV.mk 파일의 경로 이다.

앞서 프로젝트 내부에 OpenCV SDK를 압축해제 했으므로 해당 경로를 변경해야 한다.

 

 

 

OpenCV.mk 파일의 절대경로로 변경한 결과이다.

 

 

 

 

모든 에러가 없어졌고 이전에 설정한 ndk-build.cmd 때문에 자동으로 모듈까지 생성된것을 확인 할 수 있다.

 

 

 

* 혹시 위 내용까지 모두 수정했음에도 불구하고 엑박이 사라지지 않았다면 추가적으로 AndroidManifest.xml 파일을 확인해 보자.

 

 

 

해당 파일에서 android:minSdkVersion = "8" 이 제대로 설정되어 있는지 확인하면 된다. 8 이하의 숫자가 입력되어 있는 경우 실행이 불가능 하다. 8 이상의 숫자로 변경하도록 한다.

 

 

 

 

이렇게 하고 나면 위와같이 무사히 실행되는 결과화면을 마주할 수 있다!!

나머지 샘플 튜토리얼들도 같은 방법으로 엑박을 제거할 수 있다!

 

 

5. Android OpenCV 튜토리얼을 마치며...

 

본인 역시 해당 환경설정을 하면서 엄청난 삽질의 시간을 보냈다.

처음 해보는 openCV 에 android 라는 제약까지 걸리고나니 막막하기 그지 없었다.

cygwin 의 삽질을 지나 해당 내용의 포스팅을 찾아 따라하면서도 NDKROOT 와 같은 환경변수에 대한 설명들이 없었어서 또 한참을 해멨었다.

 

그랬기에 본인도 기억할 겸, 혹은 본인과 같은 고충을 격고 있는 사람들이 보다 쉽게 해결 할 수 있기를 바라며,

본 포스팅의 원본 포스팅 인 내용에 좀 더 세부적인 사항들을 추가하여 포스팅 하게 되었다.

 

어찌되었든 안드로이드에서 OpenCV 를 사용하고자 하는 초보자분들이!

본인같은 삽질의 시간을 거치지 않고 openCv 를 쉽게 시작하였으면 하는 바램이다.

Trackback 0 And Comment 0

kalman filter

|
An Introduction to the Kalman Filter
Greg Welch
1
and Gary Bishop
2
TR 95-041
Department of Computer Science
University of North Carolina at Chapel Hill
Chapel Hill, NC 27599-3175
Updated: Monday, July 24, 2006
Abstract
In 1960, R.E. Kalman published his famous paper describing a recursive solution
to the discrete-data linear filtering problem. Since that time, due in large part to advances
in digital computing, the Kalman filter has been the subject of extensive research
and application, particularly in the area of autonomous or assisted
navigation.
The Kalman filter is a set of mathematical equations that provides an efficient computational
(recursive) means to estimate the state of a process, in a way that minimizes
the mean of the squared error. The filter is very powerful in several aspects:
it supports estimations of past, present, and even future states, and it can do so even
when the precise nature of the modeled system is unknown.
The purpose of this paper is to provide a practical introduction to the discrete Kalman
filter. This introduction includes a description and some discussion of the basic
discrete Kalman filter, a derivation, description and some discussion of the extended
Kalman filter, and a relatively simple (tangible) example with real numbers &
results.
1.
welch@cs.unc.edu, http://www.cs.unc.edu/~welch
2.
gb@cs.unc.edu, http://www.cs.unc.edu/~gb


Trackback 0 And Comment 0

multifunction interface card TROUBLE shooting log : PCI-EK01.

|
한국의 www.daqsystem.com 에서 나온 저렴하고 훌륭한 실험용 인터페이스 카드인 PCI-EK01(B) 모델 사용 상 발생한  트러블 슈팅 로그.

1. 첫 트러블.

(클릭하면 크게 보입니다)

첫 트러블은 컴퓨터 멀쩡히 잘 사용하다가, 어느날 PCI-EK01로 프로그램 짤 일이 있어서 돌리다가 발생한 오류이다. 컴퓨터 업글한지 얼마 지나지 않아, 새로운 컴퓨터에서는 처음 실행시켜 보는 날이었다.

사진을 클릭하여 보면 대화창의 상단에 PCItest, 내용은 error to open driver 라고 뜬다. 드라이버를 설치하지 않았을때 나오는 메시지와 똑같다. 여기서 확인을 클릭하면 PCItest가 실행되는데, 정상적으로 동작하지 않는다.

이 이유에 대해서는 원인을 알 수 없다. 조금 다른 사양의, PCI-EK01이 모두 설치된 두 대의 컴퓨터에서 같은 메시지를 뜨는데, 정확이 무엇때문인지는 알 수 없다. 물론 장치관리자에서 드라이버는 잘 설치된 상태이다.

만약 여기서 드라이버를 지우고 다시 설치하면, 경로를 한 번 더 묻는 특이한 현상이 나타난다.

(참고 : 컴퓨터의 대략적인 사양은, 첫번째 컴퓨터 : 인텔 Q6600 CPU, intel p35 보드, 두 번째 컴퓨터 ; 인텔 Q9550 CPU, intel X48보드 이며, 모두 XP SP3, VS6.0과 VS2008 이 설치된 컴퓨터이며, VS의 서비스 팩은 깔려있지 않았으며, 드라이버 설치와 윈도우 업뎃은 잘 되어 있었다)

이에 대한 원인은 아직 불명확하다.

위의 두 번째 컴퓨터에서는 보드에 SMBUS enable/disable 점퍼가 있어서, default가 disable였는데, enable로 해 주고, 바이오스 설정에서도 bus mastering을 enable로 해 주고, OS와 응용 프로그램들을 재설치하니 문제는 사라졌다.

아마도 add-on카드가 많이 설치되어 있어서 충돌이 난 것이 아닐까 추측하는데, ad-on카드가 없는 첫번째 카드에서도 같은 문제가 발생하여 정확한 이유를 알 수가 없었다.

몇가지 추측해 볼 수 있는 것은, 바이러스?(avast백신 사용중), 보드 내장 장치간의 IRQ충돌, SMBUS mastering의 문제, 또는 드라이버 커널의 문제??.... 등등이지만, 가장 강력한 오류 원인으로 생각되는 것은 OS나 개발 환경을 만들어 낸 M$의 잘못이 있는 것으로 추측된다.

2. 새로운 트러블과 그 해결.

어쨌거나, 위와 같은 상황이 되어 해결할려고 하루 정도 생각해 보고, 더 생각하다가는 완전히 OS를 엎고 새로 설치하는 것이 빠르겠다 싶어서 '두 번째' 컴퓨터의 OS를 새로 설치해 보았다.

설치 순서는 다음과 같다.

모든 add-on카드는 장착 상태로 윈도우를 설치하였다.

1. XP SP3 설치.

2. 보드 칩셋 드라이버, 랜 드라이버, 사운드 드라이버, PCI-EK01 드라이버 설치, 기타 add-on카드 드라이버를 설치. 이후 장치관리자에서 모든 장치가 잘 잡혀 있는지 확인.

3. 윈도우 업뎃 수행. 업뎃 할 것이 없을때 까지 수행(닷넷 프레임워크 등)

4. VS6.0 enterprise edition을 설치. 이후 VS6.0 service pack5를 설치(버전, 언어선택주의)
(service pack : http://www.microsoft.com/downloads/details.aspx?FamilyID=E9411283-C8AD-4283-8D74-3D6EFD917644&displaylang=ko )

5. windows server 2003 sp1 platform SDK를 설치한후, 아래처럼 include와 library의 경로 설정을 해 주며, 최상단에 위치시킨다(버전, 언어선택주의)
(SDK : http://www.microsoft.com/downloads/details.aspx?familyid=D8EECD75-1FC4-49E5-BC66-9DA2B03D9B92&displaylang=en )

(클릭하면 크게 보입니다)


6. PCI-EK01구입시 같이 온 CD로 ntgraph.ocx파일 설치(read me 폴더)

이후 실행해 보았으나, 다음과 같은 에러가 났다.

(클릭하면 크게 보입니다)

이 에러의 문제 역시 잘 알 수 없으나, 어쨌든 해결이 된다.

여기서 특이한 점은 컴파일이 되나, 비주얼 스튜디오 내에서 실행이 안된다. 물론 컴파일 되었으므로, 디버그 폴더나 릴리즈 폴더에 있는 실행 파일들은 모두 실행이 되며, 정상적으로 동작한다(컴파일 하기 전 디버그 폴더와 릴리즈 폴더를 삭제한 후에 컴파일을 하였다)

역시 망할 M$.....

계속하여,

7. VS2008 pro 영문판을 설치한다.

8. VS2008 sp1을 설치한다. 시간이 꽤 걸린다(언어 선택에 주의, 영문판이므로 언어선택을 english로 바꿈)
(service pack1 : http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=en )

9. 이후 실행하면, VS6.0에서 PCItest의 워크스페이스를 열면, ocx파일이 없다는 에러가 뜬다. 다시ntgraph.ocx 를 설치한다.

이제, VS6.0에서나 VS2008에서나 아래와 같이 정상적으로 컴파일이 되고, 실행이 되며, 아무 문제 없다.

약간의 warning이 뜨는데, 형변환으로 인한 문제인 듯 하다.

(클릭하면 크게 보입니다)


이러한 단순 노동으로 허비한 시간들이 무척 아쉽다. 그러나 이러한 일을 미루다 보면, 더 일은 커지게 마련이고, 결국 해야한다.

이런일은 빨리 해치우는 것이 가장 빠른 방법이다.

Trackback 0 And Comment 1

computer setup.

|

컴퓨터 셋업 순서.

컴퓨터 마다 다르나 일반 싱글 CPU의 general purpose 데스크 탑 PC를 기준으로 한다.

0. 하드웨어 설치 : 여러가지 IO장치가 많을 경우, 편의를 위해 한 번에 조립한 후 시작한다. 먼저 조립후 보드 표면의 각종 점퍼들의 설정에 유의하며, 커넥터가 빠진 곳이 없는지 확인한다. SMBUS to PCI/PCIe, 내장 사운드 장치, 내장 랜, 내장 IDE장치의 enable/disable 점퍼가 있을 수 있으니 유의한다. SCSI HDD를 사용할 경우, 윈도우를 C드라이브에 설치하기 위해 SATA하드 케이블을 빼 놓는다.

1. BIOS 세팅 : SATA 설정과, 각종 IO 설정, CPU 설정(C1 state disable, themal management 등), bus mastering 설정등을 주의 깊게 한 후, 부팅 장치를 첫번째를 광학 드라이브로, 두번째를 HDD(SCSI HDD)로 한다.

2. OS설치 : windows XP SP3 설치한다(이후 조각모음)

3. OS 설치 완료한 후 끄고, SATA하드등을 연결한 후, 부팅한다. SCSI 장치와 HDD들을 설정한 후, 디바이스 파라미터등을 설정한다.

4. 보드 드라이버를 설치한다. 칩셋 드라이버는 SMBUS 드라이버이므로 매우 중요하다(조각모음)

5. 이제 남은 드라이버는 VGA카드 드라이버, 랜드라이버, 사운드 장치 드라이버, 기타 add-on장치의 드라이버 등이다. 남은 드라이버 설치 순서는 임의적으로 해도 되나, 그래픽 카드 드라이버를 먼저 설치하는 것이 일반적이다. 그리고, 랜과 사운드(내장 또는 PCI슬롯 장치)를 설치한다(조각모음)

6. 장치관리자에서 모든 장치가 정상적으로 작동하는지 확인한다.

7. 이제 랜이 작동하므로, 윈도우 업뎃을 실행한다. 사용자 지정 설치를 선택하여 필요없는 것은 설치 하지 않으며, 반복적으로 수행하여 업뎃 목록이 없을때까지 수행한다(조각모음)

8. DAEMON tool 같은 가상 드라이버를 설치한다.

<재부팅을 요하는 설치 프로그램의 경우, 가능하면 CD나 DVD를 이용한다. 이미지 파일을 이용한 설치 시 재부팅 시 문제가 발생할 수 있다. VS6.0의 경우 그러한 문제가 발생하는데, 다시 setup파일을 실행하여 문제 없이 작동 되었다.>

9. VS6.0 professional 또는 enterprise를 설치한다. 개인 사용자는 professional을 추천하며, MSDN까지 같이 설치한다(조각모음)

9. VS6.0이 실행되는지 확인 후, VS6sp5 서비스 팩을 설치한다(조각모음)

10. 윈도우 업뎃을 수행한다(조각모음)

11. Windows server 2003 SP1 platform SDK를 설치한다(조각모음)( http://www.microsoft.com/downloads/details.aspx?familyid=D8EECD75-1FC4-49E5-BC66-9DA2B03D9B92&displaylang=en )

12. VS2008을 설치한다. 영문판 또는 한글판 버전에 유의한다(조각모음)

13. VS2008을 수행하여 잘 되는지 확인한다.

14. VS2008 service pack을 설치한다. 언어별 버전에 따라 설치가 안될 수 있으니 버전 선택에 유의한다. 설치시 시간이 약간 걸리는 편이다(조각모음)

15. PCI-EK01 사용자의 경우 OCX파일을 설치한다.

16. 윈도우 업뎃을 수행한다. 이때 오피스 업뎃등 필요치 않은 파일이 나타날 수 있으니 사용자 지정 설치로 한다. 다만 framework 3.0 x86 언어팩은 설치되지 않는다.







Trackback 0 And Comment 0

Introduction to Finite-Difference Time-Domain Method.

|

You can calculate the properties of water, but it makes so much more sense just to measure them.
- Lev Landau


Trackback 0 And Comment 0

definition of mass.

|

form Chemistry, Zumdahl, 6ed. :

질량(mass) : 물체의 운동 상태를 변화시킬 때 물체가 나타내는 저항의 척도이다.(a measure of the resistance of an object to a change in its state of motion)



from wiki :

Mass is a fundamental concept in physics, roughly corresponding to the intuitive idea of "how much matter there is in an object". Mass is a central concept of classical mechanics and related subjects, and there are several definitions of mass within the framework of relativistic kinematics (see mass in special relativity and mass in General Relativity). In the theory of relativity, the quantity invariant mass, which in concept is close to the classical idea of mass, does not vary between single observers in different reference frames.

In everyday usage, mass is more commonly referred to as weight, but in physics and engineering, weight means the size of the gravitational pull on the object; that is, how heavy it is, measured in units of force. In everyday situations, the mass and weight of an object are directly proportional to each other, which usually makes it unproblematic to use the same word for both concepts. However, the distinction between mass and weight becomes important:

  • for measurements with a precision better than a few percent, due to slight differences in the strength of the Earth's gravitational field at different places
  • for places far from the surface of the Earth, such as in space or on other planets




Zumdahl 화학 교과서에 나와 있는 질량에 대한 설명이,
지금까지 들어본 질량에 대한 설명 중 가장 효과적인 설명이라는 생각이 든다.
위키에 나온 내용은 정의로써 원론적이며 핵심적인 내용으로 설명되어 있다.

Trackback 0 And Comment 0

question.

|

"원소"와 "원자"의 정의와, 차이점은?
어떻게 설명할지?

Trackback 0 And Comment 0

Blu Laser Show.

|
확대

405nm blu laser and cylinderical lens(acryl)
ray path가 보인다.
산란도 되지만, 흡수로 인한 것. 스토크스 트랜지션.
Trackback 0 And Comment 0

The shortest metal-metal bond yet.

|

원문 :



번역 : office 2007 file.


번역의 신뢰성은 낮음.

Trackback 0 And Comment 0
prev | 1 | 2 | next