KR100631096B1 - 주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라 - Google Patents

주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라 Download PDF

Info

Publication number
KR100631096B1
KR100631096B1 KR1020017016889A KR20017016889A KR100631096B1 KR 100631096 B1 KR100631096 B1 KR 100631096B1 KR 1020017016889 A KR1020017016889 A KR 1020017016889A KR 20017016889 A KR20017016889 A KR 20017016889A KR 100631096 B1 KR100631096 B1 KR 100631096B1
Authority
KR
South Korea
Prior art keywords
data
pixel
correction
value
image
Prior art date
Application number
KR1020017016889A
Other languages
English (en)
Other versions
KR20020033647A (ko
Inventor
흐스마크
노크로스미첼
오우버거조지스
짐머맨레미
매기서지오
산체즈조지
빌러벡브라이드
리웨이
라브로우스쥬니엔
Original Assignee
로지테크 유럽 소시에떼 아노님
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/343,934 external-priority patent/US6580828B1/en
Priority claimed from US09/345,167 external-priority patent/US6833862B1/en
Priority claimed from US09/464,364 external-priority patent/US7009644B1/en
Priority claimed from US09/602,547 external-priority patent/US6704359B1/en
Application filed by 로지테크 유럽 소시에떼 아노님 filed Critical 로지테크 유럽 소시에떼 아노님
Publication of KR20020033647A publication Critical patent/KR20020033647A/ko
Application granted granted Critical
Publication of KR100631096B1 publication Critical patent/KR100631096B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

호스트 소프트웨어에 주요한 기능을 구현하여 저가 카메라가 제공된다. 이것은 카메라로부터 디지털화된 데이터를 바로 호스트로 보내어 수행될 수 있다. 원래 데이터의 증가된 용량은 손실없는 압축을 사용하거나, 손실있는 압축을 사용하고 또는 높은 밴드폭을 갖는 공유된 버스를 사용하는 향상된 압축/복원 스키마에 의하여 처리된다. 색처리와 스케일링과 같은 기능은 호스트로 이동되며, 화소 정정도 호스트로 이동될 수 있다. 이것은 차례로 카메라로부터 프레임 버퍼 메모리의 소거하게 한다. 마침내, 카메라는 정정을 수행하는 호스트에 의한 이후의 접근을 위한 카메라의 레지스터에 저장되는 정정값으로 비네팅, 왜곡, 감마 또는 에얼리어싱 정정을 구현하여 저가 렌즈를 사용할 수 있다.

Description

주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라 {VIDEO CAMERA WITH MAJOR FUNCTIONS IMPLEMENTED IN HOST SOFTWARE}
본 명세서는 "IMAGE SENSOR BASED VIGNETTING" 이란 표제로 1999년 6월 30일에 출원된 미국 특허 출원번호 제 09/345,167호과 "DYNAMIC ANOMALOUS PIXEL DETECTION AND CORRECTION" 이란 표제로 1999년 12월 15일에 출원된 미국 특허 출원번호 제 09/464,364호 및 "FAST DECODING" 이란 표제로 1999년 6월 30일에 출원된 미국 특허 출원번호 제 09/343,934호의 일부계속출원(continuation-in-part)이다. 상기의 출원들은 본 명세서에 참고자료로 채택된다.
본 발명은 비디오 카메라 및 특히 범용 직렬 버스(USB)등과 같은 공유된 인터페이스에 의하여 컴퓨터 또는 기타 지능장치에 연결되는 비디오 카메라에 관한 것이다.
정지영상과 동영상 모두를 제공하는 비디오 카메라가 개발되었고 컴퓨터에 연결되어 디지털화된 이미지를 제공할 수 있게 되었다. 이러한 카메라는 USB등과 같은 공유된 버스를 통하여 컴퓨터에 연결될 수 있다. 이것은 보낼 수 있는 데이터의 대역폭을 한정하므로, 비디오 데이터의 압축을 필요로 한다. 일반적으로, 카메라는 카메라 일렉트로닉스 내에서 얼마간의 이미지의 전처리를 할 것이고, 따라서, 컴퓨터의 CPU로부터 처리를 분담(off-loading)함과 동시에 버스를 통하여 압축전송되어야 할 데이터량을 잠재적으로 감소시킨다.
이러한 설계로 인하여, 몇몇 기능들은 카메라내에서 수행되는 것이 요구된다. 예를 들어, 카메라 내의 CCD 또는 CMOS 센서는 적절하게 집광하지 않는 결함 있는 검출기 위치를 가질 수도 있다. 이들은 인접한 검출기 사이트(site)에서 검출된 빛의 양을 평균하고 상기 결함 있는 사이트가 제공한 값 대신 이 값을 사용하여 보상될 수 있다. 이러한 유형의 처리는 색채처리와 스케일링등과 같은 일반적으로 비디오 카메라내에서 행해지는 다른 유형의 처리보다 먼저 행해질 필요가 있다.
도 1은 버스를 통하여 호스트에 접속할 수 있는 일반적인 비디오 카메라의 블록 다이어그램이다. 렌즈(10)는 센서 데이터를 읽어내기 위한 관련된 제어로직을 갖는 센서(12)상으로 빛의 초점을 맞춘다. 데이터는 아날로그 대 디지털 컨버터(ADC)(14)에 제공되어, 디지털화된다. 그런 다음 이 데이터는 프레임버퍼메모리(16)에 저장된다. 회로(18)를 사용하여 상기 데이터에 화소정정(pixel correction)이 적용될 수 있다. 정정데이터는 프로그램가능한 메모리(20)에 저장될 수 있다. 이 메모리는 제조공정동안, 심지어는 카메라가 선적(ship)되기 전에 프로그래밍된다.
비록 다른 순서로 행해지거나 또는 버스를 통하여 연결되어 실시되는 때가 변경될 수 있지만, 많은 기타 기능들은 일반적으로 도 1에 도시된 특정한 순서로, 카메라내에서 수행된다. 예를 들어, 색채처리회로(22)는 받아들인 YUV등과 같은 1개의 색채포맷으로부터 RGB와 같은 기타 색채포맷으로 데이터를 변환시키는 것과 같은, 많은 색채기능을 수행할 수 있다. 스케일러 기능(24)은 호스트에서 요구되는 디스플레이에 맞게 이미지를 스케일링 할 수 있다. 압축회로(26)는 공유된 버스를 통하여 전송될 데이터량을 줄이도록 데이터를 압축할 것이다. 마지막으로, 버스 인터페이스회로(28)는 멀리 떨어진 호스트에 데이터를 전송하기 위하여 버스(30)의 프로토콜을 제공한다.
허프만 코딩(Huffman coding)은 비디오 데이터를 압축하는데 가장 널리 사용되는 알고리즘의 하나이다. 허프만 코딩은 제이펙(JPEG:Joint Photographic Experts group), 엠펙(MPEG:Motion Picture Experts group), MPEG-II, H.261 및 H.323에 의하여 특정된 표준과 같은 다양한 이미지 및 비디오 압축 표준에 사용되어 왔다. 이러한 표준들은 온전히 그대로 그리고 모든 목적으로, 본 명세서에 참고자료로 포함된다. 허프만 코딩은 손실없는 엔트로피 코딩 기술이다. 허프만 코딩은 가장 빈번하게 발생하는 데이터를 가장 짧은 코드워드(code word)로 선택하기 위하여 확률을 활용한다. 예를 들어, 영문 텍스트를 코딩할 때, 영어에서 매우 흔한 문자인 "E"는 2비트 코드워드로 표현될 수 있는 반면에 그렇게 빈번하게 사용되지는 않는 "A"는 8비트 코드워드로 표현될 수 있다.
결과적으로, 허프만 코딩은 더욱 빈번하게 발생하는 데이터를 더 짧은 코드워드로 할당하고 덜 빈번하게 발생하는 데이터를 더 긴 코드워드로 할당하여 데이터를 압축한다. 할당된 코드워드는 테이블 형태로 유지될 수 있고, 그 다음 수신자와 송신자 모두에 의하여 사용된다. 허프만 코딩에 관한 더 상세한 정보는, 온전히 그대로 그리고 모든 목적으로 본명세서에서 참고자료로 채택되는 "A Method for the Construction of Minimum Redundancy Codes" (Proceedings of the IRE, Vol.40, No.9, 1952년 9월, pp.1098-1101, D.A Huffman저)에서 찾을 수 있다.
게다가, 허프만 코드워드는 어떠한 다른 코드워드도 코드워드의 접두사가 될 수 없는 방식으로 구성된다. 이는 코드의 길이가 변할 수 있음에도 불구하고, 데이터의 비트 스트림으로부터 각각의 심볼을 모호하지 않게 디코딩하도록 보장한다. 허프만 코드의 특징에 관한 부가 설명은, 온전히 그대로 그리고 모든 목적으로 본명세서에서 참고자료로 채택되는 Data Compression Book (M&T Books, 1996, M.Melson and J.L.Gailly저)에서 찾을 수 있다. 상기 참고 서적 페이지 31-35에서는 트리-트레이싱(tree-tracing)을 기초로 한 디코딩 알고리즘을 제안한다. 그러나, 이 알고리즘은 Intel사의 Pentium
Figure 112002010186855-pct00001
family등과 같은 최근에 사용되는 대부분의 마이크로프로세서를 사용하는 빠른 데이터 복원(fast decompression)에는 적절하지 않다.
비네팅 효과(vinetting effect)란 스크린의 에지부 주변의 휘도(brightness)가 스크린의 중심부 휘도보다 낮을 때이고, 헤일로 효과(halo effect)를 일으킨다. 전문적인 사진가는 때때로 화상의 에지부에서 부드러운 이미지를 생성시키도록 적절한 렌즈나 스크린으로 의도적으로 이러한 효과를 일으키도록 노력할 것이다. 그러나, 이 효과는 디지털 사진에 부지불식간에 나타날 때, 이것은 귀찮은 것일 것이다. 다양한 기술이 비네팅 효과를 측정하고 어드레싱하도록 개발되었다.
미국 특허 번호 제 4,884,140호에서는 비네팅을 발생시키는 줌렌즈를 사용하는 비디오 카메라에 비네팅 보상을 제공하는 아날로그 회로를 설명한다.
미국 특허 번호 5,434,902호에서는 일정한 휘도 이미지를 사용하여 x선 검사장치용 비네팅 효과를 측정하는 것을 설명한다. 그 다음, 정정인자는 각각의 화소를 위한 메모리에 저장된다.
미국 특허 번호 제 5,576,797호에서는 초점 검출 장치를 구비한 카메라에서 비네팅효과의 검출을 설명한다.
미국 특허 번호 제 5,381,174에서는 필드 주파수 톱니 신호(field frequency sawtooth signal)를 사용하여 줌렌즈의 작동으로 인한 비네팅효과의 정정을 설명한다.
미국 특허 번호 제 4,816,663호에서는 포토 테이킹 렌즈(photo taking lenz)와 초점 검출 광학 시스템 사이의 비네팅의 검출을 설명한다.
개인용 화상회의를 위해 개인용 컴퓨터와 함께 사용되는 디지털 카메라는 값이 점점 더 저렴해지고 있다. 이는 더욱 값이 저렴한 렌즈를 사용하도록 카메라 제조자에 압력을 가하며, 이러한 렌즈들은 비네팅효과를 더욱 많이 가지고 있다. 게다가, 가격 압력은 제조자들이 보다 적은 수의 반도체 칩을 사용하게 만들고, 따라서 비네팅 정정값들을 저장하기 위한 반도체 메모리의 사용을 바람직하지 않게 한다. 따라서, 제조비가 저렴하면서도 값싼 렌즈의 비네팅을 정정하는 디지털 카메라가 필요하다.
이미지 센서 생산에 사용되는 공정은, 고도로 진보되어 있기는 하지만 완벽하지는 못하다. 이미지 센서 어레이 내의 포토사이트(photosite)는 감도 또는 빛을 전류로 변화시키는 능력에 차이가 있을 수 있다. 어떤 차이는 예상되어 견딜만하지만, 어떤 경우에는, 어레이내의 각각의 포토사이트는 수명을 다했거나, 비활성이거나 과동작할 수 있다. 이것은 최종 사용자에게 불필요하고 바람직하지 않고, 어둡거나 검은 도트(dot), 밝은 흰 도트 또는 부정확한 색채 도트를 가지는 이미지를 디스플레이하게 된다. 디지털 이미징 필드에서 이들은 목표 이미지의 부적절한 디지털화에 의하여 발생되는 문제가 인식되어 왔고, 결함화소(defective pixel)를 검출하고 정정하는 다양한 해결방법이 제안되어 왔다. 종래의 방법과 시스템은 크게 두 그룹으로 분류될 수 있다.
한편, 이미지 센서 어레이로부터 받아들인 결함화소를 탐지하고 정정하는 다양한 하드웨어적 방법이 있다. 이들 하드웨어적 방법과 시스템은 비디오 카메라 제조자에게 꽤 일반적이다. 고체(solid state) 이미지 픽업장치(pickup device)를 사용하는 대부분의 종래의 비디오 카메라는 이미지 센서 어레이로부터 받아들인 결함화소를 정정하는 결함화소검출 및 정정회로를 포함한다. 결함화소는 이미지 센서 어레이가 제조될 때 또는 그 후에 생성된다. 이러한 카메라에서, 결함화소 정정회로는 결함화소를 검출하고 읽기 전용 기억장치(ROM) 등에 결함화소에 관한 위치데이터 및 다양한 데이터를 저장한다. 그 다음, 비디오 카메라가 사용될 때, 결함화소로부터의 화소데이터는 결함화소 근처의 화소로부터의 데이터로 대체된다. 이러한 방법과 시스템의 하나는 미국 특허 번호 제 5,796,430호에 개시되어 있다. 이러한 접근법의 단점은, 비용과 시간지연을 증가시키는 생산 조립 및 테스트시 메모리장치를 통합하고 이에 대한 프로그램을 짜는 것이 필요하다는 것이다. 부가적으로, 비디오 처리 ASIC(application specific integrated circuit)에 정정 전기회로 또는 로직이 더해져야 하기 때문에 하드웨어장치 비용이 증가할 것이다.
이에 반하여, 디지털 이미지의 결함화소를 검출하고 정정하는 다양한 소프트웨어적 방법이 있다. 이러한 방법 및 시스템 중 하나가 미국 특허 번호 제 5,982,946호에 개시되어 있다. 이러한 소프트웨어적 방법은 일반적으로 이미 디지털화되고 완전히 처리된 이미지에서 불량 이미지 화소를 정정하는것을 목표로 한다. 이미 디지털화된 이들 화소들은, 이미지 센서 어레이로부터 읽어 온 가공처리되지 않은 데이터(raw data)에 수행되는 색채처리, 압축 및 다양한 기타 처리를 거친, 최종적으로 디스플레이할 수 있고 저장된 형태이다. 따라서, 완전히 처리된 디지털 이미지를 다루는 이러한 소프트웨어적 방법은, 불완전 포토사이트에 의하여 발생되는 디지털화된 이미지내의 비정상 화소뿐만 아니라 본래의 장면(scene)상의 먼지나 오물, 상기 장면을 캡쳐하는데 사용되는 렌즈상의 먼지나 오물등과 같은 많은 인공물(artifact)들에 의하여 발생되는 비정상 화소를 정정할 수 있다. 이들 방법은 일반적으로 불량 화소를 검출하고 정정하는 다소 정교하고 비싼 시스템 및 컴퓨터 소프트웨어에 의존한다. 이들 방법은 일반적으로 잠재적인 불량 이미지 화소의 위치를 검출하기 위하여 사용자 입력을 필요로 한다. 한번 사용자가 시각적으로 전체이미지를 스캔하고 잠재적인 불량 이미지 화소를 플래그하면, 소프트웨어 프로그램을 포함한 시스템은 플래그된 결함화소를 정정하는 일을 인계받는다. 사용자 입력을 요구하는것 외에도, 이러한 접근법은 또한 비싸고, 장황해지며 시간을 많이 소모하게 되기도 한다.
값싼 PC-인터페이싱 디지털 정지 및 비디오 카메라장치의 확산은 빠르고, 역동적이며, 값싸고 지능적인 결함화소 검출 및 정정해결방법을 필요로한다.
본 발명은 호스트 소프트웨어에서 주요기능이 구현되는 낮은 가격의 카메라를 제공한다. 이것은 가공하지 않은, 디지털화된 데이터를 카메라에서 직접적으로 호스트로 보내는 것에 의하여 달성된다. 가공되지 않은 데이터의 증가된 크기는, 손실없는 압축을 사용하거나 손실있는 압축을 사용하거나 더 높은 대역의 공유된 버스를 사용하는 향상된 압축/데이터 복원 체계(compression/decompression scheme)에 의하여 조정된다. 색채처리 및 스케일링등과 같은 기능을 호스트로 이동시킴으로서, 화소정정 기능도 호스트로 이동될 수 있다. 이것은 따라서 카메라로부터 프레임버퍼메모리를 제거할 수 있게 한다. 결국, 상기 카메라는, 정정을 수행하는 호스트에 의한 나중의 액세스를 위한 상기 카메라의 레지스터에 저장된 비네팅 정정값으로 비네팅 정정을 구현함으로써 저가 렌즈를 사용할 수 있다.
일 실시예에서, 호스트는 Intel MMXTM 기술등과 같은, 다중 패킹된 화소값(multiple packed pixel value)에 대한 동시적 작동 능력을 갖는 프로세서를 사용하여 전송된 데이터를 복원한다. 이것은 프레임율(frame rate)에 최소한의 영향을 주면서 더욱 많은 데이터량에 대해 충분한 데이터 복원 속도를 유지시켜 준다. 일 실시예에서, 데이터 스트림(data stream)의 일부 비트(bit)그룹은, 그들이 동시에 다중 최대값들에 비교될 수 있도록, 레지스터내의 다중 위치에 복제되고 제공된다. 이것은 가변 비트 인코딩의 얼마나 많은 비트들이 화소값에 대응되는가에 대한 신속한 결정을 하게 한다.
손실있는 압축을 사용하는 일 실시예에서는, 손실있는 압축/데이터 복원 처리시 정보의 손실에 의하여 정정능력이 저하되기 때문에, 비네팅, 감마(gamma), 왜곡 또는 에일리어싱(distortion or aliasing)정정 및 화소 정정이 카메라 자체내에서 수행된다. 그러나, 색채처리, 스케일링 및 다른 연산은 여전히 호스트에서 수행되어, 프레임버퍼 메모리와 색처리 및 스케일링 전기회로를 필요로 하지 않는 저가 카메라를 달성한다.
일 실시예에서, 비록 비네팅 왜곡을 가지고 있더라도 저가 렌즈를 사용하여 저가로 카메라가 만들어질 수 있다. 이것은 카메라내에 레지스트등과 같은, 메모리소자를 제공함으로써 달성된다. 이 메모리소자는 필요로 하는 비네팅 또는 정정의 양에 대응하는 값을 가지도록 제조시에 프로그래밍 된다. 그 다음 레지스터는, 다른 처리 이전에 수신된 데이터에 대하여 호스트내에서 실행되는 비네팅 정정 알고리즘에서 요구되는 정정량을 결정하도록 작동하는 동안 호스트에 의하여 읽혀질 수 있다. 대체 실시예에서, 메모리 소자는 렌즈 또는 카메라의 다른 측면에서의 기타 결점에 대한 정정 또는 값 인자(correction or value factor)를 저장할 수 있다. 예를 들어, 불량 화소사이트(pixel site)의 표시는 호스트에 의한 순차적 판독 및 정정을 위하여 저장될 수 있다.
본 발명의 본질과 장점을 더 잘 이해하기 위하여, 첨부된 도면에 관련된 이하의 기술이 참조되어야 한다.
도 1은 종래의 비디오 카메라의 블록 다이어그램,
도 2는 주요기능이 호스트로 이동된 본 발명의 일 실시예의 블록 다이어그램,
도 3은 병렬구조에서 허프만 디코딩 연산의 작용을 도시한 다이어그램,
도 4는 본 발명의 실시예의 방법을 실행하도록 사용되는 컴퓨터 시스템의 일례의 도면,
도 5는 본 발명의 실시예의 방법을 실행하도록 사용되는 전형적인 컴퓨터 시스템(100)의 간소화한 시스템 블록 다이어그램,
도 6은 본 발명의 실시예에 따른 SIMD 시스템(300)의 간소화한 블록 다이어그램,
도 7은 본 발명의 실시예에 따른 시스템(400)의 간소화한 블록 다이어그램,
도 8은 본 발명의 일실시예에 따라 허프만 인코딩된 데이터를 디코딩하는 순차적 디코딩 방법(500)을 도시한 도면,
도 9는 본 발명의 따른 다른 실시예에 따라 허프만 인코딩된 데이터를 디코딩하는 병렬 디코딩 방법(600)을 도시한 도면,
도 10은 비네팅 효과를 도시하는 화소 어레이와 휘도곡선의 도면,
도 11은 본 발명에 따른 비네팅 정정의 일 실시예의 블록 다이어그램,
도 12는 본 발명의 일 실시예에 따라 결함화소를 검출하고 정정하는 방법의 간소화한 플로차트,
도 13은 본 발명의 일 실시예에 따른 비디오 카메라 시스템의 블록 다이어그램,
도 14는 본 발명의 일 실시예에 따라 CMOS 센서 어레이에 제공된 펄스의 타이밍 다이어그램이다.
I. 전체적인 시스템
도 2는 본 발명의 일 실시예의 블록 다이어그램이다. 카메라(32)는 종래기술에서와 같이, 렌즈(10), 센서 및 제어 로직(12)과 ADC(14)를 포함한다. 그러나, 데이터 압축 블록(26)과 버스 인터페이스(28)를 제외한, 기타 주요 기능이 제거된다. 부가적으로, 정정 레지스터(34)는 렌즈(10)의 비네팅에 해당하는 값을 저장하도록 추가된다.
카메라는 공유된 버스(30)를 통하여 호스트(36)에 연결된다. 호스트(36)에서, 도시된 블록은 호스트(36)의 프로세서에 의하여 실행되는 프로그래밍 블록이다. 이들은 데이터 복원 블록(38), 비네팅 정정 블록(40), 화소 정정 블록(42), 색채처리 블록(44) 및 스케일링 블록(46)이다. 또한, 정정이 필요한 화소의 통계적 정보를 저장하기 위한, 호스트 메모리의 일부가 될 수 있는 통계 메모리(48)가 도시된다.
II. 허프만 데이터 복원
바람직하게, 호스트(36)에 의하여 사용되는 프로세서는 단일 레지스터내에서 병렬로 다중 패킹된 화소에 대한 연산을 수행하는 능력을 포함한다. 예를 들어, Intel MMXTM 기술은 마이크로 프로세서 레지스터에서 패킹된 화소에 대한 이러한 연산을 위한 다수의 명령어를 제공한다. 따라서, 처리 속도를 증가시키기 위하여 이러한 기능을 이용하는 것이 바람직하다. 그러나, 어떤 연산은 이러한 동시 연산에 적합하지 않다. 예를 들어, 허프만 데이터 압축(Huffman compression)은 종종 비디오 데이터에 사용되고, 본 발명의 실시예에 사용된다. 이것은 가변 길이 코드 데이터 압축 메카니즘이다. 즉, 화소값에 해당하는 비트의 수는 1, 2, 3, 4 등이 될 수 있고, 화소마다 변할 수 있다. 미리 비트의 수를 알지 못하고, 다른 크기들을 가지고 있다면, 각각의 화소표현을 위하여 동일한 크기를 사용하는 패킹된 화소 레지스터를 활용하는 방법은 직접적으로 명확하지 않다.
오늘날의 USB 기술의 한정된 대역폭에서는, 전 처리(preprocess)된 데이터보다 더 많은 양의 데이터를 가질 가공되지 않은 데이터를 카메라가 보내도록 한다면, 어떻게든 병렬 데이터 복원 처리를 할 수 있는 것이 바람직하다. 이것은 유일하게, 허프만 디코딩을 수행하는 패킹된 화소 구성(packed pixel configuration)을 사용하여 달성될 수 있다.
도 3은 일반적으로 병렬 허프만 디코딩이 처리되는 방법을 도시한 다이어그램이다. 입력 데이터 스트림(50)은 많은 수의 문자로 도시된다. 각 문자는 상이한 비트수를 가리키는 임의의 심볼이다. 도시된 예시에서, 첫번째 비트수, A는 4번 복제되어 제1레지스터(52)내의 4개의 위치에 놓인다. 제2레지스터(54)는 4개의 서로 다른 마스크(mask)를 저장한다. 마스크는 비트 세그먼트(A)내의 상기 비트들의 서로 다른 부분과의 비교를 인에블한다. 예를 들어, 검토되는 A의 비트수는 각각 1, 2, 3 및 4일 수 있다. 그 다음 이들은 1, 2, 3 및 4비트에 대한 허프만 코딩용 최대값에 비교될 것이다. 이들 4개의 상이한 최대값은 또 하나의 레지스터(56)에 저장된다. 따라서, 비트수(A)와 4개의 서로 다른 값을 순차적으로 비교하는 대신, 비교되는 비트수가 가변임에도 불구하고 병렬로 행해질 수 있다. 이 가변성은 마스킹 연산(masking operation)을 이용하여 극복된다. 따라서, 동일한 수의 비트가 레지스터내의 각각의 화소위치에 저장되지만, 서로 다른 수의 비트가 마스크 연산에 의하여 각각의 화소위치에 대하여 비교된다.
도시된 예에서, 비트 세그먼트(A)는 최대 세그먼트(M3)내에 있는 것에 대응되어, 결합된 허프만 값 테이블(58)내로 인덱싱하기 위한 방정식에서 사용된다. 인덱스로서의 이전 비교의 수치적 결과를 사용하여, 종래에는 3개의 상이한 테이블 조사(table look up)를 요구하던 것이 단일 테이블 조사로 이루어 질 수 있게 되었고, 따라서, 처리시간을 더 줄인다.
도 4는 본 발명의 소프트웨어를 실행하도록 사용되는 컴퓨터 시스템의 일례를 도시한다. 도 4는 모니터(104), 스크린(102), 캐비넷(108), 키보드(214)(도 5에 도시) 및 마우스(110)을 포함하는 컴퓨터 시스템(100)을 도시한다. 마우스(110)는 마우스 버튼(112)등과 같은 하나 이상의 버튼을 가질 수 있다. 캐비넷(108)은 본 발명을 포함하는 소프트웨어 프로그램을 내장하고 검색하는데 활용될 수 있는 CD-ROM 드라이브 및 하드 드라이브(도시되지 않음)를 내장할 수 있다. 이동가능한 미디어로 CD-ROM(106)이 도시되었지만, 플로피 디스크, 테이프 드라이브, ZIP
Figure 112001035322381-pct00002
드라이브 및 플래쉬 메모리를 포함하는 기타 이동 가능한 유형 미디어(tangible media)가 활용될 수 있다. 캐비넷(108)은 프로세서, 메모리 등과 같은 흔히 있는 컴퓨터 구성성분(도시되지 않음)도 내장할 수 있다.
도 5는 본 발명의 실시예의 소프트웨어를 실행하도록 사용되는 전형적인 컴퓨터 시스템(100)의 간소화된 시스템 블록 다이어그램을 도시한다. 도 1에 도시된 바와 같이, 컴퓨터 시스템(100)은 모니터(104)를 포함할 수 있다. 컴퓨터 시스템(100)은 I/O컨트롤러(204), 시스템 메모리(206), 중앙 프로세서(208), 스피커(210), 이동가능한 디스크(212), 키보드(214), 고정된 디스크(216) 및 네트워크 인터페이스(218)와 같은 서브시스템(subsystem)을 더욱 포함할 수 있다. 본 발명에 사용하기 적당한 기타 컴퓨터 시스템은 추가로 또는 더 적은 수의 서브시스템을 포함할 수 있다. 예를 들어, 컴퓨터 시스템은 1개 이상의 프로세서(208)(즉 멀티프로세서 시스템) 또는 케쉬 메모리를 포함할 수 있다. 도면 부호 220등과 같은 화살표는 컴퓨터(100)의 시스템 버스 아키텍쳐를 나타낸다. 그러나, 이들 화살표(220)는 서브시스템을 링크하도록 제공하는 상호 연결 체계의 일례이다.
예를 들어, 로컬 버스는 중앙 프로세서(208)를 시스템 메모리(206)에 연결하도록 이용될 수 있다. 또한, 전하 결합 소자(CCD) 카메라등과 같은 이미지 캡처 장치는 이미지 데이터를 캡쳐하기 위하여 컴퓨터 시스템(100)에 연결될 수 있다. 이미지 캡처 장치는 범용 직렬 버스(USB)등과 같은 기타 버스 아키텍쳐 또는 기타 버스 아키텍쳐를 통하여 컴퓨터 시스템(100)에 연결될 수 있다. USB는 장치 드라이버의 데이터베이스와 대조하여 매칭된 식별 번호를 사용하여 100개 이상의 연결된 주변장치에 플러그 앤드 플레이(plug and play) 지원을 제공할 수 있다. USB는 I/O 컨트롤러(204) 또는 네트워크 인터페이스(218)를 통하여 컴퓨터 시스템(100)에 연결될 수도 있다. 부가적으로, 컴퓨터 시스템(100)은 예를 들어, I/O 컨트롤러(204) 또는 네트워크 인터페이스(218)를 통하여 인터넷과 통신하도록 구성될 수 있다. 따라서, 데이터는 다양한 장치에 의하여 컴퓨터로 및 컴퓨터로부터 전송될 수 있다. 도 4에 도시된 컴퓨터 시스템은 본 발명에 사용하기에 적당한 컴퓨터 시스템(100)의 예에 지나지 않는다. 본 발명에 사용하기 적당한 서브시스템의 기타 구성은 당업자에게는 명백할 것이다.
본 발명은 단일 명령어 다중 데이터(SIMD)를 실행할 수 있는 어떠한 마이크로프로세서내에서도 구현될 수 있다. 예를 들어, Intel
Figure 112002010186855-pct00003
MMXTM 마이크로프로세서, 비주얼 명령어 세트를 구비한 SUN
Figure 112002010186855-pct00004
UltraSPARC
Figure 112002010186855-pct00005
, advance Micro Device, Inc's
Figure 112002010186855-pct00006
3DNow!TM, 스트리밍 SIMD 확장(streaming SIMD extension)을 구비한 Intel
Figure 112002010186855-pct00007
MMXTM 등이 활용될 수 있다. 예시로서, Intel
Figure 112002010186855-pct00008
MMXTM 사용하는 구현이 기술될 것이다. MMXTM 기술은 CPU디멘딩 멀티미디어 응용을 가속화하도록 1997년 1월에 정식으로 소개되었다. MMXTM 기술은 Intel사(Intel
Figure 112002010186855-pct00009
Corporation)에 의하여 소개된 한 세트의 명령어(57개의 명령어)를 제공한다. 이것은 동일 명령어로 64비트 유닛상의 덧셈, 뺄셈, 곱셈, 로직 및 산술 시프트를 수행할 수 있다. 64비트 유닛은 8개의 바이트, 4개의 워드, 2개의 2배 워드 또는 1개의 쿼드 워드로 다루어질 수도 있다. MMXTM 레지스터와 정수 레지스터 사이에서 데이터를 전달하는 명령어 뿐만 아니라 포화 산술(saturation arithmetic) 및 패킹/언패킹(packing/unpacking) 데이터에 대한 명령어가 제공된다. MMXTM기술에 관한 더 자세한 정보는 "Introduction to the Intel
Figure 112002010186855-pct00010
Architecture MMXTM Technology Developer's Manual," [Intel
Figure 112002010186855-pct00011
(1996)] 에서 찾을 수 있으며, 이는 온전히 그대로 그리고 모든 목적을 위하여 참고자료로 본 명세서에 포함된다.
도 6은 SIMD 시스템(300)의 간소화된 블록 다이어그램이다. 시스템(300)은 현재 57개의 명령어 세트를 지원하는 MMXTM프로세서(302)를 포함한다. MMXTM프로세서는 CPU내에 구현될 수 있고 또는 대안적으로 별도의 칩에 구현될 수 있다. MMXTM프로세서(302)는 레지스터(304a 내지 304h)로부터 데이터를 받아들인다. 각각의 레지스터(304a 내지 304h)는 64비트 너비이다. 각각의 이들 레지스터는 8x8, 16x4, 32x2, 64x1 데이터 비트를 수용할 수 있다. MMXTM프로세서(302)는 레지스터(304a 내지 304h)로부터 데이터를 받아들여 1 사이클 동안 데이터상에 필요한 연산을 수행한다. 그 다음 처리된 데이터는 메모리(306)에 제공되거나 레지스터(304a 내지 304h)로 되돌아 간다. 메모리(306)는 MMXTM프로세서(302)내에 구현될 수 있고 또는 대안적으로 이는 공유된 메모리일 수도 있다. 그 결과, MMXTM프로세서(302)는 다른 데이터에 대해 동일한 연산을 동시에 수행할 수 있고, 이에 따라 SIMD 아키텍쳐를 갖는다.
도 7은 USB를 사용하는 시스템(400)의 간소화된 블록 다이어그램이다. 카메라(402)는 이미지를 캡처하고 그들을 비트스트림 변환 블록(404)에 제공한다. 카메라(402)는 아날로그 데이터를 디지털 데이터로 변환하는 전기회로를 포함할 수 있다. 카메라(402)는 또한 데이터 압축 및/또는 인코딩을 수행하는 전기회로를 포함할 수도 있다. 카메라(402)와 비트스트림 변환 블록(404)은 컨넥터(406)를 통하여 연결된다. 컨넥터(406)는 당업자에게 잘 알려진 많은 컨넥터 또는 버스 아키텍쳐로부터 선택될 수 있다. 컨넥터(406)는 USB 연결이 바람직하다. 일부 실시예에서, USB는 초당 12Mb의 대역폭을 제공한다. 컨넥터(406)의 또 다른 선택은 초당 100Mb, 200, 400 또는 800Mb의 대역폭을 제공할 수 있는 파이어와이어(Firewire)(IEEE 1394)가 될 수도 있다. USB 연결은 통상 500mA와 5V까지 제공하는 전력을 갖춘 버스이기 때문에 일부 실시예에 바람직하다. USB에 의하여 제공되는 전력은 카메라(402)등과 같은, 버스에 연결되는 장치를 동작하도록 이용될 수 있다. 게다가, USB는 구현비용이 더 적다. 일부 실시예에서는, USB가 파이어와이어와 동일한 대역폭을 갖지 않기 때문에, USB가 이용되는 경우에는 USB상으로 송신되기 전에 데이터가 먼저 압축될 수도 있다.
따라서, 카메라(402)는 비트스트림 변환 블록(404)에 데이터를 보내기 전에 캡쳐된 이미지를 압축하는 데이터 압축 전기회로를 포함할 수 있다. 카메라(402)는 CCD, 상보형 금속 산화 반도체(CMOS)등을 포함하는 이미지 캡쳐용 장치일 수 있다. 비트스트림 변환 블록(404)은 순차적으로 전송된 데이터를 데이터의 패킷형태로 변환하도록 구성될 수 있다. 예를 들어, 비트스트림 변환 블록(404)은 각각의 이미지 프레임을 위한 데이터를 축적하고 상기 축적된 데이터를 데이터 복원 블록(408)으로 보낼 수 있다. 데이터의 프레임은 어떤 크기도 가능하지만, 352x288 화소가 바람직하다. 프레임은 320x240, 176x144 또는 160x120 화소의 블록이 될 수도 있다. 일부 실시예에서는, 데이터의 프레임이 640x480 화소일 수 있다. 데이터 복원 블록(408)은 비트스트림 변환 블록(404)으로부터 받은 데이터를 데이터 복원 및/또는 디코딩한다. 디코딩은 허프만 코딩, 산술 코딩, 기타 형식의 엔트로피 코딩 등에 따를 수 있다. 비트스트림 변환 블록(404)은 카메라(402)로부터 받은 데이터를 저장하는 버퍼를 포함할 수도 있고 데이터를 데이터 복원 블록(408)으로 보낼 수도 있다.
그 다음 데이터 복원 블록(408)으로부터 데이터 복원된 데이터는 색채 변환 블록(410)으로 제공된다. 데이터 복원 블록(408)으로부터의 데이터는 어떤 포맷으로도 될 수 있지만 YUV 포맷이 바람직하고, 여기서 Y는 휘도(luminance)이고, U는 크로미넌스 레드(chrominance red)(CR로 잘 알려짐)이고, V는 크로미넌스 블루(chrominance blue)(CB로 잘 알려짐)이다. 색채 변환 블록(410)은 YUV 포맷 데이터를 RBG(레드, 그린, 블루)를 포함하여, 디스플레이(412)에 적당한 포맷으로 변환한다. 디스플레이(412)는 프린터, 휴대용 장치 등을 포함하는 어떠한 출력장치도 될 수 있다. 시스템(400)은 또한 디스플레이(412), 색 변환 블록(410) 및 비트스티림 변환 블록(404)을 위한 저장기능을 제공하는 메모리(414)를 포함한다. 메모리(414)는 동적 랜덤 접근 기억 장치(DRAM), 확장 출력 DRAM(EDODRAM), 동기 DRAM(SDRAM), 비디오 램(VRAM), 정적 램(SRAM) 등과 같은 어떠한 형식의 저장 장치도 될 수 있다. 대안적으로, 비트스트림 변환 블록(404), 색채 변환 블록(410) 및 디스플레이(412)는 그 자체에 국부 기억 장치(local memory)를 가질 수 있다. 또한, 데이터 복원 블록(408)은 그 자체의 저장기능을 가질 수도 있고 또는 필요할 때는 저장기능을 위해 메모리(414)를 사용할 수 있다.
도 8은 허프만인코딩된 데이터를 디코딩하는 순차적 디코딩 방법(500)을 도시한다. 순차적 디코딩 방법(500)은 디코딩된 값을 생성하도록 아래의 4개의 테이블을 사용한다.
Figure 112001035322381-pct00012
모든 코드 워드의 최소길이는 MinLength 이고 모든 코드 워드의 최대길이는 MaxLength 이다. 따라서, MINCODE, MAXCODE 및 VALPTR 테이블의 크기는 [MaxLength-MinLength+1]이다. HUFFVAL의 크기는 코드 워드수에 의존하고 N으로 표현된다. 3개의 테이블 MINCODE, MAXCODE 및 VALPTR은 각각의 타당한 허프만코드를 위한 HUFFVAL 테이블에 대한 포인터를 디코딩하는데 사용된다.
단계(502)에서, 비트스트림 데이터는 디코딩을 위하여 받아들여진다. 단계(504)에서, 현재 코드 길이(I)는 MinLength로 설정된다. 단계(504)는 또한 단계(502)에 의하여 제공되는 비트스트림으로부터의 코드워드를 포함하는 NEXTBITS[MinLength]로 가변CODE를 초기화한다. 단계(506)는 CODE와 MAXCODE[I]의 값을 비교한다. CODE의 값이 MAXCODE[I]의 값보다 크다면, 단계(504)에서 Minlength에 최초로 초기화된 현재코드워드가 I보다 더 긴 길이인 것을 나타내고, 단계(508)로 넘어간다. 단계(508)에서, I의 값은 1만큼 증가된다. 단계(508)은 또한 비트스트림의 다음 값을 CODE로 읽어 들인다. 단계(508)는 CODE의 현재값에 대해 1비트만큼 시프트 로직 레프트(SLL)를 실행하고, 비트스트림으로부터의 다음비트(NEXTBIT)로 CODE의 최하위 비트를 파일링(filing)하여 CODE의 값을 갱신한다.
한편, 단계(506)에서, CODE의 값이 MAXCODE[I]의 값보다 크지 않다고 결정되면, 현재코드워드는 I와 같거나 또는 더 짧은 길이를 갖는 것을 나타내고, 단계(510)로 넘어간다. 단계(510)는 심볼값을 디코딩한다. 단계(510)는 코드값 포인터(J)를 계산하고, 그 다음 심볼값을 계산하도록 J를 사용한다. 단계(510)는 J를 {VALPTR[I-MinLength]+CODE-MINCODE[I-MinLength]}로 설정한다. 그 다음 단계(510)는 VALUE를 HUFFVAL[J]로 설정하여 심볼값을 계산한다. 따라서, 심볼값을 계산하기 위하여, 단계(510)는 VALPTR, MINCODE 및 HUFFVAL를 포함하며 3개의 테이블 조사를 수행한다. 그 다음 산출된 기호값(VALUE)은 단계(512)에 제공되어 출력된다. 순차적 디코딩 방법(500)은 그 다음 코드단어를 위하여 반복된다.
인코딩과 디코딩에 사용되는 허프만테이블은 각각의 구현을 위해 주문을 받아서 만들어질 수 있다. 그러나, 대부분의 코딩표준은 디폴트 허프만테이블을 제공한다. 아래의 테이블 1은 JPEG 표준에 따른 휘도DC 차이에 대한 권장되는 허프만테이블을 도시한다. JPEG표준에 관한 더 상세한 정보는 (그것의 전체와 모든 목적으로 본 명세서에 참고자료로 채택된) "JPEG - Still Image Data Compression Standard," (부록 A.ISO.DIS 10918-1, Requirement and Guidelines, pp.F-26, Van Nostrand Reinhold, 1993, William B.Pennebaker and Joan L.Mitchell 저,) 에서 찾을 수 있으며, 온전히 그대로 그리고 모든 목적을 위해 본 명세서에 참고자료로 포함된다.
JPEG 표준에서, MinLength는 2이고 MaxLength는 16이다. 코드워드는 길이별로 그리고 각 길이그룹에서 오름차순으로 무리짓도록 더욱 분류된다. MINCODE 및 MAXCODE의 값은 16비트 정수로 표시된다.
Figure 112001035322381-pct00013
테이블 1에서, CodeWord는 비트스트림으로부터 실제의 코드워드를 나타낸다; CodeLength는 각 코드워드의 길이이다; HuffCode는 각 CodeWord의 값이고 HuffValue는 각 심볼을 위한 허프만코드이다.
일례로서 테이블 1의 값을 인용하여, MinLength=2 및 MaxLength=9 이면, 순차적 디코딩 방법(500)에 활용되는 3테이블의 테이블 값은 아래와 같다.
MINCODE[8]={0, 2, 14, 30, 62, 126, 254, 510};
MAXCODE[8]={0, 6, 14, 30, 62, 126, 254, 510}; 및
VALPTR[8]={0, 1, 6, 7, 8, 9, 10, 11}.
예를 들어, 입력 비트스트림 "010"을 고려하면, 단계(504)는 I를 2로 및 CODE를 "01"로 설정할 것이다. 0인 MAXCODE[2-2]보다 "01"이 더 크기 때문에 단계(506)는 YES로 되돌아 갈 것이다. 단계(508)에서, I는 3으로 증가되어 CODE는 "010"으로 설정된다. 단계(506)가 다시 반복되고 이번에는 6인 MAXCODE[3-2]보다 "010"이 더 작기 때문에 NO로 되돌아 갈 것이다. 그 다음, 단계(510)는 J를 1로 설정할 것이다. 단계(510)는 또한 HUFFVAL[1]의 심볼값을 조사하고 단계(512)에 이 심볼값(VALUE)을 출력한다.
따라서, 순차적 방법(500)은 반복적으로 비트스트림을 CODE로 시프트하고 동일한 길이의 최대코드와 현재코드를 비교한다. 한번 코드 길이가 알려지면, 각 값의 디코딩은 2번의 덧셈과 3번의 테이블의 조사가 필요하다. 코드길이가 순차적으로 검사되기 때문에 이 알고리즘은 본질적으로 순차적이다. 즉, 길이(I)를 검사하기 전에는 실제코드길이가 I, I+1, I+2 등이 될 지가 나타나지는 않는다.
도 9는 본 발명의 실시예에 따라 허프만인코딩된 데이터를 디코딩하는 병렬 디코딩 방법(600)을 도시한다. 예시를 목적으로, 도 6에 대하여 논의된 바와 같이, 병렬 디코딩 방법(600)의 구현이 기술될 것이다. 또한, 도 8과 관련하여 논의된 표본JPEG값과 테이블 1은 이번 실시예로 활용된다. 그러나, 병렬 디코딩 방법(600)은 Intel
Figure 112001035322381-pct00014
MMXTM 마이크로프로세서, 비주얼 명령어 세트를 구비한 SUN
Figure 112001035322381-pct00015
UltraSPARC
Figure 112001035322381-pct00016
, Advance Micro Device, Inc.'s
Figure 112001035322381-pct00017
3DNow!TM, 스트리밍 SIMD 확장을 구비한 Intel
Figure 112001035322381-pct00018
MMXTM 등을 포함하는 SIMD 실행이 가능한 어떤 프로세서에서도 실행될 수 있다.
상기의 상세한 설명과 같이, MMXTM 기술은 동일 명령어내의 64비트 유닛상에서 연산을 수행할 수 있다. 64비트 유닛은 8개의 바이트, 4개의 워드, 2개의 2배 워드, 또는 1개의 쿼드 워드로 다루어질 수도 있다. 테이블 1로부터의 값에 의한 예로, 테이블 1에서 최대 코드워드 길이는 9이므로, 64비트는 4개의 16비트 레지스터(즉, 4개의 워드)로 다루어질 수 있다. 도 9의 실시예를 위해, MMXTM 명령어 PSRL, PSLL 및 PSRA는 선택된 변수의 내용을 시프트하는데 활용된다. PSRL은 팩 시프트 라이트 로직(pack shift right logic)을 나타낸다. PSLL은 팩 시프트 레프트 로직(packed shift left logic)을 나타내고 PSRA는 팩 시프트 라이트 산술(pack shift right arithmetic)을 나타낸다.
병렬 디코딩 방법(600)은 단계(602)로 비트스트림을 받아 들인다. 단계(604)에서, 비트스트림은 리틀 엔디언 포맷(little-endian format)을 가진 4비트 영역(또는 쿼드비트)으로 배열된다. 이것은 원래 비트스트림이 b0, b1, b2, b3,,...(여기서 bi는 바이트 i를 의미)의 형식이라면, 변환된 비트스트림은 b1, b0, b1, b0, b1, b0, b1, b0, b3, b2, b3, b2, b3, b2, b3, b2, b3, b2,...형식이 될 것을 의미한다.
이 변환은 각 16비트워드에 5.5사이클을 이용하여 구현될 수 있다. 단계(606)에서는, I, MASK, CODE4값이 초기설정된다. JPEG 예에 대하여 상술된 바와 같이, I는 2로 초기설정된다. 단계(606)는 CODE4에 비트스트림으로부터의 4x16비트 코드(쿼드비트)의 첫번째세트를 초기설정한다. 병렬 디코딩 방법(600)은 단계(608)에서 비교연산을 위한 비트를 추출하도록(mask out) MASK를 사용한다. MASK의 초기값은
"1100,0000,0000,0000,1110,0000,0000,0000,1111,0000,0000,0000,1111,1000,0000,0000b" 또는 "0xC000,E000,F000,F800"으로 설정된다. 이것은 병렬 디코딩 방법(600)의 제1반복에서 검사될 2부터 5까지의 코드길이의 비트마스크이다.
단계(608)에서, CODE4는 MASK값에 의하여 추출(mask off)된다. 단계(608)는 또한 MAXCODE4를 I, I+1, I+2 및 I+3의 MAXCODE4_P의 값을 나타내는 MAXCODE4_P[I~I+3]으로 설정한다. 따라서, MAXCODE4는 4개의 연속적인 코드길이에 대한 최대값들을 확보할 것이다. MAXCODE4의 4개의 값은 1개의 단일 명령어에 로드될 것이기 때문에, 병렬 디코딩 방법(600)의 MAXCODE 테이블은 아래와 같이 발생될 수 있다.
Figure 112001035322381-pct00019
여기서 "/"는 끝부분 절단(truncation)에 의한 나눗셈을 나타내고 "%"는 나머지 산출 연산자(modulo) 연산을 나타낸다. MAXCODE_P의 값은 부호없는(unsigned) 16비트 정수이다. MAXCODE 테이블은 단지 각각의 허프만테이블에 한번만 생성되어야 한다.
도 8에 대하여 논의된 순차적 허프만디코딩 알로리즘에서와 같이 동일한 예 를 인용하면, 병렬 알고리즘의 MAXCODE 테이블은 아래의 값을 가질것이다.
MAXCODE_P[8]={61441, 57345, 49153, 1, 65281, 65025, 64513, 63489}
이러한 예에서, 이 테이블의 크기는 4의 배수가 되어야 한다. 또한, 허프만코드 테이블에는 존재하지 않는 이들 코드길이는 0으로 가정한다.
단계(610)에서, MAXCODE4의 값은 단계(606) 및 (608)에서 초기설정되고 마스크된 CODE4와 비교된다. MMXTM 기술을 사용하는 실시예에서, MMXTM 명령어 PCMPEQ는 부호표시 워드(signed word)만 비교하고, 이 비교연산은 포화(saturation)와의 1번의 부호없는(unsigned) 뺄셈 및 0과의 1번의 비교로 수행될 수 있다. MAXCODE+1의 값은 MAXCODE4에 저장될 수 있다. CODE4가 MAXCODE4보다 크다면, 단계(612)에서, I는 4만큼 증가되고 MASK는 4비트만큼 산술적으로 그 값을 오른쪽으로 시프트시켜 갱신한다. MASK의 새로운 값은 다음 4 코드워드길이(6부터 9까지)를 위한 비트마스크를 생성한다. 단계(612) 다음에는, 단계(608) 및 (610)가 반복된다. 따라서, 테이블 1의 상기 예에서, 단계(608) 및 (610)는 한번은 코드워드 길이 2부터 5까지이고 한번은 코드워드길이 6부터 9까지에서 2번 반복된다.
단계(610)에서 YES이면, 단계(614)는 검사될 4개의 길이 중 어느 것이 심볼을 포함하는지 결정한다. 따라서, 단계(614)는 4비트만큼 논리적으로 오른쪽으로 이동된 [MAXCODE4-CODE4-1]로 설정된 DIF값을 계산한다. 단계(610)는 또한 찾아진 심볼값(value)를 제공하기 위해 테이블 조사를 수행한다. 단계(610)는 테이블 HUFFVAL_P에서 심볼값(VALUE)을 조사한다.
이 예에서, 1<I<17 을 가정하면, HUFFVAL_P 테이블은 인덱스로서 [I+16*(MAXCODE[I]-CODE)]를 사용하여 생성될 수 있다.
M=max(MAXCODE[I]-MINCODE[I]); 및
I=0, 1, 2,....MaxLength-MinLength
라 하자.
HUFFVAL_P 테이블은 [16*(M+2)]의 크기를 가질 것이다. COENUM[I]는 코드길이가(I+MinLength)인 코드워드의 수를 나타낸다고 하자. CODE[J]는 코드길이[I]를 가진 Jth 의 코드값을 나타내자. 큰 HUFFVAL 테이블의 엔트리는 아래와 같이 계산될 수 있다.
Figure 112001035322381-pct00020
따라서, HUFFVAL_P 테이블에서의 값은 허프만코드의 수에 의존하는 부호없는 16비트 정수의 최대크기일 것이다. 순차적 방법으로 3번의 테이블조사를 1개로 결합함으로써, 허프만코드값을 인덱싱하는데 필요한 명령어가 현저하게 줄어든다. 동시에, 테이블 조사의 수를 줄이는 것으로 비싼 레지스터 공간을 절약할 수 있다. 또한, (MAXCODE[I]+1-CODE)는 코드값을 결정할 때 계산되고, 이 테이블조사에 유용하다는 것을 유념해야 한다.
단계(616)에서는, 산출된 심볼값(VALUE)이 출력된다. 일단 현재의 허프만코드의 코드길이가 단계(614)에서 결정되면, 현재의 4x16비트코드워드는 왼쪽으로 시프트될 수 있고 다음의 4x16코드워드로부터 동일한 비트수가 시프트 인(shift in)될 수 있다. 그런 후, 다음 허프만코드의 디코딩이 시작될 수 있다.
따라서, 병렬디코딩방법(600)은 비트스트림으로부터 한번에 4비트의 데이터를 읽어온다. 현재의 코드워드가 그 범위에 들어가는지를 알기 위해서, 각각의 연속되는 4비트길이가 병렬로 검사된다. 순차적 알고리즘에서 1부터 16까지의 범위에 걸쳐 필요한 16개의 검사 대신에, 동일 범위에 걸쳐 4개의 검사만 필요해진다. 다른 중요한 개선은 디코딩을 위한 3번의 테이블 조사를 단일 테이블 조사로 결합한 것이다. 이것은 레지스터 사용뿐 아니라 계산의 최소화의 효과를 가져오며, 따라서 많은 상황에서 매우 유익한 일이 될 수 있다.
길이 1부터 8까지의 실시예
상술된 실시예는 코드워드가 2와 9 사이의 길이를 갖는다는 것을 가정한다. 그러나, 코드워드가 1과 8 사이의 길이를 갖는다면, 디코딩은 8비트의 유닛에서 행해질 수 있다. 8 대신에 최대 1번의 검사가 각 코드워드에 필요하다. 이는 비트스트림이 8x8비트로 확장되는 것을 필요로 한다. 예를 들어, 입력 비트스트림이 "b0, b1,...."(여기서 bi는 바이트 i를 의미) 이라면, 변환된 비트스트림은 "b0, b0, b0, b0, b0, b0, b0, b0, b1, b1, b1, b1, b1, b1, b1, b1,..."이 될 것이다. 초기 비트마스크는 이제
"10000000,11000000,11100000,11110000, 11111000,11111100,11111110,11111111b" 또는 "0x80C0,E0F8,F8FC,FEFF"가 될 것이다.
테이블 엔트리는 아래와 같이 생성될 것이다.
Figure 112001035322381-pct00021
HUFFVAL_P테이블의 값은 부호없는 8비트정수가 될 것이다. MAXCODE_P테이블 값은 부호없는 8비트정수가 될 것이다.
길이 1 부터 32까지의 실시예
코드워드의 길이가 1과 32 사이에 있다면, 디코딩은 32비트 유닛에서 행해 질 수 있다. 16 대신에 최대 8번의 검사는 코드워드의 길이를 결정하는데 필요하 다. 비트스트림은 아래와 같은 2x32 비트형식으로 확장될 것이다.
입력 스트림: b0, b1, b2, b3, b4, b5, b6, b7,....
출력 스트림: b3, b2, b1, b0, b3, b2, b1, b0, b7, b6, b5, b4, b7, b6, b5, b4,...
초기비트 마스크는 이제 "10000000,00000000,00000000,00000000,11000000, 00000000,00000000,00000000,00000000b" 또는 "0x8000,0000,C000,0000"이 될 것이다.
테이블 엔트리도 아래와 같이 계산될 것이다.
Figure 112001035322381-pct00022
따라서, MAXCODE_P테이블의 값은 부호없는 32비트 정수가 될 것이다. 테이블 HUFFVAL_P의 값은 부호없는 32비트 정수가 될 것이다.
실행 평가
제안된 병렬 허프만디코딩 알고리즘은 MMXTM 어셈블리 코드로 구현되어왔다. 이 부분에서, 원래 비트스트림을 4x16비트 영역으로 확장하기 위한 CPU 시간은 디코딩시간에 포함된다.
길이(I)의 코드워드가 2-I의 확률로 나타난다면, 길이(I)의 코드워드의 확률은 CODENUM[I]*2-I일 것이다. 길이[I]의 코드워드를 디코딩하는 시간을 T[I]라 하면, 1개의 심볼의 평균 디코딩 시간은 아래와 같이 산출될 수 있다.
Figure 112001035322381-pct00023
순차적 알고리즘을 이용하는 10개의 CIF(common intermediate format)의 압축을 가정하고 1-4번째 이산 코사인 변환(DCT)계수가 RUN-LEVEL심볼을 이용하여 코드화되는 경우, 허프만코드워드 수가 디코딩되도록 아래와 같이 산출될 것이다.
Figure 112001035322381-pct00024
비록 DCT가 본 예시에서 선택되었지만, 차분 펄스 부호 변조(DPCM), 웨이브렛(wavelet), 부대역 변환(sub-band transform), 벡터 양자화 등과 같은 어떤 변환을 이용하더라도 당업자들에게 명백할 것이다. MMXTM 를 장착한 166MHz Intel
Figure 112004027123878-pct00025
Pentium
Figure 112004027123878-pct00026
프로세서를 사용하여, 최상의 경우(모든 코드워드가 2 부터 5까지의 비트길이일 때), 최악의 경우(모든 코드워드는 12 부터 15까지의 비트길이일 때), 평균의 경우(코드길이가 2 부터 16 사이에서 분산될 때)의 데이터복원시간은 아래의 테이블 2에 도시된다.
Figure 112002010186855-pct00027
테이블 2는 병렬 알고리즘이 평균의 경우에 성능이 우수한 반면, 최악의 경우의 시간을 현저하게 감소시키는 것을 보여준다. 또한, 더 우수한 결과는 어셈블리 코드를 더욱 최적화함으로써 얻어질 수도 있음을 유의해야 한다.
당업자들에게 이해되겠지만, 본 발명은 그것의 취지 및 본질적인 특징을 벗어나지 않는 기타 특정한 형식으로 구체화될 수 있다. 예를 들어, 본 발명의 기술은 비주얼 명령어 세트를 구비한 SUN
Figure 112002010186855-pct00028
UltraSPARC
Figure 112002010186855-pct00029
, Advance Micro Device, Inc.'s
Figure 112002010186855-pct00030
3DNow!TM 등과 같은 다른 SIMD 시스템에 적용될 수도 있고, 이와 같은 것들이 활용될 수 있다.
또한, Pentium
Figure 112004027123878-pct00031
Ⅱ의 계승인 Intel
Figure 112004027123878-pct00032
의 새로운 Pentium
Figure 112004027123878-pct00033
Ⅲ[카트마이(Katmai)로도 잘 알려진]는 스트리밍 SIMD 확장을 부가했다. Pentium
Figure 112004027123878-pct00034
Ⅲ는 70개의 새로운 명령어를 제공한다. 많은 명령어가 3-D 응용을 목표로 하는 부동 소수점 SIMD 연산을 위한 것이다. 고정 소수점 수 연산을 위한 몇개의 명령어도 부가되었다. 이들 명령어들은 부분적으로, MPEG 인코딩/디코딩(움직임 예측, 움직임 보상)을 목표로 한다. 그러나, 당업자들은 이들 새 명령어들이 본 발명의 디코딩 기술을 더욱 가속시키기 위해 이용될 수 있다는 점을 이해할 것이다. 예를 들어, Min 및 Max 연산은 코드길이 검출을 고속화할 수 있다. 정수 레지스터 및 MMXTM 레지스터의 부분을 전송하는 삽입 명령어도 고속화를 제공한다. 유사하게, 동보(broadcast) 명령어는 더 효과적인 방법으로 비트스트림을 복사할 수 있다.
대안적으로, 본 발명의 기술은 컴퓨터 시스템내에서 구현될 수 있다. 예를 들어, 방법(500 및 600)은 PCI(peripheral component interconnect)카드상으로 구현될 수 있다. PCI카드는 개인용 컴퓨터의 PCI버스상에 설치될 수 있다. 또한, NUBUS, ISA, EISA, 범용 직렬 버스(USB), 1394 Firewire 및 AGP(Accelerated Graphics Port)등과 같은 기타 버스 기술도 활용될 수 있다. 또한, 본 발명의 기술은 캐싱(caching), 새 명령어 세트, 다중처리기 및 그들의 등가와 같은 가용루틴 및 특징을 활용하여 구현될 수 있다.
Ⅲ. 비네팅 정정
도 2의 레지스터(34)는 비네팅 정정이 적용되도록 하고, 따라서, 카메라(32)에 더 싼 렌즈(10)가 사용되도록 한다. 이것은 카메라의 비용이 더욱 저렴하게 한다.
연산시, 호스트(36)에서의 프로세서는 레지스터(34)의 값을 읽어오도록 카메라에 요청할 것이다. 그 다음 이것은 카메라의 비네팅 결함을 정정하는 호스트의 비네팅 정정 블록(40)에 사용될 것이다. 비네팅이 결함 화소로 잘못 판단되는 것을 피하도록 이것은 화소정정 블록(42) 이전에 행해진다. 정정은 제공되는 화소휘도값에, 제공되는 오프셋값을 더함으로써 달성될 수 있다.
도 10은 화소어레이(11)와 Y축상으로 대응하는 휘도 그래프(13)를 도시한다. 값(x0, y0)를 갖는 중앙화소(17)는 렌즈의 최대휘도의 점에 대응한다. 두번째 예시적 화소(15)는 최소휘도 근처이고, 곡선(13)과 최대휘도값(19) 사이의 차를 갖는 비네팅 효과를 보여준다. 본 발명은 X와 Y양방향에서 이러한 비네팅 효과를 보정한다.
일 실시예에서, rT 가 지시하는 문턱값은 곡선(13)이 최대값(19) 근처에 있는 범위에 도시되고 비네팅 정정이 적용될 필요가 없다. 대안적으로, 정정은 rT 점에서 어떤 변이효과를 피하는 것에 관계없이 모든 화소에 적용될 수 있다.
선택되는 특별한 렌즈에 따라, 구체적인 비네팅량을 레지스터(72)에 상수로 제공되어 사용될 수 있다. 따라서, 레지스터(72)에 다른 상수값을 간단하게 프로그래밍하여 다른 렌즈가 카메라 제조에 사용될 수도 있다. 이것은 다중 소스가 렌즈에 사용되도록 하고, 로트(lot) 대 로트 또는 제조자 대 제조자로부터의 렌즈 품질의 변화를 보상한다.
비네팅 정정을 실행하는 도구 및 하드웨어 또는 소프트웨어를 위한 방정식의 실시예는 아래에 상술된다. 상수가 카메라에 저장되더라도, 비네팅정정은 카메라의 하드웨어/소프트웨어 또는 호스트의 소프트웨어에 의하여 행해질 수 있다. 저품질 렌즈의 비네팅 결함은 렌즈의 중앙을 통과하는 것과, 렌즈의 에지부 근처에서 포물선 곡선으로 모델링될 수 있다. 변환 함수는 등방형이다. pi 와 p0 는 비네팅 정정 전후의 화소값이라 하고, x0 와 y0이 렌즈(렌즈가 올바르게 장착된다면, 이미지의 중앙에 있어야 함)의 중앙의 좌표라 하자. 그러면,
Figure 112002010186855-pct00035
"a"는 작은 양의 상수이다. 안전한 측면상에 있는 것으로, 최대 50%의 비네팅이 정정될 수 있고, 이것은
Figure 112002010186855-pct00036
임을 의미한다.
226 에 의하여 정규화되면, 이것은 a=1298이 될 것이다. 0 부터 1023에 한정하고, 역의 계산을 수행하는 것에 의하여, 최대로 정정가능한 비네팅은 56%이다.
상술된 공식에서, 화소 종횡비(pixel aspect ratio)는 고려되지 않음을 유의해야 한다. 정방형 화소에 대해서는, 상기 방정식은 정확하고, 12/11 화소 종횡비에 대해서는, 상기 결과는 약간 벗어난다. 또한, 센서포맷이 스케일링 되지 않은 QCIF(수직 및 수평 방향에서 화소를 몇 개씩 걸러 제거하여 CIF로부터 하위 샘플링 된 QCIF)라면, 1/4로 a가 스케일링 될 것이다.
yi 는 10비트이고, (x-x0)2과 (y-y0)2 은 16비트(CIF 크기)이고, y0 는 10비트라면, 이것에 의해 a는 10비트(0 부터 1023까지)가 될 필요가 있음이 결정된다.
도 11은 상술된 방정식을 구현하는 하드웨어시스템 또는 소프트웨어 블록의 한 실시예의 블록 다이어그램이다. 특히, 임의 선택회로/블록(80)은 다중화기(82)의 선택입력에 인가된다. 화소위치가 문턱값 r2 보다 작은 곳에서, 라인(84)상의 입력화소(pi)는 라인(86)상에서 간단하게 출력화소(po)로 통과된다. 화소위치가 문턱값보다 크면, 비네팅정정이 도 11에 도시된 하드웨어로 상술된 방법을 구현함으로써 적용된다.
특히, 화소의 현재 x 값, 즉 xi는 산술회로/블록(88)에 인가되고, 여기서 중앙화소(x0)가 현재값에서 빼진다. 그 다음, 이 값은 다중화기(90)를 통하여 그것의 입력값을 곱셈회로/블록(92)에 두번 인가하여 제곱이 되고, 가산/누산기(94)에서 누산된다. 유사하게, y값(yi)은 중심y값(yo)과의 차를 결정하는 회로/블록(96)에 인가된다. 이것은 다중화기(mux)(90)를 통해 2개의 값으로 곱셈기(92)에 유사하게 인가되고, 제곱되어 가산/누산기(94)에 누산되고, 제곱된x값에 더해진다. 다중화기의 사용은 시간 분할 다중화에 의하여, 동일한 곱셈기(92)를 양쪽의 계산에 사용되도록 한다. 명백히, 두 별도의 곱셈 유닛이 대안적으로 제공될 수 있다.
그 다음, 누산기(94)의 출력이 제2곱셈기(96)에 제공되고, 레지스터(72)로부터의 상수값에 곱해진다. 그 다음, 1의 값이 유닛(98)에서 빼지고, 이 값은 곱셈기(100)에서 화소값(pi)에 곱해진다. 상기 출력은 다중화기(82)를 통하여 라인(86)에 출력하도록 라인(102)에 제공된다. 명백히, 곱셈기(92, 96 및 100)를 위하여 동일한 곱셈회로를 사용하고, 곱셈기를 상이한 시간 슬롯에서 상이한 목적으로 사용하는 것과 같이 전기회로의 변형이 제공될 수 있다.
임의 선택 회로/블록(80)은 가산/누산기(94)의 출력(x2+y2값의 반경(radius))과 레지스터(106)내의 문턱반경을 비교하는 비교기(104)를 제공한다.
바람직하게는, 상수 a가 화소값(pi)과 같은 수의 비트를 갖는다. 따라서, pi가 10비트라면, x와 y값이 16비트인 반면, 상수 a가 10비트가 될 것이다. 또한, 센서포맷이 (잘라내지지아니한) 스케일링 되지 않은 QCIF라면, a는 1/4로 스케일링 될 수 있다. 따라서, 비네팅 정정 이전에 이미지가 잘라내지는(cropped) 경우에 정정이 제공된다.
부가적으로, TV가 사용될 경우에 화소 종횡비의 정정은 y값에 11/12를 곱하여 이루어질 수 있다.
일 실시예에서, 정정은 소정 직경의 바깥쪽에서만 일어날 것이다. 이것은 렌즈가 렌즈 중심의 주위에서 만족할 만하게 수행되는 것을 가정하고, 이는 종종 합리적인 가정이다. 그렇게 하는것으로, 더 정확한 정정 모델이 얻어질 수 있다. rT 를 비네팅 결함이 무시될 수 있는 내부의 직경이라 하자. 그러면,
Figure 112002010186855-pct00037
따라서 본 발명은 렌즈의 변화를 허용하는 또한 더 싼 렌즈가 사용되도록 한다. 이것은 호스트 컴퓨터에서의 AGC 및 AWB를 향상시킨다. 덧붙여, 이것은 물체 이동 추적(object motion tracking)을 더 좋게 한다. 휘도값이 센서의 에지부로 물체가 이동할 때의 휘도값과 같다는 가정, 따라서 동일한 휘도값을 찾는 추적을 함으로써 일반적으로 물체 이동이 행해진다. 명백히, 비네팅효과는 물체의 위치를 찾는 노력을 해방시킬 수 있다. 비네팅 정정을 센서에 가깝게 적용하여, 이것이 극복될 수 있다. 본 발명은 전체적으로 향상된 비디오 품질도 제공한다.
IV. 화소 정정
도 2의 블록(42)은 호스트에서 화소정정을 수행한다. 이것은 정정되는 CMOS 또는 CCD 센서 어레이 상의 결함 검출 위치를 고려한다. 일반적으로, 이것은 휘도값과 이웃 검출기 소자의 휘도값을 비교하여 수행된다. 차이가 문턱값보다 크면, 이것은 결함 센서소자에 기인한 것으로 가정된다. 따라서, 일반적으로 주위화소값의 평균인 정정된 값이 대용될 것이다.
비디오의 프레임율에 영향을 미치지 않고 호스트에서 행해지는 이것이 행해지기 위해서는, 알고리즘은 간단하게 유지된다. 이것은 2개의 기본 특징을 통하여 수행된다. 첫째로, 결함화소 검출은 모든 프레임에서 행해지는 것이 아니라, 프레임의 하위샘플에서만 행해진다. 예를 들어, 검출은 매 32-128 프레임에서만 행해질 수 있다. 둘째로, 유지된 통계는 요구되는 처리량을 줄이도록 간단해진다. 특히, 통계는 단지 화소 소자의 위치 및 빈도 또는 결함화소가 검출된 회수를 포함할 수 있다.
시스템은 이웃 화소로부터 강도의 특정량 이상으로 변화하는 화소를 위한 이미지 픽업장치로부터 가공되지 않은 이미지 데이터를 읽어오거나 스캐닝하여 작업한다. 가공되지 않은 이미지 센서 데이터는 이미지 센서로부터 얻어진 처리되지 않은 휘도 데이터 출력이고 손실 압축 또는 색처리가 이루어지지 않는다. 이미지 센서는 아날로그 전압 또는 전류를 읽고, 디지털로 변형시키고 및 더 처리하거나 압축하지 않고 호스트로 신호를 보낸다. 이미지 센서의 포토사이트는 색채 또는 흑백 디지털 정지이미지 또는 비디오 이미지를 캡쳐하는데 사용된다. 가공되지 않은 이미지 데이터는 범용 직렬 버스(USB) 또는 병렬 포트와 같은 특정한 버스의 버스프로토콜에 의하여 결정되는 데이터 전송률을 갖는 버스를 통하여 정보처리기능을 가진 호스트로 보내진다.
가공되지 않은 이미지 센서 데이터, 각 결함 화소의 발생 위치와 빈도 및 컴퓨터 프로그램에 의하여 수행된 모든 중간 계산의 결과는 메모리에 모두 저장된다. 그 다음, 또다른 알고리즘이 사용되어 결함 화소로부터 데이터를 대신하기 위해 비정상화소의 이웃 화소의 평균값을 구한다. 그 다음 정정된 데이터는 한층 더 처리되어 최종적으로 모니터에 디스플레이될 수 있다. 상기 처리는 비디오 하위샘플링(subsampling), 즉 다양한 프레임 구간에서 정정이 수행되고 반복되는 것을 포함한다. 비디오 하위샘플링은 128 프레임당 1번(1/128) 수행된다. 대안적으로, 비디오 하위샘플링은 1/64 비디오 프레임마다 수행될 수 있다. 또한 추가적 실시예에서, n이 정수이고 X는 50 또는 60이 아닐 때, 비디오 하위샘플링은 1/(n 곱하기 X) 프레임마다 수행된다. 50 또는 60은 미국과 유럽에서 각각 사용되는 AC 조명 주파수인 50Hz와 60Hz에 해당한다. 이러한 방법은, 비정상적인 가공되지 않은 데이터 화소가 인공 조명 시스템의 인공품(artifact)이 아님이 보증된다. 비디오 하위샘플링의 사용은 프로세서와 시스템의 처리속도에 불리한 영향을 줄 수 있는 매 프레임의 스캔을 필요로 하지 않는 빠르고 최적의 정정을 참작한다. 물론, 정지 이미지에서 결함화소를 검출하고 정정할 때는 비디오 하위샘플링이 이용되지 않는다.
결함 화소의 발생 위치와 빈도를 기록하는 통계적 데이터베이스는 시스템이 동작 초과 시간을 습득하고 순응하도록 생성되어 메모리에 저장된다. 통계적 데이터베이스의 경향은 저장되어 실제의 비정상화소가 타겟 이미지에서의 실제 이상현상의 잘못된 검출, 조명 또는 기타 환경적으로 유도된 이상현상의 잘못된 검출과 구별될 수 있다. 통계적 데이터베이스의 연산조직과 컴퓨터 프로그램의 연산의 세부사항은 아래에 기술된다.
도 12는 본 발명의 한 실시예에 따라 결함 화소를 검출하고 정정하는 시스템에 제공되는 소프트웨어 프로그램의 작용을 설명한 간소화된 플로우 차트를 도시한다. 결함 화소 검출 및 정정의 첫번째 단계, 단계(1210)는 이미지 센서 어레이로부터 가공되지 않은 이미지 데이터 프레임의 일부분을 포착하는 단계를 포함한다. 가공되지 않은 이미지 데이터는 디지털화된 실제 장면(scene)에 대응하는 데이터일 수 있고 또는 교정(calibration)이나 "검정(black)" 배경이미지에 대응하는 데이터일 수도 있다. "검정" 배경이미지는 센서 어레이의 적분(integration) 시간을 줄이거나 이미지 시그날의 이득을 줄여 얻어질 수 있다. "검정" 이미지로부터의 가공되지 않은 데이터는 과도활성 포토사이트(overactive photosite)를 검출하는 데에 사용될 수 있다. "검정" 이미지에 대응하는 가공되지 않은 데이터도 검정이 되어야 하고, 만약 어떤 화소가 검정이 아니라면, 이것은 과도활성 포토사이트에 해당한다. "검정" 이미지의 사용은 장면 자체에서 발생되는 어떤 휘도의 편향을 제거하여 결함 화소 검출을 강화시킬 수 있다.
전체 프레임으로부터의 데이터가 결함 화소 검출 및 정정에 대해 한번에 처리될 수 있더라도, 이미지 센서로부터의 3개의 라인으로부터 데이터가 호스트에 도착되자 마자 알고리즘이 그것의 기능을 시작한다. 이미지 센서 어레이로부터의 데이터의 상기 3개의 라인은 화소 및 상기 화소의 주변 이웃을 위한 데이터 처리를 고려할 것이다. 또한, 센서 어레이가 비디오 이미지 캡쳐에 사용될 때, 비디오 하위샘플링이 사용되어 이미지 센서 어레이에 의하여 캡쳐된 비디오의 모든 프레임이 결함 화소 검출 동작에 필요하지는 않다. 바람직한 실시예에서, 결함 검출은 상술된 소정의 프레임 간격에서 수행되고 정정은 모든 비디오 프레임에 적용된다. 비디오 하위샘플링의 현명한 사용은 상기 방법을 매우 빠르고 효과적으로한다.
대안적 실시예에서, 비디오 하위샘플링이 사용되지 않아 결함 화소 검출이 모든 비디오 프레임에서 수행된다. 비디오 하위샘플링의 사용은 정보처리 기능을 가진 호스트의 프로세서 속도의 함수이다. 프로세서가 모든 프레임에서 비정상 화소를 검출할 만큼 충분히 빠르다면, 비디오 하위샘플링이 사용되지 않는다. 한편, 프로세서가 소정 프레임율에서 비디오를 처리할 만큼 빠르지 않다면, 비디오 하위샘플링이 소정 프레임율에서 데이터전송을 확보하도록 사용된다. 비디오 하위샘플 링이 없다면, 비정상 화소 정정은 즉각적이고, 결함이 검출된 그 프레임에서 그 결함이 정정된다. 비디오 하위샘플링을 사용하면, 프레임이 비정상 화소를 검출하도록 샘플링될 때 까지, 비정상 화소 정정이 지연된다. 따라서, 비디오 하위샘플링 사용 선택 및 하위샘플링율은 프로세서 속도 및 프로세서 전력과 정정 이전의 지연 사이에서 트레이드 오프의 함수이다.
단계(1212)에서는, 데이터를 포착한 후에, 각 포착된 화소를 위하여, 국부적 화소 휘도값 및 그것에 바로 이웃한 모든 화소의 평균 휘도값을 계산하고 저장한다. 그 다음, 단계(1214)에서는, 편차 문턱값(derivation threshold)이 정해진다. 편차 문턱값은 화소의 휘도값과 그것에 바로 이웃한 모든 화소의 평균 휘도값 사이의 변동을 수용할 수 있는 레벨을 정립한다. 그 다음, 단계(1216)에서, 각 포착된 화소를 위하여, 국부적 휘도 편차가 계산된다. 국부적 휘도 편차는 화소의 휘도값과 그것에 바로 이웃한 모든 화소의 평균 휘도값 사이의 차의 절대값이다.
그 다음, 단계(1218)에서는, 포착된 데이터의 각 화소에 대하여, 그것의 국부적 휘도 편차가 편차 문턱값과 비교된다. 국부적 휘도 편차가 문턱 편차값을 초과한 어떤 화소는 결함 화소로 플래그된다. 단계(1220)에서, 각 결함 화소의 물리적 위치와 발생 빈도는 통계적 데이터베이스에 저장된다. 그 다음, 단계(1222)에서, 통계적 데이터베이스는 결함 화소의 데이터값이 정정되어야 하는지를 결정하도록 조회된다. 결함 화소값의 위치와 빈도를 저장하여, 통계적 데이터베이스는 어떤 결함 화소가 정정을 보증하는 지를 확인하는 오버타임 경향(over time trends)을 전개시킨다. 통계적 데이터베이스의 경향의 로직은 디폴트로 모든 플래그된 결함 화소의 정정을 처음에 보증하고, 특정한 화소가 마지막 4번의 조회 중 최소한 2번의 발생 빈도를 갖고 있을 때에만, 오버타임 보증 화소 정정을 보증한다.
그 다음, 단계(1224)에서, 통계적 데이터베이스 필터를 통과한 결함 화소가 정정된다. 결함 화소를 정정하기 위하여, 결함 화소의 잘못된 가공되지 않은 휘도 데이터는 그것에 바로 이웃한 모든 화소의 평균 휘도값을 갖는 화소의 국부적 평균 휘도값으로 대체된다. 그 다음, 단계(1226)에서, 결함없는 화소로부터의 데이터 뿐만 아니라 결함 화소로부터 정정된 데이터도 다음의 처리에 보내지도록 준비된다. 다음의 처리는 데이터압축, 색채 및 디스플레이에 알맞은 데이터 포맷으로의 인코딩을 포함할 수 있다. 결함있는 포토사이트의 결과로 생성된 인공물과 구별하기 어려운 인공물이 그 처리 자체에서 도입될 수 있으므로 어떤 다음의 처리가 일어나기 전에 데이터를 정정하는 것이 바람직하기 때문에, 결함 화소 검출과 정정은 이미지 센서 어레이로부터의 원래 데이터에서 수행된다.
소프트웨어 알고리즘은 의도적으로 매우 간단하게 유지되어 프로세서 부하 및/또는 비디오 프레임율이 최소한의 영향을 받는다. 첫째, 소프트웨어 알고리즘은 3가지 기능, 즉 검출, 정정 및 통계적 기능만 수행하기 때문에 간단하게 유지된다. 위치 정보 및 비정상 화소의 발생 빈도만 추적되기 때문에 통계적 루틴은 간단하게 유지된다. 둘째, 소프트웨어 알고리즘은 호스트로 전송되는 데이터의 전송율에 최소한의 영향을 주도록 간단하게 유지되어, 프레임이 결함 화소를 위하여 스캔되는 동안에도, 다음의 프레임은 지연되지 않는다. 소프트웨어 알고리즘의 최대 영향은 기껏해야 초당 10프레임(fps)에서 초당 9프레임(fps)까지 비디오 데이터 전송율을 감소시키는 것이다. 셋째, 소프트웨어 알고리즘은 간단하게 유지되어, 알고리즘이 실행될 때, 호스트 프로세서의 부하가 1% 이상 증가되지 않는다. 비정상 화소는 1개의 프레임에서 검출되고 그들을 이미지 센서로부터 읽어들임에 따라, 정정이 그다음 프레임에서 실시된다.
그러므로, 시스템이 작동될 때, 이미지 센서로부터의 가공되지 않은 이미지 데이터가 얻어지고 호스트에서 처리되도록 보내지기 때문에, 상술된 바와 같이 프레임은 결함 화소 검출 및 정정을 위하여 캡쳐된다. 한번 결함 화소가 확인되고 그것의 정정이 통계적 데이터베이스에 의하여 보증되면, 통계적 데이터베이스에 그 다음 조회가 생길 때 까지 모든 다음 프레임 동안에 그러한 정정이 계속될 것이다. 그 때 초기에 플래그된 결함 화소가 결함 화소로 계속 표시되면, 정정은 상술된 바와 같이 계속될 것이다. 한편, 통계적 데이터베이스가 결함 화소 정정을 보증하지 않는다면, 통계적 데이터베이스에 다음 조회가 생길 때 까지 이들 화소들은 더 이상 정정되지 않을 것이다. 이 시스템의 동적 특성은 이후에 형성될 환경적 변화로 인하여 결함 오버타임(defective over time)이 되는 포토사이트로부터의 데이터의 정정도 고려할 것이다.
결함 검출 및 정정 알고리즘의 통계적 분석 세그먼트는 선택적인 것이다. 결함 포토사이트에 의하여 발생되지 않은 이상현상이 정정되지 않도록 하여, 화소 정정의 효율을 증가시키는 것을 목표로 하고 따라서 처리시간과 부하를 절감할 수 있다. 그러나, 효율에서의 이득은 통계적 분석 부분 자체에 의하여 부과되는 부하에 대해 균형을 맞추어야 한다. 통계적 분석 부분이 이용되지 않는 대안적 실시예에서 는, 결함이 있는 것으로 플래그된 모든 화소가 정정된다. 비디오 하위샘플링을 사용하거나 사용하지 않는다고 선택하는 것으로, 결함 검출 및 정정 알고리즘의 통계적 분석 부분을 이용하겠다는 결정은 효율과 프로세서 전력 사이에서의 트레이드 오프에 의존한다. 프로세서가 충분히 빠르다면, 효율관계는 그다지 중요하지 않다. 한편, 프로세서가 충분히 빠르지 못하다면, 화소 정정 효율은 결함 검출 및 정정 알고리즘의 통계적 분석 부분의 구현을 보증할 만큼 중요해진다.
당업자들에게 이해되는 바와 같이, 본 발명은 그것의 본질적 특성을 벗어나지 않는 범위에서 기타 구체적 형식으로 실시될 수 있다. 예를 들어, 비디오 하위샘플링율은 변화되거나, 전혀 변화되지 않을 수도 있다. 대안적으로, 선택적 통계적 데이터베이스의 로직은 디폴트로서 결함 화소를 정정하는 것에서, 통계적 데이터베이스로부터의 경향에 의하여 보증될 때만, 결함 화소가 정정되는 것으로 변화될 수 있다.
V. 프레임 버퍼 메모리가 없는 경우
카메라에서의 처리의 제거는 디지털 화소 데이터가 이러한 처리를 위하여 저장될 필요가 없기 때문에, 프레임 버퍼 메모리를 제거하게한다. 그러나, 다른 잠재적인 문제는 버스가 유효한 동안에는 센서의 데이터 출력이 확보될 필요가 있다는 것이다. 이것은 매우 큰 버퍼 메모리가 필요할 수 있다. 상기 카메라의 일 실시예에서는, 버스 인터페이스에만 작은 버퍼가 사용된다. 작은 버퍼는 호스트 버스가 유효할 때에 부합하여 센서가 읽혀지는 타이밍을 조절하여 달성될 수 있고, 그 다음에 버스가 유효할 때까지 기억될 수 있는 양의 데이터만 읽는 것으로 달성될 수 있다.
도 13은 본 발명에 따른 비디오 카메라의 블록 다이어그램이다. 이 시스템은 렌즈(1310) 및 CMOS센서 어레이와 같은 센서 어레이(1312)를 포함하고, USB(1320)에 연결된다.
종래분야에서와 같이 프레임 버퍼 메모리에 저장된다기 보다는 CMOS센서 칩으로부터 디지털화된 시그날이 디지털 처리 회로(1348)에 바로 제공된다. 데이터 압축을 수행하고 잘라내기(cropping), 스케일링 및 디지털 필터링과 같은 최소화된 데이터 전송에 대한 명령기능들을 선택적으로 수행하는 비디오 디지털 신호 프로세서(1350)에 먼저 제공된다. 일단 처리되면, 디지털 데이터는 버스 인터페이스(1354)에 제공된다.
버스 인터페이스(1354)는 버스 컨트롤러 버퍼(1356) 및 버스 컨트롤러(1358)를 제공한다. 버퍼(1356)는 CMOS센서 행으로부터 적어도 데이터의 한 라인을 저장한다. 바람직하게는, 버스 컨드롤러 버퍼(1356)는 최대 가능률 또는 2Kbytes로 2개의 USB 프레임을 저장할 수 있다. 프레임율, 데이터 압축율 등에 따라, 이것은 일반적으로 10개의 라인까지 변화할 수 있고, 부분제거(decimation)가 행해진다면, 심지어 15 내지 20개의 라인까지도 변화할 수 있다.
버스 컨트롤러(1358)는 라인(1360)의 제어 신호를 타이밍 및 제어 발생기(1326)에 제공한다. 타이밍 발생기(1326)는 라인(1364)상으로 클로킹 시그날(clocking signal)을 CMOS 센서 어레이(1322)에 제공한다. 클로킹 시그날(1364)은 행과 열 전송 펄스를 포함한다. 열 전송 펄스는 종래 분야에서와 같이, CMOS 센서 어레이로부터 변화된 값을 주기적으로 로딩하여 제공된다. 그러나, 행 전송 펄스는 CMOS 센서 어레이 밖으로 데이터를 읽어오는 것과 다음의 전기회로 및 USB에서의 데이터 전송에 의한 처리를 매칭시키도록 변화된다.
일 실시예에서, 디지털 처리 회로(1348)는 CMOS센서 어레이(1312), 타이밍 발생기(1326), ADC(1328) 및 행 및 열 로직 및 버퍼 등과 같은 동일한 반도체 칩 기판상으로 집적된다. 프레임 버퍼의 제거는 이러한 단일 칩을 허용한다. 이는 더 작고, 값싼 비디오 카메라를 만들도록 한다.
도 14는 라인(1364)에 제공되는 행 전송 펄스의 타이밍을 도시한다. 펄스의 연속적인 스트림이라기 보다는 도시된 바와 같이 그룹으로 처리 회로에 의하여 필요한 만큼 비트가 클로킹된다. 3개의 라인(1466)의 제 1그룹이 내보내진 다음, 이들 화소가 처리되어 버스로 전송되는 동안 지연된다. 그 다음, 2개의 라인(1468)의 다음 그룹이 제공될 수 있다. 그 다음, 라인 버퍼의 유효성과 USB상으로의 데이터 전송 타이밍에 따른 지연이 이루어질 것이다. 단일 라인(1469)은 다음에 전송되는 것이 도시되고, 몇몇 펄스(1470)에 의하여 전송되는 뒤이은 4개의 라인 그룹이 뒤따른다. 전체 이미지가 전송된 후에, 수직 전송 펄스(1472)가 제공된다. 도 14의 예는 단지 예시적이다. 행 전송 펄스는 동일한 열 펄스 사이에 제공되기 때문에, 간격을 도시하기 위해서는 펄스들이 서로 더 가까이 제공되는 것에 유의해야 한다. 따라서, 펄스의 작은 그룹의 버스트는 전기회로가 그것을 다룰 수 있을 만큼 빠르게 화소 데이터를 재빨리 보내도록 제공된다. 일 실시예에서, 전체 이미지는 다음의 열 전송 펄스 이전에 처리가 완료되도록 하는, 일련의 밀집하게 배치된 펄스로 클로킹될 수 있다. 다음의 열 전송 펄스 시간에 처리가 아직 완료되지 않았다면, 처리 타이밍 및 USB의 유효성에 일치하는 지연이 이루어질 수 있다. 따라서, 행 펄스는 종래보다 빠른 속도로 모두 연속적으로 제공되고, 상기 처리와 버스타이밍을 도모하기 위하여 열 펄스 후의 펄스의 이 그룹핑 타이밍은 다음의 열 펄스 바로후 또는 바로 전에 변화될 수 있다.
V. 압축되지 않는 경우
본 발명의 일 실시예에서, 도 2의 데이터 압축 블록(26) 및 데이터 데이터 복원 블록(38)이 제거될 수 있다. 이는 예를 들어, 새로운 USB가 더 높은 대역폭을 갖도록 개발될 때, 이루어질 수 있다. 그러나, 해상도가 더 높은 비디오 이미지 데이터가 송신되도록 하면서, 유용하게 된 부가 대역폭을 모두 사용하는, 향상된 예민한 센서가 개발된다면, 이전 실시예는 여전히 바람직하게 될 것이다. 그러나, 일 실시예는 데이터 압축 필요성을 제거시킴으로써 부가 대역폭을 이용하고, 따라서, 비디오 카메라가 더욱 간소화되고 비용이 더 절감된다.
도 2에 도시된 바와 동일한 중요한 기능은 데이터 복원을 제외하고, 호스트에서 수행될 수 있을 것이다. 카메라는 값싼 렌즈가 사용되는 것을 고려하여 여전히 일 실시예에 정정 레지스터(34)를 포함할 것이다.
VII. 손실있는 데이터 압축
대안적 실시예에서는, 손실있는 데이터 압축 방법이 사용된다. 손실있는 데이터 압축은 복구된 이미지에 일부 해상도를 잃을 수 있다는 의미이다. 손실있는 데이터 압축의 단점은 호스트에서 이루어진 어떤 비네팅 또는 화소 정정의 질이 저 하될 수 있다는 것이다. 따라서, 이 대안적 실시예에서는, 비네팅 정정 및 화소 정정이 비디오 카메라 자체에서 이루어진다. 이것은 손실있는 압축이 도 2의 블록(26)대신 사용되도록 한다. 색채 처리 및 스케일링 연산은 여전히 호스트에서 수행되고, 따라서 도 1의 종래의 것보다 더 간단한 카메라를 제공한다.
당업자들에게 이해되겠지만, 본 발명은 그것의 취지 및 본질적인 특징을 벗어나지 않는 기타 특정한 형식에서 구현될 수 있다. 예를 들어, 한 실시예의 정정 레지스터는 렌즈의 특성이외의 제조상의 카메라마다 변화될 수 있는 카메라의 특성을 정정할 수 있다. 물리적으로 공유된 버스 대신에, 데이터는 무선으로 카메라로부터 호스트 또는 호스트에 연결된 수신기로 전송될 수 있다. 호스트 자체는 일종의 프로세서나 처리 전기회로를 구비한 개인용 컴퓨터, 정보처리기능을 가진 인터넷 장치 또는 기타 기기나 구성성분이 될 수 있다. 따라서, 상술된 바는 실례로 제공된 것으로, 이하의 청구항에 설명되는 본 발명의 범위를 한정하지 않는다.

