KR20190130959A - 크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법 - Google Patents

크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법 Download PDF

Info

Publication number
KR20190130959A
KR20190130959A KR1020190043981A KR20190043981A KR20190130959A KR 20190130959 A KR20190130959 A KR 20190130959A KR 1020190043981 A KR1020190043981 A KR 1020190043981A KR 20190043981 A KR20190043981 A KR 20190043981A KR 20190130959 A KR20190130959 A KR 20190130959A
Authority
KR
South Korea
Prior art keywords
image
ssd
dimension
data
key
Prior art date
Application number
KR1020190043981A
Other languages
English (en)
Other versions
KR102481009B1 (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 KR20190130959A publication Critical patent/KR20190130959A/ko
Application granted granted Critical
Publication of KR102481009B1 publication Critical patent/KR102481009B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/797Processing of colour television signals in connection with recording for recording the signal in a plurality of channels, the bandwidth of each channel being less than the bandwidth of the signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/907Television signal recording using static stores, e.g. storage tubes or semiconductor memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/82Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only
    • H04N9/8205Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)
  • Studio Circuits (AREA)
  • Processing Or Creating Images (AREA)

Abstract

KV-SSD(Key-Value SSD)가 개시된다. KV-SSD는 응용 프로그램에 의해 사용되는 복수의 이미지 값들을 포함하는 데이터 구조를 포함한다. 데이터 구조는 제 1 차원에 따라 데이터를 구성하는 복수의 제 1 차원 컨테이너들을 포함할 수 있다. 복수의 1 차원 컨테이너들 각각은 해상도 및 크로마 서브 샘플링 레이트에서 이미지 객체에 대해 이미지 데이터를 저장하는 적어도 하나의 값을 포함한다.

Description

