ASIC SoC2009. 7. 13. 20:50

(0) 동기


   최근에 작은 프로세서에 대해서 검토해 봤습니다.
   조건은
   - 작아야 하며,
   - 그래도 C가 지원되에어 하며
   - AHB 정도는 나오거나 쉽게 붙을 수 있어야 한다
   - 소스 코드를 구할 수 있어야 하며
  - 라이센스에서 GPL이 없는 것이어야 한다는 것입니다.
 
   좀 조건이 까다로운가 싶기도 하네요.. 하지만
  저런 조건이 되어야 이리저리 사용할 수 있습니다.

  이리저리 찾다가 생각보다 작은 프로세서 하나를 찾았습니다. ZPU입니다.
  잘 아시겟지만, 오픈코아에 있는 프로세서 입니다.
  사실 저도 거기에 있는줄은 알았지만,  오픈코아의 특성상 반신반의 하였습니다.
  엔지니어의 원칙,
       내가만든 코드도 안믿는데 남이 만든 코드를 믿겠느냐. 라는.. 불신론에 가까운 생각을..
  가지고 있어서..
  우연히 다른 프로젝트를 검토하다가 외국 모 회사의 개발 환경을 검토하는 중에 해당 프로세서를 사용한 예제를 주고 있는 것을 발견하고  유심히 한번 보았습니다.
 

(1) 라이센스


  GPL 라이센스 문제는 생각보다 복잡합니다.
  사용상에 아무런 제약이 없지만, 문제는 링크된 모든 코드를 오픈해야 한다는 점 때문입니다.
  프로그램상의 링크된 코드를 하드웨어로 재 해석한다면 붙어있는 모든 IP를 의미합니다.
  - 아직 이부분에 대해서는 판례나 정보가 정확하게 정의된 것이 없어서 구체적으로 어떻게까지
    공개되어야 하는지 명확하지가 않습니다.
    인터넷에서도 이에 대해서 많은 토론을 진행하고 있습니다.

  개인으로 할때야 아무런 문제가 없지만
  회사차원에서 할 때에는 이런 GPL이 적용된 코드를 사용하면,
  자사 설계 아이피를 모두 오픈해야 하는 곤란한 문제가
  발생합니다.  그래서 GPL 라이센스가 붙은 IP를 사용하는 것은 상당히 조심스러워집니다.

  예전에 OpenCore 프로세서도 발표는 GPL로 하였지만, 저자가 적용한 라이센스의 의미는 모두 사용하라는 것이지 모두 공개하라는 의미는 아니였다는 글을 포스팅한적도 있습니다. 하지만, 저자가 회사를 만들면서, 공개에 관련된 모든 글들이 슬그머니 사라지면서, 그 글도  슬그머니 사라져 버렸죠.

  스팍 T1을 잘라서 만든 SRISC도 이 GPL을 따라갑니다.
  - 만드신 분들도 크게 돈을 목적으로 하지 않는것 같아서  그분들은 크게 문제는 없습니다만,...

  그래서 최소한의 조건은 BSD라이센스여야 한다는 점입니다.
  - 사용은 공짜로 , 링크된 부분은 공개는 안해도 되는 라이센스 조건입니다.

  이번에 찾은 ZPU는 Architecture는 GPL이어서 만약 아키텍쳐에 대한 수정이 가해지면
  모두 공개하여야 합니다. 대신에 코드에 대해서는 BSD라이센스를 사용하여서 사용상에
 큰 문제인 링크된 코드를  오픈하라는 문제는 없어지게 됩니다.
 

(2) 소스 코드 다운 받기


아래 사이트에서 다운 받을 수 있습니다.
http://opensource.zylin.com/zpudownload.html

툴은 리눅스와 윈도우/시그윈 버전을 다운 받을 수 있습니다.

프로세서 소스코드는

git clone git://repo.or.cz/zpu.git

으로 다운 받을 수 있습니다.

툴 체인은 SRC로도 다운 받을 수 있습니다.
- 제 경우 맥을 쓰므로 새로 빌드를 하였습니다. 이것은 다음 번에 정리하도록 하겠습니다.

툴 체인은 toolchain 폴더로
프로세서는 zpu 폴더에 다운 받게 됩니다.

(3) ZPU Processor 폴더 구조


zpu /misc /arm7
/ddrsdram
/wishbone
/wip (EMPTY Folder)
/zpu /docs
관련 문서를 보관하는 폴더입니다.
zpu_arch.html 파일을 읽으면 됩니다.
하위 폴더로 presentation이 있는데, PT 자료를 포함합니다.
/hdl
프로세서 HDL 코드가 들어 있습니다.
자세한 폴더 내용은 다음 절에서 정리합니다.
/roadshow
예제 프로그램들이 들어 있습니다.
/sw
시뮬레이터와 간단한 샘플 예제가 들어 있습니다.

(4) ZPU Architecture

ZERO Operand 아키텍쳐입니다.
쉽게 말씀드리면  JAVA 프로세서와 같은 Stack Based CPU입니다.
따라서 명령어는 8비트로 됩니다.


위의 코드를 보면 5를 스텍에 넣고
loadsp 20으로 하여서 SP+20의 값을 읽어서 스텍 최상층에 넣습니다.
다시 ADD 명령으로 2개의 최상층 스텍 값을 읽어서 더한 후에 다시 스텍에 넣습니다.

스텍에 계속 읽고 쓰므로 느리긴 하지만, 나름대로, 간편한 구조여서 프로세서의 크기를 줄이는데
일조를 합니다.

이런 아키텍쳐이므로 수학연산을 하기위해서 쓰는 것은 좀 무리가 있겠습니다.
다만, 간단한 제어용으로 사용하는데에는 좋을 것 같습니다.

사실 요즘은 맘만먹으면 구할 수 있는 프로세서가 많이 있습니다.

Altera의 NIOS,
Xilinx의 picoblaze등등

그런 상황에서 ZPU의 장점이 뭔지 생각해봐야 할 부분인듯 합니다.

좋은 점은 아주 작으므로, 초기 시스템 세팅에 필요한 동작을 수행할때 사용하면 좋을 것 같습니다.
최근에 모 프로젝트에 8051을 검토하였습니다만, 이정도 급이면 쓸만할 것 같습니다.

자료를 보면 eCOS도 포팅되어 있기 때문에 적당한 수준의 제어용 어플리케이션까지는
응용이 가능할것 같습니다. - 다만, uCOS-II가 더 낳지 않을까 생각합니다.

이런 프로세서가 타겟으로 하는 종류의 어플리케이션에서는 취향 문제가 더 크게 작용하게 마련입니다.
어떤 프로세서를 쓰더라도 다른 사람이 크게 관심을 가지지 않기 때문이죠

- 다음번에는 ZPU의 변형에 대해서 정리해보겠습니다.

Posted by GUNDAM_IM
Life is ..2009. 7. 8. 14:34
대박제품 생각하고, 정리는 안하기
   오늘도 번득이는 대박 제품이 하루에도 몇개씩 떠오르고 사라지지만..
   하여튼 열심히 생각해보기
   정리는 누군가가 알아서 해주겠지 하면서 안한다.
   보드나 아이피 블럭도를 열심히 그리고,  그렸다는 것 조차 때때로 잊어버린다.
   어쩌다 보면, 예전에 그린것을 다시 그리고, 같은 폴더에 복사하는 경우가 발생한다.
   그럴때 드는 생각은, 흠.. 누굴까  이렇게 멋진것을 나보다 먼저 생각해 놓았네 하는
   느낌이랄까..

칩 매뉴얼 보기
  다른 분들은 어떻게 만들었나 구경하면서 다니기
   
신제품 개발에 필요한 정보 모으러 다니기
   업체들 미팅하면서 정보 모으기
   아는 사람들에게 돌아가면서 하루 20분 이상 통화하기

심심할때 코드 보기
   검토라고 하기엔 좀 부족한듯 하여서 "보는것" 이란 용어를 사용했다.
   밤에 집에서 어두운 곳에서 숨어서 몰래 보기..  
   대체 왜 이렇게 해야 하는거지 ??
   어제는 SDI , HD-SDI  관련 코드를 보았다. 흠.. 굳이 이런 코드 사용할 바에는 그냥
   .. 만들어버릴까..
   
책 읽기 (만화책 포함)  
  책을 사서 읽지는 않고 자꾸 쌓아 두고 있다.
  자꾸 자꾸 쌓여 가는 책의 압박에서 벗어나야 하는데
  하여튼 그래도 열심히 봐야 한다는 강박관념이 들고, 그것에 만족하는지도 모르겠다.
  그냥 사는것에 만족하는지도...

논문 읽기
  아주 심심할때 아침에 일찍 회사에 나와서 논문 하나 보기
  점점 일주일에 하나 보기도 힘들어간다.

물리치료 받기
  2주전 뒤에서 받힌 뒤에.. 목에 무리가 계속 온다.
  머리가 큰 탓도 있는듯, 쉽게 낳지 않는다.
  하루에 한번은 물리치료 받으러 다녀야 하는 신세이다.

정식 코딩을 해본적이 꽤 오래전이라는 생각이 문득 들어서
요새 하는 일들을 정리해 보았습니다.

'Life is ..' 카테고리의 다른 글

SIGGRAPH [3]  (1) 2009.08.12
SIGGRAPH.....  (0) 2009.07.31
바다낚시 가다  (0) 2009.07.03
멋진 집 사진 모음  (0) 2009.06.29
가족의 강원도 동해안 일주 여행기  (0) 2009.06.01
Posted by GUNDAM_IM
Embedded2009. 7. 4. 22:42
H.264 SVC 관련 자료를 찾으면서 몇가지 쓸만한 사이트를 올립니다.  
다른 사이트도 찾으면 올리도록 하겠습니다.

1. 테스트 스트림 사이트

http://wftp3.itu.int/av-arch/jvt-site/bitstream_exchange/SVC/

SVC  테스트 데이터를 다운 받을 수 있는 사이트입니다.



2.  RTP Payload Format for SVC Video


Fraunhofer에서 만든 SVC Video의 RTP Payload format과 설명을 해주는 사이트입니다.

http://tools.ietf.org/html/draft-ietf-avt-rtp-svc-18

이 싸이트는 올해 9월까지 유지한다고 하네요
그다음엔 어찌될런지는 모름..



'Embedded' 카테고리의 다른 글

MPEG 1/2 Reference Site  (0) 2009.12.13
Eclipse + eCOS =??  (0) 2009.11.23
DM6467 Develop Board  (2) 2009.06.25
FFMPEG /X264를 MAC에서 빌드  (0) 2009.06.14
H.264 SVC 다운로드 커맨드  (0) 2009.06.12
Posted by GUNDAM_IM
Life is ..2009. 7. 3. 11:30
회사 동료들과 워크샵을 빙자한 바다 낚시를 갔습니다.

난생 처음 바다 낚시를 가서..

사용자 삽입 이미지
 타이타닉 포즈를 취하고 있는것이 접니다.
 잘 찍었어야 하는데 영..  찍사가 잘 신경을 안써주었네요

 
사용자 삽입 이미지

 낚시는 성공적이었습니다.
 
 사진으로는 못찍었지만, 자연산 광어 한마리를 낚았습니다.
 
 당연히 회사 출조회이기 때문에 당연히 1등 낚시 상금을 걸었습니다.
 우승 조건은 가장 긴 고기를 잡는 사람을 1등으로 하자고 정했습니다.

 그래서 결과는 [자연산] 광어를 낚은 저보다  [무지렁이] 장대를 낚은 사람이 1등을 했습니다

 약간 억울 하기도 했지만, 어쩔 수 없고요 다음 부터는 잡은 고기의 가치순으로 하도록 해야 하겠습니다.
 자연산 광어는 그자리에서 해체되어서 먹었습니다. 흠..
 맛이 틀리긴 틀린듯.. 횟집에서 먹는것 보다는 조금 더 쫄깃한 느낌이었습니다.

건담.

'Life is ..' 카테고리의 다른 글

SIGGRAPH.....  (0) 2009.07.31
요즘 하고 있는 일들..  (0) 2009.07.08
멋진 집 사진 모음  (0) 2009.06.29
가족의 강원도 동해안 일주 여행기  (0) 2009.06.01
이번에는 꼭.. 성공하길..  (0) 2009.01.05
Posted by GUNDAM_IM
Life is ..2009. 6. 29. 08:34
언젠가,
살고 싶은 집의 사진입니다.

만들어서 살고 싶긴 한데 그전에  SHOW ME THE MONEY 를 외쳐야 할 듯 합니다.
 
개인적으론 첫번째 집 사진과 마지막 집 사진이 제일 좋습니다.

사소한 남은 문제는 어떻게 돈을 버느냐 뿐이군요. (^^)

사용자 삽입 이미지

 산속 / 숲속에 있는 호젓한 집..
 방충망만 확실하면 사는데 좋을 듯 합니다.


사용자 삽입 이미지

전망이 좋을 것 같은 집입니다.
우리나라에서는 대관령 정도면 저런 풍경이 나올 듯 합니다.


사용자 삽입 이미지
주변의 풍광이 문제이긴 합니다만
집 자체로는 좋을 듯 합니다.


사용자 삽입 이미지
주변의 경치와 어울러져서
참 좋은 호젓한 풍경을 자랑합니다.
친구 말로는 캐나다에 자기 집 근처에 이런 집들이 조금 있다고 하는데
캐나다로 한번 구경가 봐야 할듯..




'Life is ..' 카테고리의 다른 글

요즘 하고 있는 일들..  (0) 2009.07.08
바다낚시 가다  (0) 2009.07.03
가족의 강원도 동해안 일주 여행기  (0) 2009.06.01
이번에는 꼭.. 성공하길..  (0) 2009.01.05
Who am i  (0) 2009.01.04
Posted by GUNDAM_IM
Embedded2009. 6. 25. 16:24
개발용으로 만든 TI DSP DM6467 + FPGA Board 입니다.

사용자 삽입 이미지
 Xilinx FPGA에다가 Video I/F 및 Audio Interface 그리고 PCI에 카메라 등등 FPGA+DSP 개발 솔루션으로 개발된 플랫폼 보드입니다.

컬러는 황금색이 좋았는데,
바빠서 (그리고 게을러서) 색지정 절차를 깜박했더니, 멤버들이 그냥 녹색으로 후딱 떠버렸습니다. 쩝..

그분 전용 붉은 컬러에서 그분이 두번째 기체인 황금의 기체로 바꾸어 타셔서,
우리도 붉은색 보드에서 황금색 보드로 만들고 싶었습니다.

다음에 보드는 꼭 황금색으로 떠야지..

'Embedded' 카테고리의 다른 글

Eclipse + eCOS =??  (0) 2009.11.23
H.264 SVC 참고 사이트 입니다.  (0) 2009.07.04
FFMPEG /X264를 MAC에서 빌드  (0) 2009.06.14
H.264 SVC 다운로드 커맨드  (0) 2009.06.12
LVDS Owner’s Manual [3]  (0) 2009.05.16
Posted by GUNDAM_IM
Books2009. 6. 24. 08:12
사용자 삽입 이미지
꿈이 하늘로 향하기 시작하면서
인류 역사상 가장 장대한 드라마의 막이 열렸다.

끝없이 반짝이는 우주의 별들을 향한
머나먼 여행이 시작되었다.

시간을 초월한 인간과 우주의 이야기가
과학과 종교를 넘어선 새로운 역사의 지평이 시작된다.



"짜라투스트라는 이렇게 말했다" (제목이 맞나??)  
하여튼 이 웅장한 음악으로 시작하는 2001 스페이스 오딧세이는 1960년대에 나올 수 없는 상상력과 영상으로 사람들을 충격에 몰아 넣었다고 합니다.

이번에 구입한 책은 2001 스페이스 판타지아입니다.

여러가지 에피소드가 옵니버스 형식으로 구성되어 있지만, 그 내용은 차근차근 보면

시작은 2001 스페이스 오딧세이를 오마주한 에피소드에서 시작하여 마치 머리속에서 "짜라투스라는 이렇게 말했다"의 북소리가 울려퍼지는 느낌으로 시작합니다.  이후에 인류가 우주로 나가기 위해서 노력하는 여러가지 에피소드와 시간과 공간을 넘어서는 워프 여행의 시작으로 이어집니다. 대략 4세기 동안의 우주 진출사를 3권의 만화책에 담아내었습니다.