Claims (17)

  1. (a) 이미지 센서 및 데이터 압축을 수행하는 처리 소자를 갖는 비디오 카메라;
    (b) 상기 비디오 카메라에 연결된 인터페이스; 및
    (c) 상기 인터페이스로부터 압축된 데이터를 받아들이는 처리 유닛을 포함하여 이루어지는 비디오 카메라 시스템에 있어서,
    상기 처리 유닛은 상기 압축된 데이터의 데이터 복원, 비정상 화소 정정 및 색채 처리를 수행하도록 구성되고,
    상기 데이터 복원 연산의 적어도 일부는 병렬로 수행되고,
    비정상 화소 정정 및 색채 처리 전기회로가 상기 비디오 카메라내에 필요하지 않고, 상기 비정상 화소 정정이 상기 색채 처리에 앞서 수행되는 것을 특징으로 하는 비디오 카메라 시스템.
  2. 제1항에 있어서,
    상기 비디오 카메라는 렌즈를 포함하고, 상기 처리 유닛은 상기 렌즈를 위하여 비네팅 정정을 수행하도록 더욱 구성되는 것을 특징으로 하는 비디오 카메라 시스템.
  3. 제1항에 있어서,
    상기 렌즈의 비네팅량에 대응하는 상수값을 저장하기 위하여 상기 비디오 카메라내에 메모리 소자를 더욱 포함하는 것을 특징으로 하는 비디오 카메라 시스템.
  4. 제1항에 있어서,
    상기 비정상 화소 정정은 검출된 결함 화소의 빈도에 관한 데이터 및 화소위치만의 통계적 기록 및 결함 화소를 결정하기 위한 비디오 하위샘플링을 포함함으로써 비디오 프레임율에 대한 영향을 최소화하도록 설계되는 것을 특징으로 하는 비디오 카메라 시스템.
  5. 제1항에 있어서,
    상기 처리 유닛은 레지스터의 다중 화소를 병렬로 연산하는 명령어를 갖는 프로세서를 포함하고, 상기 프로세서는 다양한 크기의 데이터 압축 코드의 데이터스트림을 데이터 복원하기 위하여 프로그램되고, 여기서 상기 데이터 복원 연산의 적어도 일부는 상기 레지스터의 다중 필드에서 병렬로 수행되는 것을 특징으로 하는 비디오 카메라 시스템.
  6. 제5항에 있어서,
    상기 데이터 스트림은 허프만 인코딩를 이용하여 데이터 압축되고, 상기 연산은 제1레지스터의 다중 위치에서 복제를 제공하도록 상기 데이터 스트림으로부터 비트의 한 그룹을 복제하는 연산; 및
    각각의 복제에 다른 값이 사용되면서 제2레지스터의 값과 상기 복제 사이의 연산을 병렬로 수행하는 연산을 포함하여 이루어지는 것을 특징으로 하는 비디오 카메라 시스템.
  7. (a) 이미지 센서 및 상기 이미지 센서에 연결된 아날로그 대 디지털 컨버터를 갖는 비디오 카메라;
    (b) 상기 비디오 카메라에 연결되고, 기타 주변 장치에 의한 동시 사용이 가능한 공유 인터페이스인 인터페이스; 및
    (c) 상기 인터페이스로부터 디지털화된 데이터를 받아들이기 위한 처리 유닛으로서, 비정상 화소 정정 및 색채처리를 수행하도록 구성된 처리 유닛을 포함하여 이루어지는 비디오 카메라 시스템에 있어서,
    비정상 화소 정정 및 색 처리 전기회로가 상기 비디오 카메라내에 필요하지 않도록 하고, 상기 비정상 화소가 상기 색채처리에 앞서 수행되는 것을 특징으로 하는 비디오 카메라 시스템.
  8. 제7항에 있어서,
    상기 비디오 카메라는 상기 아날로그 대 디지털 컨버터로부터의 디지털 데이터를 압축하는 처리 장치를 더욱 포함하여 이루어지는 것을 특징으로 하는 비디오 카메라 시스템.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 이미지 센서;
    상기 이미지 센서에 연결된 아날로그 대 디지털 컨버터;
    상기 카메라의 종횡비(aspect)를 위한 정정인자에 대응하며, 멀리 떨어진 호스트로 전송될 수 있는 값을 보유하는 메모리 소자;
    상기 아날로그 대 디지털 컨버터와 상기 메모리 소자에 연결되어, 상기 멀리 떨어진 호스트와 통신을 설정하는 인터페이스; 및
    비네팅 왜곡을 갖는 저가의 렌즈를 포함하여 이루어지고,
    상기 값은 렌즈 비네팅 값인 것을 특징으로 하는 비디오 카메라 시스템.
  13. 삭제
  14. 삭제
  15. 이미지 센서 어레이로부터 이미지 데이터를 읽는 단계;
    이미지 압축을 수행하는 단계를 포함하고 비디오 디지털 시그날 프로세서(DSP)에서 상기 이미지 데이터를 처리하는 단계;
    처리된 이미지 데이터를 버스에 제공하는 단계; 및
    상기 이미지의 전체 프레임을 저장하는 프레임 버퍼 메모리가 필요하지 않도록, 상기 버스를 통한 데이터 전송률에 대응하는 속도로 상기 이미지 센서 어레이로부터 이미지 데이터를 전송하도록 상기 이미지 센서 어레이에 클록 신호를 제공하는 단계를 포함하여 이루어지고,
    상기 이미지 압축은 허프만 압축된 데이터 스트림을 생성하는 단계를 포함하고,
    레지스터의 다중 화소를 병렬로 연산하는 단계;
    제1레지스터의 다중 위치에 복제를 제공하도록 상기 데이터 스트림으로부터 한 그룹의 비트를 복제하는 단계; 및
    각각의 복제에 상이한 값이 사용되고, 제2레지스터의 값과 상기 복제 사이의 연산을 병렬로 수행하는 단계;에 의하여 상기 데이터 스트림을 디코딩하는 단계를 더욱 포함하여 이루어지는 것을 특징으로 하는 비디오 카메라의 연산을 위한 방법.
  16. 제15항에 있어서,
    상기 연산의 결과를 허프만 디코딩된 값의 테이블을 인덱싱하는 인덱싱 연산에서 사용하는 단계를 더욱 포함하여 이루어지는 것을 특징으로 하는 방법.
  17. 제15항에 있어서,
    상기 이미지 센서로부터 가져오고 디지털화된 이미지를 얻기 위하여 사용되는, 정상 화소와 결함 화소를 포함하는 가공되지 않은 데이터에서의 결함 화소를 검출하고 정정하는 단계를 더욱 포함하고,
    상기 검출하고 정정하는 단계는,
    (a) 상기 이미지의 각 화소에 대한 가공되지 않은 데이터 시그날을 받아들이는 단계;
    (b) 상기 이미지 센서로부터 받아들인 각 화소에 대한 휘도값을 계산하는 단계;
    (c) 상기 이미지 센서로부터 받아들인 각 화소에 대한 국부적 휘도값을 계산하는 단계;
    (d) 상기 이미지 센서로부터 받아들인 각 화소에 대하여 상기 국부적 휘도값으로부터 상기 휘도값의 국부적 휘도값 편차를 계산하는 단계;
    (e) 편차 문턱값을 설정하는 단계;
    (f) 상기 이미지 센서로부터 받아들인 각 화소에 대하여, 상기 편차문턱값과 국부적 휘도 편차를 비교하고, 상기 편차문턱값보다 더 큰 국부적 휘도 편차를 갖는 화소를 결함화소로 선정하는 단계;
    (g) 통계적 데이터베이스에 상기 결함 화소의 위치를 기록하는 단계;
    (h) 상기 통계적 데이터베이스에 상기 결함 화소의 발생 빈도를 기록하는 단계; 및
    (i) 상기 통계적 데이터베이스로부터의 경향에 의하여 보증된 상기 정정이 보증되면, 상기 결함 화소의 휘도값을 정정하는 단계를 포함하여 이루어지는 것을 특징으로 하는 방법.
