로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
  AVR Applications
AVR 자료실
작성자 leeky        
작성일 2006/03/19
첨부#1 bm_mega8+treavacap.exe.zip (0KB) (Down:89)
Link#1 bench.html#bench03 (Down:13)
ㆍ추천: 0  ㆍ조회: 775   
  Mega8 + OV6630 Treva 모바일용 카메라의 화상처리
 
Treava는 일본의 Kyocera 사에서 만든 모바일폰의 카메라이다.
또한 국내에서 판매된 MOBICAM MC-100 과 같은 모델이다.
 
현재 모바일폰의 카메라는 100만 화소급 이상으로 발전하였고,
따라서 10만 화소급 CIF는 로봇시각센서, 인터넷 감시카메라, 모션 검출용 등에 사용한다.
.
제조사 :  OmniVision
홈페이지 : http://www.ovt.com/omnicell.htm
규격 : OV6630 : 352 X 288, 10만 화소(pixel) 3.3V, 48pin YUV 4:2:2, 1/4" 

■ Treava의 규격.
크기 : 30 x 32 x 16mm
무게 : 10g
촬상소자 : 1/4형, 10만화소
사용 소자 : CMOS 이미지 센서 OV6330
OV6330 규격 : 352 X 288, 100K Pixel 3.3V, 48pin YUV 4:2:2, 1/4"

OV6630은 352 x 288 이나, Treava는 이보다 작게 화면을 구성하고 있다.
해상도 : 96 x 72 화소
렌즈촛점 : 30 cm ~ 무한대
지향각 ; 수평 46도, 수직 37도
노출 : 자동
백색균형 : 자동
콘넥터 : 2.5 mm 4핀 plug
전원 : 3.3V 15~20 mA
화상포맷 : 16비트 YUV 형식
전송속도 : 3 ~ 7.7 fps (연결속도에 따라서 다름)
참조 사이트 : http://www.paken.org/aaf/treva/

■ 전송포맷의 특징
YUV 4:2:2는 Y 성분을 4  비트(16 단계), U 성분을 2비트로 (4 단계), V 성분을 2 비트(4 단계)로 분해아여
전송하는 8비트의 픽셀 전송규격이다. 이 픽셀들을 순서데로 화면에 표시하면 그림이 된다.  
.
YCbCr 은 Y + C로 볼 수 있다. 이는 위에서 말한 흑백 + 컬러와 같다.
C는 다시 Cb 와 Cr로 나뉘는데 Cb는 COLOR LIKE BLUE정도 생각하면 되겠다.
RGB를 YCbCr로 변환하면, Cb는 Blue, Cr은 Red  요소를 가장 많이 갖게 된다.

즉, YCbCr은 밝기 Y 성분과 컬러 Cb, Cr로 구분을 해 놓은 것이다.
CCIR601, CCIR656는 A/D로 변환했을 때 나오는 데이터 포맷으로
YCbCr 4:2:2 포맷이라고 생각하면 된다.
.
16비트 UYVY 포맷은
Bit 15 ~ Bit 9 = 색정보 U 혹은 V이며, 
Bit 8 ~ Bit 0 = 휘도정보 Y 값이다.

YUV를 RGB로 변환하려면,
R = (U - 128) + Y,
G = 0.98*Y - 0.53*(U - 128) - 0.19*(V - 128)
B = (V - 128) + Y
를 사용하여 변환할 수 있다.
 
상수를 빼고 설명하면, 
R = (U+Y),
G = Y-(U+V),
B = (V+Y) 이다,
실제 계산 방법은 다음과 같다,,,

■ 1화소의 데이터 구성 :
Bit 15 ~ Bit 9 = 색정보 U 혹은 V
Bit 8 ~ Bit 0 = 휘도정보 Y
.
YUV를 RGB로 변환 :
R = (U - 128) + Y
G = 0.98 *Y - 0.53 *(U - 128) - 0.19 *(V - 128)
B = (V - 128) + Y
.
혹은 :
R = 1.40*(U - 128) + Y
G = 1.02*Y - 0.750*(U - 128) - 0.336*(V - 128)
B = 1.77*(V - 128) + Y