이 씨리즈를 보면서 느낀점은 과학과 철학과 종교와 사랑을 이렇게 까지 녹아낸 만화와 영화는 거의 없다고 생각 할 정도로 잘 만들어 졌다는 것입니다.

읽는 사람마다 틀리겠지만 여러가지 에피소드가 있습니다만 가장 기억에 남는 것은
열여덟번째 에피소드인 "사랑하기에 충분한 시간" 입니다.

"샬롯"은 블랙홀에 빠져들어 행방 불명된 남편 "라자루스"를 대신하여 수십년을 자식들을 키워 독립시킵니다.

병에 걸려서 생의 마지막 몇주가 남았을때 우연히 남편 "라자루스"가  행방불명된 바로 그  블랙홀의 입구에서 영구한 시간의 흐름속에 멈추어져 있는 남편의 우주선이 있다는 것을 알게 됩니다. 블랙홀 입구와 내부에서는 단 "1"분의 시간 후에 소멸되어야 하는 남편이지만,  외부 세계에서는 몇십년 몇천년의 시간이 흘러가는 서로다른 시간의 흐름속에 놓여있던 것입니다  

"샬롯"은 그 남편과의 단 "1"분의 시간을 가지기 위해서 스스로 블랙홀 입구로 들어갑니다. 비록 그들에게는 1분 뿐이지만 외부 세상에서는 수백 수천년의 시간을 가지는 사랑하기에는 충분한 시간입니다.

이렇듯 단순한 SF 만화가 아니라 철저한 고증과 과학적 사실에 기반하여서 펼쳐지는 이 만화는
SF 만화의 전설이라고 일컫어집니다고 합니다.  

각각의 에피소드마다 의미를 부여하고 흐름을 부여해서 보여주기 때문에
3권까지 읽는데 정말 순식간에 빠져들어서 읽을 수 있었습니다.


Posted by GUNDAM_IM
MAC Life2009. 6. 23. 05:15

GUNDAM의 데스크 탑은 MAC PRO입니다.

하도 윈도우만 써봐서 질려서리.. 장만한 것입니다.


요근래 이리저리 한 이유로 하여서  멀티 프로세서에 관한 이슈가 생겼습니다.

그래서 관련한 자료를 찾다가 CUDA를 보게 되고, 흠..  문득 내가 가진 MACPRO는 CUDA를 지원하는가에 대한 궁굼함이 생겨서 한번 테스트 해보기로 했습니다.


물론 그래픽카드 파트 넘버를가지고 찾아보면 될일이지만,

한번 CUDA 프로그램을 돌려보며 찾아보기로 했습니다.




1. 설치 및 환경 설정


다운로드는 여기서 합니다.


http://www.nvidia.com/object/cuda_get.html.


 설치되어야 하는 것은 Tool과 SDK Example  두개입니다.

 저처럼 Tool만 설치하고 Example이 없다고 당황하지 마시고 반드시 두개를 설치하기 바랍니다.


설치가 되면은


/usr/local/cuda


에 설치됩니다.



설치 후에는

  PATH와

DYLD_LIBRARY_PATH를

추가 합니다.


 

PATH는 /usr/local/cuda/bin 을

DYLD_LIBRARY_PATH 는  /usr/local/cuda/lib 를

추가합니다.


export PATH=/usr/local/cuda/bin:$PATH

export DYLD_LIBRARY_PATH = /usr/local/cuda/lib:$DYLD_LIBRARY_PATH


위의 코드를


~/.bash_profile.


에 추가하면 됩니다.


확인은

    nvcc -v

를 입력하여 제대로 움직이는지를 확인합니다.


2. Example 컴파일


/Developer/CUDA/에서 make를 하는 것으로 컴파일이 됩니다.


Example을 컴파일 하면


make -C projects/alignedTypes/

ld: in ../../lib/libcutil.a, archive has no table of contents

collect2: ld returned 1 exit status

make[1]: *** [../../bin/darwin/release/alignedTypes] Error 1


이 됩니다.


ranlib을 아래와 같이 수행합니다.


GUNDAMMACPRO:lib kevinIm$ ranlib libcutil.a

GUNDAMMACPRO:lib kevinIm$ ranlib libparamgl.a

GUNDAMMACPRO:lib kevinIm$ ranlib librendercheckgl.a


다시 컴파일을 하면 잘 진행이 됩니다.


끝나면


/Developer/CUDA/bin/darwin/release


폴더에서


deviceQuery


를 수행합니다.


GUNDAMMACPRO:release kevinIm$ ./deviceQuery

CUDA Device Query (Runtime API) version (CUDART static linking)

There is no device supporting CUDA.


Device 0: "Device Emulation (CPU)"

  CUDA Capability Major revision number:         9999

  CUDA Capability Minor revision number:         9999

  Total amount of global memory:                 4294967295 bytes

  Number of multiprocessors:                     16

  Number of cores:                               128

  Total amount of constant memory:               65536 bytes

  Total amount of shared memory per block:       16384 bytes

  Total number of registers available per block: 8192

  Warp size:                                     1

  Maximum number of threads per block:           512

  Maximum sizes of each dimension of a block:    512 x 512 x 64

  Maximum sizes of each dimension of a grid:     65535 x 65535 x 1

  Maximum memory pitch:                          262144 bytes

  Texture alignment:                             256 bytes

  Clock rate:                                    1.35 GHz

  Concurrent copy and execution:                 No

  Run time limit on kernels:                     No

  Integrated:                                    Yes

  Support host page-locked memory mapping:       Yes

  Compute mode:                                  Default (multiple host threads can use this device simultaneously)


Test PASSED


Press ENTER to exit...


헉.. CUDA를 지원하지 않네요 흑흑

나중에 한번 그래픽 카드를 바꾸어서 테스트 해봐야 할 듯 합니다.


두어달만 늦게 장만했어도 되는것을 샀을텐데

MACPRO 산지 2달만에 신형이 나와서 순식간에 중고가 되어버렸습니다.

'MAC Life' 카테고리의 다른 글

MAC에서 Perl/Tk 컴파일하기  (0) 2009.11.20
SIGGRAPH [2]  (0) 2009.08.07
맥에서 프로파일링 하기  (0) 2009.06.18
OSX용 YUV Player 입니다.  (0) 2009.06.16
나의 다섯번째 애플~~  (1) 2009.03.30
Posted by GUNDAM_IM
Computer Vision2009. 6. 21. 03:40

Rob Hess의 SIFT 8번째


() 글을 읽기 전에
글은 저와 같은  초보자를 위해서 정리하는 것입니다.
전문가시라면 굳이 읽을 필요가 없습니다.
공부하면서 정리하는 글이라서 서툰 부분이 많이 보입니다. 이해하여 주시고

틈틈이 새로운 것을 알게 되면 그때 그때 업데이트 하겠습니다.



(주) 시작하기 전에

실제 코드를 한번 따라가기 전에 SIFT 알고리즘을 간략하게 정리하여둡니다.

코드를 기계적으로 따라가는것 보다는 알고리즘을 이해하고 따라가는 것이 유용하기 때문입니다.

물론 그렇다고 제가 알고리즘을 다 이해하는 것은 아닙니다.

그냥 초보 수준에서 아는 것들만 정리하였습니다.



PPT 발표 자료는 이 페이지를 참조 하세요 : SIFT 정리.PPT



발표자료를 기반으로 하여서 추가적으로 정리한 내용입니다.



1. Harris Corner Detector

특징으로는 다음과 같습니다.

  Rotation 에 대해 검출이 가능하다.

  부분 이미지로도 검출이 가능하다.

{

해석 :

이상의 말을 풀이하면

H.C.Detector는 영상이  회전된 것 그리고 밝기의 변화와 이미지 상에서 노이즈가 있어도

어느정도 이를 견디어 내며 원하는 포인트를 찾아낼 수 있다는 의미가 됩니다.

H.C.Detector는 Local Auto Correlation Function에 기반합니다.

기본적인 아이디어는 전체 이미지를 한방에 뒤지는 것이 아니고

주어진 이미지 영역에서 작은 이미지 영역 (부분 영역)을 설정하여 이 윈도우를 주변 영역과 비교하여

커다란 차이점이 있는 부분을 찾아내는 방식입니다.

설정된 이미지에 대해서 뒤지는 방향은 아무 방향이나 상관이 없습니다. 다만 주어진 부분 영역에 대해서

큰 변화가 생기는 방향으로 이동해야 하곘지요


아래 그림을 보면 쉽게 이해됩니다.

사용자 삽입 이미지


 

제일 왼쪽 그림은 뒤져서 변화가 없으므로 “Flat”으로 보게 됩니다.

가운데 그림은 상하로만 선분이 있다는 것을 알게 됩니다.

- 에지 방향으로 변화가 없다는 것은 에지가 존재한다는 의미가 됩니다.

오른쪽 그림은 모든 방향으로 변화가 존재하기 때문에

“Conor”라고 보는 것 입니다.


- 수학적인 의미는 다음에 하기로 하고 여기선 패스 합니다.

- SIFT가 우선이므로, H.C.Detector는 이정도에서 정리합니다.


매트랩에 대한 코드는 아래를 참고하시기 바랍니다.

http://ipl.cnu.ac.kr/mayadata/harris/harris_corner_detector.htm


}


사용자 삽입 이미지

상기 그림을 실제 H.C.Detector에 걸면 다음과 같은 영상을 얻을 수 있습니다.

사용자 삽입 이미지


그리고 이 그림의 임계치 이상만을 검출하면 다음과 같습니다.


사용자 삽입 이미지


임계치 이상 영역에서 최대값만을 표시하면 다음과 같습니다.



사용자 삽입 이미지

요것이 바로 코너 포인트가 되는 것입니다.


  이 코너포인트를 원본 그림과 매핑하면 다음과 같습니다.


사용자 삽입 이미지


문제점 :

크기 변화에대해 대처하지 못한다.

사용자 삽입 이미지

   위의 그림처럼 원래 EDGE로 인식되는 것이 스케일을 작에 줄이면, 코너로 바뀌는 경우가 발생합니다.

   이처럼 크기가 변하는 것에 따러 검출되는 성분이 변하기 때문에 크기 변화에 대응하지 못하는 것이라고

   합니다. - 당연한 이야기 인듯..



관련 자료는 이페이지에 있습니다.

매트랩등등의 코드를 함께 제공하기 때문에 공부하실 분들은 이 페이지를 참고하여 주세요


http://ipl.cnu.ac.kr/mayadata/harris/harris_corner_detector.htm

그리고 위에 설명에 사용된 그림은

lect9-slides.pdf

을 참고하시기 바랍니다.



'Computer Vision' 카테고리의 다른 글

OpenCV 2.1 맥에서 빌드하기  (0) 2010.09.04
SURF Lib  (3) 2010.06.22
Rob Hess의 SIFT [7]  (1) 2009.04.30
OpenCV - Alpha Blending cvAddWeighted , cvFillPoly  (2) 2009.04.25
JPEG2AVI 를 맥에서 빌드하기  (0) 2009.04.24
Posted by GUNDAM_IM
MAC Life2009. 6. 18. 23:30
맥에서 프로파일링을 하는 것에 대해서 설명합니다.
맥은 프로파일링 툴로서 SHARK라는 툴을 제공합니다.

Shark는 XCODE에서도 사용할 수 있지만 Command Line에서도 사용할 수 있습니다.

그리고 아무렇게나 띄워 놓고, O/S 상에서 돌아가는 태스크 중에서 선택해서 프로파일링 을 할 수 있습니다.
이번에는 3번째 방법인 아무렇게나 띄워 놓고 필요한 프로그램을 프로파일링 하는 것에 대해서 설명합합니다.
나머지 2개는 나중에 필요해지면 그때 가서 진행하도록 하겠습니다. - 그때 공부해서 하겠습니다. ㅋㅋ

일단 Shark는 /Application 폴더 있지 않고 /Developer 폴더에 있습니다.

/Developer/Applications/Performance Tools/shark

입니다.

사용자 삽입 이미지

실행하면 위와 같은 간단한 창이 뜹니다.

제일 왼쪽에 시작 버튼이 있고요, 제일 오른쪽에 실행에 대한 방식을 선택하는 Combo Box 입니다.

사용자 삽입 이미지
그 콤보 박스에서 제일 위에 있는 Launch를 선택합니다. 이후에는..
자동으로 실행하면 됩니다.

시작 버튼을 누르면 다음과 같은 창이 나옵니다.

사용자 삽입 이미지
칸을 하나하나 설명하면,
제일 위의 Executable은 실행 프로그램을
Working Dir은 실행 폴더를
Arguments는 옵션을 줍니다.

일단 다음과 같이 설정합니다.

사용자 삽입 이미지
Application : /Users/kevinim/Documents/etri_svc/JSVM/jsvm/bin/AvcRewriterStaticd
Working Dir : /Users/kevinim/Documents/etri_svc/JSVM/
Arguments : output/Coral.svc.264 output/Coral.svc.avc.2.264

으로 설정합니다.

이것은 환경에 따라 틀리므로 적당하게 설정하시고
시작 버튼을 누르면 한참 진행한 후에 결과가 나옵니다.

사용자 삽입 이미지
위의 그림은 작업이 끝난 후에 결과를 분석하는 과정입니다.
그냥 자동으로 수행됩니다.

이후에 각 함수별로 잘 정리된 그림이 나옵니다.

사용자 삽입 이미지
그리고 위의 창에서 Chart TAB을 선택하면 다음과 같은 그림이 나옵니다.

사용자 삽입 이미지
왼쪽의 그래프는 Call Stack Depth를 표시해 줍니다. 얼마나 함수가 호출되어 왔는지에 대한 정보를 보여줍니다.
이중에서 제일 깊이 된것 중에 하나를 선택하면 창의 오른쪽에 그에 해당하는 Call Stack Frame을 보여줍니다.

사용자 삽입 이미지
위의 그림은 Call Stack에 대한 그립니다.
더블 클릭하면 해당 함수로 들어갑니다.

사용자 삽입 이미지
창의 왼쪽 밑에 보면 확대 축소를 컨트롤하는 슬라이드 버튼이 있습니다. 이것으로 확대를 하면 아래와 같은 그림이 나옵니다.


사용자 삽입 이미지
세로로 노란색 부분이 선택한 호출 부분이고 가로로 노란색이 부하가 가장 많이 걸리는 함수 등에 대한 부분입니다.


다시 프로파일 창에 들어가서

로드가 많이 걸리는 함수를 찾아서 더블클릭하면 다음과 같이 창이 됩니다.

사용자 삽입 이미지
소스만 보는 창이고, 어셈블를 본다든지 두개 다 보는 것도 가능합니다.
물론 이렇게 까지 볼일이 없겠지만 하여튼 유용하기도 합니다.

사용자 삽입 이미지
위의 창은 어셈블러와 C를 같이 보여주는 창입니다.

인라인 함수로 메모리를 모두 0으로 초기화 시키는것에 생각보다 시간이 많이 걸리는 것을 알수 있습니다.

그리고 컬럼에서 [!] 로 표시된 컬럼이 있습니다. 이것은 최적화에 대한 정보를 알려주는 컬럼입니다.

사용자 삽입 이미지
위에서 보는 것 처럼 함수가 작고 자주 호출하는 것은 인라인으로 해보는게 어떻겠냐고 알려줍니다.

실제 코드는 2가지 타입이 있는데, 디버깅 정보가 포함된 버전과 아닌 일반 버전이 있습니다.
양측간에 차이점이 있고 이로 인해서 프로파일링 결과가 조금씩 차이가 나는 것을 감안하고 보면
도움이 됩니다.

코드 최적화는 다른 문제여서 그것은 언젠가 기회가 되면 다시 설명하도록 하겠습니다.
여기서는 코드 최적화 할일이 없어서요..




'MAC Life' 카테고리의 다른 글

SIGGRAPH [2]  (0) 2009.08.07
CUDA on MAC OS  (0) 2009.06.23
OSX용 YUV Player 입니다.  (0) 2009.06.16
나의 다섯번째 애플~~  (1) 2009.03.30
맥에서 개발한다는 것은..  (0) 2009.03.19
Posted by GUNDAM_IM