Computer Vision2009. 2. 18. 10:08

Rob Hess의 SIFT 2nd


이번에는 Rob Hess의 SIFT  프로그램 두번째에 대한 내용입니다.

언제나 그렇듯 빌드해 나가면서 발생하는 문제점들을 해결하는 형식으로 진행합니다.

이 과정은 제가 작업하는 내용을 기록하는 방식입니다. 

이렇게 고단한 역사(?) 를 기록하면 예전에 어떻게 했었지 하는 것을 기억하기가 쉽고

어떤 방법으로 이리 저리 했는지 따라하기가 쉽습니다.


RobHess의 SIFT는 크게 3개의 파일로 구성되어 있습니다.


1. siftFeat로서 앞서 컴파일 하였던 SIFT Feature를 Detect 하는 부분이며,

2. match   두개의 이미지를 비교하여 찾아내는 것입니다.

3. 마지막으로 찾아낸 특징점들을 화면상에 보여주는 dspFeat 부분입니다.


이번에는 두번째인 match를 빌드해보겠습니다.


1. Match의 빌드


VC에서 컴파일하면 다음과 같은 오류가 나타납니다.


Cannot open include file: 'gsl/gsl_sf.h': No such file or directory


원래 이 프로그램을 컴파일 하는데는 gsl 이 필요하다고 하였으니 이것을 구해서 컴파일 해야 합니다.

- 당연한 이야기죠~


2. GSL Build


자세한 홈피는 이곳을 참조하였습니다.

http://wiki.originlab.com/~originla/wiki/index.php?title=OriginC:How_to_build_GSL_DLL



http://www.gnu.org/software/gsl/


홈페이지는 위와 같습니다.



윈도우즈 용으로 Config된 소스 코드를 다운 받습니다.


http://gnuwin32.sourceforge.net/packages/gsl.htm


현재 버전은 1.8까지 올라와 있습니다. 음.. 최신 버전이 1.9인데.. 일단 컴파일만 하면 되는것이니

그냥 이것을 쓰겠습니다. 


c:\gsl에 설치한다고 가정하고 소스를 압축을 풀어서 카피해 둡니다.


VC에서 다음 파일을 읽어들여서


c:\gsl\src\gsl\1.8\gsl-1.8\VC8\libgsl.sln


빌드를 합니다.


그러면 차근차근 빌드하고 lib파일들이 만들어진다.


(source code path)\VC8\libgslcblas\Release-DLL

(source code path)\VC8\libgsl\Release-DLL


그럼 이제 이것들을 모두 VC에 등록합니다.

include path : C:\gsl\src\gsl\1.8\gsl-1.8

lib path        : 

C:\gsl\src\gsl\1.8\gsl-1.8\VC8\libgsl\Debug-DLL

C:\gsl\src\gsl\1.8\gsl-1.8\VC8\libgsl\Release-DLL

C:\gsl\src\gsl\1.8\gsl-1.8\VC8\libgslcblas\Debug-DLL

C:\gsl\src\gsl\1.8\gsl-1.8\VC8\libgslcblas\Release-DLL


그리고 빌드를 하면

잘 되네요


아래 그림처럼 나옵니다.


1) 찾고자 하는 이미지의 그림

사용자 삽입 이미지


2) 대상 그림


사용자 삽입 이미지

3) 실행 결과


사용자 삽입 이미지




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

Rob Hess의 SIFT [4]  (0) 2009.02.25
Rob Hess의 SIFT [3]  (2) 2009.02.23
Rob Hess의 SIFT [1]  (1) 2009.02.16
MAC에서 OpenCV를 컴파일 하기  (0) 2009.01.06
XcodeでOpenCV開発  (0) 2009.01.03
Posted by GUNDAM_IM
Computer Vision2009. 2. 16. 14:59

Rob HessSIFT


1. 살펴 보기


SIFTScale ... 을 의미하는 것이고...자세한 내용은 다음에 기회되는 대로 정리해서 올리도록 하겠습니다.



인터넷에 찾아보면 여러가지 버전의 구현된 코드를 찾아볼 수 있습니다.

귀찮게도 C로 되어 있는것 보단 MATLAB이나 C#같은 것으로 되어 있어서 상당히 귀찬습니다.


이번에 발견하여 분석한 코드는 Rob Hess의 코드이며, C로 되어 있습니다. 


Rob Hess는 오래곤 주립대학의 컴퓨터 공학과 박사과정 학생으로 컴퓨터 비젼을 전공으로 하고 있습니다.

홈 페이지는 이곳에 있습니다.


http://web.engr.oregonstate.edu/~hess/index.html


홈페이지에 보면 몇가지 알고리듬을 공부하고 올려놓았지만, 가장 관심이 가는것은  SIFT입니다.


최신 버전은 2009년 1월에 1.1.1을 만들었습니다. 이전 버전과 바뀐 부분은


라이브러리를 정적으로 만들 수 있도록 Makefile을 수정한 부분과,

Visual C를 VC2005에서 컴파일 되도록 하였다는 부분

그외에 API들을 수정하여서 버그들을 정리했다고합니다.


소스 코드는 리눅스 버전과 윈도우즈 버전의 코드를 가지고 있고 각각 이 곳에서 받을 수 있습니다.


리눅스 버전 : TAR.GZ

윈도우즈 버전 : ZIP


이 SIFT 버전은 OpenCV 에 기반하고 있으며  RANSAC 은 GNU Scientific Lib에 기반하고 있습니다.

이제 아래 그램을 보면 SIFT가 무엇을 하는 지에 대해서 알 수 있습니다



    

사용자 삽입 이미지 사용자 삽입 이미지

왼쪽의 카드를 오른쪽의 그림 더미에서 찾아내는 것입니다.

아래 그림을 다시 보면


    

사용자 삽입 이미지 사용자 삽입 이미지


이 되어서 원하는 이미지가 있는 위치를 정확하게 찾아 낼 수 있습니다.


1. 코드의 컴파일


컴파일을 할려면 Visual C++에서 먼저 컴파일을 하였습니다.

우선 VC Project 를 로드하여 컴파일을 하면 다음과 같이 에러가 발생합니다.


LINK : fatal error LNK1104: cannot open file 'cvd.lib'


해당 라이브러리를 찾을 수 없다는 의미이고,

이 라이브러리는 opencv debug lib을 의미합니다.



2. OpenCV 설치



2.1 다운로드 및 설치


OpenCV를 다운로드 합니다.


Source Forge에서 다운로드 합니다.

아래 사이트에서 다운 받을 수 있습니다.


http://sourceforge.net/projects/opencvlibrary


여기서 윈도우즈 버전을 다운받아서 설치합니다. 실행 파일로 되어 있으므로 그렇게 어렵지는 않을듯 합니다.

설치 중간에 환경 변수 세팅을 물어보므로, 그때 YES라고 해서 설치를 합니다.


설치가 끝나면 View Documents를 보게 됩니다.


C:\Program Files\OpenCV\docs\index.htm


링크이므로 틈틈히 찾아보면 정보를 얻을 수 있습니다.


2.2 디버깅 라이브러리 만들기



설치된 코드는 실행 코드이다. 개발시에는 디버깅용 코드가 필요하므로 디버깅 버전의 라이브러리를 만드러야 한다.


c:\Program Files\OpenCV\_make


폴더에 가서 opencv.dsw를 클릭합니다.


그러면 버전문제에 대한 문의 다이얼로그가 나타난다. 모두 YES라고 선택하면 된다.

그러면 다음과 같은 창이 나타난다.


사용자 삽입 이미지


그럼 이제 BUILD->Batch Build를 선택하면 다음과 같은 창이 나타난다.


사용자 삽입 이미지


그럼 win32 ReleaseWin 32 Debug를 모두 선태한다.

이후에 Build를 눌러서 라이브러리를 모두 컴파일 한다.



경고도 나타나지만 무시하고 진행하면 컴파일이 완료된다.


2.3 라이브러리 오류 수정


실제로 깨끗하게 완료된것이 아니다.


ompiling...

cvbgfg_acmmm2003.cpp

.\cvbgfg_acmmm2003.cpp(464) : error C2039: 'foreground_regions' : is not a member of 'CvFGDStatModel'

        c:\Program Files\OpenCV\cvaux\include\cvaux.h(1301) : see declaration of 'CvFGDStatModel'

.\cvbgfg_acmmm2003.cpp(470) : error C2039: 'foreground_regions' : is not a member of 'CvFGDStatModel'

        c:\Program Files\OpenCV\cvaux\include\cvaux.h(1301) : see declaration of 'CvFGDStatModel'

cvbgfg_gaussmix.cpp

.\cvbgfg_gaussmix.cpp(348) : error C2039: 'foreground_regions' : is not a member of 'CvGaussBGModel'

        c:\Program Files\OpenCV\cvaux\include\cvaux.h(1365) : see declaration of 'CvGaussBGModel'

Generating Code...


과 같이 오류가 발생합니다. 이전 버전에도 있던 오류인데 아직도 살아있다는게 놀라울 따름입니다.

하여튼 수정합니다.


cvaux.h : 1159 행 부근을 보면


#define CV_BG_STAT_MODEL_FIELDS()                                                   \

    int             type; /*type of BG model*/                                      \

    CvReleaseBGStatModel release;                                                   \

    CvUpdateBGStatModel update;                                                     \

    IplImage*       background;   /*8UC3 reference background image*/               \

    IplImage*       foreground;   /*8UC1 foreground image*/                         \

    IplImage**      layers;       /*8UC3 reference background image, can be null */ \

    int             layer_count;  /* can be zero */                                 \

    CvMemStorage*   storage;      /*storage for 밼oreground_regions?/              \

    CvSeq*          foreground_regions /*foreground object contours*

/


이 있습니다. 여기서


    CvMemStorage*   storage;      /*storage for 밼oreground_regions?/              \



    CvMemStorage*   storage;      /*storage for 밼oreground_regions*/              \


으로 바꿉니다.


이번에는 잘 진행합니다.


2.4 라이브러리 오류 수정


컴파일 끝에 2개가 컴파일이 안되었다고 나옵니다.

나온것을 보면


   Creating library ..\..\lib/highgui.lib and object ..\..\lib/highgui.exp

cvcap.obj : error LNK2019: unresolved external symbol "struct CvCapture * __cdecl cvCreateCameraCapture_DShow(int)" (?cvCreateCameraCapture_DShow@@YAPAUCvCapture@@H@Z) referenced in function _cvCreateCameraCapture

..\..\bin/highgui110.dll : fatal error LNK1120: 1 unresolved externals

Build log was saved at "file://c:\Program Files\OpenCV\_temp\highgui_Release\BuildLog.htm"

highgui - 2 error(s), 0 warning(s)

------ Build started: Project: highgui, Configuration: Debug Win32 ------

Linking...

   Creating library ..\..\lib/highguid.lib and object ..\..\lib/highguid.exp

cvcap.obj : error LNK2019: unresolved external symbol "struct CvCapture * __cdecl cvCreateCameraCapture_DShow(int)" (?cvCreateCameraCapture_DShow@@YAPAUCvCapture@@H@Z) referenced in function _cvCreateCameraCapture

..\..\bin/highgui110d.dll : fatal error LNK1120: 1 unresolved externals

Build log was saved at "file://c:\Program Files\OpenCV\_temp\highgui_Debug\BuildLog.htm"


으로 되어 있습니다.


이것은 cvcap_dshow.cpp 파일이 highgui project에 포함되어 있지 않아서 생긴 오류이다.

src에 이것을 추가합니다.


사용자 삽입 이미지

위의 그림처럼 추가하면 됩니다.


그래도 오류가 발생하는데 일단 라이브러리를 추가합니다.


C:\Program Files\OpenCV\otherlibs\_graphics\lib


그리고 다시 컴파일을 하면 역쉬 에러가 나옵니다.


cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: void __thiscall videoInput::stopDevice(int)" (?stopDevice@videoInput@@QAEXH@Z) referenced in function "public: virtual void __thiscall CvCaptureCAM_DShow::close(void)" (?close@CvCaptureCAM_DShow@@UAEXXZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: bool __thiscall videoInput::isDeviceSetup(int)" (?isDeviceSetup@videoInput@@QAE_NH@Z) referenced in function "public: virtual bool __thiscall CvCaptureCAM_DShow::open(int)" (?open@CvCaptureCAM_DShow@@UAE_NH@Z)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: bool __thiscall videoInput::setupDevice(int)" (?setupDevice@videoInput@@QAE_NH@Z) referenced in function "public: virtual bool __thiscall CvCaptureCAM_DShow::open(int)" (?open@CvCaptureCAM_DShow@@UAE_NH@Z)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: bool __thiscall videoInput::getPixels(int,unsigned char *,bool,bool)" (?getPixels@videoInput@@QAE_NHPAE_N1@Z) referenced in function "public: virtual struct _IplImage * __thiscall CvCaptureCAM_DShow::retrieveFrame(void)" (?retrieveFrame@CvCaptureCAM_DShow@@UAEPAU_IplImage@@XZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: int __thiscall videoInput::getHeight(int)" (?getHeight@videoInput@@QAEHH@Z) referenced in function "public: virtual struct _IplImage * __thiscall CvCaptureCAM_DShow::retrieveFrame(void)" (?retrieveFrame@CvCaptureCAM_DShow@@UAEPAU_IplImage@@XZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: int __thiscall videoInput::getWidth(int)" (?getWidth@videoInput@@QAEHH@Z) referenced in function "public: virtual struct _IplImage * __thiscall CvCaptureCAM_DShow::retrieveFrame(void)" (?retrieveFrame@CvCaptureCAM_DShow@@UAEPAU_IplImage@@XZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: bool __thiscall videoInput::setupDevice(int,int,int)" (?setupDevice@videoInput@@QAE_NHHH@Z) referenced in function "public: virtual bool __thiscall CvCaptureCAM_DShow::setProperty(int,double)" (?setProperty@CvCaptureCAM_DShow@@UAE_NHN@Z)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: static void __cdecl videoInput::setVerbose(bool)" (?setVerbose@videoInput@@SAX_N@Z) referenced in function "public: __thiscall SuppressVideoInputMessages::SuppressVideoInputMessages(void)" (??0SuppressVideoInputMessages@@QAE@XZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: __thiscall videoInput::videoInput(void)" (??0videoInput@@QAE@XZ) referenced in function "void __cdecl `dynamic initializer for 'protected: static class videoInput CvCaptureCAM_DShow::VI''(void)" (??__E?VI@CvCaptureCAM_DShow@@1VvideoInput@@A@@YAXXZ)

cvcap_dshow.obj : error LNK2019: unresolved external symbol "public: __thiscall videoInput::~videoInput(void)" (??1videoInput@@QAE@XZ) referenced in function "void __cdecl `dynamic atexit destructor for 'protected: static class videoInput CvCaptureCAM_DShow::VI''(void)" (??__F?VI@CvCaptureCAM_DShow@@1VvideoInput@@A@@YAXXZ)

..\..\bin/highgui110d.dll : fatal error LNK1120: 10 unresolved externals


과 같이 에러가 발생한다.


소스 파일을 찾아서 잘 보면 모두 VIDEO INPUT을 직접 받을때 사용하는 함수들 입니다. 

현시점에서 외부에서 직접 비디오 입력을 받을 일이 없으므로 그냥 넘어가서


_highgui,h파일에서 다음과 같이 수정한다.


#if _MSC_VER >= 1400 && !defined WIN64

#define HAVE_VIDEOINPUT 1

#endif



#if _MSC_VER >= 1400 && !defined WIN64

#ifdef HAVE_VIDEOINPUT

#  undef HAVE_VIDEOINPUT

#endif


//#define HAVE_VIDEOINPUT 1


#endif


으로 수정해서 막아버리고 컴파일 하면.. 잘 됩니다.




3 OpenCV 환경 설정


할때마다 컴파일 환경을 잡아주는 것이 귀찮으므로 일단 전체 환경 설정을 한번 하여줍니다.


3.1 헤더 파일 폴더의 추가


Tools-> Opetions을 선택하여 나타난 다이얼로그 박스에서 Directories 탭을 선택합니다

Tools->Options을 선택하여 나타난 다이얼로그 박스에서 Projects and Solutions 항목의 VC++ Directories를 선택하면 아래와 같은 창이 됩니다.


사용자 삽입 이미지



Platform에 Win 32를 Show Directories에 Includes files를 선택한 후에

새로운 Header File Folder를 선택합니다.


C:\Program Files\OpenCV\_make

C:\Program Files\OpenCV\cv\include

C:\Program Files\OpenCV\cvaux\include

C:\Program Files\OpenCV\cxcore\include

C:\Program Files\OpenCV\ml\include

C:\Program Files\OpenCV\otherlibs\highgui

C:\Program Files\OpenCV\otherlibs\ffopencv

C:\Program Files\OpenCV\otherlibs\_graphics\include


을 모두 설치합니다.



3.2 라이브러리 폴더 추가


이번에는 라이브러리 폴더를 같은 방법으로 추가합니다.


사용자 삽입 이미지


위의 그림과 같이 Library Files를 선택한 뒤에


C:\Program Files\OpenCV\lib


을 추가합니다.


이렇게 하면 준비가 끝났습니다.


4. 다시 컴파일


SIFT를 다시 컴파일 하면 이번엔 잘 된다.


실행하면 다음과 같은 오류가 나타난다.


사용자 삽입 이미지


이것은 환경 변수에 PATH를 다음것을 추가합니다.


C:\Program Files\OpenCV\bin



5. 다시 실행


이제 SIFT를 다시실행한다.

그럼 아래 그림이 나타난다.


사용자 삽입 이미지


이제 정상적으로 컴파일이 되었다.



아래 그림은 약간 수정한 코드로 만든 이미지입니다.

잘 동작하고 있습니다.

사용자 삽입 이미지





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

Rob Hess의 SIFT [3]  (2) 2009.02.23
Rob Hess의 SIFT [2]  (0) 2009.02.18
MAC에서 OpenCV를 컴파일 하기  (0) 2009.01.06
XcodeでOpenCV開発  (0) 2009.01.03
파노라마 구성하기  (0) 2009.01.03
Posted by GUNDAM_IM
Hobby2009. 2. 11. 15:44
이 글은 건담의 아버지인 토미노 요시유키의 인터뷰 기사입니다.
제가 가장 좋아하는 인터뷰 기사 입니다.
반드시 하비만이 아니라 모든 면에서 많이 배울 점이 있다고 생각합니다.

-----------------
사용자 삽입 이미지


하비에 관여하는 인간은 좀더 '자기자신'을 가져라 

말로는 손님들이라고, 컨슈머라고 이야기하면서 원래는 '개별적'이어야 할 하비를 "단순한 소비품으로서 팔아먹지마라!"라고 먼저 소리높여 말하고 싶군요. 소위 '샤아 전용' 상품들에 대해서도, 정말로 눈을 끌 수 있는 '장점'은 없고, 단지 빨갛게 칠해만 놓고 '샤아 전용'이라고 이름붙은 상품들은 절대로 뭔가 잘못됐습니다. 오해를 무릅쓰고 말하자면, 저 빨갛기만 하고 아무 뜻도 없는 상품들은 제 눈 앞에서 사라졌으면 좋겠습니다. (참고설명: 건담의 주캐릭터로 등장하는 샤아는 붉은 전용기만을 사용한다. )

그런 상품은, 근본적인 욕구나 근본적인 필요성에서 만들어진 상품들이 아니기 때문입니다. 새빨갛게만 칠해놓고 상품이 된다는 건 말도 안됩니다. 샤아 전용 상품이라는 이름을 붙여서 팔려면, 그 상품이 아니면 얻을 수 없는 압도적인 부가가치를 붙이라고 말하고 싶습니다. 가전제품이라면, 가전제품으로서 우선 완벽해야하고 '다른 메이커의 상품보다 절대로 성능이 좋다!'라고 누구나 느낄 수 있는 높은 퀄리티의 상품을 제공하면 된다는 얘기입니다. 그런데도, 현실적으로는 그렇지 못한 상품들이 너무 많습니다. 어디에서 만들었는지도 모르는 부품들을 주워다가 만들어놓고는, 그걸로 만족하는 스탭들을 보면 분통이 터집니다. 빨갛기만 하고, 실용성하고는 완전히 동떨어진 물건들까지 있습니다.

어쨌든, 우선 브랜드 파워를 키우라고 말하고 싶습니다. 브랜드 파워란, 곧 하이 퀄리티와 하이 이미지입니다. 그야말로 품위를 추구한다는 것입니다. 그런 상품이 아니라면 샤아 전용이랍시고 나서지 말라고! 
샤아 브랜드를 빌리려면, '샤아'에게 지지않는 뭔가를 갖추려는 기백이 없이는 의미가 없는 거지요.

가전제품 이외에도, 예를 들면 하비 상품이라면, 오랜 시간이 지나도 계속해서 사랑받을 물건이 아니면 안됩니다. 단순히 팔기만 하면 되고, 소비만 되면 끝이라는 식의 물건은 애초부터 하비의 대상이 될 수도 없는 것입니다. 다시말해, 하비를 재미없는 비즈니스 상품으로 만들어버린 인간들이 너무 많습니다. 적어도 하비로서의 건담 캐릭터에 관여하는 인간은, 크리에이터로서의 '자기자신'을 가졌으면 합니다. 만드는 사람 하나하나의 모습이 보이는 것 같은 정체성을 가졌으면 하는 것입니다.

빚을 몇 년동안 갚는 한이 있더라도 꼭 사고 싶은 미술품과 같은 의미가 있음으로 해서, 하비란 비로소 성립하는 것이라고 생각합니다. 단지 팔기만 하면 된다는 생각은 샐러리맨적으로도 무신경하게 느껴질 뿐이죠.


상품개발자는 좋은 취미를 가지는 것이 의무 

상품개발자는, 좋은 취미를 가져야만 합니다. 매일 백화점 순례를 하고, 고급상점에 다니면서 아이 쇼핑하는 것을 추천하고 싶습니다. 좋은 물건을 보는 것, 좋은 물건을 만지는 것이 좋은 상품을 개발하는 것으로 이어지기 때문입니다. 

예를 들면, 한 폭에 250만엔짜리의 천이 있다면, 점원이 안보는 사이에라도 몰래 꼭 한번 만져보라고 말하고 싶습니다. 그 촉감, 색깔을 계속해서 접하게 된다면 미적 센스는 반드시 올라가게 되어있습니다. 그런 노력이 없이, 그저 유행에 휩쓸려서 가끔 고급품을 사기는 하지만, 평소의 쇼핑은 바겐 세일만 찾아다닌다고 하면 좋은 상품을 개발할 센스같은게 몸에 배일리가 없지요.

적어도 상품개발을 하는 사람이라면, 미술관 순례도 혈안이 되어서 하지 않으면 말이 안됩니다. 그것은 절대적인 의무라고 생각해주셨으면 합니다.

모두들 너무 무사태평입니다. 진지하지가 않아요. 브랜드 파워가 있으면 물건은 아무리 엉망이라도 팔린다는 식으로 생각하고 있지요. 
'건담 브랜드의 힘을 빌리면 돈이 들어온다.' 라는 저질 비즈니스 방식이 만연하고 있다는 생각이 들어요. 잡지의 부록으로 들어가는 작은 상품이라도 '이건 굉장한데!'라는 물건을 만들지 않으면 안되는 거지요.


공공의식을 전파하는 것을 잊은 우리들 세대의 죄 

돈만 벌면 된다는 기업에서 일하는 샐러리맨을 보고 영향을 받은 젊은 세대가, 좋은 어른이 된다고는 생각되지 않습니다. 저희들 세대는 타자를 배척하고 경쟁하는 세대였습니다. 경쟁론밖에 없었고, 어떻게하면 돈을 벌지에 대한 생각밖에는 없었고, 전부 수치론으로만 생각했다는 반성점이 있습니다. 그리고 공공의식이라는 것도 다음 세대에 제대로 전해주지 않았다는 문제점이 있습니다. 공공의식을 가지지 않고 어른이 된 사람들은, 개인이 공공에 대해서 어떤 의무를 가지고 있는지에 대한 부분을 전부 경제효율로 생각하고 있을 뿐입니다. 공공의 장에서 자신이 제공한 상품이 사람들을 얼마나 즐겁게하고 있는지, 어떤 식으로 받아들여지고 있는지를 일상적인 피부감각이나 공공의식으로서 이해하지 못하고, 수치로 밖에 인식할 수 없게 된 것입니다만, 결코 판매량만이 전부는 아닙니다.

자신이 하고 싶은 일이 세상에 어떤 영향을 미칠지, 어떻게 받아들여질지를 피부로 인식하는 의식을 다음 세대에 전하지 못했던 것은 너무나 큰 죄를 저질렀다고 할 수 있습니다. 단지, 인간은 그만큼 둔감한 생물은 아니라고 생각하고 있습니다. 다시 일어서는 방법은 기초교육에 있다고 생각합니다.

의무교육과, 거기에 이르는 유아교육, 한걸음 더 나아가면 거기에서의 아버지와 어머니, 아이들의 관련성도 중요합니다. 현대인은 아이들을 사랑하는 능력이 퇴화된 것이 아닌가 생각합니다. 그 원인은, '사랑'이라고 하는 원래 일본에는 없었던 개념을 의미도 모르고 함부로 사용했기 때문에 이것을 일본인이 원래 갖고 있었던 '정'으로 승화시키지 못한게 원인이겠지요. '자신의 아이들을 사랑하지 않는다'고 말하는 어머니가 있습니다. 정을 주면 되지 않습니까! 귀여워해주면 되지 않습니까! 아이들에게 사랑을 느끼지 못한다고 말하는 부모는 그 부분이 모자란 것은 아닐까요.


'말'이 가지고 있는 의미, 촉감을 인식해라

제2차 세계대전후, 일본은 메이지 유신으로 체험했던 것과는 전혀 다른 방식으로 구미문화를 받아들였습니다. 메이지 시대는, 어떤 의미에서 엘리트라고 불리는 사람들이 새로운 '말'을 수입했기 때문에, 그것을 대중화할 시간이 있었습니다. 문화 속으로 융화될 여유가 있었다는 것이지요. 그런데 전후에 받아들인 구미문화는 말, 문화를 융화시킬 시간도 없이 대중에게 퍼져나갔습니다. 스스로 잘 알고 있는 것처럼, 스스로는 진보적인 것처럼 생각하는 소위 문화인들이 마음대로 쓴, 무미건조하고 무절제한 직역이 대중에게 퍼져나갔던 것이죠. 그런 풍조 속에서 '사랑'이라고 하는, 메이지 시대에 일본에 정착한 개념도 그 의미를 다음 세대에게 제대로 가르쳐주지도 못한채 사용되게 되었다는 것입니다.

'공공'이라는 말도, 원래 일본어에는 없는 개념이었습니다. '사회'라는 말도 없었습니다. 그러니까 지금, 공공성이나 사회성이라고 말해도 감각적으로는 멀게만 느껴집니다. 딱히 오는 느낌이 없습니다. 공공성이라고 하는 것은, '체면'과 마찬가지로 피부로 느껴져야 하는 것입니다. 일상적인 접촉으로서 납득하지 않으면, 이해했다고는 할 수 없습니다. 학교의 선생도, 그런 말에 대한 인식의 겨육을 받지 못했다고 생각합니다. 예전의 '마을' 단위의 연대감이라고 할까, 조상신을 함께 섬기는 것과도 같은, 뭔가를 공유하는데서 오는 안심감이라는 것을 모두가 잊어버린 것입니다.

저는 다른 표현방법을 잘 모르기 때문에, 어쩔 수 없이 '종교적'이라는 말을 써야하겠습니다만, 일본인은 원래 종교적인 의식을 갖고 있지 못한 국민입니다. 종교적인 것이 가지는 연대성, 그런 공감대를 갖고 있지 못하니까, 막연한 불안을 느낀 아이들은 가출하고, 원조교제로 돈을 벌어 갖고 싶은걸 사지요. 하지만 너희들, 그런 돈으로 산 브랜드 물건을 10년후에도 제대로 갖고 있을리가 없잖아! 좀 더 상상력을 발휘해봐! 라고 제대로 야단칠 수 없는게 문제입니다. 어른들이 효율론, 팔리면 좋은 것, 돈벌면 좋은 것이라는 생각 속에서 살면서, '공공'이라는 말의 무거움, 촉감, 피부감각을 잃어버린 결괴입니다. 말에 대한 인식의 문제입니다. 의무교육, 기초학력을 쌓아가는 단계에서 새롭게 태어난 말들을, 우리들이 살고 있는 땅에 원래 있었던 말과 연결시키는 것이 중요합니다. 다시말해, '사랑한다'라는 것이 '정을 준다'라는 것임을 깨닫는 것입니다. 저희들의 세대가 너무나도 무지했던 '말씀씀이', '표현하는 것'을 깨달아야 한다는 것입니다.



좋은 상품을 만들고 싶거든 높은 신념을 가져라!

처음에 말한 '자기자신', '정체성'이란 말도, 만일 그런 말이 정말로 일본어로서 정착되어 있다면, 지금 30대 후반으로 건담 상품 개발의 중추를 맡고 있는 사람들은 좀더 그 의미를 스스로 생각해 보았으면 합니다. 하비라고 하는 것은 촉감이 중요한 것이고, 결코 논리적인 것이 아닙니다. 숫자만을 보면서 팔리기만 하면 된다는, 촉감을 무시한 상품전개는 정말 그만뒀으면 합니다. 캐릭터 산업의 생산과 마켓이 확대되고 있다면, 개발자들은 신념, 곧 높은 뜻을 가지지 않으면 안됩니다. 좋은 물건을 만든다고 하는 신념을 가져야 한다는 것! 그것을 인식하지 않으면 안됩니다. 그야말로 그런 시대가 도래해서, 팔기만 하면 된다는 과거의 수법은, 틀림없이 버림받을 시기가 오고야 맙니다.

예를 들면, 잡지의 부록 하나만을 보아도 큼직한 상자로 손님을 끌려고 하는 물건들이 너무 많습니다. 그런 주제에 환경친화적인 기업이라고 합니다. 그럴려면 박스를 5분의 1로 줄여! 라고 말하고 싶습니다. 그런 것들을 많은 기업의 인간들이 이해하지를 못하고 있습니다. 말로만 환경을 생각한다고 해도 이제는 통하지 않습니다. 물자가 넘쳐나는 포식의 시대에, 어설픈 지혜가지고는 추락을 막을 방법이 없지 않겠습니까.


자신이 정말 원하는 것이 무엇인지 자신에게 물어보라

지금의 일본은 파라다이스입니다. 물자가 넘쳐나고, 전혀 긴장감이 없습니다. 인간은 생활에 수고를 느낄때야 말로 정신적으로도 풍성한 생활을 가꾸어 갈 수가 있습니다. 안이한 생활 속에서 깨달음과 이성을 유지하고 살아갈 수 있을 정도로 인간은 강하지 않으니까요.

다시말해, 지금의 일본인들은 긴장감의 결여에 의해서 자신의 진짜 소망, 물건에 대한 진정한 욕구조차도 잃어가고 있습니다. 캐릭터 상품, 이미지 상품이라는 것이 장사가 될 수 있는 것도 그러한 상실이 원인이라고 할 수 있겠죠. 
너희들은 건담이라는 말만 붙이면 성능이 나쁜 가전제품이나 어설픈 하비 같은것도 그냥 만족해 버린단 말이냐! 라는 얘기를, 만드는 쪽에서도 사는 쪽에서도 자신에게 묻지 않으면 안될 시대가 된 것입니다. 

원본 : '어른의 건담' by 닛케이 캐릭터즈( 2004년 5월호)
출처 : 백금기사의 기묘한 연구소 ( 
http://lgaim.egloos.com/i28 [새창에서 열기] )

'Hobby' 카테고리의 다른 글

건담 강림 3rd - 사진 정리  (0) 2009.09.02
건담 강림 2nd - 드디어 실물을 보러 갔습니다.  (0) 2009.08.31
이럴수가....  (0) 2009.07.17
[일드] 스타의 사랑  (0) 2009.05.10
건담 만들기  (2) 2009.03.16
Posted by GUNDAM_IM
ASIC SoC2009. 2. 9. 22:12

한사람의 기사를 맞이 하기 위해서는... 


사용자 삽입 이미지

이전 글을 올려 놓고 한참을 읽었습니다.

웬지 자신은 생각하지 않고 남탓만 하는것 같아서 

이번에는 사람을 맞이하는 우리의 생각에 대해서 써보아야 하겠다고 생각하여 이렇게 글을 올립니다.


회사에서 사람을 채용하기 위해서 맞이하기 위해서  준비해야 할 것 중에서 

우선 필요한 것은


- 기술적인 부분과

- 회사 자체의 네임 벨류

- 그리고 내부적인 관계 (인간관계 포함)


등이 중요할 것 같습니다.


기술적인 부분이야.. 자랑이지만 자신있게 나름 괜찮다고 생각합니다.

  우리회사는 가장 강점이 SoC 플랫폼을 멋지게 구비했다는 점입니다. 

  어설프게 플랫폼하는 것이 아니라 나름 고성능의 SoC 플랫폼을 가지고 개발을 진행합니다.

  예전에 Sonics를 사용해본 뒤에 필요성을 느껴서 개발한 플랫폼입니다.


  물론 기술이 좋다고 무조건 사람을 받아들일 수 있는 것은 아니죠.

  사람을 키울 수 있는 것이 중요합니다. 모든 회사는 회사 나름의 인재 육성법, 사람 육성법, 기사 수련이 있습니다.

  물론 우리도 우리회사만의 도제 시스템으로 육성합니다.

  코스에 대해서는 다음기회에 말씀드리고 결론적으로는 

  하드웨어와 소프트웨어를 동시에 잘 할 수 있도록 많이 신경쓰고 있습니다.

  반도체 설계한다는 사람이 SYSTEM도 모르고 소프트웨어도 모르고 설계할 수 는 없습니다.

  가끔 가다 보면 등한시 하는 사람도 있는데 그러면 정말 한계가 금방 다가 옵니다.


회사 자체의 네임 벨류는

  사실 신생회사에 가깝기 때문에 아직 없습니다. 

  올해 부터 차근차근 개발된 칩이 나올 것이므로 

  이런 것을 잘 기사화 하여 회사의 이미지를 좋게 만들 생각입니다.


  물론 가장 중요한 네임 벨류는 이익을 내는 것이기 때문에

  이익을 낼수 있도록 항상 노력하고 있습니다. 

  자세한 것은 회사의 영업 기밀이므로, 생략하겠습니다.


내부적인 관계야 

  아직까지는 작은 회사의 특성상 정말 좋다고 말할수 있습니다.

  향후에는 커지면 그에 대비한 준비를 해야 하지만, 그때까지도 좋은 형태로 진행할 수 있도록

  계속 준비를 하고 있습니다.

  채용하기 전 부터 이것이 외 중요한 지는 굳이 이야기하지 않아도 다 아시리라 생각합니다.



중요한 것은 이러한 것을 어떻게 대외적으로 발표하고 연결시켜 나가겠냐는 것입니다.

결국 시간을 가지고 성과를 보이는것이 이것은 너무 밍밍한 정답입니다만 

최고의 방법입니다.


우선 우리만의 고유의 도제 시스템을 어떻게 잘 확립 할 것인지가 중요한 부분이 되곘네요

그리고 회사의 네임 벨류를 올리는 것도 같이 해야 할 부분입니다.


-----------


저번에도 그렇지만 회사의 지리적인 것도 중요합니다.

 (?) 좋은 장소로 이전을 계획중입니다.


Posted by GUNDAM_IM
ASIC SoC2009. 2. 3. 09:14

사람을 찾습니다.


어디에 


C  언어 이해하고 있으면서

Computer Architecture를 이해하는 사람을 보셨나요 ?


취업 사이트에 올린 구인 광고나 회사 홈피에 있는 구인 광고는 정말 거창한것 같지만 사실 딱 두가지만 바라는 겁니다. C언어와 Computer Architecture 입니다. (신입은 C만 잘해도 됩니다. ^^)


몇년 전부터 사람을 찾느라고 매달 2~3명씩 면접을 보는 것 같습니다.

그런데 아직도 사람을 찾고 있습니다. 


거듭 말씀드리지만, 신입사원이라면 C언어만 이해해도 좋은데 사람 찾기가 쉽지 않네요


회사가 크고 작고의 문제가 아닌듯 합니다.

사상 최대의 취업 난이네 하여도 회사는 사상 최대의 구인난에 시달리고 있으니 아이러니 합니다.


그동안 면접 본 사람이 못해도 000명은 넘은 것 같습니다만, 실제 채용된 사람은 3명 정도입니다.

그렇다고 회사가 정말 고난도의 인력을 요청하는 것도 아니라는 생각을 합니다.

정말 기본적인 것이죠.


채용 기준을 낮추라는 압력(?)이 조언이 주변에서 들어오지만, 이미 이정도의 채용 기준이면 한껏 낮추었다고 생각합니다.

 

요새는 왜 이렇게 사람뽑기가 힘들까요 ?


생각해보면 


1. 반도체 설계라는 직업군이 사실은  3D업종 이라는 비밀이 만천하에 공개 되었고

2. 공대 기피현상의 여파가 구인난까지 밀려들어온것 같습니다.


1번에 대해서는

3D직군이라는 것은 재론의 여지가 없이 사실입니다. 엄청 몸빵하는 직군임에 틀림이 없습니다. FAB-IN할때에는 모두 신경이 곤두서서 밤을 새며 지내기 일쑤이기 떄문에, 엄청 고로운 직군입니다. 이건 사실이기 때문에 변명할 거리가 없네요 하지만 다른 직군을 좀 봐주세요.. 다른 직군도 힘들기는 매 한가지 입니다.


2번에 대해서는 

사실, 지금은 영업, 연구, 마케팅의 구분이 없는 시대가 되기 시작했습니다.

직군의 구분은 있을런지 모르지만, 생각과 행동은 구분이 없습니다. 

엔지니어가 마케팅을 이해하여야 하고, 세일즈를 이해해야 하는 것 처럼

마케팅이 엔지니어링을 이해하지 못하고는 발 붙이기 힘든 시대입니다. 

시작할때야 차이가 존재하지만 점점 차이가 없어지고, 결국 종합적인 능력을 가진 사람이 더 높은 세상을 향해 

나아가게 되어 있습니다.


아무것도 모르는 사람이 마케팅을 한다고 자리에 눌러 앉아서 기울어가는 회사를 보는게 한두군데가 아니어서

더욱 그런 시대라는 것을 절감하게 됩니다.





그렇지만~~!!!! 버뜨...


자신이 만든 칩이 움직이는 것을 보는 것이 


얼마나 신기한 것인지,

얼마나 두군거리는 것인지 

얼마나 황홀한 것인지


느낄 수 있는 사람이라면, 느껴보고 싶은 사람이라면 연락을 주세요.. 



얼마전에 연구 결과물을 보니 국내에 약 150개 정도의 FAB-Less가 있고 인력은 4000명 정도 된다고 합니다.


마치 F.S.S( 파이브 스타 스토리의 약어죠.. 유명한 애니)에 보면 

기사는 숫자가 늘지도 줄지도 않는다는 대사가 나옵니다.  한사람의 기사가 만들어질려면 한사람의 기사가 죽어야 하는것 처럼

한사람의 엔지니어가 은퇴할때가 되어야 한사람의 엔지니어가 탄생하는게 아닌가 하는 생각이 듭니다.


우리나라 반도체 인력 종사자가 4000명일지에 대해서는 약간 의문이긴 합니다만,  (실상은 더 적을것이라 생각합니다.)

4000명의 엔지니어로 이 넓은 세상을 커버하기는 버거울 것 같습니다.


지금 있는 회사에서도 사람을 채용하기 위해서는 기존의 방법으로는 안된다고 생각이 됩니다.

뭔가 다른 방법과 대안을 찾아서 준비를 시작해야 합니다.


개인적으로도

회사에서도

국가에서도


다른 방안이 필요한 때입니다.



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

오해의 소지가 좀 있을것 같아서.. 

- 우리회사 대우가  낮지는 않습니다. 

- 다른 것들도 잘 해주는 편입니다.

- 위치가 불리한 것은 인정.. 음.. 얼렁 이사가야지..




'ASIC SoC' 카테고리의 다른 글

"그분" 전용의 SilverChip  (0) 2009.03.26
한사람의 기사를 맞이 하기 위해서는... (2)  (0) 2009.02.09
DSP Design [2]  (0) 2009.01.30
소프트 마이크로프로세서의 네 가지 라이선싱 모델  (0) 2009.01.20
DSP Design [1]  (0) 2009.01.15
Posted by GUNDAM_IM