■ 변환 프로그램의 예 :  (UYVY를 RGB로 변환하여 이미지 파일로 저장하고 화면에 표시한다) 
  unsigned char img [96 *72 *2];   // PPM (UNIX 에서 많이 사용하는 헤더정보를 출력)
  printf( "P6" );
  printf( "96 72 255 " );

  // (img[] 배열변수에 화상 데이터를 저장한다. 
  for (i =0; i <72; i++)
 {
    for(j =0; j <96; j++)
   {
      p = (i *96 + j) *2;
      Y =  img [p +1];
     
     if( j % 2 == 0)
     {
        V =  img[p];
        U =  img[p+2];
      }
      else
     {
        V =  img[p-2];
        U =  img[p];
      }

      U = U - 128.0;
      V = V - 128.0;

      red = U + Y ;
      green = 0.98 *Y - 0.53 *U - 0.19 *V;
      blue = V + Y;

      // RGB 출력을 0~255 이내로 제한 
      if( red > 255 ) red = 255;    
      if( red < 0 ) red = 0;
      if( green > 255 ) green = 255;
      if( green < 0 ) green = 0;
      if( blue > 255 ) blue = 255;
      if( blue < 0 ) blue = 0;

      // RGB 화면을 출력
      printf( "%c",  (unsigned char)red );
      printf( "%c",  (unsigned char)green );
      printf( "%c",  (unsigned char)blue );
    }
  } 

■ Treava Camera의 접속
  

DOUT (노랑) : 직렬 데이터가 카메라에서 출력된다
CLKIN (분홍) : 클럭 입력을 카메라로 전송한다
GND (검정) : 접지
VCC (빨강) : 전원 3.0V (3.3V로 직결가능)

 
 
■ Treava 화상 데이터의 구조:
프레임과 프레임 사이는 0xFF로 된다.
화상 데이터의 직전에는 가변길이의 약 256 바이트의 헤더가 있습니다.
.
FF FF
FF FF ; NULL =데이터 없음 (대기)
AA 55 ; 전송시작 Flag (이하 28 바이트는 무시해도 된다)

FF D8 ; 프레임 시작
1C ; 헤더의 길이 = 28 바이트
F0 ; 모델 = 카메라
F1 ; 버전 = 1
00 60 ; 한줄의 화소수 = 96 화소 (수평)
00 48 ; 화면의 줄수 = 78 줄 (수직) 
81 ; 8 = 8 비트 단조, 1=YUV
31 ; 3 = UYVY 출력, 1 = MSB 시작
20 ; 2 = "4.2.2"방식, 0 = 비압축
4B 43 23 38 42 50 2E 2E ; 제조사 정보
00 00
00 00
00 00
00 00
 
AA 55 ; 화상 데이터의 시작 (확인)
데이터 =96 x 72 x16 비트의 데이터 (1화소는 16비트로 저장)
FF D9 ; 화상 데이터의 종료 (확인)
.
■  Treava 카메라의 데이터 처리 소스
/* 1비트의 읽기 처리 */
int read_bit ()
{
  int i, a;
  PDTRA = PDTRA & ~0x0040;  /* CLK = 0 카메라의 CLK를 0으로 만든다*/  
  for(i=0; i<42; i++);      /* Wait; 42 for 500kHz  = 42회 반복으로 지연시간을 만듬 */
  a = PDTRA & 0x0080;       /* 클럭을 0으로 하고 82us 지연 후에 입상에서 DOUT을 읽음 */
  PDTRA = PDTRA | 0x0040;   /* CLK = 1 클럭을 1로 만든다 */
  for(i=0; i<42; i++);      /* Wait; 42 for 500kHz  다시 82us을 대기한다 */
  if(a)                  
    return 1;        // 읽어낸 카메라의 데이터 비트 값이 1이면 1을 리턴한다.
  else
    return 0;       // 읽어낸 카메라의 데이터 비트 값이 0이면 0을 리턴한다.
}