크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법{METHOD FOR RAPID REFERENCE OBJECT STORAGE FORMAT FOR CHROMA SUBSAMPLED IMAGES}
본 발명은 저장 장치에 관한 것으로, 좀 더 상세하게는 크로마 서브 샘플링된 이미지 파일들 KV-SSD에 저장하는 것에 관한 것이다.
컴퓨팅 시스템들은 점점 더 다양한 애플리케이션들을 위한 이미지를 저장한다. 이러한 이미지들은 상당한 저장 공간을 소비한다. 다양한 애플리케이션들이 서로 다른 목적들로 이미지들에 액세스하면서, 스토리지 시스템들이 이미지들을 다양한 해상도로 저장하므로, 스토리지 관리 절차와 애플리케이션 개발/처리가 복잡해진다.
크로마 서브 샘플링(Chroma Subsampling)은 색상(크로마) 정보 보다 이미지 루마(밝기) 정보를 선호하는 인간의 시각 특성을 이용하는 시각 정보를 인코딩하는 메커니즘이다. 특히, 크로마 서브 샘플링을 수행하려면, 이미지 저장 크기를 줄이기 위해 이미지를 특정 색상 또는 루마 서브샘플들 만을 사용하여 저장한 후에 이미지 루마(흑백 이미지) 정보를 크로마(색상) 정보와 분리하는 것이 필요하다.
통상적인 시스템들은 이미지 파일을 사용하는 각 애플리케이션에 파일 관리를 맡긴다. 이 방법을 사용하면 동일한 해상도 및 동일한 크로마 서브 샘플링 레이트로 같은 파일을 여러 번 복사하여 저장 장치들(다른 애플리케이션들에 의해 선택된 다른 위치들) 상에 저장할 수 있다. 또한, 이 프로세스는 (동일한 원본 이미지에서 파생된다는 점에서) 관련성이 있지만 해상도 또는 크로마 서브 샘플링 방법만 다른 많은 이미지들을 생성 할 수 있다. 이 방법을 사용하면 애플리케이션에서 특정 이미지 파일을 찾기가 어려울 수 있다: 애플리케이션들이 원하는 해상도/크로마 서브 샘플링 레이트로 잠재적으로 존재하는 파일의 복사본을 검색하는데 시간이 걸리다고 가정하면, 응용 프로그램은 원하는 해상도/크로마 서브 샘플링 레이트로 파일을 찾기 위해 전체 파일 시스템을 스캔해야 할 수 있다.
애플리케이션들을 통해 크로마 서브 샘플링 정보를 포함하는 이미지 파일들의 관리를 개선할 수 있는 방법이 필요하다.
본 개시의 실시 예들은 이미지 검색에 대한 처리 속도를 높이고, 응답 시간을 단축시키기 위한 KV-SSD 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 KV-SSD는 데이터 구조를 포함할 수 있다. 데이터 구조는 KV-SSD에 저장되고, 응용 프로그램에 의해 사용되는 복수의 이미지 값들을 포함할 수 있다. 데이터 구조는 구성하는 복수의 제 1 차원 컨테이너들 및 적어도 하나의 이미지 값을 포함할 수 있다. 복수의 제 1 차원 컨테이너들 제 1 차원에 따라 이미지 객체 내의 데이터를 구성할 수 있다. 적어도 하나의 이미지 값은 복수의 제 1 차원 컨테이너들 각각에서, 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식으로 이미지 객체에 대한 이미지 데이터를 저장할 수 있다.
본 발명의 다른 실시 예에 따른 KV-SSD는 제 1 데이터 구조, 제 2 데이터 구조 및 제 3 데이터 구조를 포함할 수 있다. 제 1 데이터 구조는 KV-SSD에 저장되고, 제 2 키를 저장하고, 제 1 차원에 따라 이미지 객체에 대한 값들을 구성할 수 있다. 제 1 데이터 구조는 KV-SSD에 의해 제 1 키와 관련될 수 있다. 제 2 데이터 구조는 KV-SSD에 저장되고, 제 3 키를 저장하고, 제 2 차원에 따라 이미지 객체에 대한 값들을 구성할 수 있다. 제 2 데이터 구조는 KV-SSD에 의해 제 2 키와 관련될 수 있다. 제 3 데이터 구조는 KV-SSD에 저장되고, 응용 프로그램에 의해 사용되는 이미지 값을 저장할 수 있다. 제 3 데이터 구조는 KV-SSD에 의해 제 3 키와 관련될 수 있다. 이미지 객체는 적어도 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식을 사용하여 이미지에 대한 이미지 데이터를 저장할 수 있다.
본 발명의 또 다른 방법은 KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하는 단계; KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하는 단계; 정보에서 키를 사용하여 KV-SSD(120) 상의 이미지 객체 내의 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 키를 사용하는 단계; 및 원하는 값이 KV-SSD의 이미지 객체에 저장되는 경우: KV-SSD 상의 이미지 객체로부터 원하는 값을 검색하고; 및 원하는 값을 KV-SSD로부터 응용 프로그램으로 반환하는 단계를 포함할 수 있다. 차원 컨테이너는 제 1 차원에 따라(315, 310, 305), 이미지 객체 내에 데이터의 서브집합을 저장할 수 있다. 이미지 객체는 제 1 차원에 따라 적어도 하나의 이미지 값을 구성하는 복수의 차원 컨테이너들을 포함할 수 있다. 이미지 객체는 응용 프로그램으로 반환되지 않을 수 있다.
본 발명은 이미지 파일을 찾기 위해 모든 스토리지를 검색할 필요 없이, 이미지 객체 내에서 원하는 이미지 파일을 찾을 수 있다. 따라서, 본 발명의 실시 예에 따르면, 응용 프로그램의 처리 작업량이 감소되고, 스토리지의 저장 공간이 절약될 수 있다.
도 1은 본 발명의 실시 예에 따라, KV-SSD에 크로마 서브 샘플링된 이미지 값들의 중앙 집중식 저장을 지원하는 기계를 도시한다.
도 2는 도 1의 기계의 추가적인 세부 사항을 도시한다.
도 3은 본 발명의 실시 예에서 사용될 수 있는 해상도 및 크로마 서브 샘플링 레이트를 포함하는 다양한 차원들을 도시한다.
도 4 내지 도 7은 본 발명의 실시 예에 따라 이미지 값들이 이미지 객체로 구성될 수 있는 다양한 방법들을 보여준다.
도 8은 결과들을 수신하고, 도 1의 KV-SSD 내에서 도 4 내지 도 7의 이미지 객체로부터 이미지 데이터를 요청하는 응용 프로그램을 도시한다.
도 12는 도 1의 KV-SSD의 세부 사항을 도시한다.
도 13a 내지 도 13b는 도 1의 KV-SSD에서 도 4 및 도 5의 이미지 객체의 이미지 데이터에 대한 응답을 요구하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 14는 본 발명의 실시 예에 따라, 도 4, 도 5 및 도 9의 이미지 객체 내에 새로운 이미지 값을 저장하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 15는 본 발명의 실시 예에 따라, 도 4, 도 5 및 도 9의 이미지 객체에 새로운 이미지 값을 저장하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 16a 및 도 16b는 본 발명의 실시 예에 따라, 도 1의 KV-SSD에서 도 6 및 도 9의 이미지 객체의 이미지 데이터에 대한 응답을 요구하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 17은 본 발명의 실시 예에 따라, 도 6 및 도 10의 이미지 객체에 새로운 이미지 데이터를 저장하기 위한 도 1의 KV-SSD에 대한 예시적인 절차의 흐름도를 도시한다.
도 18a 및 도 18b은 본 발명의 실시 예에 따라, 도 1의 KV-SSD로부터 도 7 및 도 11의 이미지 객체 내의 이미지 데이터를 요청하기 위한 도 1의 응용 프로그램에 대한 예시적인 절차의 흐름도를 도시한다.
도 19는 본 발명의 실시 예에 따라, 도 7 및 도 9의 이미지 객체 내의 새로운 이미지 데이터를 도 1의 KV-SSD에 저장하기 위해 도 7의 데이터 구조들을 갱신하기 위한 도 1의 응용 프로그램에 대한 예시적인 절차의 흐름도를 도시한다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제1, 제2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제1 모듈은 제2 모듈로 명명될 수 있다. 마찬가지로, 제2 모듈은 제1 모듈로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
인간의 뇌는 이미지 데이터를 처리하기 위해 (경험과 상이한)프로그래밍이 필요하지 않지만, 컴퓨터들을 사용하여 이미지 데이터를 저장하고 조작하는 것은 복잡한 과정일 수 있다. 이미지에 포함된 (이미지 형식에서 지원되는 색상들의 수와 같은) 세부 정보가 많을 수록 이미지 파일이 커지고 복잡해질 수 있다.
초기 이미지 파일 형식들은 상대적으로 간단한 형식들로 이미지들 저장한다. 예를 들어, 각 픽셀은 개별적으로 표현될 수 있고, 픽셀 내에 적색, 녹색 및 청색 신호들의 강도에 대한 값들을 저장한다. 그러나, 각 색상에 대한 픽셀 당 상대적으로 적은 비트 수를 사용하더라도, 이미지 파일이 커질 수 있다. 예를 들어, 640x480 픽셀의 이미지는 총 307,200 픽셀들을 포함한다. 8 비트들(1 바이트)이 각 픽셀에 대한 색상 정보를 저장하는데 사용되면, 이미지는 307,200 바이트의 저장 공간을 요구한다. 픽셀 당 비트 수를 24개(적색, 녹색 및 청색의 각 값에 대해 8 비트들)로 늘리면 이미지는 거의 1MB의 저장 공간을 요구한다. 각 색상에 대한 픽셀 당 비트들의 수를 늘리거나 이미지의 크기를 늘리면, 공간이 더 많이 필요하다.
다른 이미지 파일 형식들은 다양한 방식들로 "속임수(cheating)"에 의해, 이러한 저장 요구 사항을 개선할 수 있다. 예를 들어, YUV 인코딩은 인간의 눈이 색상보다 휘도(밝기)에 훨씬 더 민감하다는 점을 이용하여 원본 이미지에 있는 것보다 적은 색상 정보를 저장할 수 있다. 따라서, 루마(Y)는 완전히 저장될 수 있지만, 크로마 데이터(U 및 V)는 인간의 눈으로 이미지를 볼 때 뇌가 누락 된 데이터를 인지하지 못하거나 누락 된 데이터가 없어도 어려움 없이 견딜 수 있도록 다양한 방식으로 샘플링 될 수 있다.
유사한 결과를 생성하는 몇몇 크로마 분리 방법들이 있다. 본 발명의 실시 예들이 YCbCr로 알려진 크로마 분리 방법에 집중하나, 다른 크로마 분리 접근법들도 유사하고, 사용될 수 있다.
RGB 이미지들의 픽셀들을 YUV 이미지 픽셀들로 변환하기 위해, 각 픽셀의 Y 구성 요소 값은 픽셀의 루마 성분을 나타내고 Cb 및 Cr 값들은 크로마 성분을 나타낸다. 예를 들어, ER, EB 및 EG가 각각 픽셀 내에 적색, 녹색 및 청색이 얼마나 많은지 나타내는 0과 1 사이의 아날로그 값들인 경우, RGB 값들을 YCbCr 값들로 변환하는 데 다음 수식들을 사용할 수 있다.
Figure pat00001
종합적으로, 변환된 픽셀 값들은 상이한 압축 결과들을 제공하는 후속 크로마 서브 샘플링 압축 방법들을 가능하게 하는 다른 형식으로도 이미지 콘텐츠를 나타낸다. 어떤 일반적인 크로마 서브 샘플링 방법들은 지정된 픽셀 위치들에서의 크로마 값들을 알고리즘적으로 무시하는 4 : 0 : 0, 4 : 2 : 0, 4 : 2 : 2 등으로 알려진 방법들을 포함한다. 보다 일반적으로, 서브 샘플링 전략들은 4 : N : M으로 알려져 있는데, N과 M은 일반적으로 동일한 값을 갖고 집합 {0, 2, 4}에서 추출된다. 그러나, 본 발명의 실시 예들은 서로 다른 값을 가지고, 0, 2 또는 4 이외의 값을 갖는 N 및 M을 지원할 수 있다. 압축 된 이미지를 후속적으로 사용하는 애플리케이션들은 그것들의 자리에서 나머지 크로마 값들을 단순히 대체한다. 한편 이미지는 저장 장치에 저장 될 때, 크로마 서브 샘플링을 압축을 즐긴다.
실제로, 상이한 애플리케이션들은 다양한 이미지 해상도 및 색채 정보 요건들을 갖는다. 결과적으로, 동일한 이미지는 다양한 크로마 서브 샘플링 기법들과 해상도를 사용하여 여러 YUV 형식 이미지들로 저장될 수 있다.
통상적인 솔루션들은 이러한 YUV 형식의 이미지들의 저장을 구성하지 않는다. 응용 프로그램들은 다른 응용 프로그램들과 정보를 조정하거나 공유하지 않고 원하는 위치에 자유롭게 이미지를 저장할 수 있었다. 결과적으로 동일한 크로마 서브 샘플링 기법과 동일한 해상도를 사용하는 동일한 이미지가 여러 애플리케이션들에 의해 여러 번 저장되거나, 그 이미지가 어디 편리한 곳에 저장되더라도 응용 프로그램이 특정 크로마 서브 샘플링 기법과 해상도를 사용하여 특정 이미지를 찾지 못할 수도 있다. 또한, 이러한 다양한 애플리케이션 사용은 (동일한 원본 이미지에서 파생된다는 점에서) 관련성이 있지만 해상도 또는 크로마 서브 샘플링 방법만 다른 많은 이미지들을 생성할 수 있다. 특정 이미지 파일을 찾는 어려움과 동일한 이미지의 중복 저장 가능성을 제외하고, 그것이 저장 장치 상에 이미 저장되어 있더라도, 애플리케이션들은 그것들이 필요한 이미지 파일을 찾지 못하거나 (또는 알 수 없기 때문에) 그것들이 필요한 이미지 파일 생성과 관련된 지연으로 어려움을 겪을 수 있다.
단일 이미지 객체 내에 크로마 서브 샘플 정보와 관련있는 모든 생성된 해상도들을 저장하는 것은 저장을 간단하게 하고, 애플리케이션 개발 및 후속 애플리케이션 처리를 가속시킨다. 이러한 이점을 얻는 한 가지 방법은 스토리지 객체의 계층 적 테이블들 또는 컨테이너들을 사용하여 다양한 이미지 값들을 구성하는 것이다.
객체가 다수의 이미지 해상도들 및/또는 크로마 서브 샘플링 기법들을 포함하고 애플리케이션이 이미지의 크기를 조정하는 것이 필요할 때, 객체에 연속적으로 액세스하는 애플리케이션들은 자연스러운 애플리케이션 처리 가속을 즐긴다. 이러한 이점은 객체 내의 다양한 이미지 값들이 크기 조정, 재 샘플링 또는 재 처리가 필요한 이미지 데이터를 적게 포함하는 축소된 크기의 이미지들을 가질 수 있기 때문이다. 따라서, 애플리케이션은 애플리케이션 입력으로써 객체 내에서 가장 적절한 크기로 조정된 이미지를 선택할 수 있다. 즉, 새로운 이미지를 생성하는 애플리케이션은 원하는 결과에 가까운 해상도 및/또는 크로마 서브 샘플링의 기존 이미지가 발견 될 수 있는 경우 항상 사용자가 원하는 기본 이미지를 사용할 필요는 없다. 결과적으로, 감소된 처리 작업은 애플리케이션을 가속화하고. 응답 시간을 단축시키고, 인프라 장비 자본, 전력 및 냉각 비용을 감소시킨다.
도 1에서, 기계(105)가 도시된다. 기계(105)는 프로세서(110)를 포함 할 수 있다. 프로세서(110)는 예를 들어. Intel Xeon, Celeron, Itanium 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등 임의의 다양한 프로세서 일 수 있다. 도 1은 기계(105) 내에 단일 프로세서(110)를 도시하지만, 기계(105)는 각각 단일 코어 또는 멀티 코어 프로세서들 일 수 있는 임의의 수의 프로세서들 포함 할 수 있고, 임의의 원하는 조합으로 조합 될 수 있다. 프로세서(110)는 KV-SSD(Key-Value Solid State Drive)로서 도시된 저장 장치(120)에 대한 액세스를 지원할 수 있는 장치 드라이버(115)를 실행할 수 있다: 상이한 장치 드라이버들은 기계(105)의 다른 구성 요소들에 대한 액세스를 지원할 수 있다. KV-SS(1200)는 데이터에 액세스하기 위해 키-값 인터페이스를 사용할 수 있다: 애플리케이션 또는 운영 체제는 KV-SSD(120)에 키를 제공할 수 있으며, KV-SSD(120)는 KV-SSD(120)의 위치에 맵핑할 수 있다. KV-SSD(120)는 KV-SSD(120)의 위치에 저장된 값에 액세스하고 반환할 수 있다. 종래의 저장 장치들의 종래 파일 시스템에 의해 제공되는 복잡한 명령 집합과 달리, KV-SSD(120)는 일반적으로 다음과 같은 상당히 작은 명령 집합을 제공한다: (제공된 키와 관련된 값을 검색하기 위한) GET, (제공된 키 또는 반환 될 수 있는 KV-SSD 생성 키와 연관된 KV-SSD에 제공된 값을 저장하기 위한) PUT 및 (KV-SSD로부터 제공된 키와 관련된 값을 삭제하고, KV-SSD 테이블들로부터 키-값 연결을 제거하기 위한) ERASE (KV-SSD(120)는 다른 명령들도 지원할 수 있고 도시된 명령들과 다른 명령 이름들을 사용할 수 있지만, 원칙들은 일반적으로 설명 된 바와 같다). KV-SSD(120)는 또한 이하의 본 발명의 실시 예들에서 설명 된 바와 같이 객체 저장을 지원하는 임의의 다른 저장 장치로 대체 될 수 있다. 프로세서(110)는 또한 크로마 서브 샘플링 기술을 사용하여 저장된 이미지 데이터를 처리 할 수 있는 응용 프로그램(125)을 실행할 수 있다.
기계(105)는 또한 메인 메모리(135)에 대한 액세스를 관리하는데 사용될 수 있는 메모리 컨트롤러(130)를 포함 할 수 있다. 메모리(135)는 MRAM(Magnetoresistive Random Access Memory)과 같은 NVRAM(Non-Volatile Random Access Memory) 또는 플래시 메모리, DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 다양한 메모리일 수 있다. 메모리(135)는 또한 상이한 메모리 유형들의 임의의 원하는 조합일 수 있다.
도 1은 (독립형 서버 또는 랙 서버 일 수 있는) 서버로써 기계(105)를 도시하지만, 본 발명의 실시 예들은 임의의 원하는 유형의 기계(105)를 제한 없이 포함 할 수 있다. 예를 들어, 기계(105)는 데스크탑 또는 랩탑 컴퓨터 또는 본 발명의 개념의 실시 예로부터 이익을 얻을 수 있는 임의의 다른 기계로 대체될 수 있다. 기계(105)는 또한 특수한 휴대용 컴퓨팅 머신, 태블릿 컴퓨터, 스마트 폰 및 다른 컴퓨팅 기계를 포함 할 수 있다. 또한, 도 1은 KV-SSD(120) 및 응용 프로그램(125)을 모두 포함하는 것으로 기계(105)를 도시하지만, 본 발명의 실시 예는 별도의 기계에서 이들 구성 요소들을 가질 수 있다: 예를 들어, KV- SSD(120)는 (유선, 무선, 글로벌 등) 임의의 유형들의 하나 이상의 네트워크를 횡단하는 네트워크 연결을 통해, 기계(105)(및 응용 프로그램(125))로 연결되는 서버 상에 설치될 수 있다.
도 2는 도 1의 기계의 추가적인 세부 사항을 도시한다. 도 2에서, 전형적으로, 기계(105)는 장치(105)의 구성 요소들의 동작들을 조정하는데 사용될 수 있는 메모리 컨트롤러들(130) 및 클럭들(205)을 포함 할 수 있는 하나 이상의 프로세서들(110)을 포함한다. 프로세서 (110)는 예를 들어, RAM(random access memory), ROM(read-only memory) 또는 다른 상태 보존 매체를 포함 할 수 있는 메모리들(135)에 커플링될 수 있다. 프로세서(110)는 또한, 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(210) 및 저장 장치들(120)에 연결될 수 있다. 프로세서들(110)은 버스들(215)에 연결될 수 있으며, 버스들(215)은 다른 구성 요소들 사이에서 입/출력 엔진(225)을 사용하여 관리 될 수 있는 사용자 인터페이스(220) 및 입/출력 인터페이스 포트들에 부착될 수 있다.
도 3은 본 발명의 실시 예에서 사용될 수 있는 해상도 및 크로마 서브 샘플링 레이트를 포함하는 다양한 차원을 도시한다. 크로마 서브 샘플링 기법은 4 : N : M으로 표현 될 수 있음을 상기하라. 여기서 N과 M은 (반드시 그렇지는 않지만) 보통 0, 2 또는 4이다. 일반적으로 N과 M의 값들은 이미지의 수평 및 수직 방향으로 상대적인 크로마 해상도를 반영한다. 그러므로 예를 들어, 크로마 서브 샘플링 기법 4 : 0 : 0은 컬러 데이터가 없는 흑백 이미지를 나타내는 반면, 크로마 서브 샘플링 기법 4 : 4 : 4는 (모든 픽셀에서 컬러 데이터를 추출한) 풀 컬러 이미지를 나타낸다.
도 3에서, 3 차원(해상도, N, M) 공간은 다양한 해상도 및 크로마 서브 샘플 전략들을 갖는 가능한 트랜스 코딩 된 이미지들의 격자로 구성된다. (축(305)을 따르는) 해상도는 종종 25%, 50% 및 100%와 같이 이산 레벨로 표시되지만, 해상도 차원은 임의의 가능한 값들을 갖는 해상도 연속체이다. 반면, 크로마 서브 샘플 차원들은 단지 임의의 주어진 해상도에 대해 이상 크로마 서브 샘플링 기법들을 제공한다.
또한, 도 3은 별도의 차원들로써 차원들(N(축(310)을 따름) 및 M(축(315)을 따름)을 도시하지만, 본 발명의 실시 예들은 이러한 차원들을 단일 차원으로 조합 할 수 있다. 즉, N과 M이 별도의 차원들을 나타내는 대신 크로마 서브 샘플링 기법들의 수는 유한 개이며, 개별적으로 나열 될 수 있다. 따라서, 예를 들어, N과 M의 수용 가능한 값들에 대해 모든 가능한 크로마 서브 샘플링 기법 4 : N : M을 나타 내기 위해 단일 차원이 사용될 수 있다.
이미지 데이터를 저장하는 데 사용될 수 있는 데이터 구조를 나타내는 본 발명의 개념의 실시 예들로 들어가기 전에, 예비적인 주제는 이해하는데 유용하다. 데이터 객체를 저장하는 것 외에도 KV-SSD는 컨테이너들을 저장할 수도 있다. "컨테이너"는 여러 KV 데이터 객체들 (또는 그것들의 키들을 통하는 여러 데이터 객체들에 대한 연결들)을 기능적으로 저장하는 KV 데이터 구조이다. 본질적으로, 컨테이너는 그것 자신의 미니-KV 스토리지, 하우징 키들 및 관련 데이터가 될 수 있으며, 또는 포인터들(다른 키들)을 다른 곳으로 참조하는 키들의 목록을 보관할 수도 있다. 느슨한 의미에서, 컨테이너들은 파일 시스템 저장 장치의 폴더들(또는 디렉토리들)과 유사한 KV-SSD에 대한 기능을 수행한다: 컨테이너들은 관련 있는 KV 쌍들을 함께 그룹화 할 수 있는 메커니즘을 제공한다. KV-SSD의 데이터 객체는 임의의 외부적으로 부과된 구조, 요구 사항들 또는 형식 없이 순수한 데이터이므로, 개별 데이터 객체 내에 컨테이너가 존재할 수 있으며/있거나, 여러 데이터 객체들을 함께 그룹화 할 수 있다.
용어 "컨테이너"는 청구 범위를 단지 "컨테이너들"로만 제한하려는 것이 아니다. 용어 "컨테이너"는 이미지 객체(405) 내에 저장된 다양한 값들 및 다른 이미지 데이터를 구성하는데 사용될 수 있는 임의의 데이터 구조를 포함하도록 의도된다. 예를 들어, 테이블들은 이미지 값들을 구성하는데 사용되고, 아래 그림 7에 도시된 바와 같이, 테이블들은 하나의 차원을 따르는 값들에 의해 인덱싱되고, 테이블들의 엔트리들은 하나 이상의 추가적인 차원들을 따라 데이터를 구성하는 다른 테이블들 또는 이미지 값들을 가르킨다. 따라서, 예를 들어, 이미지 객체(405)는 대안적으로 100%, 50% 및 25%의 해상도들에 대한 엔트리들을 포함하는 제 1 테이블을 포함 할 수도 있다; 이러한 엔트리들은 이미지 값들(410-1~410-6, 415-1~415-6 및 420)에 대한 포인터들을 포함하는 추가적인 테이블들을 가리킬 수 있다.
도 4 내지 도 11은 본 발명의 실시 예에 따라 이미지 값들이 이미지 객체로 구성될 수 있는 다양한 방법들을 나타낸다. 도 4에서, "MyCat"이라는 이미지에 대한 이미지 데이터를 저장하는 이미지 객체(405)가 도시된다. 이미지 값들은 제 1 차원으로서 해상도를 사용하고 제 2 차원으로서 크로마 서브 샘플링 기법을 사용하여, 이미지 객체(405) 내에 구성된다. 따라서, 예를 들어, 컨테이너들(425-1, 425-2, 및 425-3)는 각각 100%, 50% 및 25%의 해상도들의 이미지들을 저장한다.
100%, 50% 및 25%의 해상도들은 원본 이미지의 가능한 조정된 해상도들을 나타내며, 임의의 대체 레이블들로 대체될 수 있다: 예를 들어, 특정 픽셀 해상도를 사용하여. 따라서, 예를 들어 원본 이미지가 (일반적으로 "640x480"으로 표시되는) 640 x 480 픽셀들을 포함하는 경우, 100% 레이블을 "640x480"으로 대체 할 수 있고, 50% 레이블을 "320x240"으로 대체 할 수 있고, 25% 레이블을 “160x120”으로 대체 할 수 있다.
각 제 1 차원 컨테이너 내에서, 추가 컨테이너들은 제 2 차원에 데이터를 저장하는데 사용될 수 있다. 따라서, 예를 들어 제 1 차원 컨테이너들(425-1 및 425-2)은 각각 4 : 0 : 0, 4 : 2 : 2 및 4 : 4 : 4 크로마 서브 샘플링 기법을 사용하여 이미지를 저장하는 제 2 차원 컨테이너들(430-1, 430-2 및 430-3)을 포함하고, 제 1 차원 컨테이너(425-3)는 4 : 4 : 4 크로마 서브 샘플링 기법을 사용하여 이미지들을 저장하는 제 2 차원 컨테이너(430-3)를 포함한다.
도 4에는 주목할 가치가 있는 몇 가지 포인트들이 있다. 우선, 도 4에서, 제 2 차원 컨테이너들(430-1, 430-2, 및 430-3)은 루마 데이터 및 크로마 데이터를 개별적으로 저장하는 것으로 주로 도시되는 것을 주목하라. 예를 들어, 컨테이너(430-1)는 루마 데이터 값(410-1) 및 크로마 데이터 값(415-1)을 저장하고, 컨테이너(430-2)는 루마 데이터 값(410-2) 및 크로마 데이터 값(415-2)을 저장한다. 이것은 선택적이다: 루마 데이터 및 크로마 데이터를 분리 할 필요는 없다. 예를 들어, 제 1 차원 컨테이너(425-3) 내의 제 2 차원 컨테이너(430-3)는 루마 데이터 및 크로마 데이터를 분리하는 것이 아니라 전체 이미지를 단일 값으로 저장하는 이미지 값(420)을 저장한다. 루마 데이터 및 크로마 데이터를 분리하는 것은 단지 도 1의 응용 프로그램(125)이 크로마 데이터(415-1)를 처리 할 필요가 있는 경우 루마 데이터(410-1)는 검색 될 필요가 없다는 점에서 이점을 갖는다. 한편, 도 1의 응용 프로그램(125)이 전체 이미지를 원한다면, 루마 데이터(410-1) 및 크로마 데이터(415-1) 모두가 검색되고, 도 1의 응용 프로그램(125)으로 반환된다. 이것은 도 1의 응용 프로그램(125)의 기대에 따라 루마 데이터 및 크로마 데이터를 단일 이미지 파일로 재결합 할 것을 요구할 수 있다.
둘째, 4 : 0 : 0 크로마 서브 샘플링 기법은 무채색 이미라는 것을 주목하라: 이미지는 컬러 데이터를 포함하지 않는다. 이러한 이미지에서, (UV 데이터는 이미지의 색상 부분을 나타내기 때문에) UV 데이터는 존재하지 않을 수도 있다. 따라서, 크로마 데이터 값들(415-1 및 415-4)은 데이터를 저장하지 않기 때문에 존재하지 않을 수 있다. 그것들은 설명의 완전성을 위해 도 4에 도시되며, 이러한 값들이 이미지 객체(405)에 저장되어야 하기 때문은 아니다.
셋째, 루마 데이터는 동일한 해상도의 모든 이미지들에 대해 동일하기 때문에, 루마 데이터 값들(410-1, 410-2, 및 410-3)은 중복된다: 실제로 단지 하나의 복사본만 저장 될 필요가 있다. 루마 데이터 값들(410-1, 410-2 및 410-3)의 중복된 복사본이 제거 될 수 있는 많은 방법이 있다. 예를 들어, 루마 데이터 값은 제 2 차원 컨테이너들(430-1, 430-2, 및 430-3) 각각 내에 보다는 제 1 차원 컨테이너(425-1) 내에 직접 저장될 수 있다. 또는, 루마 데이터 값은 제 2 차원 컨테이너들(430-2 및 430-3)이 그 값에 대한 포인터들을 저장하면서, 한 번(예를 들어, 제 2 차원 컨테이너(430-1) 내에) 저장 될 수 있다. 본 발명의 개념의 실시 예는 루마 데이터의 중복 된 복사본들을 제거하기 위한 다른 기술들을 포함하도록 확장 될 수 있다.
넷째, 이미지 객체(405)는 크로마 이미지 값들의 저장 및 관리를 최적화하도록 설계되었지만, 이미지 객체(405)가 다른 형식들로 관련 이미지 데이터 값들을 저장할 수 없는 이유는 없다. 예를 들어, 원본 이미지 파일은 640x480 해상도에서 RGB 형식 (또는 JPEG/JPG 형식, 또는 GIF 형식, 또는 손실 여부와 상관없이 임의의 다른 형식)으로 되어 있을 수 있다: 이 이미지 값은 이미지 객체(405) 내에도 저장 될 수 있다. 이미지 객체(405) 내에 원본 이미지 값을 저장함으로써, 도 1의 응용 프로그램(125)가 어떤 이유로(100% 해상도에서의 4 : 4 : 4 크로마 서브 샘플링 기법과는 대조적으로) 원본 데이터 파일을 필요로 하는 경우, 원본 이미지는 쉽게 찾아지고 검색될 수 있다.
다섯째, 도 4는 100% 및 50% 해상도의 이미지에 대한 4 : 0 : 0, 4 : 2 : 2 및 4 : 4 : 4 서브 샘플링 스킴에서의 크로마 데이터를 도시하지만, 25% 해상도(제 1 차원 컨테이너(425-3))에서는 단지 4 : 4 : 4 크로마 서브 샘플링 기법에 대한 이미지 데이터를 저장한다. 따라서, 이미지 객체(405)가 모든 가능한 해상도에서 모든 가능한 크로마 서브 샘플링 기법을 포함 할 필요는 없다. 실제로, 해상도 연속체는 본질적으로 연속적인 것으로 간주 될 수 있기 때문에, 이미지 객체(405)가 가능한 모든 해상도에서 모든 가능한 크로마 서브 샘플링 기법에 대한 이미지 데이터를 저장하도록 요구하거나 기대하는 것은 비현실적 일뿐만 아니라 실행 불가능할 수도 있다. 그러나, 해상도 및 크로마 서브 샘플링 기법(이미지들을 사용하거나 생성하는 도 1의 응용 프로그램(125)에 의해 필요)의 모든 가능한 조합들의 서브 집합을 저장하는 것은 완전히 현실적이며 실현 가능하다.
당연한 것으로서, 이미지 객체(405)는 도 1의 응용 프로그램(125)가 새로운 해상도들 및/또는 크로마 서브 샘플링 기법들에서 이미지 데이터를 생성함에 따라 증가할 수 있음에 주목하라. 예를 들어, 도 1의 응용 프로그램(125)은 4 : 4 : 4 크로마 서브 샘플링 기법을 사용하여 75% 해상도로 이미지 데이터를 처리하기 위해 필요하다고 가정하라. 도 4로부터 도시되는 바와 같이, 이미지 객체(405)에 이 해상도의 데이터를 저장하는 컨테이너가 아직 존재하지 않는다. 이 해상도에서 이미지 데이터를 요구할 때, 도 1의 응용 프로그램(125)은 그러한 이미지 데이터가 존재하지 않는다는 것을 알 수 있다. 그 후, 도 1의 응용 프로그램(125)은 필요한 이미지 데이터를 생성(이 방법은 아래에서 논의 될 것이다)한 후, 새로운 제 1 차원 컨테이너는 하나 이상의 이미지 값들이 도 1의 응용 프로그램(125)에 의해 생성되는 것으로 저장될 수 있는 4 : 4 : 4 크로마 서브 샘플링 기법에 대한 데이터를 저장하기 위해 내장된 새로운 제 2 차원 컨테이너와 함께, 75%의 해상도를 위해, 이미지 객체(405)에 추가될 수 있다. 도 1의 응용 프로그램(125)이 기존의 해상도이지만 새로운 크로마 서브 샘플링 기법으로 새로운 이미지 데이터를 생성할 때, 동일한 원리가 적용된다; 유일한 차이점은 (기존의 제 1 차원 컨테이너는 생성된 해상도를 나타내기 때문에) 이러한 상황에서 새로운 제 1 차원 컨테이너는 추가되지 않는다는 것이다. (이 개념은 이미지에 대해 제 1 크로마 데이터가 생성 될 때 이미지 객체(405)를 생성하는 것으로 확장 될 수도 있다.)
도 1의 응용 프로그램(125)이 이미지 객체(405)에 아직 존재하지 않는 해상도 및 크로마 서브 샘플링의 조합에서 이미지 데이터를 요구하는 상황에서, 도 1의 응용 프로그램(125)은 요구된 이미지 데이터를 생성해야 할 것이다. 예를 들어, 이미지 객체(405)에서, 25%의 해상도 및 4 : 0 : 0 크로마 서브 샘플링 기법의 조합에 대한 이미지 데이터가 존재하지 않는다. 따라서, 도 1의 응용 프로그램(125)이 이 해상도 및 크로마 서브 샘플링 기법에서 이미지 데이터를 요구한다면, 도 1의 응용 프로그램(125)은 이 이미지 데이터를 생성해야 할 것이다.
종래의 응용 프로그램들은 필요한 이미지 데이터가 이미 존재한다고 가정하지 않을 수 있고, 그러한 데이터 생성을 지원하기 위해 종래의 응용 프로그램을 수정하지 않을 수 있기 때문에 이미 그러한 이미지 생성을 할 수 있다. 그러나, 도 1의 응용 프로그램(125)이 (예를 들어, YCbCr 인코딩 또는 RGB 이미지 값을 사용하여 풀 컬러 해상도의 이미지 데이터를 나타내는 이미지 값들(410-3 및 415-3) 일 수 있는) 원본 이미지 데이터로부터 시작하여 생성될 수 있다면, 도 1의 응용 프로그램(125)이 4 : 0 : 0 크로마 서브 샘플링 기법(즉, 이미지 값들(410-4 및 415-4))을 사용하여 50% 해상도의 이미지 데이터로 시작하여 그것들을 25% 해상도로 스케일 다운하여 (4 : 0 : 0 크로마 서브 샘플링 기법을 위한 새로운 제 2 차원 컨테이너 내의) 제 1 차원 컨테이너(425-3)에 저장하는 것이 충분할 수 있다. 또한, 도 1의 응용 프로그램(125)은 정확한 해상도에 있을 제 1 차원 컨테이너(425-3)에 저장된 임의의 이미지 값(이미지 값(420)와 같은)을 요청할 수 있고, 이미지 값을 처리하여 그 이미지로부터 루마 데이터만을 추출 할 수 있으며, (다시 말하면, 4 : 0 : 0 크로마 서브 샘플링 기법에 대해 새로 생성 된 제 2 차원 컨테이너 내에서) 제 1 차원 컨테이너(425-3)에 저장될 수 있다. 이러한 방식으로, 도 1의 응용 프로그램(125)에 의해(또는, 이미지 객체(405)상에서 동작하는 다른 응용 프로그램들에 의해) 이미지의 새로운 버전들이 생성됨에 따라 이미지 객체(405)가 커질 수 있고, 전반적인 처리와 데이터 이동이 덜 필요할 수 있다.
유사한 접근법이 도 1의 응용 프로그램(125)이 무채색이 아닌 이미지 파일을 필요로 할 때 취해질 수 있다. 도 1의 응용 프로그램(125)은 이미 존재하는 적절한 이미지 값을 선택하고 그에 따라 수정할 수 있다. 예를 들어, 도 1의 응용 프로그램 (125)이 50% 해상도에서 이미지의 4 : 2 : 4 서브 샘플링 방식으로 크로마 데이터를 필요로 한다면, 도 1의 응용 프로그램(125)은 크로마 값(415-6)(풀 4 : 4 : 4 크로마 서브 샘플링에서 50% 해상도)으로 시작하여 데이터를 적절하게 샘플링하여 4 : 2 : 4 서브 샘플링 방식에서 이미지 파일을 생성할 수 있다. 그 후, 도 1의 응용 프로그램(125)은 생성된 이미지 값을 제 1 차원 컨테이너(425-2)의 새로운 제 2 차원 컨테이너에 저장할 수 있다.
전술 한 바와 같이, 도 4에서, 일부 중복 데이터가 표시된다. 특히, 주어진 해상도에 대한 Y(루마) 데이터는 크로마 서브 샘플링 기법으로 변경되지 않는다. 다시 말하면, 이미지 값들(410-1, 410-2, 410-3)은 모두 동일한 값이다. 도 4에서, (차원 컨테이너들(425-1, 430-1)과 같은) 주어진 컨테이너 계층 구조는 모든 관련 데이터를 포함할 수 있으므로, 이 중복성에 대한 약간의 이점이 있다. 그러나, 이 중복성은 항상 발견될 수 있는 위치(예를 들어, 차원 컨테이너(425-1))에 크로마 서브 샘플링 기법과 독립적인 데이터를 저장하거나, 데이터를 실제로 저장하는 다양한 차원 컨테이너들로부터의 포인터들을 포함하고 데이터를 한 번만 저장함으로써 제거될 수 있다. 예를 들어, 이미지 값(425-1)은 참 데이터 일 수 있고, 이미지 값들(425-2, 425-3)은 단순히 이미지 값(425-1)에 대한 포인터들일 수 있다. 도 6 및 도 7에 도시 된 바와 같은 본 발명의 다른 실시 예들은, 중복 데이터의 가능성에 대한 다른 솔루션들을 제공한다.
도 4에서, 이미지 데이터는 먼저 해상도 차원을 따라 구성되고, 그 다음 크로마 서브 샘플링 차원을 따라 구성된다. 그러나, 본 발명의 실시 예들은 다른 방식으로 이미지 데이터를 구성할 수 있다. 도 5는 먼저 크로마 서브 샘플링 차원을 따라 그리고 나서 해상도 차원을 따라 이미지 데이터를 구성하는 것을 도시한다.
도 5에서, 제 1 차원 컨테이너들(430-1, 430-2 및 430-3)이 각각 4 : 0 : 0, 4 : 2 : 2 및 4 : 4 : 4의 크로마 서브 샘플링 기법을 위해 도시된다. 제 1 차원 컨테이너들(430-1, 430-2, 430-3) 각각 내에서, 제 2 차원 컨테이너들(425-1, 425-2, 및 425-3)은 해상도에 따라 이미지 데이터를 구성하는데 사용된다. 도 4에서처럼, 도 5에서의 이미지 객체(405)는 해상도와 크로마 서브 샘플링 기법의 모든 조합을 나타내는 컨테이너들을 저장할 필요가 없다. 따라서, 예를 들어, 제 1 차원 컨테이너들(430-1 및 430-2)은 제 1 차원 컨테이너(430-3) 내에만 저장된 제 2 차원 컨테이너(425-3)를 포함하지 않는다. 이 구성은 이미지 객체(405)가 4 : 4 : 4 크로마 서브 샘플링 기법을 사용하여 25%의 해상도로 이미지 데이터만을 저장한다는 것을 반영한다.
도 4 및 도 5에 도시된 것처럼 본 발명의 실시 예들에서(본 발명의 다른 실시 예들에서도), 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120) 검색할 특정 이미지 값을 식별하는 것을 돕는 키들/컨테이너들 제공할 수 있다. 예를 들어, 이미지 객체(405)가 "MyCat"이라는 이미지에 대한 이미지 값들을 포함한다고 가정한다. 도 1의 응용 프로그램(125)은 "MyCat4 : 2 : 250Chroma"라는 키를 사용하여 KV 요청을 제공할 수 있다. 도 1의 KV-SSD(120)는 이 정보를 일련의 “내부적인” 키들/컨테이너들로 파싱할 수 있다: "MyCat"(이미지 데이터 객체(405)를 식별하는 키/컨테이너), "4 : 2 : 2"(원하는 크로마 서브 샘플링을 식별하는 제 1 키/컨테이너) "50"(원하는 해상도를 식별하는 제 2 키/컨테이너) 및 "Chroma"(원하는 특정 이미지 값에 대한 키). 이 파싱을 사용하여, 도 1의 KV-SSD(120)는 예를 들어, (본 발명의 일부 실시 예들에서 컨테이너 그 자체로써 생각되는) 도 5의 이미지 객체 (405), 다음에 이미지 객체(405) 내의 컨테이너(430-2), 그 다음에 컨테이너(430-2) 내의 컨테이너(425-2), 및 마지막으로 컨테이너(425-2) 내의 이미지 값(415-5)을 찾을 수 있다. 이 예는 어디에서 제공된 정보의 한 부분이 종료되고 또 다른 부분이 시작되는지를 결정하기 위해 그것을 도 1의 KV-SSD(120)에 맡기는 반면, 본 발명의 실시 예들은 제공된 정보의 부분들을 분리하기 위해 명시적인 문자들을 사용할 수 있다. 예를 들어, "/"가 파싱 목적을 위한 특수 문자로 고려되고 임의의 키 또는 컨테이너 이름에 나타나지 않으면, 도 1의 응용 프로그램(125)은 "MyCat / 4 : 2 : 2 / 50 / Chroma"를 제공하여 제공된 정보를 파싱하는 방법을 명시적으로 나타낼 수 있다.
제공된 특수 정보(및 그것이 파싱되는 방법)는 사용되는 본 발명의 실시 예에 따라 달라질 수 있을지라도, 아래의 도 6, 도 7 및 도 9 내지 도 11에서 도시되는 본 발명의 실시 예들에서 도 1의 응용 프로그램(125)은 이러한 정보를 제공할 수도 있다. 예를 들어, 위의 도 4 및 도 5에서 도시되는 본 발명의 실시 예들에서, 원하는 해상도와 원하는 크로마 서브 샘플링 기법 모두는 원하는 이미지 값을 분리하는데 사용되는 컨테이너들일 수 있다. 도 6에 도시 된 본 발명의 실시 예에서, 이들 지표들 중 하나는 원하는 이미지 값을 찾기 위해 사용되는 키의 일부일 수 있다.
본 발명의 또 다른 실시 예에서, 제공된 정보를 파싱하기 위해 도 1의 KV-SSD(120)를 기대하기보다는, 도 1의 응용 프로그램(125)은 키와 컨테이너 정보를 별도로 제공할 수 있다. 따라서, 위 예제를 계속하면, 50% 해상도 및 4 : 2 : 2 크로마 서브 샘플링 기법에서 파일 "MyCat"에 대한 크로마 값에 액세스하기 위해 응용 프로그램(125)은 (별도의 입력으로써) "MyCatChroma"라는 키 및 "50 / 4 : 2 : 2"(또는 "4 : 2 : 2/50")라는 컨테이너를 제공할 수 있다. KV-SSD(120)는 컨테이너를 키로부터 분리시킴으로써 (KV-SSD(120)가 컨테이너(들)을 식별하기 위해 입력 정보를 파싱할 필요가 없기 때문에) 원하는 이미지 값을 보다 효율적으로 검색할 수 있다.
도 4 및 도 5(및 도 6 및 아래의 도 9 내지 도 10)는 이미지 객체(405) 내의 모든 차원 컨테이너들(425-1, 425-2, 425-3, 430-1, 430-2, 및 430-3)을 보여주는 반면, 본 개념의 실시 예들은 다른 메커니즘들을 사용하여 이미지 데이터를 구성할 수 있다. 예를 들어, 제 1 차원 컨테이너(425-1)는 풀(100%) 해상도에 있는 모든 이미지 데이터(또는, 대안적으로, 640x480과 같은 특정 픽셀 해상도에 있는 모든 이미지 데이터)를 포함 할 수 있다; 제 1 차원 컨테이너(425-1) 내에서, 제 2 차원 컨테이너(430-1)는 4 : 0 : 0 크로마 서브 샘플링 기법을 사용하는(즉, 100% 해상도에 있는) 모든 이미지 값들을 함께 그룹화 할 수 있다. 따라서, 4 : 0 : 0 크로마 서브 샘플링 방식(UV 데이터(415-1))을 사용하는 100% 해상도의 이미지 데이터를 검색하기 위한 도 1의 응용 프로그램(125)은 특정 키와 관련된 값을 검색하기 위해 특정 컨테이너를 식별하기 위해 원하는 해상도(100%) 및 원하는 크로마 서브 샘플링 기법(4 : 0 : 0)을 지정할 수 있다. 이미지 객체(405)의 일부로 간주되는 것이 아니라 모든 이미지들에 대한 이미지 값들을 저장하기 위해 컨테이너들(425-1, 425-2 및 425-3)을 사용하기 위해 도 4 및 도 5(아래 도 6, 도 7 및 도 9 내지 도 11도)가 어떻게 일반화될 수 있는지 쉽게 알 수 있어야 한다.
또한, 컨테이너에 부여된 격리 때문에, 본 발명의 일부 실시 예들에서, 키들은 KV-SSD(120)에 걸쳐 전역적으로 고유하기보다 국부적으로 고유할 수 있음에 유의할 가치가 있다. 예를 들어, 컨테이너들(425-1, 425-2, 425-3, 430-1, 430-2 및 430-3)은 이미지 객체(405) 내의 이미지 값들을 구성하는 도 4 및 도 5를 다시 고려하라. 특정 이미지 객체(405) 및 특정 원하는 이미지 값을 격리하는 특정 컨테이너들의 세트가 주어진 경우, 이미지 값을 검색하는데 사용되는 키가 "루마" 또는 "크로마"로 감소될 수 있다. 예를 들어, 도 4에서, 도 4의 응용 프로그램(125)이 이미지 객체(405) 및 컨테이너들(425-1, 430-1)을 지정하는 경우, 응용 프로그램은 이미 이미지 값들의 세트를 단지 이미지 값들(410-1 및 415-1)로 감소시켰다. "루마" 또는 "크로마"라는 키를 제공함으로써, KV-SSD(120)는 이들 2개의 이미지 값들 사이에서 선택할 수 있다. 동일한 키("루마)" 또는 "크로마")는 다른 제 2 차원 컨테이너들(430-2, 430-3) 각각에서의 파일들 사이에서 구별할 수 있음에 유의해야 한다. 따라서, 키들 자체는 컨테이너(430-1) 내에서만 국부적으로 유일하고, 도 1의 KV-SSD(120)에 걸쳐 전역적으로 고유하지는 않고, 또는 이미지 객체(405)내에서는 고유하다: 하지만 컨테이너 계층 구조는 키 충돌들을 방지하기 때문에, 도 1의 KV-SSD(120)는 여전히 원하는 이미지 값을 반환 할 수 있다.
도 6은 본 발명의 다른 실시 예를 도시한다. 도 6에서, 이미지 데이터는 도 4에서와 같이 해상도 차원을 따라 먼저 구성된다. 그러나, 제 1 차원 컨테이너들(425-1, 425-2, 및 425-3) 내에 데이터를 구성하기보다는, 키는 원하는 특정 이미지 값을 식별하기 위해 사용될 수 있다. 따라서, 제 1 차원 컨테이너(425-1)는 (도 4에서와 같이, 제 2 차원 컨테이너들(430-1, 430)을 통해) 간접적이기보다, 직접적으로 이미지 값들(410-1, 410-2, 410-3, 415-1, 415-2 및 415-3)을 포함한다. 100% 해상도에서 이미지에 대한 루마 데이터와 같은 특정 이미지 값을 선택하기 위해, 도 1의 응용 프로그램(125)은 제 1 차원 컨테이너(425-1)로부터 원하는 값을 고유하게 식별하는 키와 함께 제 1 차원 컨테이너(425-1)를 지정할 수 있다.
예를 들어, 100% 해상도에서 "MyCat"이라는 이미지에 대한 루마 데이터를 선택하기 위해, 도 1의 응용 프로그램(125)은 "100MyCatLuma"라는 정보를 제공할 수 있다("MyCat100Luma" 또는 원하는 이미지 값 키 및 컨테이너 정보의 임의의 다른 원하는 순서: 도 1의 KV-SSD(120)가 정보를 파싱 할 수 있는 한 특정 순서는 중요하지 않을 수 있다). 이 정보는 링크(605)로 도시된 바와 같이 원하는 이미지 값을 고유하게 식별한다. 유사한 방식으로, "50MyCat4 : 4 : 4Chroma"라는 정보를 제공하면 "MyCat"라는 이미지의 풀 크로마 서브 샘플링 데이터를 50% 해상도로 고유하게 식별할 수 있다. 이미지 이름(예로서, "MyDog"로)을 변경하면 동일한 유형의 데이터를 검색하지만, 다른 이미지의 경우 동일한 차원 컨테이너 계층 구조를 사용하는 것에 유의해야 한다.
도 6이 도시된 것처럼 구성되면, 암시적인 추가 계층 구조가 있다: 이미지 객체(405) 그것 자체. 즉, 컨테이너들(425-1, 425-2, 및 425-3)은 도 1의 KV-SSD(120) 전체에 대해 포괄적이지 않지만, 이미지 객체(405)의 “부분”일 수 있다- 본질적으로, 이미지 객체(405)는 컨테이너 자체로서 구성될 수 있다. 이러한 의미에서, 컨테이너들(425-1, 425-2, 및 425-3)은 이미지 객체(405)에 특정적이고, 상이한 이미지 객체들에서 동일한 라벨을 갖는 임의의 컨테이너들은 상이한 컨테이너들로 간주될 수 있다. 이미지 데이터가 먼저 이미지 객체에 의해 구성된 후에 차원 컨테이너들에 의해 구성되므로, 개별적인 이미지 값들 및 동일하게 레이블 된 (서로 다른 이미지 객체들 내의) 서로 다른 컨테이너들까지도 여전히 고유하게 식별된다. 본 발명의 다른 실시 예들에서, 도 6은 컨테이너들(425-1, 425-2, 및 425-3)가 가장 높은 레벨(임의의 개별적인 이미지 객체들보다 높음)에 있도록 구성될 수 있다. 이러한 구성은 도 1의 KV- SSD(120)의 (데이터 객체들 자체인) 컨테이너들의 수를 감소시키지만, 키는 동일한 해상도 및/또는 크로마 서브 샘플링 기법을 나타낼 수 있는 동일한 컨테이너 내의 이미지 값들을 구별하기 위해, 하지만 상이한 이미지들에 대해 이미지 객체(405)를 특정할 필요가 있다.
“컨테이너”를 전혀 사용하지 않고 도 1의 KV-SSD(120) 상에 이미지 데이터를 저장할 수도 있다. "컨테이너"라는 용어는 이미지 값을 구성하는 데이터 구조가 여전히 있을 수 있기 때문에 인용되지만, 도 7에서, 원하는 이미지 값을 구성하는 임의의 계층 구조 및 원하는 이미지 값 모두를 지정하는 정보를 처리하는 도 1의 KV-SSD(120)보다 도 1의 응용 프로그램(125)이 데이터 구조를 검색하고, 그것 자체의 데이터에 접근하고, 도 1의 KV-SSD(120)로부터 추가 요청들을 생성하는 것을 담당할 수 있다(도 1의 KV-SSD(120)가 원하는 이미지 값의 키뿐만 아니라 계층적 정보를 수신하는 책임이 있는 경우, 도 7은 도 4 내지 도 6에 도시 된 컨테이너들에 대한 구조를 시연하는 것으로 생각 될 수 있지만, 구현은 도 4 내지 도 6에 도시 된 본 발명의 실시 예들로부터 변하지 않는다.)
도 7에서, 도 1의 응용 프로그램(125)은 해상도 또는 크로마 서브 샘플링 기법에 관계없이 이미지 데이터의 모든 저장된 변화를 나타내는 이미지 객체에 대한 키를 제공 할 수 있다. 이 키는 실제로는 이미지 데이터를 반환하지 않는다. 그 대신, 이 키는 도 4의 제 1 차원 컨테이너(425-1)와 유사한 테이블(705)을 저장하는 객체에 액세스한다. 테이블(705)은 KV-SSD(120)에 저장된 이미지의 상이한 해상도들에 관한 정보를 저장한다. 각 상이한 해상도는 다른 키와 관련된다: 예를 들어, 100% 해상도는 key 1과 관련되고, 50% 해상도는 key 2와 관련되고, 25% 해상도는 key 3과 관련된다.
도 1의 응용 프로그램(125)은 원하는 해상도와 관련된 키를 KV-SSD(120)로 제공할 수 있다. 예를 들어, key 1은 테이블(710-1)을 저장하는 객체를 식별 할 수 있고, key 2는 테이블(710-2)을 저장하는 객체를 식별 할 수 있으며, key 3은 테이블(710-3)을 저장하는 객체를 식별 할 수 있다. 테이블들(710-1, 710-2, 710-2)은 이들이 원하는 이미지 값들 세트를 더 좁혀주는 점에서 도 4의 제 2 차원 테이블들(430-1, 430-2, 430-3)과 유사하다. 도 1의 응용 프로그램(125)은 검색된 테이블의 정보를 사용하여 원하는 특정 이미지 값을 선택할 수 있다. 예를 들어, 도 1의 응용 프로그램(125)은 100% 해상도에서 이미지에 대한 루마 데이터를 저장하는 이미지 값을 요구하는 경우, 도 1의 응용 프로그램(125)은 KV-SSD(120)에 key 1을 제공하고, 테이블(710-1)을 검색하고, key 4를 찾고, KV-SSD(120)에 key 4를 제공하고, 이미지 값(410-1)을 수신할 수 있다.
도 7의 장점 및 단점은 본 발명의 다른 실시 예들과 관련하여 명백해야 한다. 도 1의 응용 프로그램(125)이 도 1의 KV-SSD(120)로부터 테이블들(705, 710-1, 710-2 및/또는 710-3)을 수신하는 경우, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)에 어떤 이미지 값들이 저장되는지 정확히 알고 있으므로, 현재 도 1의 KV-SSD(120)에 저장되지 않은 이미지 값을 요청하는 것을 피할 수 있다. 따라서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)로부터 "값이 없는" 메시지(아래에서 도 8을 참조하여 설명됨)를 수신할 가능성을 언급할 필요는 없다.
도 7에 도시 된 본 발명의 실시 예의 단점은, 도 1의 응용 프로그램(125)은 궁극적으로 원하는 이미지 값을 수신하기 전에 KV-SSD(120)의 다중 판독 요청들을 할 필요가 있을 수 있다. 예를 들어, 상술한 바와 같이 3 개의 판독 요청들을 수행하는 것은 도 1의 응용 프로그램(125)이 (재사용을 위해 소거된 데이터 블록들을 복구하기 위해 SSD 저장 장치에 의해 수행되는) 하나 이상의 가비지 컬렉션 동작들로 인해 지연될 가능성이 3배라는 것을 의미한다. KV-SSD(120)의 지연에 따라, KV-SSD(120) 시간은 가비지 컬렉션을 수행할 필요가 있을 수 있고, KV-SSD(120)의 다수의 판독 요청들을 수행하는 1의 응용 프로그램(125)이 동작할 것으로 예상되는 속도가 허용할 수 없을 정도로 느릴 수 있다.
전술한 바와 같이, 도 5는 도 4와 동일한 정보를 나타내지만, 상이한 순서로 도 3의 차원들(315, 310 및 305)을 사용하여 구성된다. 도 6 및 도 7에 도시된 정보의 대안적인 구성들이 도 6 및 도 7에 도시되지는 않지만, 본 발명의 실시 예들은 정보가 다양한 차원들(315, 310, 및 305)을 따라 상이한 순서로 구성되는 도 6 및 도 7에서 다양한 것들을 포함하도록 확장될 수 있다.
도 1의 응용 프로그램(125)이 이미지 파일들을 필요로 하는 경우, 도 1의 응용 프로그램(125)은 명백하게 도 4 및 도 7의 전체 이미지 객체(405)를 요구한 후에 관련 이미지 값들을 찾을 수 있다. 그러나, 이러한 접근법은 도 1의 응용 프로그램 (125)이 궁극적으로 필요하지 않은 많은 양의 데이터를 전송할 것을 요구한다. 예를 들어, 도 1의 응용 프로그램(125)이 4 : 2 : 2 크로마 서브 샘플링 기법을 사용하여 50% 해상도에서 이미지에 대한 크로마 데이터에만 관심이 있는 경우, 도 1의 응용 프로그램(125)은 임의의 다른 이미지 값들을 필요로 하지 않는다: 그것들을 전송하는 것은 자원과 에너지를 낭비할 수 있다(도 1의 KV-SSD(120) 내에서, 도 1의 응용 프로그램(125) 및 도 1의 기계(105) 및 도 1의 응용 프로그램(125)과 도 1의 KV-SSD(120)를 연결하는 임의의 다른 통신 경로들). 따라서, 본 발명의 실시 예들은 도 1의 KV-SSD(120)에서 원하는 이미지 값들을 격리할 수 있다는 것과 도 1의 응용 프로그램(125)이 실제로 필요로 하는 이미지 값들만 전송하는 것에서 이점을 얻을 수 있다.
도 8은 결과들을 수신하고, 도 1의 KV-SSD 내에서 도 4 내지 도 7의 이미지 객체(405)로부터 이미지 데이터를 요청하는 도 1의 응용 프로그램(125)을 도시한다. 도 8에서, 응용 프로그램(125)은 KV-SSD(120)로 전송된 판독 요청(805)를 발행할 수 있다. 요청(805)는 키(815) 및/또는 컨테이너(820)를 특정할 수 있는 정보(810)를 포함할 수 있다. 키(815)는 원하는 데이터를 저장하는 특정 객체를 식별하는데 임의의 키-값 쌍의 키가 사용될 수 있는 것과 마찬가지로, 도 4 내지 도 7의 이미지 객체(405)를 지정할 수 있다. 컨테이너(820)는 도 4 내지 도 7의 이미지 객체(405) 내의 특정 컨테이너를 격리시키는데 사용되어 그 컨테이너에 저장되어있는 이미지 값들만 검색되고 반환되도록 할 수 있다.
정보(810)는 단지 키(815) 또는 컨테이너(820)로 구성될 수 있거나, 정보(810)는 본 발명의 실시 예에 따라 키(815) 및 컨테이너(820) 모두를 포함 할 수 있다. 그리고, 도 8은 정보(810)가 키(815) 및 컨테이너(820)로 동등하게 분할될 수 있음을 제시하는 반면, 본 발명의 실시 예는 키(815) 및 컨테이너(820)를 정보(810)에서 함께 "혼합"하여, 정보(810)로부터 키(815) 및 컨테이너(820)를 파싱하기 위해 그것을 KV-SSD(120)에 맡겨둘 수 있다. 예를 들어, 도 4 및 도 5를 참조하여 상술 한 바와 같이, 정보(810)는 키(815)를 나타내는 “MyCatChroma”를 가진 컨테이너(820)로서 "4 : 2 : 2" 및 "50"라는 컨테이너들(각각 크로마 서브 샘플링 기법 및 해상도)을 포함 할 수 있는 "MyCat4 : 2 : 250Chroma"일 수 있다.
예를 들어, 다시 도 4를 고려한다. "0x1234"라는 키가 이미지 객체(405)를 식별한다고 가정한다. 도 8의 응용 프로그램(125)은 도 8의 정보(810)를 "0x1234 / 100% / 4 : 4 : 4"로써 전송할 수 있다. 키 0x1234는 이미지 객체(405)에 맵핑될 수 있고, "100% / 4 : 4 : 4"라는 컨테이너는 먼저 컨테이너(425-1)를 식별한 후에 컨테이너(425-1) 내의 컨테이너(430-3)를 식별 할 수 있다. 그 후에, 도 8의 KV-SSD(120)는 도 1의 응용 프로그램(120)이 특별히 이미지 값들(410-3, 415-3) (아래에서 설명되는 것처럼 그것들이 존재한다고 가정)을 원한다는 것을 식별할 수 있다.
도 8로 돌아가서, KV-SSD(120)는 이미지 값들(410-3, 415-3)을 검색 할 수 있다. 그 후에, 이들 이미지 값들은 이미지 데이터(825)로서 준비 될 수 있으며, 이미지 데이터(825)는 결과(830)에서 응용 프로그램(125)으로 반환 될 수 있다.
이제, 도 4 내지 도 7의 이미지 객체(405)가 요청된 이미지 값들을 저장하지 않으면 어떻게 될까? 예를 들어, 키(810)가 여전히 "0x1234"이지만, 컨테이너(820)가 "50% / 4 : 2 : 4"로 지정되었다면 어떻게 될까? 도 4의 이미지 객체(405)를 본다면, 4 : 2 : 4라고 레이블이 지정된 컨테이너가 없음을 보여준다. 이 상황에서, KV-SSD(120)는 제공된 정보(810)와 일치하는 값이 발견될 수 없다는 것을 보고하기 위해 응용 프로그램(125)에 "값이 없는" 메시지(835)를 반환 할 수 있다. 이 상황에서, 응용 프로그램(125)은 다른 정보(810)를 사용하여 이미지 값들을 요구할 수 있다. 예를 들어, 응용 프로그램(125)은 상이한 해상도 또는 크로마 서브 샘플링(또는 모두)에서 이미지로 작업 할 수 있거나, 응용 프로그램(125)은 대안 이미지 값들로부터 요구된 이미지 데이터를 생성 할 수 있다. 다른 대안들은 원래의 이미지 값을 반환하거나 모든 이미지 값들을 반환하는 것인데, 어느 경우든 응용 프로그램(125)이 원하는 해상도 및 크로마 서브 샘플링 기법에서 (어떤 방식으로) 이미지 파일을 생성하는 것을 승인한다.
또한, 본 발명의 일부 실시 예들-예를 들어, 도 7(및 아래의 도 11)에 도시 된 실시 예들-도 1의 응용 프로그램(125)은 해상도 및 크로마 서브 샘플링 기법들의 어떤 조합이 이용 가능한지를 알기에 충분한 정보를 가질 수 있고, 이는 도 1의 응용 프로그램(125)이 어떤 이용 가능한 이미지 값이 원하는 이미지 파일을 생성하기 위한 최적의 시작점인지를 결정할 수 있게 한다(또는, 새로운 이미지 파일을 생성하는 것 없이 직접적으로 사용할 수 있음).
본 발명의 실시 예들은 도 1의 KV-SSD(120)가 “값이 없는” 메시지(835)를 반환하는지 여부와 상관 없이 이용 가능한 이미지 값들에 관한 정보를 도 1의 응용 프로그램(125)으로 반환하는 도 1의 KV-SSD(120)를 포함 할 수 있으며-도 4 내지 도 7의 이미지 객체(405)의 각 컨테이너에 저장된 정보와 같은-도 1의 응용 프로그램(125)을 그것들 자체 사용을 위해 도 1의 KV-SSD(120)에 저장된 이미지 값들의 더 완전한 그림을 제공할 수 있다.
응용 프로그램(125)이 KV-SSD(120)로부터의 도 4 내지 도 7의 이미지 객체(405)로부터 데이터를 요청하면, KV-SSD(120)는 응용 프로그램(125)이 도 4 내지 도 7의 이미지 객체(405)와 다른 작업을 수행할 것을 예상할 수 있다. 이는 KV-SSD(120)가 “값이 없는” 메시지(835)를 반환할 때 (배타적이지는 않지만)특히 그러하다: KV-SSD(120)는 응용 프로그램(125)이 다른 정보(810)를 사용하여 데이터를 요청할 것으로 기대할 수 있고, 또한 응용 프로그램(125)이 도 4 내지 도 7의 이미지 객체(405)에 새로운 이미지 값을 기록 할 것으로 기대할 수 있다. 따라서, KV-SSD(120)는 도 4 내지 도 7의 이미지 객체(405)가 응용 프로그램(125)으로부터의 추가 요청들에 대해 준비되는 것을 유지할 수 있다: 예를 들어, 이미지 객체를 KV-SSD(120) 내의 DRAM에 저장함으로써. 도 4 내지 도 7의 이미지 객체(405)가 준비되도록 유지함으로써, KV-SSD(120)는 응용 프로그램(125)으로부터의 미래 요청을 신속하게 처리할 수 있고, 응용 프로그램(125)이 이미지 데이터를 더 빨리 처리하기 시작하는 것을 허용할 수 있다.
상기 설명에서, 요청(805)은 판독 요청으로서 설명된다. 그러나, 응용 프로그램(125)은 도 4 내지 도 7의 이미지 객체(405)에 새로운 이미지 값을 기록하기 위해 기록 요청을 발행 할 수도 있다. 응용 프로그램이 기록 요청으로서 요청(805)을 발행 할 때, KV-SSD(120)는 도 4 내지 도 7의 이미지 객체(405)를 식별하기 위해 이전처럼 키(815)를 사용할 수 있고, 새로운 이미지 값을 저장하기 위해 컨테이너(820)를 사용하여 도 4 내지 도 7의 이미지 객체(405) 내의 특정 컨테이너를 식별 할 수 있다. KV-SSD(120)는 또한 (지정된 컨테이너 조합이 도 4 내지 도 7의 이미지 객체(405) 내에 이미 존재하지 않는 경우) 새로운 이미지 값을 저장하기위해 컨테이너(820)를 사용하여 도 4 내지 도 7의 이미지 객체(405) 내에 새로운 컨테이너(들)을 생성할 수 있다.
통상적인 KV-SSD들은 키(815)와 관련된 객체("값")의 전체를 반환하도록 설계된다. KV-SSD(120)는 원하는 방식으로 도 4 내지 도 7의 이미지 객체(405)의 전체를 반환하지 않고도 도 4 내지 도 7의 이미지 객체(405)로부터 원하는 데이터를 추출하는 것을 지원하도록 수정될 수 있다. 예를 들어, KV-SSD(120)는 원하는 데이터 (컨테이너 (820)에 의해 식별 됨)만이 KV-SSD(120) 내의 저장 장치로부터 판독되도록 수정 될 수 있다. 또는, KV-SSD는 도 4 내지 도 7의 전체 이미지 객체(405)를 검색하기 위해 통상적인 키-값 판독 메커니즘을 이용할 수 있지만, 도 4 내지 도 7의 이미지 객체(405)를 스토리지 내 컴퓨팅 프로세서와 관련된 로컬 스토리지에 저장하고, 그 다음 (도 4 내지 도 7의 이미지 객체(405)의 나머지를 반환하지 않고) 응용 프로그램(125)으로 반환되는 원하는 데이터를 추출하기 위해 스토리지 내 컴퓨팅 프로세서를 사용할 수 있다. 응용 프로그램(125)이 (다른 이미지 데이터를 읽거나 새로운 이미지 값을 씀으로써) 도 4 내지 도 7의 이미지 객체(405)에 더 액세스 할 필요가 있을 것으로 예상하여, 도 4 내지 도 7의 이미지 객체(405)는 KV-SSD(120) 내의 로컬 스토리지에 보존 될 수 있다는 것에 유의해야 한다.
위의 도 4 내지 도 7은 이미지 값들이 구성될 수 있는 다양한 방법들을 보여준다. 그러나, 도 1의 상이한 응용 프로그램들(125) 각각은 이미지 객체(405) 내의 이미지 값들에 액세스하기를 원하지만, 컨테이너가 다른 방법들로 구성 될 것으로 기대한다. 예를 들어, 하나의 응용 프로그램은 이미지 값들이 도 4에서와 같이 구성 될 것으로 예상 할 수 있는 반면, 다른 응용 프로그램은 이미지 값들이 도 5에서와 같이 구성될 것으로 예상할 수 있다. 도 4 내지 도 7의 이미지 객체(405)가 하나 또는 다른 구성 방법으로 묶여있다면, 하나 또는 다른 응용 프로그램은 도 4 내지 도 7의 이미지 객체(405)로부터 이미지 값에 액세스 할 수 없을 수도 있다.
가능한 하나의 솔루션은 KV-SSD(120)가 컨테이너(820)를 재구성하는 것을 허용하는 것이다. 예를 들어, 이미지 객체(405)가 도 5에서처럼 구성되지만 응용 프로그램(125)이 "4 : 0 : 0 / 100%"로써 컨테이너(820)를 제공한다면, KV-SSD(120)는 컨테이너들의 순서를 "4 : 0 : 0 / 100%"로 변경할 수 있고, 이는 도 5의 이미지 값들(410-1, 415-1)을 찾는데 이용될 수 있다. 본질적으로, KV-SSD(120)는 정보(810) 내에 표현된 다양한 차원들을 결정하기 위해 정보(810)로부터 키(815) 및/또는 컨테이너 (820)를 파싱 한 다음, 이미지 값들을 저장하는데 사용되는 특정 구조에 적절한 정보(810)를 재구성 할 수 있다. 위험은 KV-SSD(120)가 응용 프로그램(125)에 의해 제공되는 바와 같이 컨테이너(820)를 변경하는 것을 허용하면 잘못된 재배치가 발생되어, KV-SSD(120)가 요청(805)을 만족시키지 못하게 된다는 것이다.
대신에, 본 발명의 실시 예들은 단일 이미지 객체에서 결합되는, 도 4 내지 도 7에서 도시되는 구성들 모두를 포함할 수 있다. 예를 들어, 도 9를 고려하라(도 4 및 도 5 모두에 비해 상당히 축소된 예시를 나타내지만, 이해하기에 충분 함). 도 4에서와 같이, 이미지 객체(405)는 이미지 값들(410-1 및 415-1)을 고유하게 배치시킬 수 있는 제 1 차원 컨테이너(425-1) 및 제 2 차원 컨테이너(430-1)를 포함한다. 이러한 배열은 도 1의 응용 프로그램(125)이 "100% / 4 : 0 : 0"로써 도 8의 컨테이너(820)를 제공하도록 허용한다. 그러나 게다가, 도 9는 이미지 객체(405)가 또한 제 3 컨테이너(905-1) 및 제 4 컨테이너(910-1)를 포함하는 것으로 도시한다. 제 3 컨테이너(905-1) 및 제 4 컨테이너(910-1)는 각각 본질적으로 도 5의 제 1 차원 컨테이너(430-1) 및 제 2 차원 컨테이너(425-1)이다. 또한, 제 4 컨테이너(910-1)는 이미지 값들(410-1, 415-1)에 대한 포인터들을 포함하여 이미지 값들(410-1, 415-1)이 제 4 컨테이너(910-1) 내에 위치하는 것처럼 보일 수 있다. 따라서, 도 8의 응용 프로그램(125)은 도 8의 컨테이너(820)를 "4 : 0 : 0 / 100%"로써 제공할 수 있고, 여전히 이미지 값들(410-1 및 415-1)을 배치시킬 수 있다.
컨테이너들(425-1, 905-1)은 모두 제 1 차원 컨테이너들이지만 상이한 차원들을 사용하고, 컨테이너들(430-1, 910-1)은 모두 제 2 차원 컨테이너들이지만 상이한 차원들을 사용한다는 점에 유의해야 한다. 사실상, 도 9의 이미지 객체(405)는 도 4 및 도 5로부터의 데이터 구조들 모두를 결합한다. 이러한 방식으로, 도 8의 응용 프로그램(125)은 도 8의 컨테이너(820)가 지정된 특정 순서에 대해 걱정할 필요가 없다.
도 10은 도 9와 유사하지만, 도 6에 도시 된 본 발명의 실시 예에 대한 변형을 도시한다. 도 9와 유사하게, 도 10은 이해하기에 충분할 정도로 축소된 도면이다. 도 10에서, 2개의 제 1 차원 컨테이너들(425-1 및 1005)이 도시된다: 제 1 차원 컨테이너(425-1)는 제 1 차원으로서 해상도를 사용하는 반면, 제 1 차원 컨테이너(1005)는 크로마 서브 샘플링 기법을 제 1 차원으로써 사용한다. 제 1 차원 컨테이너들(425-1 및 1005) 모두는 이미지 값들(410-1 및 415-1)을 식별한다. 그러나, "MyCatLuma"라는 키가 제 1 차원 컨테이너(425-1)와 쌍을 이루어 이미지 값(410-1)을 유일하게 식별하는 반면("MyCatLuma"라는 키는 크로마 서브 샘플링 방식 데이터가 키의 일부로서 요구되는 것에 관한 정보를 포함하는 것에 유의해야 한다), "MyCatLuma100"라는 키는 이미지 값(410-1)에 액세스하기 위해 연결(1010)을 사용하여 제 1 차원 컨테이너(1005)와 쌍을 이룰 것이다. 연결(1010)을 사용하는 키가 여전히 "루마"를 포함 할 필요가 있는 이유는 주어진 크로마 서브 샘플링 기법에 대해서조차도, 크로마 데이터가 다수의 상이한 크로마 파일들을 포함 할 수 있기 때문이다: 도 6에 도시 된 바와 같이, 루마 데이터 및 크로마 데이터는 별도의 이미지 값들로서 저장 될 수 있다. 유사하게, 1 차원 컨테이너(1005)를 사용하여 이미지 값(415-1)에 액세스하는 것은 100% 해상도의 이미지에 대해 크로마 데이터가 요구되는 것을 지정하기 위해 "MyCatChroma100"라는 키를 요구한다.
도 11은 또한 도 9와 유사하지만, 도 7에 도시 된 본 발명의 실시 예에 대한 변형을 도시한다. 도 6 내지 도 9와 유사하게, 도 11은 이해하기에 충분할 정도로 축소된 도면이다. 도 11에서, 테이블(705)은 하나 이상의 차원을 따른 엔트리들을 포함 할 수 있다. 도 1의 응용 프로그램(125)은 엔트리를 관심있는 차원에 대해 원하는 값을 나타내는 테이블(705)에 배치시킬 수 있고, 추가 정보에 액세스하기 위해 관련 키를 사용할 수 있다. 따라서, 예를 들어, 도 1의 응용 프로그램(125)이 먼저 해상도를 사용하였으면, 도 1의 응용 프로그램(125)은 테이블(705)로부터 key 1을 액세스 할 수 있다; 그렇지 않으면, 도 1의 응용 프로그램(125)은 테이블(705)로부터 key 13에 액세스 할 수 있다. 어느 쪽이든, 도 1의 응용 프로그램(125)은 선택된 키를 KV-SSD(120)에 제공 할 수 있고, 응답으로 테이블(710-1) 또는 테이블(1105)을 수신 할 수 있다. 그러나, 테이블들(710-1, 1105) 모두에서 이미지 객체들(410-1, 415-1)에 대한 키들은 동일하고, 도 1의 응용 프로그램(125)이 임의의 원하는 순서로 차원들을 사용하여 이미지 객체들(410-1, 415-1)에 액세스할 수 있게 한다는 것을 유의해야 한다.
도 12는 도 1의 KV-SSD(120)의 세부 사항을 도시한다. 도 12에서, KV-SSD(120) 내의 플래시 메모리 칩들 상에 데이터가 저장되는 방법에 대한 세부 사항들, 도 1의 기계(105)와의 인터페이스 및 통상적인 KV-SSD에 비해 변경되지 않은 다른 세부 사항들이 생략된 채로, 훨씬 단순화된 KV-SSD가 도시된다.
도 12에서, KV-SSD(120)는 데이터(1205)를 저장할 수 있다. 데이터(1205)는 KV-SSD(120)와 함께 사용될 수 있는 플래시 메모리 칩에 또는 임의의 다른 원하는 형식으로 저장 될 수 있다: 데이터(1205)는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)를 포함할 수 있다. KV-SSD(120)는 또한 수신기(1210), 객체 식별자(1215), 데이터 접근자(1220), DRAM(1225), 데이터 추출기(1230) 및 송신기(1235)를 포함 할 수 있다. 수신기(1210)는 도 1의 응용 프로그램(125)으로부터 도 8의 요청(805)과 같은 요청들을 수신할 수 있다. 도 8을 참조하여 설명된 바와 같이, 요청(805)은 판독 요청이거나 기록 요청일 수 있으며, (새로운 이미지 값들이 도 4 내지 7 및 도 9 내지 도 11의 이미지 객체(405)에 기록되어야 하는 경우) 정보(810) 및 이미지 데이터를 포함 할 수 있다. 객체 식별자(1215)는 정보(810)로부터 도 8의 키(815)를 취할 수 있고, 도 8의 키(815)를 데이터(1205)에 저장된 객체로 맵핑할 수 있다. 데이터 접근자(1220)는 데이터(1205)로부터 객체 식별자(1215)에 의해 식별되는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)에 액세스 할 수 있다. DRAM(1225)은 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)가 다시 사용될 것으로 예상되며, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)의 복사본을 더 빠른 저장 형태로 저장하는데 사용될 수 있다. 또한, 도 12는 DRAM(1225)을 도시하지만, 본 발명의 실시 예들은 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)를 DRAM과 다른 저장 형태로 저장할 수 있다: 임의의 다른 저장 형태는 원하는대로 사용될 수 있다. 데이터 추출기(1230)는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)로부터 특정 이미지 값들을 추출 할 수 있다: 예를 들어, 도 8의 컨테이너(820)가 "100% / 4 : 0 : 0"인 경우, 데이터 추출기(1230)는 이미지 값들(410-1, 415-1)을 추출 할 수 있다. 최종적으로, 송신기(1235)는 임의의 추출 된 이미지 값들(또는 적절하다면 도 4 내지 7 및 도 9 내지 11의 이미지 객체(405) 전체)을 도 8의 응용 프로그램(125)으로 전송할 수 있다.
도 13a 내지 도 13b는 도 1의 KV-SSD(120)에서 도 4 및 도 5의 이미지 객체(405)의 이미지 데이터에 대한 요청에 응답하는 도 1의 KV-SSD(120)에 대한 예시적인 절차의 흐름도를 도시한다. 도 13a의 블록 (1305)에서, 도 12의 수신기(1210)는 도 8의 정보(810)를 포함할 수 있는 도 8의 응용 프로그램(125)으로부터 도 8의 요청(805)을 수신할 수 있다. 도 13a 및 도 13b에서, 요청(805)은 읽기 요청이다: 쓰기 요청들은 도 14에 설명되어 있다. 블록 (1310)에서, 도 1의 KV-SSD(120)는 도 8의 정보(810) 내에 도 8의 키(815)를 식별하기 위해 도 8의 정보(810)를 분석할 수 있다. 블록(1315)에서, 도 1의 KV-SSD(120)는 도 8의 정보(810) 내에 도 8의 컨테이너(820)를 식별하기 위해, 도 8의 정보(810)를 분석할 수 있다. 블록들(1310, 1315)은 배타적이지 않다는 것에 유의해야 한다: 본 발명의 실시 예에 따라, 블록들(1310, 1315) 중 어느 하나가 실행될 수 있거나 블록들(1310, 1315) 모두가 실행될 수 있고, 어느 순서로든 실행될 수 있다. 블록(1320)에서, 도 12의 객체 식별자(1215)는 도 4, 도 5 및 도 9의 이미지 객체(405)를 식별하기 위해 도 8의 정보(810)로부터 도 8의 키(815)를 사용할 수 있다. 블록(1325)에서, 도 12의 데이터 접근자(1220)는 원하는 이미지 데이터를 포함하는 도 4, 도 5 및 도 9의 이미지 객체(405) 내의 특정 컨테이너를 식별하기 위해 도 8의 정보(810)로부터 도 8의 컨테이너(820)를 사용할 수 있다.
블록(1330)(도 13b)에서, 도 8의 KV-SSD(120)는 원하는 이미지 값이 존재하는지를 판단할 수 있다: 예를 들어, 그것들의 컨테이너들이 존재하지 않으면 원하는 이미지 값들이 존재하지 않을 수 있다. 원하는 이미지 값이 존재하면, 블록(1335)에서도 12의 데이터 접근자(1220)가 이미지 값들에 액세스하고, 블록(1340)에서 도 12의 송신기(1235)는 액세스 된 이미지 값들을 도 8의 응용 프로그램(125)으로 전송할 수 있다. 원하는 이미지 값들이 존재하지 않으면, 블록(1345)에서 도 12의 송신기(1235)는 “값이 없는” 메시지를 도 8의 응용 프로그램(125)으로 전송할 수 있다.
도 14는 본 발명의 실시 예에 따라, 도 4, 도 5 및 도 9의 이미지 객체(405) 내에 새로운 이미지 값을 저장하기 위한 도 1의 KV-SSD(120)에 대한 예시적인 절차의 흐름도를 도시한다. 도 14의 블록(1405)에서, 도 12의 수신기(1210)는 도 8의 정보(810) 및 도 8의 응용 프로그램(125)으로부터의 새로운 이미지 파일(또는 하나 이상의 새로운 이미지 파일)과 함께 도 8의 요청(805)을 수신 할 수 있다. 블록(1410)에서, 도 12의 객체 식별자(1215)는 도 4, 도 5 및 도 9의 이미지 객체(405)를 식별하기 위해 도 8의 정보(810)로부터 도 8의 키(815)를 사용할 수 있다. 블록(1415)에서, 도 12의 데이터 접근자(1220)는 도 4, 도 5 및 도 9의 이미지 객체(405) 내의 타겟 제 1 차원 컨테이너를 식별하기 위해 도 8의 정보(810)로부터 도 8의 컨테이너(820)를 사용할 수 있다. 블록(1420)에서, 도 12의 데이터 접근기(1220)는 도 4, 도 5 및 도 9의 이미지 객체(405) 내의 타겟 제 2 차원 컨테이너를 식별하기 위해 도 8의 정보(810)로부터 도 8의 컨테이너(820)를 사용할 수 있다. 도 14의 나머지 설명에서, 타겟 제 1 차원 컨테이너 및 타겟 제 2 차원 컨테이너가 존재한다고 가정된다; 그렇지 않다면, 도 8의 KV-SSD(120)는 진행할 필요가 있을 때 도 4, 도 5 및 도 9의 이미지 객체(405) 내의 이 컨테이너들을 생성할 수 있다.
블록(1425)에서, 도 8의 KV-SSD(120)는 타겟 제 2 차원 컨테이너에 새로운 이미지 값(들)을 저장할 수 있고, 그 후에 (점선 화살표(1430)로 도시된 것과 같이) 처리가 종결될 수 있다. 그러나, 도 4, 도 5 및 도 9의 이미지 객체(405)가 도 9를 참조하여 설명된 바와 같이 다수의 중첩하는 컨테이너 구조를 포함하는 경우, 블록(1435)에서, 도 8의 KV-SSD(120)는 새로운 이미지 값을 포함하여야 하는 다른 제 1 차원 컨테이너를 위치시킬 수 있고(예를 들어, 도 8의 정보(810)로부터 도 8의 컨테이너(820)내의 컨테이너들의 순서를 변경함으로써), 블록(1440)에서, 도 8의 KV-SSD(120)는 새로운 이미지 값을 포함하여야 하는 다른 제 2 차원 컨테이너를 위치시킬 수 있다. 최종적으로, 블록(1445)에서, 도 8의 KV-SSD(120)는 추가적인 제 2 차원 컨테이너 내에 새로운 이미지 값을 저장할 수 있다(또는 아마도 포인터를 사용하여 추가적인 제 2 차원 컨테이너로 블록(1425)에 저장된 이미지 값을 연결). 도시 된 바와 같이 도 14는 이 시점에서 처리를 완료하지만, 제어는 블록(1435)으로 다시 돌아가서, 적절한 경우, 또 다른 컨테이너 경로에 새로운 이미지 값을 저장하는 프로세스를 반복한다.
도 15는 본 발명의 실시 예에 따라, 도 4, 도 5 및 도 9의 이미지 객체(405)에 새로운 이미지 값을 저장하기 위한 도 1의 KV-SSD(120)에 대한 예시적인 절차의 흐름도를 도시한다. 도 15의 블록(1505)에서 도 12의 데이터 추출기(1230)는 새로운 이미지 파일로부터 루마 데이터를 추출 할 수 있고, 블록(1510)에서 도 12의 데이터 추출기(1230)는 새로운 이미지 파일로부터 크로마 데이터를 추출 할 수 있다. 블록(1515)에서, 도 8의 KV-SSD(120)는 추출된 루마 데이터를 도 12의 데이터(1205)에 하나의 값으로 저장할 수 있다. 블록 (1520)에서, 도 8의 KV-SSD(120)는 추출 된 크로마 데이터를 도 12의 데이터(1205)에 다른 값으로 저장할 수 있다.
도 16a 및 도 16b는 본 발명의 실시 예에 따라, 도 1의 KV-SSD(120)에서 도 6 및 도 9의 이미지 객체(405)의 이미지 데이터에 대한 요청에 응답하는 도 1의 KV-SSD(120)에 대한 예시적인 절차의 흐름도를 도시한다. 도 16a를 참조하면, 블록(1605)에서, 도 1의 KV-SSD(120)는 도 1의 응용 프로그램(125)으로부터 도 8의 정보(810)를 수신할 수 있다. 블록 (1610)에서, 도 1의 KV-SSD(120)는 도 8의 정보(810)내의 도 8의 키(815)를 식별하기 위해 도 8의 정보(810)를 분석할 수 있다. 블록(1615)에서, 도 1의 KV-SSD(120)는 도 8의 정보(810)내의 도 8의 컨테이너(820)를 식별하기 위해 도 8의 정보(810)를 분석할 수 있다. 블록들(1610, 1615)은 배타적이지 않다는 것에 유의해야 한다: 본 발명의 개념의 실시 예에 따라, 블록들(1610, 1615) 중 어느 하나가 실행될 수 있거나 블록들(1610, 1615) 모두가 어느 순서로든 실행될 수 있다. 블록(1620)에서, 도 1의 KV-SSD(120)는 도 6의 제 1 차원 컨테이너들(425-1, 425-2 또는 425-3)을 식별하기 위해 도 8의 정보(810)의 도 8의 컨테이너(820)를 사용할 수 있다. 블록(1625)에서, 도 1의 KV-SSD(120)는 식별된 제 1 차원 컨테이너 내의 도 6의 원하는 이미지 값(410-1, 410-4, 415-1, 415-2, 415-3, 415-4, 415-5, 415-6 또는 420)을 식별하는 것을 시도하기 위해 도 8의 정보(810)의 도 8의 키(815)를 사용할 수 있다.
블록(1630)(도 16b)에서, 도 1의 KV-SSD(120)는 원하는 이미지 값이 식별된 제 1 차원 컨테이너에서 발견되는지를 판단할 수 있다. 만약 그렇다면, 블록(1635)에서 도 1의 KV-SSD(120)는 원하는 이미지 값을 검색 할 수 있고, 블록(1640)에서 도 1의 KV-SSD(120)는 원하는 이미지 값을 도 1의 응용 프로그램(125)으로 전송할 수 있다. 그렇지 않으면, 블록(1645)에서, 도 1의 KV-SSD(120)는 도 8의 “값이 없는” 메시지(835)를 도 1의 응용 프로그램(125)으로 전송할 수 있고, 이는 원하는 이미지 값이 식별된 제 1 차원 컨테이너에서 발견 될 수 없음을 나타낸다.
도 17은 본 발명의 실시 예에 따라, 도 6 및 도 9의 이미지 객체(405)에 새로운 이미지 데이터를 저장하기 위한 도 1의 KV-SSD(120)에 대한 예시적인 절차의 흐름도를 도시한다. 도 17의 블록(1705)에서, 도 1의 KV-SSD(120)는 도 1의 응용 프로그램(125)으로부터 새로운 이미지 파일을 수신할 수 있다. 블록(1710)에서, 도 1의 KV-SSD(120)는 새로운 이미지 파일이 새로운 이미지 값으로서 저장되는 제 1 차원 컨테이너(425-1, 425-2 또는 425-3)를 식별 할 수 있다. 식별된 제 1 차원 컨테이너가 존재하지 않으면, 그것이 생성 될 수 있다는 점에 유의해야 한다. 예를 들어, 새로운 이미지 파일이 25% 해상도이고, 도 6의 제 1 차원 컨테이너(425-3)가 존재하지 않는 경우, 도 6의 제 1 차원 컨테이너(425-3)가 먼저 생성될 수 있다. 그 다음, 블록(1715)에서, 도 1의 KV-SSD(120)는 식별된 제 1 차원 컨테이너에 새로운 이미지 값을 저장할 수 있다.
블록 (1720)에서, 도 1의 KV-SSD(120)는 새로운 이미지 파일이 새로운 이미지 값으로서 저장되는 도 10의 제 2 차원 컨테이너(1005)를 식별 할 수 있다. 식별된 제 2 차원 컨테이너가 존재하지 않으면, 그것이 생성 될 수 있다는 점에 유의해야 한다. 예를 들어, 새로운 이미지 파일이 4 : 0 : 0 크로마 서브 샘플링 기법을 사용하고 도 10의 제 2 차원 컨테이너(1005)가 존재하지 않으면, 도 10의 제 2 차원 컨테이너(1005)가 먼저 생성될 수 있다. 그 다음, 블록(1725)에서, 도 12의 KV-SSD(120)는 식별된 제 2 차원 컨테이너에 새로운 이미지 값을 저장할 수 있다. 블록들(1720, 1725)은 점선(1730)으로 도시 된 바와 같이 생략 될 수 있다.
도 18a 및 도 18b은 본 발명의 실시 예에 따라, 도 1의 KV-SSD(120)로부터 도 7 및 도 11의 이미지 객체(405) 내의 이미지 데이터를 요청하기 위한 도 1의 응용 프로그램(125)에 대한 예시적인 절차의 흐름도를 도시한다. 도 18a의 블록(1805)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)로 제 1 키를 전송할 수 있다. 이 제 1 키는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)에 대한 키일 수 있다. 블록(1810)에서, 도 1의 응용 프로그램(125)은 제 1 차원에 따라 이미지 값을 구성할 수 있는 도 7의 테이블(705)을 수신할 수 있다. 블록(1815)에서, 도 1의 응용 프로그램(125)은 테이블(705)로부터 제 2 키를 결정할 수 있다. 도 1의 응용 프로그램(125)은 제 2 키를 선택하기 위해 테이블(705)에서 이용 가능한 데이터에 따라, 요구되는 이미지 값에 대해 원하는 해상도 또는 크로마 서브 샘플링 기법을 사용할 수 있다. 만약 도 1의 KV-SSD(120)에서 특정 해상도 또는 크로마 서브 샘플링 기법이 이용 가능하지 않다면, 도 1의 응용 프로그램(125)은 대안적인 해상도 또는 크로마 서브 샘플링 기법을 선택할 수 있고, 잠재적으로 수신된 이미지 값을 사용하여 원하는 해상도 및 크로마 서브 샘플링 기법으로 새로운 이미지 파일을 생성 할 수 있다.
블록(1820)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)에 제 2 키를 전송할 수 있다. 블록(1825)에서, 도 1의 응용 프로그램(125)은 제 2 차원에 따라 이미지 값들을 구성할 수 있는 도 7의 테이블(710-1, 710-2 또는 710-3)을 수신 할 수 있다. 블록 (1830)에서, 도 1의 응용 프로그램(125)은 수신된 테이블로부터 제 3 키를 결정할 수 있다. 도 1의 응용 프로그램(125)은 수신된 테이블에서 이용 가능한 데이터에 따라, 요구되는 이미지 값에 대해 원하는 해상도 또는 크로마 서브 샘플링 기법을 사용하여 제 3 키를 선택할 수 있다.
블록(1835)에서, 도 1의 응용 프로그램(125)은 제 3 키를 도 1의 KV-SSD(120)로 전송할 수 있다. 블록(1840)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)로부터 도 7의 원하는 이미지 값(410-1, 410-4, 415-1, 415-2, 415-3, 415-4, 415-5, 415-6 또는 420)을 수신 할 수 있다.
블록 (1845)(도 18b)에서, 도 1의 응용 프로그램(125)은 새로운 이미지 파일을 생성 할 수 있다. 블록(1850)에서, 도 1의 응용 프로그램(125)은 새로운 이미지 파일을 도 1의 KV-SSD(120)로 전송할 수 있다. 블록 (1855)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD (120)로부터 새로운 이미지 값에 대한 새로운 키를 수신 할 수 있다. 블록(1860)에서, 도 1의 응용 프로그램(125)은 새로운 이미지 값의 저장을 반영하기 위해, 도 7의 테이블들(705, 710-1, 710-2 및/또는 710-3)을 갱신하기 위한 새로운 키를 사용할 수 있다. 본 발명의 일부 실시 예에서, KV-SSD(120)가 도 1의 KV-SSD(120) 상의 어느 데이터 구조들이 새로운 이미지 파일이 새로운 해상도/크로마 서브 샘플링 기법인 이미지 객체와 관련되는지를 판단하기에 충분한 정보를 갖는다면, 블록들(1855, 1860)은 도 1의 KV-SSD(120)에 의해 수행 될 수 있다는 것에 유의해야 한다. 또한, 새로운 이미지 파일이 생성될 필요가 없다면, 블록들(1845, 1860)은 점선(1865)에 의해 도시 된 바와 같이 생략 될 수 있다.
도 19는 본 발명의 실시 예에 따라, 도 7 및 도 9의 이미지 객체(405) 내의 새로운 이미지 데이터를 도 1의 KV-SSD(120)에 저장하기 위해 도 7의 데이터 구조들(705, 710-1, 710-2, 및/또는 710-3)을 갱신하기 위한 도 1의 응용 프로그램(125)에 대한 예시적인 절차의 흐름도를 도시한다. 도 19의 블록(1905)에서, 도 1의 응용 프로그램(125)은 도 7의 적절한 2차언 테이블(710-1, 710-2, 또는 710-3)이 존재하는지를 판단할 수 있다. 만약 그렇다면, 블록(1910)에서, 도 1의 응용 프로그램(125)은 새로운 이미지 값/새로운 키 쌍을 반영하기 위해 적절한 제 2 차원 테이블에 새로운 엔트리를 추가 할 수 있다. 그렇지 않으면, 블록(1915)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)에게 새로운 제 2 차원 테이블 객체를 생성하도록 지시할 수 있다. 블록 (1920)에서, 도 1의 응용 프로그램(125)은 도 1의 KV-SSD(120)로부터 새로운 제 2 차원 테이블에 대한 키를 수신 할 수 있다. 블록(1925)에서, 도 1의 응용 프로그램(125)은 새로운 이미지 값/새로운 키 쌍을 반영하기 위해 새로운 제 2 차원 테이블 객체에 엔트리를 추가 할 수 있다. 최종적으로, 블록(1930)에서, 도 1의 응용 프로그램(125)은 새로운 제 2 차원 테이블/새로운 제 2 차원 테이블 키 쌍을 반영하기 위해 도 7의 제 1 차원 테이블(705)을 갱신할 수 있다. 도 7의 제 1 차원 테이블(705)이 존재해야 하며, 그렇지 않으면 도 1의 KV-SSD(120)는 도 4의 이미지 객체(405)를 전혀 저장하지 않는다는 것에 유의해야 한다. 또한, 본 발명의 일부 실시 예에서, 도 1의 KV-SSD(120)가 도 1의 KV-SSD(120) 상의 어느 데이터 구조들이 새로운 이미지 파일이 새로운 해상도/크로마 서브 샘플링 기법인 이미지 객체와 관련되는지를 판단하기에 충분한 정보를 갖는다면, 도 19에 도시된 흐름도는 도 1의 KV-SSD(120)에 의해 수행 될 수 있다는 것에 유의해야 한다.
도 13a 내지 도 19를 참조하면, 본 발명의 일부 실시 예들이 도시된다. 그러나, 당업자는 블록들의 순서를 변경하거나, 블록들을 생략하거나, 도면에 도시되지 않은 연결들을 포함함으로써 본 발명의 다른 실시 예들도 가능하다는 것을 인식할 것이다. 흐름도의 이러한 모든 변형은 명시적으로 기술되었든 아니든간에 본 발명의 개념의 실시 예인 것으로 간주된다.
본 발명의 실시 예들은 종래 기술에 비해 몇 가지 기술적 이점들을 제공한다. 먼저, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)는 임의의 수의 해상도로 및/또는 크로마 서브 샘플링 기법을 사용하여 이미지에 대한 데이터를 저장할 수 있다. 모든 데이터를 도 4 내지 도 7 및 도 9 내지 도 11의 단일 이미지 객체(405)에 저장함으로써, 특정 크로마 서브 샘플링 기법을 사용하여 특정 해상도의 이미지 파일을 찾기 위해 모든 사용 가능한 스토리지를 검색 할 필요 없이, 임의의 응용 프로그램이 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)내의 원하는 이미지 데이터를 찾을 수 있도록 데이터가 구성된다. 이러한 이점은 또한 동일한 이미지 데이터의 중복되는 복사본들이 스토리지의 서로 다른 위치들에 있는 각 응용 프로그램에 의해 독립적으로 관리될 필요가 없으므로 저장 공간을 절약하는데 도움이 된다.
하나의 상관 관계로서, 도 1의 응용 프로그램(125)이 이미지 데이터를 생성함에 따라, 다른 응용 프로그램들이 새로운 이미지 데이터를 찾도록 허용하면서, 새로운 이미지 데이터는 또한, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)내에 저장될 수 있다.
셋째, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)를 저장하기 위해 도 1의 KV-SSD(120)를 사용하는 것은 또한, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)에 대한 키-값 스토리지의 전력을 활용하는 것을 허용한다. 통상적인 파일 시스템은 각 파일을 개별적으로 저장하고 관리하지만(본 발명의 실시 예가 해결하도록 설계된 이미지 데이터 파일 관리의 복잡성을 생성함), 객체는 객체 내의 데이터의 실제 구조에 관계없이 데이터가 단위로 그룹화되고 저장되는 것을 허용한다. 키들을 도 1의 KV-SSD(120) 상의 스토리지 위치들에 맵핑하는 것은 또한, 빠른 경향이 있으며 이는 이미지 데이터로의 빠른 액세스를 허용한다. 그리고, 도 1의 KV-SSD(120) 상에 저장된 객체들 상에 (일종의) 구조를 부과하기 위해 사용될 수 있는 컨테이너들은 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405) 내의 데이터의 구성을 허용하고 이는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405) 내에 특정 이미지 데이터의 빠른 위치를 가능하게 한다.
넷째, 도 1의 KV-SSD(120)는 도 8의 컨테이너(820) 및 도 8의 키(815) 모두를 수신할 수 있다. 도 1의 KV-SSD(120)는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405) 전체를 반환하기 보다 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)로부터 특정 이미지 데이터를 찾고 반환하기 위해 도 8의 컨테이너(820)를 사용할 수 있다. 도 1의 응용 프로그램(125)은 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)가 도 1의 KV-SSD(120)로부터 반환되거나 원하는 이미지 데이터를 추출하기를 기다릴 필요가 없으므로, 이것 역시, 도 1의 응용 프로그램(125)의 동작을 촉진시킨다(그리고, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)의 나머지를 버린다).
다섯째, 본 발명의 실시 예들은 도 1의 KV-SSD(120)의 전반적인 동작을 더 향상시키기 위해 다른 발명 개념들과 결합 될 수 있다. 예를 들어, 여기에서 모든 목적들을 위해 통합되는 2016년 5월 4일자로 출원된 미국 특허 출원 제 15/146,708호, 2016년 2월 17일자로 출원된 미국 특허 출원 제 15/046,439호의 계속 출원으로 2018년 2월 20일자로 출원된 미국 특허 출원 제 9,898,202호, 2016년 3월 1일자로 출원된 미국 특허 출원 제 62/302,162호에 대해 우선권을 주장하는 2018년 1월 30일자로 출원된 미국 특허 출원 제 9,880,780호에 개시되는 바와 같이, 본 발명의 실시 예들을 멀티 스트리밍을 지원하는 KV-SSD와 결합함으로써, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)가 포함하는 모든 요청들은 단일 스트림에 할당될 수 있고, 따라서 도 1의 KV-SSD(120) 상의 관련된 소거 블록들에 저장된 모든 이미지 데이터가 유지될 수 있다. 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)에 대한 데이터는 유효 데이터로 채워지거나 거의 동시에 무효화될 가능성이 있는 소거 블록을 (부분적으로 또는 완전히) 채울 수 있기 때문에, 이것은 결국, 도 1의 KV-SSD(120)에서 가비지 컬렉션 성능을 향상시킬 수 있다. 본 발명의 실시 예들은 또한 소거 블록들이 무효한 데이터로 채워지거나(따라서, 가비지 컬렉션 동안 임의의 데이터를 프로그래밍 할 필요 없이 삭제할 수 있다: 가비지 컬렉션을 위한 좋은 선택) 유효한 데이터로 채워지도록(따라서 가비지 컬렉션을 위한 잘못된 선택) 공통 소거 블록들에 저장되는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)를 유지하는 것을 다시 시도하기 위해 소거 블록 타겟화 메커니즘들 및 채널 타겟화 메커니즘들과 같은 다른 개념과 결합될 수 있다.
여섯째, 도 1의 응용 프로그램(125)에 의해 요구되는 특정 이미지 값들을 식별하기 위해 도 8의 키(815) 및 도 8의 컨테이너(820)를 사용함으로써, 도 1의 KV-SSD(120)는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)의 전체를 반환하는 것을 피할 수 있다. 도 1의 응용 프로그램(125)은 특정 해상도의 이미지 데이터 및 특정 크로마 서브 샘플링 기법을 사용하는 것을 원할 가능성이 있으므로, 저장되는 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)의 전체를 반환하는 것은 도 1의 응용 프로그램(125)이 실제로 원하는 것보다 더 많은 데이터를 전송할 가능성이 있고, 이는 추가의 시간이 걸린다. 또한, 도 1의 응용 프로그램(125)은 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405) 내에 원하는 데이터를 배치시켜야 하고(다시 시간이 걸림), 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)로부터 원하지 않는 데이터 모두를 삭제한다(일시적인 스토리지를 사용함). 도 1의 응용 프로그램(125)으로 어떤 것을 전송하기 전에, 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)로부터 원하는 데이터를 분리하기 위해 도 1의 KV-SSD(120)를 수정하는 것은 도 1의 응용 프로그램(125)이 원하지 않는 데이터 필터링을 수행하는 것을 방지하고, 전송 시간을 감소시킨다.
도 1의 KV-SSD(120)는 임의의 원하는 방식으로 도 4 내지 도 7 및 도 9 내지 도 11의 이미지 객체(405)로부터 데이터 추출을 수행할 수 있다. 예를 들어, 도 1의 KV-SSD(120)의 스토리지 내 컴퓨팅 능력이 존재한다면 그런 것을 사용함으로써.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 기계 또는 기계들의 짧고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 적어도 일부는 다른 기게로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, "기계"의 용어는 단일 기계, 가상 기계, 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC (Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙력된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 원소들을 수행하게 하는 명령들을 포함하는 실재하는 비임시 기계 독출 매체를 포함할 수 있다.
위에서 설명된 방법들의 다양한 동작들은 다양한 하드웨어 및/또는 소프트웨어 구성 요소(들), 회로들, 및/또는 모듈(들)과 같은 동작들을 수행 할 수 있는 임의의 적절한 수단에 의해 수행 될 수 있다. 소프트웨어는 논리적 기능을 구현하기 위한 실행 가능한 명령들의 순서화된 목록을 포함 할 수 있으며, 단일 또는 다중 코어 프로세서 또는 프로세서-포함 시스템과 같은 장치(device), 명령 실행 시스템, 기구(apparatus)와 관련하여 또는 이것들에 의한 사용을 위한 임의의 "프로세서 판독 가능 매체"에서 구현 될 수 있다.
본 명세서에 개시된 실시 예와 관련하여 설명 된 방법 또는 알고리즘 및 기능의 블록들 또는 단계들은 하드웨어, 프로세서에 의해 실행중인 소프트웨어 모듈, 또는 이들의 조합으로 직접 구현 될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 실재하고, 비-일시적 컴퓨터 판독 가능 매체 상에 저장되거나, 하나 이상의 명령 또는 코드로서 전송될 수 있다. 소프트웨어 모듈은 RAM(random access memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM, 또는 이 기술 분야에 알려진 임의의 다른 형태의 저장 매체 일 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 필요한 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 구체적인 실시 예들에 집중하였지만, 다른 구성돌 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 또는 여기에 사용된 유사한 것들에 불구하고, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.
본 발명의 실시 예들은 제한없이 다음의 설명으로 확장될 수 있다.
설명 1. 본 발명의 실시 예는 기계 상에서 실행되는 응용 프로그램에 의한 액세스를 위해 이미지 객체를 저장하는 KV-SSD(Key-Value Solid State Drive)를 포함한다. 상기 KV-SSD는:
상기 KV-SSD에 저장되고, 상기 응용 프로그램에 의해 사용되는 복수의 이미지 값들을 포함하는 데이터 구조를 포함하고,
상기 데이터 구조는:
제 1 차원에 따라 상기 이미지 객체 내의 데이터를 구성하는 복수의 제 1 차원 컨테이너들;
상기 복수의 제 1 차원 컨테이너들 각각에서, 제 2 차원에 따라 상기 데이터를 구성하는 복수의 제 2 차원 컨테이너들; 및
상기 복수의 제 2 차원 컨테이너들 각각에서, 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식으로 상기 이미지 객체에 대한 이미지 데이터를 저장하는 적어도 하나의 이미지 값을 포함한다.
설명 2. 본 발명은 설명 1에 따른 KV-SSD를 포함하되,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이고,
상기 제 2 차원은 상기 해상도 차원 및 상기 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 3. 본 발명은 설명 2에 따른 KV-SSD를 포함하되, 상기 데이터 구조는:
상기 제 2 차원에 따라 상기 이미지 객체 내의 상기 데이터를 구성하는 복수의 제 3 차원 컨테이너들; 및
상기 복수의 제 3 차원 컨테이너들 각각에서, 상기 제 1 차원에 따라 상기 데이터를 구성하는 복수의 제 4 차원 컨테이너들; 및
상기 복수의 제 4 차원 컨테이너들 각각에서, 상기 해상도 및 상기 크로마 서브 샘플링 기법으로 상기 이미지 객체를 저장하는 적어도 하나의 이미지 값에 대한 적어도 하나의 포인터를 더 포함한다.
설명 4. 본 발명은 설명 1에 따른 KV-SSD를 포함하되,
상기 응용 프로그램으로부터 정보를 수신하는 수신기;
상기 정보로부터 키를 사용하여 상기 이미지 객체를 식별하는 객체 식별자;
상기 정보 내의 컨테이너를 사용하여 상기 데이터 구조 내의 상기 적어도 하나의 이미지 값에 액세스하는 데이터 접근자; 및
상기 적어도 하나의 이미지 값을 상기 응용 프로그램으로 전송하는 송신기를 더 포함한다.
설명 5. 본 발명은 설명 4에 따른 KV-SSD를 포함하되,
상기 송신기는 상기 적어도 하나의 이미지 값이 원하는 해상도 및 크로마 서브 샘플링에서 상기 이미지 데이터를 포함하지 않는 경우, 값이 없는 메시지를 상기 응용 프로그램으로 송신하도록 동작한다.
설명 6. 본 발명은 설명 1에 따른 KV-SSD를 포함하되, 상기 KV-SSD는 새로운 이미지 값으로부터 루마 데이터 또는 크로마 데이터를 추출하여 상기 이미지 객체에 저장하는 데이터 추출기를 더 포함한다.
설명 7. 본 발명은 설명 1에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 루마 데이터만을 저장한다.
설명 8. 본 발명은 설명 1에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 크로마 데이터만을 저장한다.
설명 9. 본 발명의 실시 예는 기계 상에서 실행되는 응용 프로그램에 의한 액세스를 위해 이미지 객체를 저장하는 KV-SSD(Key-Value Solid State Drive)를 포함한다. 상기 KV-SSD는:
상기 KV-SSD에 저장되고, 상기 응용 프로그램에 의해 사용되는 복수의 이미지 값들을 포함하는 데이터 구조를 포함하고,
상기 데이터 구조는:
제 1 차원에 따라 상기 이미지 객체 내의 데이터를 구성하는 복수의 제 1 차원 컨테이너들; 및
상기 복수의 제 1 차원 컨테이너들 각각에서, 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식으로 상기 이미지 객체에 대한 이미지 데이터를 저장하는 적어도 하나의 이미지 값을 포함한다.
설명 10. 본 발명은 설명 9에 따른 KV-SSD를 포함하되,
상기 복수의 제 1 차원 컨테이너들은 제 2 차원에 따라 상기 이미지 객체에서 상기 데이터를 구성하는 복수의 제 2 차원 컨테이너들을 포함하고,
상기 복수의 제 2 차원 컨테이너들은 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식으로 상기 이미지 객체에 대한 이미지 데이터를 저장하는 적어도 하나의 이미지 값을 포함한다.
설명 11. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 12. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 상기 데이터 구조는:
제 2 차원에 따라 상기 이미지 객체 내의 데이터를 구성하는 복수의 제 2 차원 컨테이너들; 및
상기 복수의 제 2 차원 컨테이너들 각각에서, 상기 해상도 및 상기 크로마 서브 샘플링 기법으로 상기 이미지 객체를 저장하는 적어도 하나의 이미지 값에 대한 적어도 하나의 포인터를 더 포함하고,
상기 제 2 차원은 상기 제 1 차원과 상이하다.
설명 13. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값 각각은 상기 제 2 차원을 식별하는 키와 관련된다.
설명 14. 본 발명은 설명 9에 따른 KV-SSD를 포함하되,
상기 응용 프로그램으로부터 정보를 수신하는 수신기;
상기 정보로부터 키를 사용하여 상기 이미지 객체를 식별하는 객체 식별자;
상기 정보 내의 컨테이너를 사용하여 상기 데이터 구조 내의 상기 적어도 하나의 이미지 값에 액세스하는 데이터 접근자; 및
상기 적어도 하나의 이미지 값을 상기 응용 프로그램으로 전송하는 송신기를 더 포함한다.
설명 15. 본 발명은 설명 14에 따른 KV-SSD를 포함하되, 상기 송신기는 상기 적어도 하나의 이미지 값이 원하는 해상도 및 크로마 서브 샘플링에서 상기 이미지 데이터를 포함하지 않는 경우, 값이 없는 메시지를 상기 응용 프로그램으로 송신하도록 동작한다.
설명 16. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 새로운 이미지 값으로부터 루마(luma) 데이터 또는 크로마(chroma) 데이터를 추출하여 상기 이미지 객체에 새로운 값으로써 저장하는 데이터 추출기를 더 포함한다.
설명 17. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 루마 데이터만을 저장한다.
설명 18. 본 발명은 설명 9에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 크로마 데이터만을 저장한다.
설명 19. 본 발명의 실시 예는 기계 상에서 실행되는 응용 프로그램에 의한 액세스를 위해 이미지 객체를 저장하는 KV-SSD(Key-Value Solid State Drive)를 포함한다. 상기 KV-SSD는:
상기 KV-SSD에 저장되고, 제 2 키를 저장하고, 제 1 차원에 따라 상기 이미지 객체에 대한 값들을 구성하고, 상기 KV-SSD에 의해 제 1 키와 관련되는 제 1 데이터 구조;
상기 KV-SSD에 저장되고, 제 3 키를 저장하고, 제 2 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 상기 KV-SSD에 의해 상기 제 2 키와 관련되는 제 2 데이터 구조(710-1, 710-2, 710-3); 및
상기 KV-SSD에 저장되고, 상기 응용 프로그램에 의해 사용되는 이미지 값을 저장하고, 상기 KV-SSD에 의해 상기 제 3 키와 관련되는 제 3 데이터 구조를 포함하되,
상기 이미지 객체는 적어도 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식을 사용하여 이미지에 대한 이미지 데이터를 저장한다.
설명 20. 본 발명은 설명 19에 따른 KV-SSD를 포함하되, 상기 KV-SSD는 상기 이미지 객체에 대한 객체 키에 응답하여 복수의 제 1 데이터 구조들과 관련되는 복수의 제 1 키들을 반환하도록 동작한다.
설명 21. 본 발명은 설명 19에 따른 KV-SSD를 포함하되,
상기 제 1 데이터 구조는 상기 제 2 키를 포함하는 제 1 복수의 키들을 저장하고,
상기 제 1 복수의 키들 각각은 상기 제 1 차원에 따라 상기 이미지 객체에 대한 이미지 데이터를 구성한다.
설명 22. 본 발명은 설명 21에 따른 KV-SSD를 포함하되,
상기 제 2 데이터 구조(710-1, 710-2, 710-3)는 상기 제 3 키를 포함하는 제 2 복수의 키들을 저장하고,
상기 제 2 복수의 키들 각각은 상기 응용 프로그램에 의해 사용되는 별도의 이미지 값을 식별하고,
상기 제 2 복수의 키들은 상기 제 1 차원 및 상기 제 2 차원 모두에 따라 상기 이미지 객체에 대한 상기 이미지 데이터를 구성한다.
설명 23. 본 발명은 설명 19에 따른 KV-SSD를 포함하되, 상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 24. 본 발명은 설명 19에 따른 KV-SSD를 포함하되, 상기 이미지 객체는:
상기 KV-SSD에 저장되고, 제 5 키를 저장하고, 상기 제 2 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 제 4 키와 관련되는 제 4 데이터 구조; 및
상기 KV-SSD에 저장되고, 상기 제 3 키를 저장하고, 상기 제 1 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 상기 제 5 키와 관련되는 제 5 데이터 구조(710-1, 710-2, 710-3)를 더 포함한다.
설명 25. 본 발명은 설명 24에 따른 KV-SSD를 포함하되, 상기 KV-SSD는 상기 이미지 객체에 대한 객체 키에 응답하여 복수의 제 4 데이터 구조들과 관련되는 복수의 제 4 키들을 반환하도록 동작한다.
설명 26. 본 발명은 설명 24에 따른 KV-SSD를 포함하되,
상기 제 4 데이터 구조는 상기 제 5 키를 포함하는 제 3 복수의 키들을 저장하고,
상기 제 3 복수의 키들 각각은 상기 제 1 차원에 따라 상기 이미지 객체에 대한 상기 이미지 데이터를 구성한다.
설명 27. 본 발명은 설명 26에 따른 KV-SSD를 포함하되,
상기 제 5 데이터 구조(710-1, 710-2, 710-3)는 상기 제 3 키를 포함하는 제 4 복수의 키들을 저장하고,
상기 제 4 복수의 키들 각각은 상기 응용 프로그램에 의해 사용되는 별도의 이미지 값을 식별하고,
상기 제 4 복수의 키들은 상기 제 2 차원 및 상기 제 1 차원 모두에 따라 상기 이미지 객체에 대한 상기 이미지 데이터를 구성한다.
설명 28. 본 발명은 설명 19에 따른 KV-SSD를 포함하되,
상기 응용 프로그램으로부터 객체 키 및 새로운 이미지 파일을 수신하는 수신기; 및
새로운 이미지 파일에서 루마(luma) 데이터 또는 크로마(chroma) 데이터를 추출하여 상기 이미지 객체에 새로운 이미지 값으로써 저장하는 데이터 추출기를 더 포함한다.
설명 29. 본 발명은 설명 19에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 루마 데이터만을 저장한다.
설명 30. 본 발명은 설명 19에 따른 KV-SSD를 포함하되, 상기 적어도 하나의 이미지 값은 상기 해상도 및 상기 크로마 서브 샘플리 기법에서 이미지에 대한 크로마 데이터만을 저장한다.
설명 31. 본 발명은 방법을 포함한다. 방법은:
KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하는 단계;
상기 KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하는 단계;
상기 정보에서 키를 사용하여 상기 KV-SSD(120) 상의 상기 이미지 객체 내의 상기 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 키를 사용하는 단계; 및
상기 원하는 값이 상기 KV-SSD의 상기 이미지 객체에 저장되는 경우:
상기 KV-SSD 상의 상기 이미지 객체로부터 상기 원하는 값을 검색하고; 및
상기 원하는 값을 상기 KV-SSD로부터 상기 응용 프로그램으로 반환하고,
상기 이미지 객체는 제 1 차원에 따라 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 1 차원 컨테이너를 포함하고,
상기 적어도 하나의 제 1 차원 컨테이너는 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 2 차원 컨테이너를 포함하고,
상기 이미지 객체 전체는 상기 응용 프로그램으로 반환되지 않는다.
설명 32. 본 발명은 설명 31에 따른 방법을 포함하되, 상기 원하는 값이 상기 이미지 객체에 저장되어 있지 않은 경우, 값이 없는 결과를 상기 응용 프로그램으로 반환한다.
설명 33. 본 발명은 설명 31에 따른 방법을 포함하되,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이고,
상기 제 1 차원은 상기 해상도 차원 및 상기 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 34. 본 발명은 설명 31에 따른 방법을 포함하되,
상기 이미지 객체는 상기 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 3 차원 컨테이너를 포함하고,
상기 적어도 하나의 제 3 차원 컨테이너는 제 1 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 4 차원 컨테이너를 포함한다.
설명 35. 본 발명은 설명 31에 따른 방법을 포함하되,
상기 KV-SSD에서 상기 응용 프로그램으로부터 새로운 이미지 파일을 수신하는 단계;
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 단계; 및
상기 새로운 이미지 파일을 상기 KV-SSD 상의 상기 타겟 차원 컨테이너에 새로운 이미지 값으로써 저장하는 단계를 더 포함하고,
상기 새로운 이미지 파일은 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링에서의 새로운 이미지 데이터를 포함한다.
설명 36. 본 발명은 설명 35에 따른 방법을 포함하되,
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 2 차원에 따라 복수의 제 3 차원 컨테이너들의 타겟 제 3 차원 컨테이너를 식별하는 단계; 및
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 타겟 제 3 차원 컨테이너 내의 타겟 제 4 차원 컨테이너들을 식별하는 단계를 더 포함하고,
상기 새로운 이미지 파일을 상기 타겟 차원 컨테이너에 상기 새로운 이미지 값으로 저장하는 단계는 상기 새로운 이미지 값에 대한 포인터를 상기 타겟 제 4 차원 컨테이너에 저장하는 단계를 포함한다.
설명 37. 본 발명은 설명 35에 따른 방법을 포함하되,
상기 새로운 이미지 파일을 상기 타겟 차원 컨테이너에 상기 새로운 이미지 값으로 저장하는 단계는:
상기 새로운 이미지 파일로부터 루마 데이터를 추출하는 단계;
상기 새로운 이미지 파일로부터 크로마 데이터를 추출하는 단계;
제 1 값 내에 상기 루마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 단계; 및
제 2 값 내에 상기 크로마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 단계를 포함한다.
설명 38. 본 발명은 설명 35에 따른 방법을 포함하되,
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 단계는 상기 타겟 제 1 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 타겟 제 1 차원 컨테이너를 생성하는 단계를 포함한다.
설명 39. 본 발명은 설명 35에 따른 방법을 포함하되,
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 단계는 상기 타겟 제 2 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 타겟 제 1 차원 컨테이너 내에 상기 타겟 제 2 차원 컨테이너를 생성하는 단계를 포함한다.
설명 40. 본 발명은 방법을 포함한다. 방법은:
KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하는 단계;
상기 KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하는 단계;
상기 정보에서 키를 사용하여 상기 KV-SSD(120) 상의 상기 이미지 객체 내의 상기 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 키를 사용하는 단계; 및
상기 원하는 값이 상기 KV-SSD의 상기 이미지 객체에 저장되는 경우:
상기 KV-SSD 상의 상기 이미지 객체로부터 상기 원하는 값을 검색하고; 및
상기 원하는 값을 상기 KV-SSD로부터 상기 응용 프로그램으로 반환하고,
상기 이미지 객체는 제 1 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 복수의 차원 컨테이너들을 포함하고,
상기 이미지 객체 전체는 상기 응용 프로그램으로 반환되지 않는다.
설명 41. 본 발명은 설명 40에 따른 방법을 포함하되, 상기 원하는 값이 상기 이미지 객체에 저장되어 있지 않은 경우, 값이 없는 결과를 상기 응용 프로그램으로 반환한다.
설명 42. 본 발명은 설명 40에 따른 방법을 포함하되,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 43. 본 발명은 설명 40에 따른 방법을 포함하되,
상기 이미지 객체는 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 2 차원 컨테이너를 더 포함한다.
설명 44. 본 발명은 설명 40에 따른 방법을 포함하되,
상기 KV-SSD에서 상기 응용 프로그램으로부터 새로운 이미지 파일을 수신하는 단계;
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 단계; 및
상기 새로운 이미지 파일을 상기 KV-SSD 상의 상기 타겟 차원 컨테이너에 새로운 이미지 값으로써 저장하는 단계를 더 포함하고,
상기 새로운 이미지 파일은 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링에서의 새로운 이미지 데이터를 포함한다.
설명 45. 본 발명은 설명 44에 따른 방법을 포함하되,
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 제 2 차원에 따라 복수의 제 2 차원 컨테이너들의 타겟 제 2 차원 컨테이너를 식별하는 단계; 및
상기 새로운 이미지 값에 대한 포인터를 상기 타겟 제 2 차원 컨테이너에 저장하는 단계를 포함하는 상기 새로운 이미지 파일을 상기 타겟 차원 컨테이너에 상기 새로운 이미지 값으로 저장하는 단계를 더 포함한다.
설명 46. 본 발명은 설명 44에 따른 방법을 포함하되, 상기 새로운 이미지 값을 상기 타겟 제 2 차원 컨테이너에 저장하는 단계는:
상기 새로운 이미지 값으로부터 루마 데이터를 추출하는 단계;
상기 새로운 이미지 값으로부터 크로마 데이터를 추출하는 단계;
제 1 값 내에 상기 루마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 단계; 및
제 2 값 내에 상기 크로마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 단계를 포함한다.
설명 47. 본 발명은 설명 44에 따른 방법을 포함하되,
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 상기 타겟 차원 컨테이너를 식별하는 단계는 상기 타겟 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 차원 컨테이너를 생성하는 단계를 더 포함한다.
설명 48. 본 발명은 방법을 포함한다. 방법은:
이미지 객체에 대한 제 1 키를 응용 프로그램으로부터 KV-SSD로 전송하는 단계;
상기 제 1 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 제 1 차원 테이블을 수신하는 단계;
상기 제 1 차원 테이블로부터 제 2 키를 결정하는 단계;
상기 제 2 키를 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하는 단계;
상기 제 2 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 제 2 차원 테이블을 수신하는 단계;
상기 제 2 차원 테이블로부터 제 3 키를 결정하는 단계;
상기 제 3 키를 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하는 단계; 및
상기 제 3 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 이미지 값을 수신하는 단계를 포함한다.
설명 49. 본 발명은 설명 48에 따른 방법을 포함하되,
상기 제 1 해상도 테이블은 제 1 차원에 따라 상기 이미지 값을 구성하고,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이고,
상기 제 2 해상도 테이블은 제 2 차원에 따라 상기 이미지 값을 구성하고,
상기 제 2 차원은 상기 해상도 차원 및 상기 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 50. 본 발명은 설명 48에 따른 방법을 포함하되,
상기 제 1 차원 테이블로부터 제 2 키를 결정하는 단계는 원하는 해상도에 응답하여 상기 제 1 차원 테이블로부터 상기 제 2 키를 선택하는 단계를 포함하고,
상기 제 2 차원 테이블로부터 제 3 키를 결정하는 단계는 원하는 크로마 서브 샘플링 기법에 응답하여 상기 제 2 차원 테이블로부터 상기 제 3 키를 선택하는 단계를 포함한다.
설명 51. 본 발명은 설명 48에 따른 방법을 포함하되,
상기 제 1 차원 테이블로부터 제 2 키를 결정하는 단계는 원하는 크로마 서브 샘플링 기법에 응답하여 상기 제 1 차원 테이블로부터 상기 제 2 키를 선택하는 단계를 포함하고,
상기 제 2 차원 테이블로부터 제 3 키를 결정하는 단계는 원하는 해상도에 응답하여 상기 제 2 차원 테이블로부터 상기 제 3 키를 선택하는 단계를 포함한다.
설명 52. 본 발명은 설명 48에 따른 방법을 포함하되, 상기 제 3 키에 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 수신되는 상기 이미지 값으로부터 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 새로운 이미지 파일을 생성하는 단계를 더 포함한다.
설명 53. 본 발명은 설명 52에 따른 방법을 포함하되,
상기 새로운 이미지 파일을 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하는 단계;
상기 응용 프로그램에서 상기 KV-SSD로부터 새로운 키를 수신하는 단계; 및
상기 새로운 키와 쌍을 이루는 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 엔트리를 포함하도록 상기 제 2 차원 테이블을 갱신하는 단계를 더 포함한다.
설명 54. 본 발명은 설명 53에 따른 방법을 포함하되,
상기 새로운 키와 쌍을 이루는 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 엔트리를 포함하도록 상기 제 2 차원 테이블을 갱신하는 단계는:
상기 KV-SSD 상의 새로운 제 2 차원 테이블을 생성하는 단계;
상기 응용 프로그램에서 상기 KV-SSD로부터 새로운 제 2 차원 테이블 키를 수신하는 단계; 및
상기 새로운 제 2 차원 테이블 키와 쌍을 상기 새로운 제 2 차원 테이블에 대한 제 2 엔트리를 포함하도록 상기 제 1 차원 테이블을 갱신하는 단계를 더 포함하되,
상기 새로운 제 2 차원 테이블은 상기 새로운 키와 쌍을 이루는 상기 원하는 해상도 및 상기 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 상기 엔트리를 포함한다.
설명 55. 본 발명은 비 일시적인 저장 매체를 포함하는 제품을 포함하며, 상기 비 일시적 저장 매체는 기계에 의해 실행될 때:
KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하고;
상기 KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하고;
상기 정보에서 키를 사용하여 상기 KV-SSD(120) 상의 상기 이미지 객체 내의 상기 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 키를 사용하고; 및
상기 원하는 값이 상기 KV-SSD의 상기 이미지 객체에 저장되는 경우:
상기 KV-SSD 상의 상기 이미지 객체로부터 상기 원하는 값을 검색하고; 및
상기 원하는 값을 상기 KV-SSD로부터 상기 응용 프로그램으로 반환하고,
상기 이미지 객체는 제 1 차원에 따라 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 1 차원 컨테이너를 포함하고,
상기 적어도 하나의 제 1 차원 컨테이너는 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 2 차원 컨테이너를 포함하고,
상기 이미지 객체 전체는 상기 응용 프로그램으로 반환되지 않는다.
설명 56. 본 발명은 설명 55에 따른 제품을 포함하되,
상기 원하는 값이 상기 이미지 객체에 저장되어 있지 않은 경우, 값이 없는 결과를 상기 응용 프로그램으로 반환한다.
설명 57. 본 발명은 설명 55에 따른 제품을 포함하되,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이고,
상기 제 2 차원은 상기 해상도 차원 및 상기 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 58. 본 발명은 설명 55에 따른 제품을 포함하되,
상기 이미지 객체는 상기 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 3 차원 컨테이너를 포함하고,
상기 적어도 하나의 제 3 차원 컨테이너는 제 1 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 4 차원 컨테이너를 포함한다.
설명 59. 본 발명은 설명 55에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 KV-SSD에서 상기 응용 프로그램으로부터 새로운 이미지 파일을 수신하고;
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하고; 및
상기 새로운 이미지 파일을 상기 KV-SSD 상의 상기 타겟 차원 컨테이너에 새로운 이미지 값으로써 저장하고;
상기 새로운 이미지 파일은 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링에서의 새로운 이미지 데이터를 포함한다.
설명 60. 본 발명은 설명 59에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 2 차원에 따라 복수의 제 3 차원 컨테이너들의 타겟 제 3 차원 컨테이너를 식별하고; 및
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 타겟 제 3 차원 컨테이너 내의 타겟 제 4 차원 컨테이너들을 식별하고,
상기 새로운 이미지 파일을 상기 타겟 차원 컨테이너에 상기 새로운 이미지 값으로 저장하는 것은 상기 새로운 이미지 값에 대한 포인터를 상기 타겟 제 4 차원 컨테이너에 저장하는 것을 포함한다.
설명 61. 본 발명은 설명 59에 따른 제품을 포함하되,
상기 제 2 타겟 차원 컨테이너에 상기 새로운 이미지를 저장하는 것은:
상기 새로운 이미지 값으로부터 루마 데이터를 추출하는 것;
상기 새로운 이미지 값으로부터 크로마 데이터를 추출하는 것;
제 1 값 내에 상기 루마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 것; 및
제 2 값 내에 상기 크로마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 것을 포함한다.
설명 62. 본 발명은 설명 59에 따른 제품을 포함하되,
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 것은 상기 타겟 제 1 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 타겟 제 1 차원 컨테이너를 생성하는 것을 포함한다.
설명 63. 본 발명은 설명 59에 따른 제품을 포함하되,
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하는 것은 상기 타겟 제 2 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 타겟 제 1 차원 컨테이너 내에 상기 타겟 제 2 차원 컨테이너를 생성하는 것을 포함한다.
설명 64. 본 발명은 비 일시적인 저장 매체를 포함하는 제품을 포함하며, 상기 비 일시적 저장 매체는 기계에 의해 실행될 때:
KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하고;
상기 KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하고;
상기 정보에서 키를 사용하여 상기 KV-SSD(120) 상의 상기 이미지 객체 내의 상기 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 키를 사용하고; 및
상기 원하는 값이 상기 KV-SSD의 상기 이미지 객체에 저장되는 경우:
상기 KV-SSD 상의 상기 이미지 객체로부터 상기 원하는 값을 검색하고; 및
상기 원하는 값을 상기 KV-SSD로부터 상기 응용 프로그램으로 반환하고,
상기 이미지 객체는 제 1 차원에 따라 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 1 차원 컨테이너를 포함하고,
상기 이미지 객체는 제 1 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 복수의 차원 컨테이너들을 포함하고,
상기 이미지 객체 전체는 상기 응용 프로그램으로 반환되지 않는다.
설명 65. 본 발명은 설명 64에 따른 제품을 포함하되,
상기 원하는 값이 상기 이미지 객체에 저장되어 있지 않은 경우, 값이 없는 결과를 상기 응용 프로그램으로 반환한다.
설명 66. 본 발명은 설명 64에 따른 제품을 포함하되,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 67. 본 발명은 설명 64에 따른 제품을 포함하되,
상기 이미지 객체는 제 2 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 적어도 하나의 제 2 차원 컨테이너를 더 포함한다.
설명 68. 본 발명은 설명 64에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 KV-SSD에서 상기 응용 프로그램으로부터 새로운 이미지 파일을 수신하고;
생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 타겟 차원 컨테이너를 식별하고; 및
상기 새로운 이미지 파일을 상기 KV-SSD 상의 상기 타겟 차원 컨테이너에 새로운 이미지 값으로써 저장하고;
상기 새로운 이미지 파일은 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링에서의 새로운 이미지 데이터를 포함한다.
설명 69. 본 발명은 설명 68에 따른 제품을 포함하되, 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 제 2 차원에 따라 복수의 제 2 차원 컨테이너들의 타겟 제 2 차원 컨테이너를 식별하는 것, 및
상기 새로운 이미지 값에 대한 포인터를 상기 타겟 제 2 차원 컨테이너에 저장하는 것을 포함하는 상기 새로운 이미지 파일을 상기 타겟 차원 컨테이너에 상기 새로운 이미지 값으로 저장하는 것을 더 포함하는 방법.
설명 70. 본 발명은 설명 68에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 새로운 이미지 값으로부터 루마 데이터를 추출하는 것;
상기 새로운 이미지 값으로부터 크로마 데이터를 추출하는 것;
제 1 값 내에 상기 루마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 것; 및
제 2 값 내에 상기 크로마 데이터를 상기 타겟 제 2 차원 컨테이너에 저장하는 것을 포함한다.
설명 71. 본 발명은 설명 68에 따른 제품을 포함하되,
상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들에서 상기 타겟 차원 컨테이너를 식별하는 것은 상기 타겟 차원 컨테이너가 상기 KV-SSD 상의 상기 이미지 객체 내에 존재하지 않는 경우, 상기 KV-SSD 상의 상기 이미지 객체 내에 상기 차원 컨테이너를 생성하는 것을 더 포함한다.
설명 72. 본 발명은 비 일시적인 저장 매체를 포함하는 제품을 포함하며, 상기 비 일시적 저장 매체는 기계에 의해 실행될 때:
이미지 객체에 대한 제 1 키를 응용 프로그램으로부터 KV-SSD로 전송하고;
상기 제 1 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 제 1 차원 테이블을 수신하고;
상기 제 1 차원 테이블로부터 제 2 키를 결정하고;
상기 제 2 키를 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하는 단계;
상기 제 2 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 제 2 차원 테이블을 수신하고;
상기 제 2 차원 테이블로부터 제 3 키를 결정하고;
상기 제 3 키를 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하고; 및
상기 제 3 키에 대해 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 이미지 값을 수신한다.
설명 73. 본 발명은 설명 72에 따른 제품을 포함하되,
상기 제 1 해상도 테이블은 제 1 차원에 따라 상기 이미지 값을 구성하고,
상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나이고,
상기 제 2 해상도 테이블은 제 2 차원에 따라 상기 이미지 값을 구성하고,
상기 제 2 차원은 상기 해상도 차원 및 상기 크로마 서브 샘플링 기법 차원 중 하나이다.
설명 74. 본 발명은 설명 72에 따른 제품을 포함하되,
상기 제 1 차원 테이블로부터 제 2 키를 결정하는 것은 원하는 해상도에 응답하여 상기 제 1 차원 테이블로부터 상기 제 2 키를 선택하는 것을 포함하고,
상기 제 2 차원 테이블로부터 제 3 키를 결정하는 것은 원하는 크로마 서브 샘플링 기법에 응답하여 상기 제 2 차원 테이블로부터 상기 제 3 키를 선택하는 것을 포함한다.
설명 75. 본 발명은 설명 72에 따른 제품을 포함하되,
상기 제 1 차원 테이블로부터 제 2 키를 결정하는 것은 원하는 크로마 서브 샘플링 기법에 응답하여 상기 제 1 차원 테이블로부터 상기 제 2 키를 선택하는 것을 포함하고,
상기 제 2 차원 테이블로부터 제 3 키를 결정하는 것은 원하는 해상도 응답하여 상기 제 2 차원 테이블로부터 상기 제 3 키를 선택하는 것을 포함한다.
설명 76. 본 발명은 설명 72에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 제 3 키에 응답하여 상기 응용 프로그램에서 상기 KV-SSD로부터 수신되는 상기 이미지 값으로부터 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 새로운 이미지 파일을 생성한다.
설명 77. 본 발명은 설명 76에 따른 제품을 포함하되, 상기 비 일시적인 저장 매체는 지시들을 더 포함하고 상기 비 일시적인 저장 매체가 상기 기계에 의해 실행될 때:
상기 새로운 이미지 파일을 상기 응용 프로그램으로부터 상기 KV-SSD로 전송하고;
상기 응용 프로그램에서 상기 KV-SSD로부터 새로운 키를 수신하고; 및
상기 새로운 키와 쌍을 이루는 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 엔트리를 포함하도록 상기 제 2 차원 테이블을 갱신한다.
설명 78. 본 발명은 설명 77에 따른 제품을 포함하되,
상기 새로운 키와 쌍을 이루는 원하는 해상도 및 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 엔트리를 포함하도록 상기 제 2 차원 테이블을 갱신하는 것은:
상기 KV-SSD 상의 새로운 제 2 차원 테이블을 생성하는 것;
상기 응용 프로그램에서 상기 KV-SSD로부터 새로운 제 2 차원 테이블 키를 수신하는 것; 및
상기 새로운 제 2 차원 테이블 키와 쌍을 상기 새로운 제 2 차원 테이블에 대한 제 2 엔트리를 포함하도록 상기 제 1 차원 테이블을 갱신하는 것을 더 포함하되,
상기 새로운 제 2 차원 테이블은 상기 새로운 키와 쌍을 이루는 상기 원하는 해상도 및 상기 원하는 크로마 서브 샘플링 기법에서 상기 새로운 이미지 파일에 대한 상기 엔트리를 포함한다.
결론적으로, 본 명세서에 기술된 실시 예에 대한 다양한 변경의 관점에서, 이 상세한 설명 및 첨부 된 자료는 단지 예시적인 것으로 의도되며, 본 발명의 범위를 제한하는 것으로 간주되어서는 안 된다. 그러므로, 본 발명으로써 청구되는 것은 후술하는 청구범위 및 그 균등물의 범위 및 사상 내에 있을 수 있는 모든 변형이다.

Claims (10)

  1. 기계 상에서 실행되는 응용 프로그램에 의한 액세스를 위해 이미지 객체를 저장하는 KV-SSD(Key-Value Solid State Drive)에 있어서, 상기 KV-SSD는:
    상기 KV-SSD에 저장되고, 상기 응용 프로그램에 의해 사용되는 복수의 이미지 값들을 포함하는 데이터 구조를 포함하고,
    상기 데이터 구조는:
    제 1 차원에 따라 상기 이미지 객체 내의 데이터를 구성하는 복수의 제 1 차원 컨테이너들; 및
    상기 복수의 제 1 차원 컨테이너들 각각에서, 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식으로 상기 이미지 객체에 대한 이미지 데이터를 저장하는 적어도 하나의 이미지 값을 포함하는 KV-SSD.
  2. 제 1 항에 있어서,
    상기 제 1 차원은 해상도 차원 및 크로마 서브 샘플링 기법 차원 중 하나인 KV-SSD.
  3. 제 1 항에 있어서,
    상기 데이터 구조는:
    제 2 차원에 따라 상기 이미지 객체 내의 데이터를 구성하는 복수의 제 2 차원 컨테이너들; 및
    상기 복수의 제 2 차원 컨테이너들 각각에서, 상기 해상도 및 상기 크로마 서브 샘플링 기법으로 상기 이미지 객체를 저장하는 적어도 하나의 이미지 값에 대한 적어도 하나의 포인터를 더 포함하고,
    상기 제 2 차원은 상기 제 1 차원과 상이한 KV-SSD.
  4. 제 1 항에 있어서,
    상기 응용 프로그램으로부터 정보를 수신하는 수신기;
    상기 정보로부터 키를 사용하여 상기 이미지 객체를 식별하는 객체 식별자;
    상기 정보 내의 컨테이너를 사용하여 상기 데이터 구조 내의 상기 적어도 하나의 이미지 값에 액세스하는 데이터 접근자; 및
    상기 적어도 하나의 이미지 값을 상기 응용 프로그램으로 전송하는 송신기를 더 포함하는 KV-SSD.
  5. 기계 상에서 실행되는 응용 프로그램에 의한 액세스를 위해 이미지 객체를 저장하는 KV-SSD(Key-Value Solid State Drive)에 있어서,
    상기 KV-SSD에 저장되고, 제 2 키를 저장하고, 제 1 차원에 따라 상기 이미지 객체에 대한 값들을 구성하고, 상기 KV-SSD에 의해 제 1 키와 관련되는 제 1 데이터 구조;
    상기 KV-SSD에 저장되고, 제 3 키를 저장하고, 제 2 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 상기 KV-SSD에 의해 상기 제 2 키와 관련되는 제 2 데이터 구조(710-1, 710-2, 710-3); 및
    상기 KV-SSD에 저장되고, 상기 응용 프로그램에 의해 사용되는 이미지 값을 저장하고, 상기 KV-SSD에 의해 상기 제 3 키와 관련되는 제 3 데이터 구조를 포함하되,
    상기 이미지 객체는 적어도 해상도 및 크로마 서브 샘플링(Chroma Subsampling) 방식을 사용하여 이미지에 대한 이미지 데이터를 저장하는 KV-SSD.
  6. 제 5 항에 있어서,
    상기 제 1 데이터 구조는 상기 제 2 키를 포함하는 제 1 복수의 키들을 저장하고,
    상기 제 1 복수의 키들 각각은 상기 제 1 차원에 따라 상기 이미지 객체에 대한 이미지 데이터를 구성하는 KV-SSD.
  7. 제 5 항에 있어서,
    상기 이미지 객체는:
    상기 KV-SSD에 저장되고, 제 5 키를 저장하고, 상기 제 2 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 제 4 키와 관련되는 제 4 데이터 구조; 및
    상기 KV-SSD에 저장되고, 상기 제 3 키를 저장하고, 상기 제 1 차원에 따라 상기 이미지 객체에 대한 상기 값들을 구성하고, 상기 제 5 키와 관련되는 제 5 데이터 구조(710-1, 710-2, 710-3)를 더 포함하는 KV-SSD.
  8. KV-SSD(Key-Value Solid State Drive)에서 응용 프로그램으로부터 정보를 수신하는 단계;
    상기 KV-SSD 상의 이미지 객체 내에 크로마 서브 샘플링(Chroma Subsampling)을 사용하는 해상도로 이미지를 저장하는 적어도 하나의 이미지 값을 포함하는 차원 컨테이너를 식별하는 것을 시도하기 위해 정보 내의 컨테이너를 사용하는 단계;
    상기 KV-SSD(120) 상의 상기 이미지 객체 내의 상기 적어도 하나의 이미지 값의 원하는 값을 식별하기 위해 상기 정보내의 키를 사용하는 단계; 및
    상기 원하는 값이 상기 KV-SSD의 상기 이미지 객체에 저장되는 경우:
    상기 KV-SSD 상의 상기 이미지 객체로부터 상기 원하는 값을 검색하고; 및
    상기 원하는 값을 상기 KV-SSD로부터 상기 응용 프로그램으로 반환하는 단계를 포함하되,
    상기 차원 컨테이너는 제 1 차원에 따라(315, 310, 305), 상기 이미지 객체 내에 데이터의 서브집합을 저장하고,
    상기 이미지 객체는 상기 제 1 차원에 따라 상기 적어도 하나의 이미지 값을 구성하는 복수의 차원 컨테이너들을 포함하고,
    상기 이미지 객체는 상기 응용 프로그램으로 반환되지 않는 방법.
  9. 제 8 항에 있어서,
    상기 원하는 값이 상기 이미지 객체에 저장되어 있지 않은 경우, 값이 없는 결과를 상기 응용 프로그램으로 반환하는 방법.
  10. 제 8 항에 있어서,
    상기 KV-SSD에서 상기 응용 프로그램으로부터 새로운 이미지 파일을 수신하는 단계;
    생성된 해상도 및 생성된 크로마 서브 샘플링의 상기 제 1 차원에 따라 상기 KV-SSD 상의 상기 이미지 객체 내의 상기 복수의 차원 컨테이너들의 타겟 차원 컨테이너를 식별하는 단계; 및
    상기 새로운 이미지 파일을 상기 KV-SSD 상의 상기 타겟 차원 컨테이너에 새로운 이미지 값으로써 저장하는 단계를 더 포함하고,
    상기 새로운 이미지 파일은 상기 생성된 해상도 및 상기 생성된 크로마 서브 샘플링에서의 새로운 이미지 데이터를 포함하는 방법.
KR1020190043981A 2018-05-15 2019-04-15 크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법 KR102481009B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862672043P 2018-05-15 2018-05-15
US62/672,043 2018-05-15
US16/056,515 2018-08-06
US16/056,515 US10949087B2 (en) 2018-05-15 2018-08-06 Method for rapid reference object storage format for chroma subsampled images

Publications (2)

Publication Number Publication Date
KR20190130959A true KR20190130959A (ko) 2019-11-25
KR102481009B1 KR102481009B1 (ko) 2022-12-23

Family

ID=68533702

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190043981A KR102481009B1 (ko) 2018-05-15 2019-04-15 크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법

Country Status (3)

Country Link
US (1) US10949087B2 (ko)
KR (1) KR102481009B1 (ko)
CN (1) CN110489057A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230059239A (ko) * 2021-10-26 2023-05-03 삼성전자주식회사 스토리지 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120201476A1 (en) * 2009-10-05 2012-08-09 I.C.V.T. Ltd. Apparatus and methods for recompression of digital images
KR20140002340A (ko) * 2012-06-29 2014-01-08 인텔렉추얼디스커버리 주식회사 서브 이미지 쉐어링을 위한 이미지 처리 장치 및 방법
WO2016154336A1 (en) * 2015-03-25 2016-09-29 Dolby Laboratories Licensing Corporation Chroma subsampling and gamut reshaping

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6714257B2 (en) * 2001-06-29 2004-03-30 Koninklijke Philips Electronics N.V. Color key preservation during sample rate conversion
US6833839B2 (en) * 2002-05-13 2004-12-21 Genesis Microchip Inc. Apparatus and method for multi-resolution color mapping for display devices
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
US20080199084A1 (en) 2007-02-19 2008-08-21 Seiko Epson Corporation Category Classification Apparatus and Category Classification Method
EP2455865B1 (en) 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
US8433695B2 (en) * 2010-07-02 2013-04-30 Futurewei Technologies, Inc. System architecture for integrated hierarchical query processing for key/value stores
US20130138915A1 (en) 2010-08-11 2013-05-30 Nec Corporation Data processing system, data processing method, and program
JP2012134585A (ja) * 2010-12-20 2012-07-12 Nikon Corp カメラ
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
AU2012232992A1 (en) 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
US9025868B2 (en) 2013-02-27 2015-05-05 Sony Corporation Method and system for image processing to determine a region of interest
WO2015005634A1 (ko) 2013-07-08 2015-01-15 주식회사 윌러스표준기술연구소 메모리 시스템 및 이의 제어 방법
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
WO2015089352A1 (en) 2013-12-13 2015-06-18 Vid Scale, Inc Color gamut scalable video coding device and method for the phase alignment of luma and chroma using interpolation
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
AU2014202921B2 (en) 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
US9438426B2 (en) 2014-10-03 2016-09-06 Seagate Technology Llc Key-value data storage device with hybrid architecture
US10097839B2 (en) 2014-12-19 2018-10-09 Qualcomm Incorporated Palette mode for subsampling format
US10085027B2 (en) 2015-03-06 2018-09-25 Qualcomm Incorporated Adaptive mode checking order for video encoding
AU2015275320A1 (en) 2015-12-23 2017-07-13 Canon Kabushiki Kaisha Method, apparatus and system for determining a luma value
GB2573238B (en) * 2017-02-03 2022-12-14 Tv One Ltd Method of video transmission and display
US20190034734A1 (en) 2017-07-28 2019-01-31 Qualcomm Incorporated Object classification using machine learning and object tracking
US10719744B2 (en) 2017-12-28 2020-07-21 Intel Corporation Automated semantic inference of visual features and scenes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120201476A1 (en) * 2009-10-05 2012-08-09 I.C.V.T. Ltd. Apparatus and methods for recompression of digital images
KR20140002340A (ko) * 2012-06-29 2014-01-08 인텔렉추얼디스커버리 주식회사 서브 이미지 쉐어링을 위한 이미지 처리 장치 및 방법
WO2016154336A1 (en) * 2015-03-25 2016-09-29 Dolby Laboratories Licensing Corporation Chroma subsampling and gamut reshaping

Also Published As

Publication number Publication date
US20190354287A1 (en) 2019-11-21
CN110489057A (zh) 2019-11-22
US10949087B2 (en) 2021-03-16
KR102481009B1 (ko) 2022-12-23

Similar Documents

Publication Publication Date Title
US10621217B2 (en) Portable globe creation for a geographical information system
US11017018B2 (en) Systems and methods of building and using an image catalog
AU2010202800B2 (en) Cache system and method for generating uncached objects from cached and stored object components
JP5699166B2 (ja) 地理情報システムに対する携帯グローブ形成
US20040109197A1 (en) Apparatus and method for sharing digital content of an image across a communications network
US11947826B2 (en) Method for accelerating image storing and retrieving differential latency storage devices based on access rates
US20170060893A1 (en) Translating file type aware virtual filesystem and content addressable globally distributed filesystem
US20120287116A1 (en) Anchors For Displaying Image Sprites, Sub-Regions And 3D Images
CN114038541B (zh) 数字病理图像的数据流的处理系统
US20160147860A1 (en) System and method for hierarchical synchronization of a dataset of image tiles
US9201883B1 (en) Remote file archiving using package files
KR102481009B1 (ko) 크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법
KR101647371B1 (ko) 텍스트정보를 포함하는 stl 파일과, 이를 이용한 stl 파일 검색 및 관리시스템
CN113688139A (zh) 对象存储方法、网关、设备及介质
US20220309035A1 (en) File processing device, file processing method, and program
WO2015052968A1 (ja) サーバ装置、クライアント装置、情報処理方法および記録媒体
US20220253476A1 (en) File processing device, file processing method, and program
CN114205631B (zh) 视频存储、目录生成、迁移方法、装置、设备和介质
KR20210052217A (ko) 액세스 레이트들에 기초한 이미지 저장 및 차등(차동) 레이턴시 스토리지 장치들의 회수를 가속화하는 방법
CN114785771B (zh) 自动驾驶数据的上传方法、装置、计算机设备和存储介质
CN114911886B (zh) 一种遥感数据的切片方法、装置和云服务器

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
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