KR1020017016889A 1999-06-30 2000-06-29 주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라 KR100631096B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US09/343,934 1999-06-30
US09/345,167 1999-06-30
US09/343,934 US6580828B1 (en) 1999-06-30 1999-06-30 Fast decoding
US09/345,167 US6833862B1 (en) 1999-06-30 1999-06-30 Image sensor based vignetting correction
US09/464,364 1999-12-15
US09/464,364 US7009644B1 (en) 1999-12-15 1999-12-15 Dynamic anomalous pixel detection and correction
US09/602,547 US6704359B1 (en) 1999-04-15 2000-06-21 Efficient encoding algorithms for delivery of server-centric interactive program guide
US09/602,547 2000-06-23

Publications (2)

Publication Number Publication Date
KR20020033647A KR20020033647A (ko) 2002-05-07
KR100631096B1 true KR100631096B1 (ko) 2006-10-02

Family

ID=27625356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017016889A KR100631096B1 (ko) 1999-06-30 2000-06-29 주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라

Country Status (2)

Country Link
KR (1) KR100631096B1 (ko)
TW (1) TW507454B (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5712680A (en) * 1993-12-24 1998-01-27 Canon Kabushiki Kaisha Image pickup device for obtaining both moving and still images
US5867214A (en) * 1996-04-11 1999-02-02 Apple Computer, Inc. Apparatus and method for increasing a digital camera image capture rate by delaying image processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5712680A (en) * 1993-12-24 1998-01-27 Canon Kabushiki Kaisha Image pickup device for obtaining both moving and still images
US5867214A (en) * 1996-04-11 1999-02-02 Apple Computer, Inc. Apparatus and method for increasing a digital camera image capture rate by delaying image processing

Also Published As

Publication number Publication date
TW507454B (en) 2002-10-21
KR20020033647A (ko) 2002-05-07

Similar Documents

Publication Publication Date Title
US6995794B2 (en) Video camera with major functions implemented in host software
WO2001001675A2 (en) Video camera with major functions implemented in host software
US7009644B1 (en) Dynamic anomalous pixel detection and correction
JP5231529B2 (ja) ビデオカメラ
US8428120B2 (en) Method and apparatus of Bayer pattern direct video compression
JP4601623B2 (ja) ノイズ除去装置
US7724307B2 (en) Method and system for noise reduction in digital video
US8098959B2 (en) Method and system for frame rotation within a JPEG compressed pipeline
US6184936B1 (en) Multi-function USB capture chip using bufferless data compression
US10223811B2 (en) Image encoding method, image decoding method, image encoding device and image decoding device
US20070110155A1 (en) Method and apparatus of high efficiency image and video compression and display
US20080247653A1 (en) Method and apparatus for parallelization of image compression encoders
US20100254617A1 (en) Apparatus and method to rotate an image
US9106250B2 (en) Image coding method and decoding method, image coding apparatus and decoding apparatus, camera, and imaging device
US7190486B2 (en) Image processing apparatus and image processing method
JP2016508700A (ja) ビデオカメラ
CN102082911A (zh) 图像拍摄装置和图像拍摄方法
JP5793716B2 (ja) 撮像装置
WO1999046936A1 (en) Method and apparatus for low cost line-based video compression of digital video stream data
WO1995016325A1 (en) Improvements in or relating to video processing systems
JP4196039B2 (ja) 画像データ圧縮方法
US20020063899A1 (en) Imaging device connected to processor-based system using high-bandwidth bus
US8462377B2 (en) Method, apparatus, and system for reduction of line processing memory size used in image processing
KR100631096B1 (ko) 주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라
US6677994B1 (en) Image processing apparatus method of the same and camera apparatus

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee