KR100579216B1 - 디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템 - Google Patents

디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템 Download PDF

Info

Publication number
KR100579216B1
KR100579216B1 KR1020017002396A KR20017002396A KR100579216B1 KR 100579216 B1 KR100579216 B1 KR 100579216B1 KR 1020017002396 A KR1020017002396 A KR 1020017002396A KR 20017002396 A KR20017002396 A KR 20017002396A KR 100579216 B1 KR100579216 B1 KR 100579216B1
Authority
KR
South Korea
Prior art keywords
image data
image
procedure
data
converted
Prior art date
Application number
KR1020017002396A
Other languages
English (en)
Other versions
KR20010072958A (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
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20010072958A publication Critical patent/KR20010072958A/ko
Application granted granted Critical
Publication of KR100579216B1 publication Critical patent/KR100579216B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4092Image resolution transcoding, e.g. by using client-server architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00204Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0008Connection or combination of a still picture apparatus with another apparatus
    • H04N2201/0065Converting image data to a format usable by the connected apparatus or vice versa
    • H04N2201/0068Converting from still picture data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0081Image reader
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0084Digital still camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0087Image storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/3242Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document of processing required or performed, e.g. for reproduction or before recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/3252Image capture parameters, e.g. resolution, illumination conditions, orientation of the image capture device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3278Transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/333Mode signalling or mode changing; Handshaking therefor
    • H04N2201/33307Mode signalling or mode changing; Handshaking therefor of a particular mode
    • H04N2201/33378Type or format of data, e.g. colour or B/W, halftone or binary, computer image file or facsimile data

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Television Signal Processing For Recording (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)

Abstract

이미징 장치의 독립적인 제조시 이미지의 생성/포착 및 처리에 관련된 팩터를 일치시킬 필요가 없도록 만드는 절차으로 상이한 원시 포맷(104a, 104b, 110)의 디지털 이미지를 변환 및 저장하기 위한 기술이 기재되어 있다. 원시 포맷의 이미지 데이터 및 연관된 절차는, 고전적인 객체-지향 기술 안에서, 이미지 객체(108a, 108b, 108c)의 부분으로 연관되고, 호스트 시스템(102)으로 전송된다.
이미징 장치, 디지털 이미징, 원시 포맷, 공통 포맷, 객체

Description

디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템{AN IMAGING DEVICE FOR IMPROVING THE PORTABILITY OF DIGITAL IMAGES, ITS METHOD, ITS MACHINE-RECORDABLE MEDIUM AND A DATA PROCESSING SYSTEM THEREOF}
본 발명은 일반적으로 디지털 이미징에 관한 것으로, 특히 상이한 원시 포맷(native format)인 디지털 이미지를 패키징하고, 이를 공통 포맷(common format)으로 변환하는 기술에 관한 것이다.
디지털 카메라와 같은 디지털 이미징 장치의 효용성의 증가는 PC(personal computer) 산업 및 사진 산업의 수렴에 대한 전례없는 기회를 만들고 있다. 디지털 카메라에 의해 생성된 화상은 이상적으로 PC와 함께 사용하는데 알맞기 때문에, 디지털 카메라와 PC의 연관을 완벽하도록 만든다. 그러나, 이 연관에는 상당한 장애가 존재한다.
디지털 사진 산업에서 현재의 관행은 제조자가 서로 독립적으로 디지털 카메라를 개발한다. 이것은 쉽게 빠뀌기 어려울 것이다. 이러한 각각의 새로운 카메라는 통상적으로, 이미지가 호스트 처리 시스템 상에 보여지도록 하는 수직으로 집적된 소프트웨어 패키지와 연관된다. 이 소프트웨어는 그 카메라와 함께 동작하도록 특별히 설계되며, 상이한 타입의 디지털 카메라 또는 상이한 제조자의 카메라와의 호환성은 지원되지 않는다. 제조자 간에는 디지털 이미지를 카메라 상에 어떻게 저장할지, 이를 저장하기 전에 어떤 처리를 할지, 또는 호스트 시스템(예로, PC)이 어떻게 그것을 제어할지에 대해 동의가 거의 또는 전혀 없다.
장치와 호스트 간의 이미지 전송을 위한 표준에 있어서의 가장 최근의 시도로 트웨인 드라이버(Twain driver)가 있다. 트웨인 드라이버는 이미지 장치로부터디지털 이미지를 검색하기 위한 응용 프로그램에 대한 표준 인터페이스를 제공하는 소프트웨어 모듈이다. 이 모듈은 이미지를 이미징 장치의 원시 포맷으로부터 애플리케이션에 의해 사용되는 공통 포맷으로 변환시킨다. 이러한 공통 포맷의 예는 마이크로 코퍼레이션사에 의해 정의된 RGB(red, green, blue) 비트맵(bitmap) 및 DIB(device independent bitmap)를 포함할 수 있다.
상이한 타입의 디지털 카메라는 대개 디지털 이미지를 저장하는데 상이한 원시 포맷을 사용한다. 장치의 임의의 조합, 원시 포맷 및 호스트 OS(operating system)에 대한 트웨인 모듈 세목이 디지털 카메라 상에 저장된다. 그리고 나서, 트웨인 모듈은 이미지 데이터에 따라 각각 새로운 호스트로 전달될 수 있다. 그러나, 디지털 카메라 안의 한정된 메모리 자원으로 인해, 이러한 모듈을 디지털 카메라 상에 저장하는 것은 실용적이지 않을 수 있다. 또한, 이러한 모듈들은 호스트 OS와 직접 상호 동작하므로, 호스트 시스템으로 전파될 수 있는 카메라 내의 바이러스와 같은 안전성 위험을 초래한다. 마지막으로, 트웨인 모듈은 통상적으로 특정 호스트 프로세서에 대해 특정 코드로 기록되어, 트웨인 솔루션이 실제로 이식가능 하지 않게 한다.
따라서, 호스트 시스템과 통신하기 위해 상이한 원시 포맷으로 디지털 이미지를 저장하는 상이한 타입의 이미징 장치가, 벌키 장치-특정(bulky device-specific) 트웨인 드라이버를 호스트 시스템에 로딩하지 않고도, 호스트 상에 공통 포맷으로 이러한 이미지를 보이거나 처리할 수 있도록 하는 기술이 요구된다.
발명의 요약
본 발명의 일실시예는 센서 데이터를 생성하기 위한 이미지 센서 및 이미지 객체를 저장하기 위한 메모리를 구비한 이미징 장치에 관한 것이다. 이미지 객체는 센서 데이터와 관련된 이미지 데이터 및 이 이미지 데이터에 기반한 변환 이미지 데이터를 획득하기 위해 추상 머신(abstract machine)에 의해 실행되는 이미지 절차를 가진다.
위에서 간단히 요약된 본 발명의 실시예의 특징들 뿐만 아니라 다른 실시예의 특징 및 장점들이 다음의 상세한 설명, 청구범위 및 도면을 통해 명백해질 것이다.
도1은 본 발명의 실시예에 따른 이미징 시스템의 전체 시스템을 도시한 도면.
도2는 본 발명의 다른 실시예에 따른 디지털 이미지의 이식성을 개선하기 위해 수행된 단계를 도시한 순서도.
도3은 본 발명의 다른 실시예에 따라 구성된 소프트웨어 및 하드웨어를 포함한 호스트 처리 시스템을 도시한 도면.
도4는 본 발명의 다른 실시예에 따라 구성된 소프트웨어 및 하드웨어 요소를 포함한 이미징 장치의 일부를 도시한 도면.
위에서 간단히 요약한 바와 같이, 본 발명의 일실시예는 디지털 카메라와 같은 이미징 장치의 제조자에게 디지털 이미지 데이터를 포착 및 저장하기 위해 자신의 원시 포맷을 선택하는 능력을 부여하는 동시에, 호스트 시스템은 이미지를 생성한 특정 이미징 장치의 상세한 지식을 가질 필요가 없도록 한다. 이미지에 대한 데이터는 객체의 일부로 저장된다. 따라서, 각 이미지는, 이미지 파일로서 표현된다기 보다는 객체-지향(object-oriented) 소프트웨어의 고전적인 센싱에서의 이미지 객체의 일부로 패키징된다. 이미지 객체는 이미지 데이터 및 관련된 절차 모두를 포함한다. 이 절차는 원시 포맷에서 공통 이미지 파일 포맷으로의 변환을 지원하는데 필요한 정보이다. 각각의 절차는 그와 관련된 이미지 데이터의 원시 포맷에 대한 변환 세목을 정의한다.
이미지 절차를 해석 및 수행하는 호스트 시스템 내의 소프트웨어는, 하드웨어 및 OS와는 상관없이, 모든 호스트 처리 시스템에 대해 공통이 될 수 있으며, 이 미징 장치와는 별개로 개발 및 분배될 수 있다. 이러한 소프트웨어는 가상 머신(vitual machine)과 같은 객체 실행 환경에서 유효하다. 가상 머신과 수신된 이미지 데이터 사이에 종속성이 없으면, 새로운 상이한 이미징 장치가 공통 포맷 및 애플리케이션 소프트웨어에서의 발전과는 독립적으로 개발될 수 있다. 공통 포맷은 또한 현재 사용 중인 상이한 이미지 파일 포맷을 인식 및 조정하기 위한 애플리케이션 개발자의 필요가 없어진다. 이미지 객체는, 이미지 장치 제조자가 이미징 장치 상에 이미지를 저장하기 위한 가장 좋은 포맷이 무엇인지, 또는 그것을 처리하는데 가장 좋은 절차가 무엇인지를 결정해야 하는 것으로부터 벗어나게 한다. 가상 머신 및/또는 공통 이미지 파일 포맷에서의 변화 또는 개선이 이미징 장치 또는 애플리케이션 소프트웨어에서의 변화보다 훨씬 덜 자주 발생하기 때문에, 이러한 해결책은 특히 이롭다.
도1은 본 발명의 다양한 실시예의 전체 시스템을 나타낸 것으로, 여기서 이미지 객체는, 호스트 시스템(102)으로 전송되기 전에, 상이한 이미징 장치(104a, 104b) 및 저장 장치(110) 안에 형성 또는 저장된다. 각 객체(108a, 108b, 108c)는 이미지 데이터를 포착하는데 사용된 특정 타입의 이미징 장치에 대해 원시 포맷에서의 이미지 데이터인 적어도 하나의 데이터 부분을 포함한다. 예를 들면, 장치(104a)는 장치를 이용하여 획득된 단일 이미지를 나타내는 객체(108a)를 생성하도록 구성된 스캐너일 수 있다. 반면에, 장치(104b)는 2개의 스틸 이미지를 표현한 2개의 데이터 부분(114b1, 114b2)을 가진 단일 객체(108b)를 생성하도록 구성된 디지털 카메라일 수 있다.
객체가 호스트 시스템(102)에 전송되면, 그의 절차들이 추상 머신(120)에 의해서 해석 및 실행되어, 데이터 파일(116a(객체 108a로부터), 116b(객체 108b로부터) 및 116c(객체 108c로부터))을 만든다. 이들 파일은 사전정의된 공통 포맷인 디지털 이미지를 포함할 것이다. 그리고 나서, 데이터 파일은 각 데이터 파일 안의 이미지를 조작 또는 디스플레이하기 위해 애플리케이션(124)에 의해 액세스될 수 있다. 애플리케이션(124)은, JPEG(Joint Photographic Group format), GIF(Graphics Interchange Format), IFF(Interchange File Format) 및 TIFF(Tagged Image File Format)를 포함한, 다양한 다른 파일 포맷 중의 하나로 이미지를 변환하도록 설계될 수 있다. 편의상, 이하의 논의에서는 장치(104a)와 객체(108a) 사이의 상호 동작과, 관련된 데이터 및 절차(114a, 115a)에 대해 언급될 것이다. 그러나, 이 논의는 단지 그러한 실시예에 한정되는 것이 아니라, 도1에 도시된 것들을 포함한 대안의 장치, 객체, 데이터 및 절차에도 적용될 수 있다는 것을 알 수 있다.
도1의 시스템의 일실시예에서 수행된 단계는, 본 발명의 실시예와 장치에서 호스트로 이미지를 전송하는데 트웨인 모듈을 사용하는 종래의 기술과의 차이점을 보다 잘 이해하도록 하기 위해, 도2에 나타나 있다. 본 발명의 일실시예에 따라 이식가능(portable) 이미지 데이터를 생성 및 전송하는 기술은 미처리 센서 데이터(raw sensor data)를 포착하는 도2의 단계(204)에서 시작된다. 이것은 디지털 카메라와 같은 이미징 장치에 관련된 주지된 기술에 따라 수행될 수 있다. 다음 으로, 사전정의된 원시 포맷에서의 이미지 데이터(114a)가 미처리 센서 데이터에 기반하여 형성된다. 일실시예에서, 미처리 센서 데이터는, 단계(208)에 지시된 바와 같이 요구된 원시 포맷에서 데이터를 획득하기 위해, 잡음 제거, 컬러 보간, 이미지 압축 및 스케일링과 같은 종래 및/또는 독점적인 동작에 따라, 이미징 장치(104a)에 의해 처리된다. 대안적으로, 단계(208)는 미처리 센서 데이터에 대해 수행되는 중요한 처리없이 스킵될 수 있다. 이 경우, 미처리 센서 데이터는 원시 포맷으로 있다고 여겨진다. 단계(208)에서의 처리량은 이하에서 논의되는 잠재적인 성능 트레이드오프에 관여된다.
단계(212)에서, 이미징 장치(104a)는 이미지 데이터(114a) 및 관련된 이미지 절차(115a)를 포함하는 객체(108a)를 형성한다. 이미지 절차(115a)는 이미지 데이터를 원시 포맷에서 사전정의된 공통 포맷으로 변환하기 위한 추상 머신(120)에 의해 실행되어질 명령어들의 리스트 또는 프로그램이다. 절차(115a)는 추상 머신(120)의 명령어 집합에 기반한다. 대부분의 경우에, 추상 머신의 명령어 집합은 이미지 처리를 위해 최적화될 수 있고, 메모리 할당과 같은 자원 할당은 그 절차에서 보다는 추상 머신(120)에서 형성될 수 있기 때문에, 이 절차는 종래의 트웨인 모듈보다 상당히 작을 것으로 기대된다.
이미지 객체(108a)가 이미지 장치 안에 형성된 후, 도2의 동작은 이 객체를 호스트 시스템으로 전송하는 것으로 계속된다. 이것은 유선 링크(wire link)와 같은 이미지 데이터의 전송을 위한 주지된 통신 매체나, 또는 비휘발성 메모리 카드와 같은 제거가능 저장 장치(110)를 이용하여 수행될 수 있다.
호스트 시스템에서 통신 매체와 추상 머신(120) 사이의 인터페이스는 객체 드라이버(122)이다. 이 객체 드라이버(122)는 객체(108a)를 추상 머신에서 이용가능하도록 만들기 위해, 호스트 시스템(102) 안의 적절한 하드웨어 및 소프트웨어(OS를 포함한)와 통신한다. 객체 드라이버는 로컬 OS 하에서 추상 머신을 개시하고, 결국은 이것이 상기 절차를 실행하도록 한다. 일실시예에서, 객체 드라이버(122)는 TIFF(Tagged Image File Format)에 따라 구성되는 검색 파일을 위한 주지된 소프트웨어 드라이버를 포함한다. TIFF는 PC 및 매킨토시 컴퓨터 상에 비트맵 이미지(bit-mapped image)를 저장하기 위한 일반적인 포맷이며, 객체(108a)를 구현하는데 사용될 수 있다. 객체(108a) 및 관련 드라이버(122)를 구현하기 위한 다른 기술은 이 기술 분야에서 통상의 지식을 가진 자가 인지하도록 사용될 수 있다.
로더(loader)(미도시)는 절차를 추상 머신으로 로딩하고, 이미지 데이터에 대한 포인터를 전달한다. 로더는 또한 이미지 카운트와 같은 이미지 객체의 어떤 필드를 인식하여, 단계(220)에서와 같이 각 이미지를 처리하기 위해 추상 머신을 반복적으로 초기화한다. 이것은 이미지 데이터(114a)를 공통 포맷으로 변환된 이미지 데이터로의 변환 및 처리를 초래한다. 이 변환된 데이터는 일반적으로 개별 데이터 파일(116a)에 배치되고, 하드 디스크 드라이브와 같은 대용량 저장 장치에 저장될 수 있다. 그리고 나서, 이 데이터 파일(116a)은 애플리케이션(124)에 의해 요구된 최종 포맷으로 다시 처리될 수 있다.
전체 시스템 관점에서 본 발명의 실시예를 기술하였고, 도3 및 도4는 이미징 장치(104a) 및 호스트 시스템(102)으로서 본 발명의 다른 실시예를 설명하고 있다. 도3은 이미지 객체(108a)를 수신 및 처리하도록 구성된 소프트웨어 및 하드웨어를 포함한 호스트 처리 시스템(102)의 실시예이다. 이 특정 실시예는 프로세서(334)가 연결된 버스(332)에 집중된다. 시스템(102)은 인델 프로세서나 마이크로소프트 윈도우 GUI(graphical user interface) 및 OS를 갖는 일반적인 PC일 수 있다. OS 소프트웨어(340), 객체 드라이버(122) 및 추상 머신(120)이 메모리(328) 안에 개별적으로 로딩된 것처럼 도시되었지만, 이 기술분야의 통상의 지식을 가진 자는, 이들 소프트웨어 소자들이 때로는 전체 또는 일부에서 연관되고, 메모리(328), 대용량 저장 장치(338)(예로, 자기 회전 디스크) 및 광 컴팩트 디스크(미도시)와 같은 포터블 메모리 사이에 분배될 수 있다는 것을 알 수 있을 것이다.
프로세서(334)는 메모리(328)(예로, RAM) 및 대용량 저장 장치(338)에 저장된 명령어를 실행시킨다. 메모리(328)는 명령어와 함께 로딩될 수 있는 반도체 집적 회로와 같은 어떠한 머신-기록가능 매체도 될 수 있으며, 여기서, 명령어는 프로세서(334)에 의해 실행되는 경우, 상이한 이미징 장치 및 저장 장치로부터 객체를 수신 및 처리하는 호스트 시스템(102)을 구성하는 단계를 야기시킨다.
호스트 처리 시스템(120)은 또한 RS-232 시리얼, USB(universal serial bus) 및 IEEE 표준 1394-1995 을 포함한, 종래의 컴퓨터 주변 버스 표준 중의 어느 하나로 컴파일하는 통신 인터페이스(316)를 포함한다. 물리적인 유선을 통한 통신에 추가로, 데이터 전송을 위해, 예를 들어, 적외선 또는 고주파(radio frequency)를 이용하는 무선 통신 매체 역시 고려될 수 있다. 통신 매체에 대한 다른 대안으로써, PCMCIA(Peraonal Computer Memory Card International Association), 인텔의 플래시 미니어처 카드(Flash Miniature Card), 및 디지털 이미지 데이터를 전송하는데 알맞은 그 밖의 비휘발성 저장 매체를 포함한, 많은 다른 제거가능 저장 장치가 고려될 수 있다.
도3의 호스트 처리 시스템(102)은 또한, CRT(cathode ray tube), LCD(liquid crystal display), 및 전자 이미지를 보여주는데 알맞은 그 밖의 디스플레이 기술을 포함하는 종래의 어떤 디스플레이 장치와도 인터페이스되는 그래픽 어댑터와 같은 유저 디스플레이 장치 인터페이스(342)를 특징으로 한다. 물론, 호스트 처리 시스템(102)은 또한 추가적인 I/O(예로, 네트워크 인터페이스 제어기)를 수행하기 위한 추가의 인터페이스(미도시)를 특징으로 할 수 있다.
본 발명의 시스템 실시예의 호스트 부분이 논의되었고, 도4는 소프트웨어 및 하드웨어 요소를 포함한 이미징 장치(104a)를 도시하고 있다. 역시, 도4의 실시예는 프로세서(424) 및 메모리(428)가 연결된 버스(432)를 기반으로 한다. 여기서대안으로 프로세서(424) 및 메모리(428)를 대체하는 마이크로콘트롤러가 있다. 메모리는 반도체 집적 회로 RAM 또는 ROM과 같은 비휘발성 반도체 메모리와 같은 머신-기록가능 매체가 될 수 있다. 메모리(428)는, 이미지 객체(108)(도1 참조)의 일부분으로서 이미지 데이터(114a) 및 절차(115a)를 연관시키도록 프로세서(424)에 의해 수행되는 명령어로 로딩된다. 이러한 명령어는 도4에서의 객체 형성 소프트웨어(412)로 종합적으로 나타난다. 이미지 절차(115a)는 일반적으로 이하에 기술된 소프트웨어의 독립적인 부분으로 개발된다.
메모리(428)는 또한 이미지 센서(404)로부터 수신된 미처리 센서 데이터를 원시 포맷의 이미지 데이터(114a)로 처리하는데 사용된다. 이미지 처리 로직 회로(436)는 또한, 미처리 센서 데이터를 처리할 때에 보다 나은 성능을 얻기 위해 이미지 장치(104) 안에 포함될 수 있다. 로직 회로(436)는 이미지 센서(404)의 다이에 집적될 수 있으며, 일실시예에서 이것은 CMOS(complimentary metal oxide semiconductor) 능동 픽셀 센서일 수 있다.
도4에는 도시되지 않았지만, 메모리(428)는 또한 이미징 장치(104a) 외부의 장치와 통신하기 위한 인터페이스(416, 420)를 액세스하기 위해 프로세서(424)에 의해 실행되는 소프트웨어를 저장한다. 통신 매체에 대한 인터페이스(416)는, 호스트 시스템과 관련해서 전술하였던 컴퓨터 주변 버스 표준을 따르는 것일 수 있다. 유사하게, 인터페이스(420)는 비휘발성 저장 및 이미지 객체(108a)의 전송을 위한 플래시 메모리 카드와 같은 제거가능 저장 장치를 연결할 수 있다.
도4의 본 발명의 실시예는 이미지 객체(108a)를 호스트 시스템(102)으로 전송 및 형성하기 위한 버스 아키텍처 및 1차 소프트웨어-기반 프로세서를 사용한다. 이에 대한 대안으로, 이미지 객체(108a)를 형성 및 전송하는데에 앞서 기술된 동일한 기능을 수행하는 ASIC(application specific integrated circuits) 및 게이트 어레이에 기반한 1차 하드웨어-기반 아키텍처를 사용할 수 있다.
추상 머신 및 이미지 객체
이 설명의 남은 부분은 이미지 절차(115a)을 구성하는데 사용될 수 있는 명 령어 집합을 포함한, 이미지 객체(108a) 및 추상 머신(120)을 구현하기 위한 기술을 논의하고 있다.
전술한 바와 같이, 객체(108a)는 TIFF(Tagged Image File Format)/EP(Electronic Photography) 구조 또는 파일로 구현될 수 있다. TIFF 파일은 이미지 데이터(114a) 및 관련된 절차(115a)의 위치를 지시하는 파일 헤더(file header)를 포함한다. TIFF 파일 및 그 파일 헤더는 객체 드라이버(122)에 의해 액세스될 수 있고, 추상 머신(120)에서 이용가능하도록 만들어진다.
이미지 절차(115a)를 개발하기 위한 절차는 사전정의된 원시 및 공통 포맷을 비교하는 이미징 장치(104a)의 개발자에 의해 시작된다. 알고리즘은 이미지 데이터(114a)를 원시 포맷에서 공통 포맷으로 변환하도록 개발된다. 이러한 알고리즘은 이 기술분야의 통상의 지식을 가진 자에 의해 쉽게 개발될 수 있다. 그리고 나서, 알고리즘은 C 와 같은 하이 레벨 프로그래밍 언어 및/또는 이하에 기술되는 추상 머신(120)의 로우 레벨 명령어 집합을 이용하여 프로그램으로 구현된다. 그리고, 이 프로그램은 테스트되고 선택적으로 최적화된다. 그 후, 프로그램은 로우 레벨 명령어를 나타내는 바이트 코드로 컴파일된다. 이것은 요구된 이미지 절차(115a)가 된다. 그리고 나서, 이 절차는 객체 정보 소프트웨어(412)(도4 참조)의 부분으로서 이미징 장치(104a) 상의 비휘발성 메모리(예로, 메모리(428))에 저장된다.
이미징 장치(104a) 안에 존재하는 이미지 객체(108a)에 의해 요구된 저장 오버헤드(storage overhead)는, 저장 영역이 통상적으로 부족한 디지털 카메라와 같 은 이식가능 애플리케이션에서는 중요한 문제가 될 수 있다. 오버헤드는 (1)이미지 데이터(114a)를 원시 포맷에서 공통 포맷으로 변환하는데 필요한 처리의 양 또는 복잡성, 및 (2) 원시 포맷에서의 데이터(114a)의 사이즈에 의존한다. 사전정의된 공통 포맷에 계산상으로 근접한 원시 포맷을 선택함으로써, 이미지 절차(115a)는 간단한 수학적 또는 데이터 이동 명령어의 상대적으로 짧은 리스트가 된다. 이와 비교하여, 이 절차(115a)는 고도로 압축된 원시 포맷(예로, JPEG 또는 프랙탈(fractal) 기술)에서 공통 포맷으로 이미지 데이터를 압축해제하기 위해, 필요에 따라 상대적으로 클 수 있다. 후자의 경우에, 이미지 데이터를 압축함으로써 얻어진 저장 공간에서의 증가는 이미지 데이터를 압축해제하는데 필요한 보다 복잡하고 긴 절차에 의해 완화된다.
저장 공간을 위한 문제를 해결하기 위해, 각 절차가 형성된 것에 기반한 추상 머신의 명령어 집합은 고도로 최적화될 수 있다. 예를 들어, 추상 머신(120)에 의해 사용될 수 있는 입력 버퍼(이미지 데이터(114a)를 수신하기 위한) 및 출력 버퍼(공통 포맷으로 변환된 데이터를 저장하기 위한)의 위치를 암시할 수 있다. 어드레스 산출 및 데이터 이동의 대부분은 이미지 절차(115a) 안의 특정 명령어에 의한 것이라기 보다는 추상 머신(120)에 의해 암시적으로 수행될 수 있다. 이에 따라, 이 절차는 이에 연관된 이미지 데이터(114a)를 공통 포맷으로 변환하는데 필요한 알고리즘 상에 집중될 필요가 있다.
이미지 절차(115a)을 컴팩트하게 유지하기 위해 설정된 명령어를 최적화하는 것에 추가로, 이미징 장치 상의 저장 영역을 절약하기 위한 다른 방법은, 도1의 객 체(108b)에 도시된 바와 같이, 절차(115a)의 단일 카피와 이미지 데이터의 다수의 집합을 연관시키는 것이다. 이 절차에서, 단일 이미지 객체(108b)는, 절차(115b)을 실행하는 종래 필름 롤이 필름을 현상하는 것과 대략 동등하게 되는 것과 효과가 있는, 이미지 데이터(114b1, 114b2) 안의 다수의 이미지를 포함한다.
저장 공간에 덧붙여, 이미징 장치 제조자에 대한 다른 문제는 이미지 처리 절차에서의 지적 재산권을 보호하는 것일 수 있다. 이러한 처리는 최종 이미지 품질을 향상시키기 위해 미처리 센서 데이터 상에서 수행될 수 있으며, 예로, 컬러 필터 어레이 패턴 보간, 감마 보정, 화이트 밸런스 알고리즘이 있다. 이 절차(115a)을 이들 이미지 처리 알고리즘으로 채우기 보다는, 객체(108a)가 호스트 시스템(102)으로 전송될 때 잠재적인 경쟁자에 대해 알고리즘을 노출시킴으로써, 이미징 장치(104a)의 제조자는 이미징 장치 내부에 수행된 중요한 이미지 처리 기능을 가지기를 원할 것이다. 이것은 미처리 센서 데이터의 강하게 처리된 버전인 이미지 데이터(114a)를 초래한다. 하나의 극단적인 경우로, 그들의 이미지 처리 기술을 굳게 보호받길 원하는 제조자들은 이미징 장치 안에 이러한 처리를 모두 장착하여, 그들의 이미지 데이터(114a)를 공통 포맷이 되도록 한다. 이 경우, 해당 절차(115a)는 호스트 시스템(102)에서의 출력 버퍼에 대한 데이터(114a)를 카피하는 것 외에는 아무것도 아니다. 다른 극단적인 경우에, 이미징 장치(104a) 내부의 이미지 처리는, 이미지 데이터(114a)를 객체(108a)로 패키징하기 전에, 미처리 센서 데이터 상의 어떠한 처리를 수행하지 않고 간단하게 완전히 최소로 유지될 수 있 다. 절차(115a)는 공통 포맷에 도달하는데 필요한 모든 처리를 정의할 수 있고, 호스트 시스템 안의 추상 머신(120)은 이미지 데이터를 공통 포맷으로 달성하기 위한 이러한 처리를 모두 수행한다.
가상 머신 아키텍처(Virtual Machine Architecture)
추상 머신(120)의 일례는 가상 머신(virtual machine)이다. 가상 머신은 이미지 절차(115a)을 실행하는 개별 컴퓨터인 것처럼 행동하는 독립형(self-contained) 운영 환경이다. 가상 머신은 수신된 객체(108a) 안에 존재할 수 있는 바이러스로부터 호스트 시스템을 보호한다. 가상 머신은 명령어 집합, 레지스터 집합 및 호스트 처리 시스템(102)의 하드웨어 플랫폼에 독립된 메모리 모델일 수 있다. 주지된 판독기(interpreter), 프로스래밍 언어 및 관련 툴을 갖는 이용가능한 가상 머신의 일례로는 JAVATM 가상 머신 및 프로그래밍 언어가 있다.
일반적으로, 가상 머신은 이미지 절차(115a)를 위해 기록되도록 비교적 작은 코드가 되도록 최적화되어야 한다. 그 밖의 바람직한 특징들은, 예를 들어, 그 절차(115a)을 해석하기 위한 최적시 코드 변환(just-in-time code translation)의 주지된 기술을 이용한, 간단한 가상 머신 인터페이스 및 빠른 코드 편집이다. 가상 머신은 절차(115a)을 실행하는 동안에 일시적인 데이터 저장을 위해 버퍼를 생성하도록 동적 메모리 할당을 허가하여야 한다. 이에 따라, 메모리 관리를 위한 절차(115a)에서 요구되는 오버헤드는 최소가 될 수 있다. 또한, 호스트 시스템(102)이 이미지 객체(108a)로 어떠한 적법한 요청을 부여할 수 있도록 하기 위해, 이미지 객체(108a)에 의해 요구된 것들에 관련된 이용가능한 충분한 리소스(예로, 메모리)를 가져야 한다.
가상 머신의 명령어 집합에 대해 보상이 주어져야 한다. 이미징 기술에 관한 도1의 실시예에 있어서, 명령어 집합은 이미지 처리를 위해 최적화되어야 한다. 예를 들어, 캐릭터 스트링(character strings), 멀티-태스크 실행(multi-task execution) 또는 그래픽 유저 인터페이스를 조정하는 명령어에 대한 필요가 없어질 수 있다. 명령어 집합은 이미지 데이터(114a)에 대한 몇몇 상이한 원시 포맷을 공통 포맷으로 변환 가능하도록 충분한 유연성을 갖도록 설계되어야 한다. 가상 머신에 제공된 기능 및 그 명령어 집합은 이미지 데이터(114a)를 저장하기 위해 사용될 수 있는 원시 포맷의 어떠한 인식도 가정하지 않아야 한다.
명령어 집합에 대한 다른 고려는 비교적 깊은 스택(stack)을 갖는 스택-지향 흐름 제어(stack-oriented flow control)(call/return/push/pop_의 지원이다. 예를 들면, 가상 머신을 구현한 호스트 시스템(102)은 객체(108a)에 의해 적법한 스택 사용을 조정할 수 있는 확장가능 가상 스택을 위한 충분한 리소스를 제공할 수 있다. 또한, 병렬 처리는 이미지 처리 알고리즘에서 중요한 성능 강화일 수 있기 때문에, 가상 머신은 호스트 시스템(102) 상에서 이용가능 하다면 병렬 처리 지원을 이용할 수 있는 프로그래밍 제약조건을 제공하여야 한다. 마지막으로, 가상 머신은 또한 모든 잠제적인 예외에 대해 정의된 기본 동작으로 조정하는 유연성 예외를 제공할 수 있다. 하이 레벨 흐름 제어(if/for/while/case)에 대한 지원은 또한 가능 한 한 프로그램을 간단하게 하고, 객체(108a)에서의 흐름 제어 오버헤드를 최소화하도록 요구된다. 유연성 타입 확인은 또한 하나의 타입의 변수를 다른 타입으로 만들 때 필요할 수 있는 다른 특징이다.
예시적인 가상 머신 - 가상 이미지 프로세서
일실시예에서의 가상 머신은 이하에서 기술되는 VIP(virtual image processor) 일 수 있다. 그 실시예에서, 유저의 중재가 기대되지 않음에 따라, VIP에 대한 전형적인 I/O 지원은 고려되지 않는다. VIP는 원시 포맷인 입력으로 이미지 데이터(114a)를 처리하고, 공통 포맷의 출력으로 이미지 데이터를 생성하기 위해 단독으로 존재한다. 이러한 임무를 위해 요구되는 메모리 자원은 일반적으로 호스트 시스템(102)에 의해 제공되어, 이미지 오브젝터(108a)의 프로그래머는 메모리 자원이 어떻게 제공되는지를 정확하게 인지할 필요가 없게 된다.
이하의 기술로부터 명백해지는 바와 같이, VIP의 명령어 집합은 종래의 하드웨어 마이크로프로세서의 그것과 거의 유사하게 생성한다. 이것은 절차(115a)의 코드 사이즈를 감소시키기 위한 요구와 이미지 데이터(114a)의 대부분의 수학적 처리 상의 강조로 인한 부분이다. VIP의 명령어 집합은 최소 가능 공간에 특정된 이미지 처리에 필요한 동작을 허가한다. 비교적 큰 양의 관련된 복잡성이 명령어 집합보다는 VIP 안에 형셩되기 때문에, 예를 들어, 흐름 제어 명령어는 종래의 마이크로프로세서에서의 그것 보다는 매우 간소화될 수 있다. 이에 따라, 단일 명령어는 종래 하드웨어 마이크로프로세서에서 구현하기에 너무 복잡한 이벤트를 트리거하게 된 다. 또한, VIP에 대한 명령어는 다양한 수의 피연산 함수(operands)를 가지며, 하드웨어 마이크로프로세서 안에 있는 것보다 훨씬 많이 암시할 수 있다. 수학적 표현이, 물리적 레지스터의 한정된 집합을 사용하도록 설계된 이산 수학 연산으로 데이터 이동 명령어의 시퀀스로 되도록 할 필요는 없다. 대신에, 표현들이 이미지 절차(115a)에서 직접 표현되고, VIP에 의해 변환된다. 대입 표현(assignment expressions)이 RPN(Reverse Polish Notation)에서의 표현으로 뒤따르는 타깃 레지스터로 표현될 수 있다. 이에 따라, 연산자는 머신 명령어라기 보다는 표현의 요소로서 이미지 절차(115a)으로 직접 인코딩될 수 있다. 타입 캐스팅 및 자동 변환을 지배하는 법칙은 어떤 표현 안에도 포함될 수 있다.
이 실시예에서 고려된 7개의 프로그램 제어 명령어 및 5개의 데이터 조작 명령어가 있다.
명령어 설명
goto 프로그램 제어 전송
ifgoto 프로그램 제어 조건적으로 전송
select 선택된 프로그램 제어 전송
call 프로그램 제어를 서브 프로그램으로 전송
return 서브 프로그램으로부터 프로그램 제어 리턴
exit VIP 프로그램의 실행을 정상적으로 종료
about VIP 프로그램의 실행을 비정상적으로 종료
push 원시 데이터 변수를 데이터 스택에 푸시
pop 데이터 스택으로부터 원시 데이터 변수를 팝
move 데이터 이동 및 식을 선택적으로 평가
create 프로그램 사용을 위한 신규 데이터 요소 생성
destroy 생성된 데이터 요소 해제

프로그램 제어 명령어는 프로그램 실행의 흐름을 지시하는데 사용된다. 종래의 마이크로프로세서에서와는 달리, 많은 수의 조건부적인 분기 명령어가 없다. 또 한, 선택된 점프(C 프로그래밍 언어에서 스위치(switch) 문장에 대응하는)에 대한 직접적인 지원이 있다. 타깃 어드레스 사이즈는 절차(115a)의 전체 사이즈에 따라 변하게 된다.
데이터 이동 명령어는 이미지를 변환 및 처리하는 임무를 실제로 수행하는 것들이다. 일실시예에서, 이들 동작들이 각 명령어에 연관된 오퍼랜드 리스트(operand list)에 들어있기 때문에, 수학 또는 논리 동작을 직접적으로 구현하는 명령어는 없다. 또한, 종래의 마이크로프로세서와는 달리, 명령어를 위한 오퍼랜드 리스트는 가변수의 오퍼랜드를 가질 수 있다.
푸시(push) 명령어는 데이터 스택에 하나의 데이터 변수를 올려 놓는다(push). 데이터 스택은 프로그램 흐름 제어 스택과는 구별된다는 것을 주목해야 한다. 푸시 명령어는 개별적인 원시 데이터 타입을 데이터 스택 위에 푸시하는데에만 사용될 수 있다. 즉, 이것은 전체 어레이를 스택에 푸시하는데 사용될 수 없을 것이다. 푸시 명령어의 포맷은 스택에 푸시될 데이터를 나타내는 데이터 변수의 인덱스가 뒤따르는 동작 코드이다. 데이터 변수의 타입 및 사이즈는 오퍼랜드 안에 인코딩된다.
팝(pop) 명령어는 데이터 스택에서 하나의 데이터 변수를 불러온다(pop). 연관된 데이터 변수는 이전에 스택에 푸시된 데이터와 동일한 타입일 필요는 없다. 만일, 변수 타입이 스택의 위(top)에 존재하는 데이터 타입과 매치되지 않는다면, 자동 타입 캐스트는, 절차(115a)을 정의하는데 사용된 보다 높은 레벨의 프로그래밍 언어에 대한 타입 캐스트를 지배하는 동일한 법칙에 따라 수행될 것이다.
이동(move) 명령어는 데이터를 소스(source)로부터 목적지(destination)로 전송하고, 선택적으로 소스에 인코딩된 식을 평가한다. 즉, 소스는 단일 변수일 필요는 없으며, RPN(Reverse Polish Notation)을 이용하여 인코딩된 임의적인 복잡한 식일 수 있다.
생성(create) 명령어는 신규 데이터 변수를 능동적으로 생성하고, 그 변수에 대한 참조를 할당한다. 생성된 변수는 단일 원시 데이터 타입이거나, 또는 원시 데이터 변수의 어레이일 수 있다. 파기(destroy) 명령어는 생성 명령어에 의해 데이터 변수에 할당된 메모리를 해제한다. 절차(115a)을 정의하는데 사용된 보다 높은 레벨이 프로그래밍 언어를 위한 컴파일러는 절차(115a)의 서브 프로그램에서 사용된 자동 변수에 대한 동적 메모리를 관리하기 위해 생성 및 파기 명령어를 사용할 수 있다. 이것은 자동 변수를 생성하는데 스택을 이용하는 C 프로그래밍 언어에서의 정상적인 실행과는 구별된다. VIP는 물리적인 마이크로프로세서로 구현하기 위한 것이 아니기 때문에, 하드웨어 스택은 필요하지 않다.
VIP 하이-레벨 언어
VIP에 대한 명령어 집합이 이미지 프로세서의 가상 구현을 위해 최적화되기 때문에, VIP에 대한 어셈블리와 같은 로우 레벨 프로그래밍 언어는 마이크로프로세서에 대한 종래의 어셈블리의 그것과는 거의 유사하지 않다. 전술된 이미징에 적절한 최적화에서의 고유의 제한으로 인해, 이것은 또한 절차(115a)을 정의하는데 사용하기 위한 C 또는 C++ 과 같은 하이 레벨 언어의 풀 버전을 구현하는 것은 불가 능하다. 이에 따라, 적절한 타협안은 C 언어의 서브셋트일 수 있다. 이러한 C의 서브셋트를 이용한 VIP를 위해 기록된 프로그램은 링크 단계를 가지지 않는다. 차라리, 그것은 단일 파일, 또는 일련의 인클루드 파일(include file)(결국은 단일 파일)로 컴파일 될 것이다.
선언(Declarations)
허가된 데이터 타입은 이미 논의된 명령어 셋트로 사용된 것들이다. 포인터는 정의된 타입(즉, 무효 포인터가 아닌)이 된다. 포인터 대 포인터(pointer to pointer)는 허가되기는 하지만 단지 이중 간접참조(double indirection)일 뿐이다. 다차원적 어레이는 종래의 C에서와 동일하게 선언된다. typedef 및 struct 선언자는 예상대로 동작한다. struct 와 같은 복잡한 데이터 타입이 어레이에서의 요소로 사용될 수 있다. 비트 필드와 같은 일부 종래 기능은 VIP 실시예에 대해서는 무의미하고, 이에 따라 간단한 비트 필드 형태로 허가되지 않는다.
타입 수식명(Type Qualifiers)
const 타입 수식명이 VIP에 허가되지만, 일시적인 수식명은, VIP 프로그램(예로, 절차(115a))의 범위 밖의 어떠한 프로세스에서 볼 수 없는 변수로 의미가 없다. struct 와 같은 복잡한 데이터 타입을 제어하는 기술은 절차(115a)에 제공되지는 않지만, 컴파일된 VIP 코드에서의 구조 정의로부터 추론된다. 이것은 VIP와 종래 마이크로프로세서 간의 중요한 차이점이다. 예를 들면:
struct
{
double real_part;
double imaginary_part;
}complex[10];
short index=1;
complex[index].real_part=0.0;
종래의 컴파일러에 있어서, 상기의 코드 세그먼트에 도시된 대입 문장은, 그것의 기본 어드레스로부터 구성 부분의 주지된 변위에 기반한 구조 필드의 어드레스를 산출하기 위해 일련의 명령어로 분리된다. 그러나, VIP에서는, 모든 데이터 항목이 고유의 ID 번호로 할당됨에 따라, 선형 어드레스 공간의 직접적인 추론은 없다. 데이터 항목은 메모리에 근접해 있을 수도 또는 그렇지 않을 수도 있다. VIP는 복잡한 데이터 타입 레퍼런스를, 요구된 변수를 특별히 구별하는 단일 ID 번호로 분해한다. VIP는 ID 번호와 어레이 인덱스 간을 구별할 수 있으며, 따라서 모호성(ambiguity)이 없게 된다. 앞의 예는, 각 구조가 2개의 데이터 항목을 포함하는, 구조의 어레이이다. 컴파일 후에, 이것은 다음과 같이 표현될 수 있다:
double real_part[10];
double imaginary_part[10];
이것은 등가의 대입문을 초래한다:
real_part[index]=0.0;
이 절차에서 컴파일러는 구조 정의 및 레퍼런스를 VIP에 의해 사용된 저장 구조와 호환가능한 원시 타입으로 분리한다.
저장 클래스(Storage Class)
전술한 바와 같이, 복잡한 데이터 타입의 구조는 실행가능 코드보다는 데이터로 전송되고, 데이터 액세스는 어드레스 산출보다는 레퍼런스로 분해된다. VIP 실시예에서 이에 대한 2가지 예외가 존재하는데 그것은 이미지 데이터(114a)를 수신하기 위한 입력 데이터 버퍼와, 변환된 이미지 데이터를 유지하기 위한 출력 데이터 버퍼이다. 이들은 인접한 바이트 어레이이고, 이것의 사이즈는 소스 파일이 절차(115a)으로 컴파일될 때 정의된다. 이것은 표준 C에 포함되지 않은 저장 클래스에 의해 다른 저장 타입과 구별된다.
하나의 입력 버퍼와 하나의 출력 버퍼가 존재한다. 입력 저장 클래스로 선언된 모든 변수는 입력 버퍼로 보내진다. 출력 저장 클래스로 선언된 모든 변수는 출력 버퍼로 보내진다. 이들 저장 클래스 중 하나로 정의된 모든 타입은, 그것의 시작에 대해, 해당 메모리 어레이에 매핑된다. 절차(115a)이 VIP의 제어에 주어지기 전에, 2개의 특별 변수, input_size 및 output_size가 로더에 의해 설정된다. 이들 은 해당 버퍼의 바이트에서의 길이를 정의하고, 절차(115a)에서 그들을 먼저 정의하지 않고 사용될 수 있다(그것은 정의에 의해 유효하다). 이에 대하여, 표준 C에서 정의된 argc 및 argv 변수와 유사하며, 이것은 VIP에 대해 유효하지 않다(그것은 아무 목적도 제공하지 않는다). 이 저장 클래스 및 특별 변수를 이용하는 프로그래머는 모든 데이터 타입을 입력 또는 출력 버퍼에 매핑할 수 있다. 예를 들면:
input unsigned integer raw_data[input_size/4];
//이미지 데이터(114a)로부터 전체 미처리 이미지를 나타내는 정수 어레이를 선언;
input float raw_fdata[input_size/4];
//이미지 데이터(114a)로부터 전체 미처리 이미지를 나타내는 플로트(float) 어레이를 선언함.
변수 raw_data[n] 및 raw_fdata[n]은 동일한 데이터로 언급되지만, 상이한 타입으로 해석된다.
단일 절차(115a)은, 로더가 입력 및 출력 버퍼와 각 이미지에 대한 사이즈 변수를 초기화함으로써, 상이한 사이즈의 다수의 이미지를 처리할 수 있다. 이미징 장치(104a)가 공통 포맷으로 이미지를 생성했기 때문에, 가장 간단한 이미지 절차는 입력 버퍼를 직접 출력 버퍼에 카피하는 것일 수 있다. 예를 들면:
main()
{
input byte raw[input_size];
output byte finished[output_size];
finished=raw;
}
C++ 클래스 대입 구문에 대한 대입 문장의 유사성을 주목해야 한다. 이것은 암시 병렬 처리를 허가하는 표준 C 구문과의 차이이다.
어레이(Arrays)
대입 문장 또는 식에서 명시적인 인덱스 없이 사용되는 어레이 타입은 전체 어레이에 적용되는 동작이라는 것과 어레이의 요소들 사이에 데이터 종속성이 없다는 것을 포함한다. 다음의 코드 프레그먼트(code fragment)를 고려하자:
short x[256];
short y[256];
x=y*1.414;
이것은 y 어레이의 모든 요소를 상수 1.414.로 곱하고, 그 결과는 x 어레이 안의 대응 요소에 할당한다. 만일, 어레이 사이즈가 매치되지 않으면, 동작은 보다 작은 어레이에서의 요소의 수에 대해 반복될 것이다. 이에 암시된 것은 그 동작 및 할당이 가능하다면 병렬로 수행될 수 있다는 것이다. 이 문장에 의해 암시된 특정 인덱싱 순서는 없다. 등가적인 표현은 다음과 같다:
x[]=y[]*1.414;
이것은 요구에 따라 다차원적인 어레이가 단일 차원에 대해 병렬로 처리되도록 한다. 예를 들면:
const short column=640;
const short row=480;
unsigned byte image[column][row];
image[][12]=255;
이 코드 프래그먼트는 값(255)을 이미지 어레이의 로우(12) 안의 모든 요소에 할당한다. 종래 마이크로프로세서에 대한 하이 레벨 코드의 이 타입을 컴파일할 때, 컴파일러는 문장안에 암시된 루프 동작을 명시적으로 수행하는 머신 명령어의 시퀀스를 생성하게 된다. 그러나, VIP 컴파일러는 암시적 루프 동작 및 필요한 관련 파라미터를 간단히 기록하고, VIP 자신은 필요한 인덱스 반복을 추론한다. 이것은 성능을 희생시켜 절차(115) 안에 저장된 코드의 사이즈를 감소시킨다. 만일, VIP가 설치되는 호스트 시스템(102)의 성능이 허용가능한 비율로 요구된 기능을 실행하는데 충분하다면, 이러한 트레이드오프는 허용가능할 수 있다.
요약하면, 본 발명의 다양한 실시예들은 이미지 객체의 개념을 이용하여 스틸 이미지 데이터의 이식성을 개선시키기 위한 기술로서 설명되었다. 그러나, 기술된 이미지 객체 및 추상 머신 기술은, 어떤 타입의 오디오 또는 비디오와 같이, 연관되고 결부된 다른 타입의 데이터에 적용될 수 있음이 예상된다. 이러한 예에서, 이미지 절차는 오디오/비디오 시퀀스의 압축/압축해제에 통상적으로 사용되는 오디오/비디오 코덱(codec)으로 대체될 수 있다.
물론, 전술된 본 발명의 실시예는 구조 및 구현 상에 다른 변경이 가능하다. 예를 들어, 도1은 각 이미징 또는 저장 장치에서의 단일 객체를 도시하고 있지만, 이것은 단지 본 발명이 주어진 실시예에서 어떻게 작용하는지를 쉽게 설명하기 위한 것이다. 사실상, 이 기술 분야에 통상의 지식을 가진 자는, 다수의 객체가 각 장치에 의해 생성될 수 있고, 각 장치에 의해 생성된 다수의 이미지를 표현하도록 요구됨에 따라 호스트 시스템으로 전송될 수 있다는 것을 이해할 것이다. 또한, 도3 및 도4의 컴퓨팅 아키텍처에 대한 많은 다른 대안들이 가능한데, 이것은 이미지 포착 및 이미지 객체 형성을 달성한다. 이에 따라, 본 발명의 범위는 도시된 실 시예에 의해서가 아니라 첨부된 청구항 및 그의 합법적인 등가물에 의해 결정되어야 한다.

Claims (22)

  1. 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    이미지 객체의 일부분으로서, 제1 이미지 데이터 및 상기 제1 이미지에 기반하여 제1 변환 이미지 데이터를 획득하기 위해 가상 머신(virtual machine)에 의해 실행되기 위한 제1 절차를 연관시키도록 하고,
    상기 객체의 일부분으로서, 제2 이미지 데이터 및 상기 제2 이미지 데이터에 기반하여 제2 변환 이미지 데이터를 획득하기 위해 상기 가상 머신에 의해 실행되기 위한 상기 제1 절차를 연관시키도록 하는 명령어
    를 포함하는 머신-기록가능 매체.
  2. 삭제
  3. 제1항에 있어서,
    상기 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    제2 객체의 일부분으로서, 제2 이미지 데이터 및 상기 제2 이미지 데이터에 기반하여 제2 변환 이미지 데이터를 획득하기 위해 상기 가상 머신에 의해 실행되기 위한 제2 절차를 연관시키도록 하는 명령어
    를 더 포함하는 머신-기록가능 매체.
  4. 제1항에 있어서,
    상기 제1 변환 데이터는 상기 제1 데이터와 동일한 포맷인
    머신-기록가능 매체.
  5. 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    제1 이미징 장치 및 제2 이미징 장치로부터 각각 제1 객체 및 제2 객체를 수신하도록 데이터 처리 시스템을 구성하도록 하고 - 여기서, 상기 객체는 제1 이미지 데이터, 제2 이미지 데이터 및 그에 대응하는 절차들을 가짐 - ,
    상기 제1 이미지 데이터 및 상기 제2 이미지 데이터에 기반하여 각각 제1 변환 이미지 데이터 및 제2 변환 이미지 데이터를 획득하기 위해 가상 머신에 의해 각 객체의 상기 대응하는 절차를 실행하도록 하는 명령어
    를 포함하는 머신-기록가능 매체.
  6. 제5항에 있어서,
    상기 제1 변환 이미지 데이터 및 상기 제2 변환 이미지 데이터는 동일한 이미지 파일 포맷인
    머신-기록가능 매체.
  7. 제1 절차와 연관된 제1 이미지 데이터를 갖는 이미지 객체를 처리 시스템으로 전송하는 단계;
    상기 제1 이미지 데이터에 기반하여 제1 변환 이미지 데이터를 생성하기 위해 상기 처리 시스템 내의 가상 머신이 상기 제1 절차를 실행하는 단계;
    제2 절차와 연관된 제2 이미지 데이터를 갖는 제2 객체를 상기 처리 시스템으로 전송하는 단계 - 여기서, 상기 제1 이미지 데이터 및 상기 제2 이미지 데이터는 상이한 포맷임 - ; 및
    상기 제2 이미지 데이터에 기반하여 제2 변환 이미지 데이터를 생성하기 위해 상기 가상 머신이 상기 제2 절차를 실행하는 단계 - 여기서, 상기 제1 변환 이미지 데이터 및 상기 제2 변환 이미지 데이터는 동일한 포맷임 -
    를 포함하는 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 제1 절차와 연관된 제2 이미지 데이터를 상기 처리 시스템으로 전송하는 단계; 및
    상기 제2 이미지 데이터에 기반하여 제2 변환 이미지 데이터를 생성하기 위해 상기 가상 머신이 상기 제1 절차를 실행하는 단계 - 여기서, 상기 제1 변환 이미지 데이터 및 상기 제2 변환 이미지 데이터는 동일한 포맷임 -
    를 더 포함하는 방법.
  10. 센서 데이터를 생성하기 위한 이미지 센서;
    상기 센서 데이터와 관련된 제1 이미지 데이터 및 상기 제1 이미지 데이터에 기반하여 변환된 제1 이미지 데이터를 획득하기 위해 가상 머신에 의해 실행되기 위한 제1 이미지 절차를 갖는 이미지 객체를 저장하기 위한 제1 메모리;
    프로세서;
    상기 프로세서에 의해 실행되는 경우, 상기 센서 데이터를 상기 제1 이미지 데이터로 처리하도록 하는 명령어를 갖는 제2 메모리; 및
    상기 이미징 장치와 분리된 처리 시스템으로 상기 제1 이미지 데이터 및 상기 제1 절차를 전송하기 위한 통신 매체에 대한 인터페이스 - 여기서, 상기 처리 시스템은 상기 가상 머신과 함께 구성됨 -
    를 포함하는 이미징 장치.
  11. 제10항에 있어서,
    상기 제1 이미지 데이터는 상기 센서 데이터인
    이미징 장치.
  12. 삭제
  13. 제11항에 있어서,
    상기 처리는 상기 센서 데이터에 대해 이미지 처리 방법론(image processing methodology)을 수행하는 것을 포함하는
    이미징 장치.
  14. 제10항에 있어서,
    상기 센서 데이터를 상기 제1 이미지 데이터로 처리하기 위한 로직 회로
    를 더 포함하는 이미징 장치.
  15. 제14항에 있어서,
    상기 로직 회로는 상기 센서 데이터에 대해 컬러 보간 알고리즘(color interpolation algorithm)을 수행하는
    이미징 장치.
  16. 삭제
  17. 제10항에 있어서,
    상기 이미지 객체는 TIFF 파일을 포함하고, 상기 TIFF 파일은 상기 제1 이미지 데이터 및 상기 제1 이미지 절차를 포함하는
    이미징 장치.
  18. 제10항에 있어서,
    상기 변환된 제1 이미지 데이터는 DIB(Device Independent Bitmap) 포맷으로 된 이미지 파일의 일부분인
    이미징 장치.
  19. 제10항에 있어서,
    상기 제1 이미지 데이터 및 상기 변환된 제1 이미지 데이터는 동일한 이미지 파일 포맷을 갖는
    이미징 장치.
  20. 프로세서; 및
    상기 프로세서에 결합되어, 상기 프로세서에 의해 실행되는 경우,
    제1 이미징 장치 및 제2 이미징 장치로부터 각각 제1 객체 및 제2 객체를 수신하도록 시스템을 구성하는 단계 - 여기서, 각 객체는 이미지 데이터 및 그에 대응하는 절차를 가짐 - ; 및
    상기 이미지 데이터에 기반하여 대응하는 변환된 데이터를 획득하기 위해 가상 머신이 각 객체의 상기 대응하는 절차를 실행하는 단계를 야기시키는 명령어를 갖는 메모리
    를 포함하는 데이터 처리 시스템.
  21. 제20항에 있어서,
    상기 변환된 데이터는 동일한 이미지 파일 포맷을 갖는 제1 이미지 파일 및 제2 이미지 파일의 일부분인
    데이터 처리 시스템.
  22. 제1 절차와 연관된 제1 이미지 데이터를 갖는 이미지 객체를 처리 시스템으로 전송하는 단계;
    상기 제1 이미지 데이터에 기반하여 제1 변환 이미지 데이터를 생성하기 위해 상기 처리 시스템 내의 가상 머신이 상기 제1 절차를 실행하는 단계;
    상기 제1 절차와 연관된 제2 이미지 데이터를 상기 처리 시스템으로 전송하는 단계; 및
    상기 제2 이미지 데이터에 기반하여 제2 변환 이미지 데이터를 생성하기 위해 상기 가상 머신이 상기 제1 절차를 실행하는 단계 - 여기서, 상기 제1 변환 이미지 데이터 및 상기 제2 변환 이미지 데이터는 동일한 포맷임 -
    를 포함하는 방법.
KR1020017002396A 1998-08-27 1999-08-17 디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템 KR100579216B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/141,210 US7010177B1 (en) 1998-08-27 1998-08-27 Portability of digital images
US09/141,210 1998-08-27

Publications (2)

Publication Number Publication Date
KR20010072958A KR20010072958A (ko) 2001-07-31
KR100579216B1 true KR100579216B1 (ko) 2006-05-11

Family

ID=22494675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017002396A KR100579216B1 (ko) 1998-08-27 1999-08-17 디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템

Country Status (9)

Country Link
US (1) US7010177B1 (ko)
JP (1) JP4377066B2 (ko)
KR (1) KR100579216B1 (ko)
CN (2) CN101714249A (ko)
AU (1) AU5567999A (ko)
DE (1) DE19983504B4 (ko)
GB (1) GB2357926B (ko)
TW (1) TW442759B (ko)
WO (1) WO2000013132A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963347B1 (en) * 2000-08-04 2005-11-08 Ati International, Srl Vertex data processing with multiple threads of execution
GB2382509B (en) * 2001-11-23 2003-10-08 Voxar Ltd Handling of image data created by manipulation of image data sets
JP4300767B2 (ja) 2002-08-05 2009-07-22 ソニー株式会社 ガイドシステム、コンテンツサーバ、携帯装置、情報処理方法、情報処理プログラム、及び記憶媒体
JP2006053690A (ja) * 2004-08-10 2006-02-23 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理プログラムおよび記録媒体
US20060259239A1 (en) * 2005-04-27 2006-11-16 Guy Nouri System and method for providing multimedia tours
CN102281372B (zh) * 2010-06-12 2014-02-19 虹光精密工业(苏州)有限公司 自动存取影像处理程序的扫描设备
WO2015047398A1 (en) * 2013-09-30 2015-04-02 Hewlett-Packard Development Company, L.P. Overlays to modify data objects of source data
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537157A (en) * 1993-04-21 1996-07-16 Kinya Washino Multi-format audio/video production system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495581A (en) * 1992-02-25 1996-02-27 Tsai; Irving Method and apparatus for linking a document with associated reference information using pattern matching
EP0691011B1 (en) * 1993-03-25 2002-09-04 MGI Software Corporation Method and system for image processing
EP1132809B1 (en) * 1993-11-16 2004-01-07 Fuji Xerox Co., Ltd. Network printer apparatus
JP3893480B2 (ja) * 1994-09-28 2007-03-14 株式会社リコー デジタル電子カメラ
JPH08297669A (ja) * 1994-12-27 1996-11-12 Internatl Business Mach Corp <Ibm> 複合ドキュメント内の複数のパートを自動的にリンクするシステムおよび方法
US5873077A (en) * 1995-01-13 1999-02-16 Ricoh Corporation Method and apparatus for searching for and retrieving documents using a facsimile machine
US5848413A (en) * 1995-01-13 1998-12-08 Ricoh Company, Ltd. Method and apparatus for accessing and publishing electronic documents
JPH0935032A (ja) * 1995-07-24 1997-02-07 Mitsubishi Electric Corp Icカードと情報機器端末
US5762552A (en) * 1995-12-05 1998-06-09 Vt Tech Corp. Interactive real-time network gaming system
GB9526129D0 (en) * 1995-12-21 1996-02-21 Philips Electronics Nv Machine code format translation
US5854693A (en) 1996-02-07 1998-12-29 Sharp Kabushiki Kaisha Image forming system
US5884262A (en) * 1996-03-28 1999-03-16 Bell Atlantic Network Services, Inc. Computer network audio access and conversion system
US5778378A (en) * 1996-04-30 1998-07-07 International Business Machines Corporation Object oriented information retrieval framework mechanism
US6005613A (en) * 1996-09-12 1999-12-21 Eastman Kodak Company Multi-mode digital camera with computer interface using data packets combining image and mode data
US6161148A (en) * 1996-09-27 2000-12-12 Kodak Limited Computer method and apparatus for interactive objects controls
JP4330665B2 (ja) * 1996-10-30 2009-09-16 株式会社リコー クライアントサーバシステムおよび画像処理装置
US6166729A (en) * 1997-05-07 2000-12-26 Broadcloud Communications, Inc. Remote digital image viewing system and method
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US6260021B1 (en) * 1998-06-12 2001-07-10 Philips Electronics North America Corporation Computer-based medical image distribution system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537157A (en) * 1993-04-21 1996-07-16 Kinya Washino Multi-format audio/video production system

Also Published As

Publication number Publication date
JP2002524006A (ja) 2002-07-30
GB0104702D0 (en) 2001-04-11
TW442759B (en) 2001-06-23
CN101714249A (zh) 2010-05-26
KR20010072958A (ko) 2001-07-31
GB2357926B (en) 2002-08-07
GB2357926A (en) 2001-07-04
CN1324469A (zh) 2001-11-28
JP4377066B2 (ja) 2009-12-02
US7010177B1 (en) 2006-03-07
DE19983504B4 (de) 2009-09-24
DE19983504T1 (de) 2001-07-26
WO2000013132A1 (en) 2000-03-09
AU5567999A (en) 2000-03-21

Similar Documents

Publication Publication Date Title
KR100579216B1 (ko) 디지털 이미지의 이식성 개선을 위한 이미징 장치, 방법, 머신-기록가능 매체 및 데이터 처리 시스템
US7856618B2 (en) Adaptively generating code for a computer program
EP3262503B1 (en) Hardware instruction generation unit for specialized processors
US6832369B1 (en) Object oriented method and apparatus for class variable initialization
US6367071B1 (en) Compiler optimization techniques for exploiting a zero overhead loop mechanism
US6526570B1 (en) File portability techniques
JP4130713B2 (ja) プログラム変換装置
EP1049010A2 (en) Method and apparatus for generating a platform-specific compiler
US20070033592A1 (en) Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
EP1557760A2 (en) Method and system for improving performance of java virtual machine
EP1347379A2 (en) On demand, network accessible runtime compile server
US20040003377A1 (en) Converting byte code instructions to a new instruction set
US7676800B2 (en) Method and apparatus for reducing the storage overhead of portable executable (PE) images
US6281893B1 (en) Method and apparatus for providing an object oriented approach to a device independent graphics control system
US6314445B1 (en) Native function calling
US20080129740A1 (en) Image processing apparatus, storage medium that stores image processing program, and image processing method
US7565521B2 (en) Method for managing memory space during system initialization
KR100654428B1 (ko) 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
US9152437B2 (en) Dynamically installing image processing
US7143402B2 (en) Method and apparatus for precision optimization in compiled programs
US6948170B2 (en) Computer and computer-readable storage medium for command interpretation
US5623676A (en) Computer program product and program storage device for safing asynchronous interrupts
EP1046985A2 (en) File portability techniques
US20050060707A1 (en) Method for iterating through elements of a collection
US10607037B2 (en) Method for managing programmable logic circuits for applications invoking dynamic libraries

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20031008

Effective date: 20051026

S901 Examination by remand of revocation
E902 Notification of reason for refusal
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130503

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee