프로젝트 일자  : 2005-11-29
소요기간         : 3개월
용도               : SSM 창의 과제
개발인원         : 정명수, 김기석, 이상민, 고태경 총4명

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

임베디드 영상처리

사용자 삽입 이미지

임베디드 동영상 플레이어

사용자 삽입 이미지

테터툴즈와 연동하여, 보드에서 찍은 사진을 바로 웹으로 전송. 가지고 다니는 PMP를 통하여 테터툴즈와 같은 웹블로깅을 바로 할 수 있는 기능.

사용자 삽입 이미지

임베디드 플래시 플레이어. 보드상에서 플래시 동영상을 즐길 수 있도록 한다.

사용자 삽입 이미지

사진첩. 웹과 현재 임베디드 보드안에 사진들을 관리한다

사용자 삽입 이미지

네비게이션. 영상처리, 디비관리, 플래시 및 동영상, MP3플레이어등으로 이동 할 수 있게 한다.

< 개발 배경 및 목적 >
디지털 기기의 발전으로 데이터의 양은 증가 추세에 있는 반면에 이를 수용할 수 있는 임베디드 장치는 컴퓨터를 사용해야 하는 외장형 하드디스크나, 플래시 메모리 정도이다. 이와 같이 단순한 파일 교환형태만 가능한 장치는 사용자 인터페이스 측면이나 기타 부분에서 그 한계를 가지고 있고, 이를 해결할 수 있는 상호간 데이터 파일을 선택적으로 전송할 수 있는 장치는 극히 드물다. 그래서 본 프로젝트에서는 임베디드 장치 상호간의 미들웨어 시스템을 개발하고 구현하는 것을 목적으로 하고 있다.

< 주요특징 >
a) pc없이 usb host 기능으로 임베디드 장치와의 선택적인 파일 전송
b) 이미지 파일의 이미지 프로세싱
c) 이미지 프로세싱된 영상을 pc로 전송할 필요 없이 Web에 개시가능
d) usb를 이용한 데이터 고속 입출력 가능
iPad <-> PC , ums (dica ,mp3,외장disk)<->iPad
e) software codec을 이용한 mpeg4,mpeg2,mpeg1 format의 동영상 재생
f) ID3 Tag 및 mpeg info 정보를 표현한 mp3 플레이어
g) playlist 관리로 선택적 파일 재생
h) Exif 정보표현으로 이미지 파일 상세정보 표현 가능
i) iPad에서 category 관리 및 Web DB 관리
j) windows manager 프로그램으로 손쉬운 pc와의 데이터 송수신
k) 한글 오토마타를 이용한 한글 표현

< 기능 차별성 >
임베디드 미들웨어 시스템과 각종 멀티미디어 플레이어 기능 및 이미지 편집기능을 이용하여 iPad에서 무선네트워크를 이용 미니 블로그의 DB에 직접 개시할 수 있다는 것이 장점으로 second 장치가 아닌 First 장치로 구성될 수 있다.

a)iPad는 임베디드 시스템의 장점인 휴대성을 살려 언제 어디서나 내 사진을 미니 홈피에 올릴 수 있도록 고안 되었다.
b)단순히 찍은 사진을 올리는 것이 아니라 필터, 이펙터, 사이즈 조절 기능이 첨부되어 원본의 사진을 자신의 스타일에 맞게 편집하여 개시할 수 있다.
c)멀티미디어 기능 중 mp3,동영상 재생 기능을 같이 첨부하여 pmp나 mp3 player와 같이 단순 기능에 한정되어 있지 않고 conversions 개념으로 사용될 수 있다.
d)usb기능중 OTG 기능으로 임베디드 장치 상호간의 파일 복사는 가능하지만 선택적으로 리스트를 보면서 파일을 복사, 삭제하는 기능이 있는 제품은 없다. 하지만 iPad는 자체 하드디스크로 마운트한 외부 장치에서 파일을 복사, 삭제가 가능하며 외부장치(CF,ums)로의 복사, 삭제가 가능하다.
e)사용자는 휴대장치를 통해 자신만의 선호 이미지들을 가지고 다른 사용자에게 보여주기를 원하는 경우가 많다. 디지털 카메라는 자신의 이미지를 보여주기에는 LCD화면 크기가 협소하며, 일반 LAPTOP 컴퓨터로는 카테고리별 또는 앨범별로 분류할 수 없고 저장장치의 크기가 작다. PMP 나 mp3 player도 위와 마찬가지 일 것이다. iPad는 위와 같은 불편사항에 초점을 맞추어 이를 개선하는 것에 목적을 두고 개발하였다.




테터툴즈 연동을 위한 PMP의 DB 엔진

사용자 삽입 이미지
DB Engine : MySQL Sever와 연동하여 iPad에서 관리하는 쿼리와 통신, 데이터를 처리하게 된다.
※ 사용자 DB 처리
- 사용자 ID, 접근권한, Password, server lacation등을 설정 관리 한다.
※ 이미지 DB 처리
- IPad에서 이미지 프로세싱된 파일들의 위치를 웹서버의 물리적인 위치와 맵핑하여 이미지와 정보를 추가, 갱신처리한다.
※ 자체 DB 관리
- IPad 타겟 보드 내에서 MySQL의 데이터를 백업 받거나 또는 갱신하거나, 테이블 전체를 드랍할수 있도록 DB에 관련된 작업들을 수행한다.
※ 카테고리 관리
- 웹 브라우져를 통하여 사용자에게 표시될 이미지 그룹 또는 카테고리를 삽입, 삭제 저장하는것을 관리하며, Sub 카테고리를 생성할수 있도록 관리 한다.
 
Socket  : 사용자에게 보여지기 위해서 일정한 방식으로 웹서버와 통신해야하는데 소켓의 주된 역할은 IPad 이미지 전송이다. IPad 이미지 전송은 사용자의 한글, 또는 웹형식에 맞지않는 이미지 파일 이름을 인코딩하고 DBEngine과 연동하여 웹서버의 특정 위치에 삽입하고 DB Engine으로부터 위치를 확인 받는다.

MySQL Sever : MySQL 서버는 IPad에서 접근된 쿼리를 처리하며, PHP로 작성된 Tetter tools와 함께 연동하여 사용자가 웹브라우져에 표시, 또는 데이터를 처리 하게 된다.

※ DBEngine Architecture

사용자 삽입 이미지


Gtk+는 임베디드보드의 특성상 C로 구현되어 있으나 상속 Tree등을 C를 사용하여 OOP에 가깝게 설계되었다.

우리가 제작하는 DBEngine도 마찬가지로 생성자와, 파괴자등을 포함하고 각 UI 프로그램 또는 각 모듈간에 통신을 하기 위해 Singletone으로 생성되어 있으며, 모든 파일에서 전역변수를 줄였다.

엔진의 생성자에서는 자신의 포인터를 참조하여, 이미 생성된것이라면 다시 불리지 않도록 처리하여 여러번 중복으로 엔진을 생성하여 디비에 접근하는것을 차단했다.
엔진은 서버의 테이블의 이름과 연동하여 자신의 쿼리 상태를 체크하고, 시작시 사용자로부터 저장된 파일스트림으로부터 엔진을 초기화 할수 있도록 설계 되었다.
현재 UML은 개괄적인 축소판이며 실제 프로그램 구현상에서는 ImageManager에서도
엔진과 마찬가지로 OOP스타일의 객체를 생성하여 서로 통신하게 한다.

원격지 데이터베이스에서 쿼리된 내용은 CategoryInfo 객체에 담기게 되며 ManagerWindow와 리스트로 통신하게 된다.
ManagerUtil은 main과 gtk의 시그널 처리를 위한 콜백에서 사용하는 operation등을 처리하기위해 하나의 객체로 사용하고 있으며, 일종의 Trace bullet으로 차후 리펙토링을 통해 다시 몇 개의 객체로 분리될 예정이다.

우리는 일반적인 임베디드 C 스타일을 설계에서 중복을 방지하고, 전역 상태 또는 변수를 가급적 자제하여 프로그램의 안전성을 꾀하고 있다.

 Image Viewer & Editor

