'2009/05'에 해당되는 글 3건

  1. 2009/05/23 게으른 엔지니어 IplImage에서 RGB 데이타 뽑아 내기 (1)
  2. 2009/05/12 게으른 엔지니어 UGD(User Generated Device)에 대하여...
  3. 2009/05/08 게으른 엔지니어 The MathWorks Technology Conference 2009 가 열린다...
6월에 있을 큰 행사에서 사용할 데모 때문에 하드웨어 연동 부분을 Simulink에서 사용 가능하도록 하고 있는 중이다. 하드웨어는 http://www.varram.com에 있는 DRC 카메라와 홈페이지에서 동영상으로 보이는 로봇이다. 뭐 카메라에 대한 자세한 내용은 홈페이지를 참조하면 되겠다.

카메라의 특징중에 하나가 RF를 이용해서 이미지가 전송되고 이를 PC상에서 처리해서 결과를 보내 주면 카메라는 다른 보드들과는 시리얼로 통신이 가능하다는 개념이다.  카메라가 DRC Station이라고 USB로 PC와 연결되어 있는 보드로 RF로 이미지를 보내 주면 PC에서는 이를 OpenCV를 이용해서 이미지 처리를 하도록 되어 있다.

Simulink나 MATLAB에서 이를 쓰게 할려면 몇 가지 작업을 거쳐야 한다. 첫 번째 문제점은 OpenCV를 활용해서 PC로 넘어 오는 이미지의 포맷이 IplImage 라는 점이다. MATLAB이나 Video and Image Processing Blockset에서 사용하기 위해서는 RGB 형태가 제일 좋다.

지금 진행된 작업은 DRC Station에서 가져온 데이타를 Simulink에서 사용 가능하도록 블록을 만들었다. 이제 할 일은 IplImage 포맷을 RGB로 변환해서 넘겨 주도록만 하면 될것 같다.

구글신께 상황을 물어 보니 여러 가지 답이 나오는데, 이것 저것을 직접 본 결과 제대로 답을 주는 코드가 없어서 오히려 더 헷갈리기만 해서 직접 IplImage의 포맷을 확인한 결과 의외로 배열을 잘 핸들링만 하면 특별히 어려울게 없다는 것을 알았다. 아래의 내용은 채널수가 3인 경우에 해당된다. Gray Scale로 오는 경우는 3을 곱할 필요도 억고, 당은연히 RGB로 뽑아 낼 수도 없다.

IplImage 구조에 있는 필드 중에 imageData라는 필드가 실제로 RGB 데이타를 가지고 있는데, 1차원 배열로 저장이 BGR 순서로 되어 있다. 즉 아래 그림과 갈이 있는다는 것을 알 수 있다. RGB의 각각의 처음이 (1, 1)부터 시작된다고 하면, 아래와 같이 imageData의 첫번째가 바로 Blue 데이타이고, 그 다음이 Green 데이타의 처음, 그 다음이 Red 테이타의 처음이다. 이런식으로 위치에 대한 데이타가 1차원으로 주욱 나열 되어 있다.
사용자 삽입 이미지

실제 MATLAB이나 Simulink에 있는 Video and Image Processing Blockset에서 사용하기 쉽게 하기 위해서는 아래 그림과 같이 각각의 데이타를 가진 배열로 만들어서 3차원 배열로 만들면 된다.

사용자 삽입 이미지


이를 위해서 IplImage의 필드 중에서 필요한 필드를 이용하여 직접 만들어야 한다. 아래에 코드가 이를 하기 위한 코드이다.  월요일에 사무실에 가서 실제 하드웨어에서 값을 받아서 해봐야 겠다.

img를 IplImage의 포인터 타입이라고 생각하자. 그러면 IplImage의 구조를 보면 img->width, img->height, img->widthStep 등을 활용해서 필요한 RGB를 뽑아 낼 수 있다.

[code]
for ( i = 0; i < img->height; i++ )
{
  for ( j = 0; j < img->width; j++ )
  {
     b[i][j] = img->imageData[i*img->widthStep + j*3];
     g[i][j] = img->imageData[i*img->widthStep + j*3 + 1];
     r[i][j] = img->imageData[i*img->widthStep + j*3 + 2];
  }
}
[/code]
로 코드를 뽑으면 된다. 현재 하드웨어가 없어서 되는지를 MATLAB에서 확인해 봤다. 월요일날 실제로 적용해서 되는지를 적도록 하겠다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글 하나가 달렸습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/194

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/194

일하는 것도 그렇고 관심사도 그렇고 항상 소프트웨어에 관해서 생각하는 시간이 많은데, 소프트웨어만 가지고 하다보면 항상 가로 막는게 하드웨어이다. 아무리 좋은 알고리즘으로 소프트웨어를 제작했다 하더라도, PC상에서만 동작하는 소프트웨어는 임베딩해서 모바일 기계에서 돌아 가는 것과는 다르다. 게다가 하는 일 자체도 이런 임베디드 소프트웨어를 PC상에서 시물레이션하는 쪽인데, 실제로 이런 시물레이션과 하드웨어와의 연동까지 할 수 있어야 진정한 MBD(Model-Based Design)이라고 볼 수 있다. 시물레이션해서 코드 생성한 것을 하드웨어로 바로 가져 가서 쓰는 것... 이것이 진정한 MBD라고 볼 수 있다.

항상 이런 생각을 하다보면 결국엔 하드웨어와 연동을 하지 않을 수 없는데, 회사가 그런 하드웨어를 만드는 회사가 아니다 보니 항상 괜찮은 하드웨어를 찾게 된다. 그래서 예전에 Arduino도 찾았던 거고, http://www.varram.com 에서 무선 카메라도 찾았던 것이다.

이번 달 Nikkei Electronics라는 잡지책의 기사에서 이런 나의 구미에 딱 맞는 내용을 소개한 기사가 있어서 여기에 표시한다.

http://www.nekorea.co.kr/article_view.asp?seno=5638

기사에 나와 있는 제품들에 대한 소개 주소이다.
http://www.chumby.com/
http://www.openmoko.com/product-dboard.html
http://store.buglabs.net/
http://monsterdesign.tistory.com/290

지금 개인적으로 하고 있는 일이 끝나고 나면 하드웨어를 하나씩 사서 확인해 봐야 겠다...

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/201

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/201

2006년부터 해마다 매스웍스 코리아에서는 정기적으로 큰 행사를 진행하고 있다. 국내 엔지니어뿐만 아니라 본사 엔지니어들과 매스웍스 제품을 사용하고 있는 고객들까지 참여해서 하는 행사이다. 올해도 코엑스 인터컨티넨탈 호텔에서 행사를 진행한다. 행사의 이름은
The MathWorks Technology Conference 2009

행사 세부 일정을 보면 하루 종이 행사이며, 매스웍스 제품군을 대부분 다 다루는 행사이다. 또한 다양한 마스터 클래스로 참석자들에게 필요한 내용을 전달하기도 하며, 다양한 분야의 데모도 준비하고 있다. 또한 "임베디드 제어 시스템 설계 및 검증" 트랙은 동시통역까지 하므로 들을때도 많은 도움이 될거라고 생각한다.

특히나 국내 임베디드 소프트웨어 담당자들은 주로 커널 포팅이나 디바이스 드라이버 작성을 많이 생각하는데, 실제로는 알고리즘이 더 중요하다. 이런 알고리즘의 중요성을 인식하게 되면 시물레이션을 하지 않을 수가 없으며, C/C++ 같은 경우는 시물레이션을 하기에는 사용자에게 너무 많은 시간과 노력을 요구한다. 임베디드 소프트웨어 제어 시물레이션을 위한 툴 중에는 거의 독보적인 위치에 있는 Simulink 플랫폼에 대한 비전을 충분히 느낄 수 있을거라고 생각한다.

이미 선진국인 미국, 유럽, 일본등은 시물레이션하는 단계를 벗어나서 어떻게 하면 Verification과 Validation을 시물레이션 단계에서 할 수 있는지에 대한 고민을 하고 있으며, 매스웍스 제품군이 이런 사용자의 요구를 어떻게 수용해서 제품으로 도움을 주는지 세미나에 참석하면 알 수 있을듯 하다.

많은 사용자가 사전 등록해서 보러 왔으면 한다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/200

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/200