void start_main (void)     /* 메인 함수 */
{
  unsigned char data[96*72*2+100];    // 비트맵 저장용 배열변수 data를 13824+100 바이트로 선언
  // 이하 생략 .....

  while(1)
  {    
    while( scif_getc() != 's' )    // UART에서 문자 s가 수신될 때 까지 대기
    read_bit();    //  카메라 비트를 읽는다.
    i = 0;             // 변수 i를 0 으로 초기화 한다.
    while(i<100)    // 100 비트 연속 1을 대기 (카운터 값이 100이 될때 까지 무한반복)
    {
      if( read_bit() == 1) i++;    // 읽은 비트가 1이면 카운터값을 +1
      else i = 0;    // 읽은 비트가 0이면 카운터를 0으로 리셋 (비트 1만 카운트 한다)
    }

    /* 비트1이 100개 들어온 이후에는 연속해서 65 비트의 0을 검출하고 비트맵 시작 플랙을 점검한다 */
    i = 0;
    while (i<65)
    {
      if( read_bit() == 0) i++;    // 카메라에서 수신된 비트가 0이면 변수 i 를 +1 한다.
      else i = 0;                     // 즉 카메라의 출력 비트 0이 65개인지 계수한다.    
    }

    /* 계속해서 2바이트의 데이터를 무시, 혹은 0xAA와 0x55를 수신해도 된다 */
    for( i=0; i<2*8; i++ )    // 반복 횟수를 16으로 선언
      read_bit();              // 1 비트를 읽기만 한다. (16번 반복 = 2바이트 시작 플래그)
    
    /* 여기서 부터 화면 데이터의 취득을 시작, 96*72*2 =13824 개의 8비트 데이터를 수신한다 */
    for( k=0; k < 96*72*2; k++){    // for 반복문을 13824개로 선언
      d = 0;        // 바이트 변수값을 0으로 초기화
      for (i=0; i<8; i++){    // 아래 1 비트 수신 루틴을 8번 반복하는 선언.
        d <<= 1;          // 수신비트를 1비트 좌로 시프트한다.
        if(read_bit())     // 만일 read_bir()의 리턴값이 1이면
          d |= 0x1;       // d 변수를 1로 세트한다.  
      }
      data[k] = d;        // 8번 시프트한 바이트 d를 data[k]에 13824번 저장한다. (16K SRAM이 필요)
    }
    /* 취득한 데이터를 PC에 전송 */
    for( k=0; k < 96*72*2; k++)
   {
      scif_putc(data[k]);    // 수신된 화면 96 * 72 *2 = 13824 바이트를 PC로 전송한다.
    }                               // 즉 헤더가 없는 카메라의 비트맵 1 화면을 송신한다.
  }


다음은 카메라 인터페이스 시험용으로 첨부된 TreavCap.exe 소프트웨어이다.
 
 
■ PC측 소프트웨어 TrevaCap V1.0 (79 K바이트 LZH압축)
http://www.asahi-net.or.jp/~qx5k-iskw/robot/bench/TrevaCap10.lzh 

 

■ ATmega8 Treva의 펌웨어 소스 (22 K바이트 LZH압축)
http://www.asahi-net.or.jp/~qx5k-iskw/robot/bench/bm_mega8.lzh
첨부된 파일 bm_mega8+treavacap.exe.zip을 내려받기 하십시요. 

 
 
■ TREVA CAMERA INTERFACE 회로도
 
사용 MPU : Atmel ATmega8 (8MHz Xtal)
소프트웨어 : WinAVR 20040720 (gcc 3.4.1)
.
Atmega8 클럭 : 8MHz
화상 처리시간 = 589 ~ 590ms (약 0.6초) <- Mega8이 Treva의 신호를 처리하는 시간
화면 사이즈 = 1408 바이트 (0x000 ~ 0x57F)
전송속도 =38400 bps  <- 115200 bps도 사용가능.
.
■ I/O 접속 :
PC.2 = Treva DOUT  <- Treva의 data 출력을 Mega8의 PC2에 입력한다.
PC.1 = Treva CLKIN  <- Treva의 Data 출력용 Clock을 Mega8의 PC1에서 출력한다.
PC.0 = LED Output  <- Treva의 연결상태를 LED로 표시한다.
PD.1 = UART TxD  <- ㅡMega8의 RXD입력으로 MAX232, ST232 등을 통하여 PC의 COM포트 TXD에 연결한다.
PD.0 = UART RxD <- Mega8의 TXD출력으로 MAX232, ST232 등을 통하여 PC의 COM포트 RXD에 연결한다. 

이자료의 무단 복제 및 무단배포를 금합니다.
원저자 : http://www.asahi-net.or.jp/~qx5k-iskw/robot/index.html

AVRTOOLS™
   
윗글 Mega8 + 128x128 LCD 스코프
아래글 YUKI Mega8 MP3 Player #3
    N         제목    글쓴이 작성일 조회 추천
AVR 자료실 안내 avrtools™ 2008/09/02 (화) 153 0
97 AVR Basic Compiler (4K Free) avrtools™ 2008/12/03 (수) 176 0
96 코드비젼 V2.05.0 평가판 avrtools™ 2011/07/17 (일) 116 0
95 8x8 LED Audio Spectrum Display avrtools™ 2009/10/18 (일) 238 0
94 AVR 펌웨어로 만드는 USB 드라이버 avrtools™ 2009/10/07 (수) 412 0
93 AVR-CDC and V-USB avrtools™ 2009/10/06 (화) 210 0
92 AVR USB-HID-Bootloader의 제작 avrtools™ 2009/10/01 (목) 245 0
91 AT91SAM7S256 개발환경과 컴파일러 [2] avrtools™ 2008/11/03 (월) 2162 0
90 SAM7S256 USB 드라이버와 AT91-ISP avrtools™ 2008/11/01 (토) 1145 0
89 AT91SAM7S256 공부를 시작합니다. avrtools™ 2008/11/01 (토) 571 1
88 ICCAVR V7.16A AVR 컴파일러 45일판 avrtools™ 2009/03/09 (월) 122 0
87 CodeVisionAVR1248b 最新版下载 leeky 2008/11/08 (토) 287 0
86 AVR UART 소스 (ICC AVR V6) avrtools™ 2008/12/03 (수) 162 0
85 cvAVR Soft Uart Source avrtools™ 2008/12/03 (수) 135 0
84 cvAVR 직렬포트와 LCD 시험용 소스 avrtools™ 2008/12/03 (수) 132 0
83 Free SmallC for AVR avrtools™ 2008/12/03 (수) 150 0
82 AVR910-ISP용 AVR-OSP2 Ver5.43 avrtools™ 2008/12/03 (수) 159 0
81 Code Vision AVR 컴파일러 2K 데모버전 avrtools™ 2008/12/02 (화) 88 0
80 AVR delay loop generator avrtools™ 2008/12/02 (화) 140 0
79 ICC tiny C컴파일러 V6 데모버전 (30일 제한판) avrtools™ 2008/12/02 (화) 58 0
78 ICC AVR C 컴파일러 V6 (4K 제한판) avrtools™ 2008/12/02 (화) 77 0
77 DasmAVR (Windows용 AVR 역어셈블러) avrtools™ 2008/12/02 (화) 123 0
76 AVR PROG KIT avrtools™ 2008/12/02 (화) 167 0
75 AVR JTAG ICE KIT avrtools™ 2008/12/02 (화) 237 0
74 AVR 부동소수점, 지연시간 계산기 avrtools™ 2008/12/02 (화) 139 0
73 ATtiny45 USB to RS232 인터페이스 avrtools™ 2008/09/26 (금) 186 0
72 MEGA32 128x64 GLCD Scope 제작 avrtools™ 2008/09/22 (월) 299 0
71 PC송신방식 Tiny2313 50x7 LED 전광판 avrtools™ 2008/09/10 (수) 251 0
70 mega8 적외선 거리측정 레이더 leeky 2006/05/07 (일) 1367 0
69 ATmega16 RFID #3 소프트웨어 leeky 2006/12/27 (수) 879 0
68 ATmega16 RFID #2 하드웨어 leeky 2006/12/27 (수) 1126 0
67 ATmega16 RFID #1 태그 leeky 2006/12/27 (수) 857 0
66 ISO 14443A RFID 카드의 읽기/쓰기 방법 [1] leeky 2007/02/25 (일) 1488 1
65 ATmega8 PSK31 RF Modem의 제작 leeky 2006/03/07 (화) 1376 21
64 T89C51SND1C 64M USB MP3 플레이어 avrtools 2006/03/04 (토) 968 8
63 AVR 13.56MHz RFID 읽기/쓰기 장치의 제작 [7] leeky 2007/02/19 (월) 994 4
62 WhereAVR for APRS GPS/Telemetry avrtools 2006/05/05 (금) 384 2
61 ATmega8 UI-TNC 무선모뎀의 제작 avrtools 2006/03/07 (화) 391 0
60 AVR APRS(GPS) Packet 무선모뎀 avrtools 2006/03/07 (화) 374 0
59 AT90PWM3 교류모터 속도제어 leeky 2006/04/07 (금) 921 1
58 M128 MMC LED 전광판 leeky 2006/03/07 (화) 911 0
57 Charon 2 이더넷 모듈의 소개 avrtools 2006/04/04 (화) 473 0
56 S2313 LED 회전계 (TACHO METER) avrtools 2006/03/28 (화) 596 0
55 Mega8 + 128x128 LCD 스코프 avrtools 2006/03/28 (화) 1183 0
54 Mega8 + OV6630 Treva 모바일용 카메라의 화상처리 leeky 2006/03/19 (일) 775 0
53 YUKI Mega8 MP3 Player #3 avrtools 2006/03/11 (토) 835 0
52 AVR JTAG 에뮬레이터의 제작 avrtools 2006/03/07 (화) 832 0
51 USB AVR 프로그래머 AvrUsb500 avrtools 2006/03/07 (화) 724 1
50 Mega88 USB 버스 모니터 avrtools 2006/03/07 (화) 381 0
49 M16 MMC Flash Memory leeky 2006/03/07 (화) 448 1
48 M163 SD,MMC Interface leeky 2006/03/07 (화) 433 0
47 S2313 MMC to Serial leeky 2006/03/07 (화) 313 0
46 ATmega48 UDP/IP 적외선 리모콘 수신장치 avrtools 2006/03/07 (화) 410 0
45 HDD MP3 플레이어 leeky 2006/03/07 (화) 595 0
44 MP3 yampp-3/USB leeky 2006/03/07 (화) 288 0
43 MP3 Player yampp-3 leeky 2006/03/07 (화) 253 0
42 YUKI MP3 플레이어2의 제작 (ATmega8 + SD Card) avrtools 2006/03/07 (화) 369 0
41 AVR CD 플레이어 leeky 2006/03/07 (화) 530 0
40 S2313 초음파 거리계 (미터, TV 스크린, LED 표시) avrtools 2006/03/07 (화) 543 0
39 RF Spectrum Monitor avrtools 2006/03/07 (화) 372 0
38 Easy Ethernet AVR 웹서버 leeky 2006/03/07 (화) 448 0
37 90S4433 LCD표시 100Mhz 주파수 카운터 leeky 2006/03/07 (화) 245 0
36 ELM Audio Spectrum Monitor avrtools 2006/03/07 (화) 351 0
35 Mega8 Door Bell leeky 2006/03/07 (화) 276 0
34 AVR 휴대용 DVM leeky 2006/03/07 (화) 481 0
33 Minimum Mass Waveform Capture and Display leeky 2006/03/07 (화) 259 0
32 AT90S2313 디지털 용량계 avrtools 2006/03/07 (화) 363 0
31 SLO2016 Alphanumeric Intelligent Display leeky 2006/03/07 (화) 173 0
30 AT90S2313 흔드는 LED 전광판 (POV) leeky 2006/03/07 (화) 425 0
29 ATtiny2313 Scrolling LED Sign avrtools 2006/03/07 (화) 361 0
28 Tiny22,S1200 나이트 라이더 avrtools 2006/03/07 (화) 306 0
27 ATtiny26L의 AD 변환과 PWM 출력제어 leeky 2006/03/07 (화) 471 0
26 S2313을 사용한 DS1820 온도계 leeky 2006/03/07 (화) 261 0
25 ATmega8535 온도센서 leeky 2006/03/07 (화) 291 0
24 AVR2313 100MHz RF연결 주파수 측정메터 avrtools 2006/03/07 (화) 190 0
23 VHF 무선 데이터 송신기 leeky 2006/03/07 (화) 499 0
22 90S2313 1MHz 파형 포착기 leeky 2006/03/07 (화) 224 0
21 VHF 무선 데이터 수신기 avrtools 2006/03/07 (화) 361 0
20 AVR 5x7 Dotmatrix LED leeky 2006/03/07 (화) 234 0
19 Mega163 웹 LCD leeky 2006/03/07 (화) 391 0
18 AVR 이더넷 시험소프트 avrtools 2006/03/07 (화) 293 0
17 AVR 넷트웍 시계 (타임 프로토콜) avrtools 2006/03/07 (화) 371 0
16 RS-232 to 100 MHz RF desktop avrtools 2006/03/07 (화) 232 0
15 AVR 6디지트 50MHz 주파수 카운터 leeky 2006/03/07 (화) 209 0
14 AVR DS1820 온도센서 avrtools 2006/03/07 (화) 248 0
13 AVR 직접주파수 발생기 (AT90S2313 DDS) avrtools 2006/03/07 (화) 368 0
12 프로그래머블 PLL 제어 avrtools 2006/03/07 (화) 216 0
11 AVR AT90S2313 7Segment LED Display leeky 2006/03/07 (화) 210 0
10 TINY15L 무전원 4채널 온도계 avrtools 2006/03/07 (화) 313 0
9 8PIN AVR을 사용한 풀컬러 LED leeky 2006/03/07 (화) 345 0
8 DS1820 고분해능 온도계 avrtools 2006/03/07 (화) 332 0
7 S2313 디지털 전압계 avrtools 2006/03/07 (화) 448 0
6 S2313 적외선 USB 모듈 avrtools 2006/03/07 (화) 316 0
5 S2313 주파수 카운터 avrtools 2006/03/07 (화) 253 0
4 AVR90S2313과 Treva 카메라의 연결 leeky 2006/03/07 (화) 292 0
3 Mega8 PID 온도제어 leeky 2006/02/24 (금) 527 1
2 90S2333 3채널 다이오드 온도계 avrtools 2006/02/24 (금) 233 0
1 AT89S8252로 만드는 1~40MHz DDS leeky 2006/02/14 (화) 306 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0