사용자 삽입 이미지

1. 휴대성을 가진 장치들이 증가하고 다양화 됨에 따라 장치가 가지고 있는 이미지들을 쉽게 확인하고 이미지 처리 해야 할 경우가 많아졌음.
2. 이에 iPad는 휴대장치에서 실시간 이미지 처리를 하여 저장하게 하고 각각의 이미지를 육안으로 확인하게 하여 사용자의 편의를 도모하였음.
3. 디바이스들의 메모리 또는 물리적 저장장치의 크기가 현존히 증가하였다고 해도 이미지의 퀄리티가 증가하고 그 양이 많아 짐에 따라 디바이스에서 자신이 촬영 또는 만들어낸 특정 이미지를 제외한 더미(Dummy) 이미지들을 즉각 처리 해야할 경우를 위해 iPad는 디바이스에서 즉각 이미지들을 분류하여 사용자의 공간을 확보 할수 있게 한다.
4. Image Viewer 는 장치내에 저장되어 있는 image file의 내용을 간편히 확인하고, 필요한 경우 간단한 편집을 할 수 있는 기능을 추가하였다.
5. Embedded system에 6.4inch color LCD를 장착함으로서 실사 size의 사진을 감상 가능하도록 구성하였다.
6. 또한 digital 사진의 특성상 후보정을 가능하게 system을 구성함으로서 embedded 기기 에서 file의 편집, 삭제, 확인, web개시 까지 모두 가능하게 구성하였다.
7. 디지털 사진에서 이미지를 개인 PC로 옮겨 다시 이미지를 에디팅 또는 처리 하지 않고 임베디드 보드상에서 바로 이미지를 처리 하기 위해 Batch Image Processing 또는 특정 기능을 수행하는 Image Filter 등을 제작하였다.
8. Image Viewer의 모든 GUI는GTK+2.0으로 구현되었다.


※ iPad Image Manager
- Image Filter는 Image Library중 공개 library인 Imlib 1.9.15를 Embedded linux에 맞게 porting 하여 몇몇 Image filter를 구현하였으며 배치 이미지 처리(Batch Image Processing)을 위한 wrapping code 및 Glue code를 생성하였다.
- 단순히 이미지 필터를 사용하는것이 아니라 사용자가 촬영한 사진을 전문가 사진의 이미지로 흉내내는 특정 느낌의 연출필터(따뜻한 느낌, 쿨한 느낌등)를 구현
- 배치 이미지 처리(Batch Image Processing)
  사용자가 촬영한 특정한 몇몇 이미지 또는 그룹을 특정 기능 또는 필터, 이미지 리사이즈를 위해 한번에 여러효과를 적용하여 임베디드 보드 상에서 처리 및 구현 할수 있도록 지원한다.
- 자동화 처리 및 특정 기타 필터
  현재 작업중인 내용으로 사진의 크기에 따라 적절한 리사이즈를 처리 할 수 있도록 하게 하며, 사용자의 로고, 텍스트등을 입력하여 이미지를 처리에 포함 될수 있도록 지원한다.
- DBEngine과 연동
  이미지 처리후 웹서버의 특정 위치 또는 특정 텍스트 내용을 저장하고 확인하기위해 iPad의 엔진과 함께 연동하여 이미지 처리 한다.

Flash Player, MP3 Player, 동영상 Player 기타 PMP기능 및 개발 과정과 기술적인 요약을 보실려면 아래 문서를 참조 하실 수 있습니다. 아래 문서는 당시 개발 보고서와 각각 파트별로 처음 프로토타입에 대한 설명들을 포함하고 있습니다. 개발에 관한 좀 더 깊은 이슈를 원할 경우 개인적으로 질문 바랍니다.

DB Engine.hwp

테터툴즈와 PMP 연결 DB Engine부분

※ Image Viewer.hwp

임베디드 이미지 뷰어에 관련 보고

i pad 개발 보고서.doc

I PAD 개발 보고서 / 한글 오토마타 및 키보드, 각종 플레이어 및 프로토콜 분석등 모두 포괄