KR102293883B1 - 동시 이미지 압축 및 썸네일 생성 - Google Patents
동시 이미지 압축 및 썸네일 생성 Download PDFInfo
- Publication number
- KR102293883B1 KR102293883B1 KR1020197014760A KR20197014760A KR102293883B1 KR 102293883 B1 KR102293883 B1 KR 102293883B1 KR 1020197014760 A KR1020197014760 A KR 1020197014760A KR 20197014760 A KR20197014760 A KR 20197014760A KR 102293883 B1 KR102293883 B1 KR 102293883B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- block
- pixels
- values
- value
- Prior art date
Links
- 238000007906 compression Methods 0.000 title claims description 42
- 230000006835 compression Effects 0.000 title claims description 41
- 230000015654 memory Effects 0.000 claims abstract description 165
- 238000000034 method Methods 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 34
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 20
- 230000008901 benefit Effects 0.000 description 8
- 230000035508 accumulation Effects 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000012935 Averaging Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/21—Intermediate information storage
- H04N1/2104—Intermediate information storage for one or a few pictures
- H04N1/2112—Intermediate information storage for one or a few pictures using still video cameras
- H04N1/2129—Recording in, or reproducing from, a specific memory area or areas, or recording or reproducing at a specific moment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/0035—User-machine interface; Control console
- H04N1/00405—Output means
- H04N1/00408—Display of information to the user, e.g. menus
- H04N1/0044—Display of information to the user, e.g. menus for image preview or review, e.g. to help the user position a sheet
- H04N1/00442—Simultaneous viewing of a plurality of images, e.g. using a mosaic display arrangement of thumbnails
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/4115—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures involving the recognition of specific patterns, e.g. by symbol matching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0084—Digital still camera
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/0077—Types of the still picture apparatus
- H04N2201/0087—Image storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/32—Circuits 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/3201—Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
- H04N2201/3225—Display, 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/325—Modified version of the image, e.g. part of the image, image reduced in size or resolution, thumbnail or screennail
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Storing Facsimile Image Data (AREA)
- Editing Of Facsimile Originals (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
Abstract
제1 메모리[105]는 디지털 이미지[110]를 나타내는 픽셀들의 블록들[115]의 값들을 저장하고, 제2 메모리[163]는 썸네일 이미지[160]에서 목적지 픽셀들의 부분 값들을 저장하며, 제3 메모리[145]는 압축된 이미지들[140] 및 썸네일 이미지들을 저장한다. 프로세서[120]는 제1 메모리로부터 픽셀들의 블록의 값들을 검색한다. 프로세서는 또한 동시에 압축된 이미지를 생성하기 위해 값들을 압축하며 목적지 픽셀에 대한 스케일링 윈도우[420]에 중첩하는 블록의 부분들에서의 픽셀들의 값들에 기초하여 목적지 픽셀의 부분 값을 수정한다. 프로세서는 수정된 부분 값을 제2 메모리에 저장하며 압축된 이미지 및 썸네일 이미지를 제3 메모리에 저장한다.
Description
독립형 디지털 카메라들 또는 스마트폰들 및 태블릿들과 같은 다른 디바이스들로 통합되는 디지털 카메라들에 의해 캡처된 디지털 이미지들은 공동 사진 전문가 그룹(JPEG) 압축 알고리즘과 같은 압축 알고리즘들을 사용하여 압축될 수 있다. 디지털 카메라들은 검출기들에 의해 수신된 광의 세기 및 컬러를 나타내는 신호들을 발생시키기 위해 검출기들의 어레이들을 포함한다. 신호들은 원래 디지털 이미지의 각각의 픽셀의 컬러 및 세기를 나타내기 위해 하나 이상의 바이트들의 정보로 변환된다. 압축 알고리즘들은 그 후 원래 디지털 이미지에서 블록들을 압축하기 위해 사용된다. 예를 들면, JPEG 압축 알고리즘은 블록에서 픽셀들의 값들을 나타내는 주파수 성분들을 생성하기 위해 이산 코사인 변환(DCT)을 적용함으로써 원래 디지털 이미지로부터 픽셀들의 블록(16×16 최소 코딩 유닛, MCU)을 압축한다. 인간의 눈은 보다 높은 주파수 성분들에 덜 민감하며, 이것은 그러므로 폐기되거나 또는 더 낮은 주파수 성분들보다 낮은 정확도로 저장될 수 있으며, 그에 의해 블록을 압축한다. 허프만(Huffman) 인코딩과 같은, 부가적인 무손실 압축이 그 후 블록과 연관된 이미지의 일 부분을 나타내는 정보를 추가로 압축하기 위해 적용된다. 디지털 이미지를 압축하는 것은 그러므로 연속 블록들에서 메인 메모리로부터의 이미지에서 모든 픽셀을 검색하는 것을 요구한다.
원래 디지털 이미지는 또한 아이콘으로서 디스플레이에 적합한 썸네일 이미지를 생성하기 위해, 예로서 컴퓨터 파일링 시스템에서 이미지의 시각적 표현을 제공하기 위해 다운스케일링될 수 있다. 다운스케일링은 썸네일 이미지를 형성하기 위해 원래 디지털 이미지를 나타내는 픽셀들의 수를 감소시킨다. 원래 디지털 이미지의 그럴듯한 표현을 생성하기 위해, 다운스케일링 알고리즘들은 썸네일 이미지에서 각각의 픽셀에 대한 값을 추정하기 위해 원래 디지털 이미지에서 다수의 픽셀들의 보간된 값들을 조합한다. 보간 알고리즘들의 예들은 가장 가까운 이웃 보간, 쌍선형 보간, 쌍입방 보간 등을 포함한다. 다운스케일링은 통상적으로 메인 메모리에 저장된 원래 디지털 이미지로부터 픽셀들의 라인들을 인출하고 로컬 이미지 버퍼에 각각의 라인을 저장함으로써 수행된다. 보간 알고리즘은 그 후 썸네일 이미지에서 대응하는 픽셀로의 버퍼링된 라인에서의 각각의 픽셀의 기여를 산출하기 위해 사용된다. 따라서, 썸네일 이미지를 생성하는 것은 연속 라인들에서 메인 메모리로부터 이미지에서의 모든 픽셀을 검색하는 것을 요구한다.
본 발명은 첨부 도면들을 참조하여 보다 양호하게 이해될 수 있고, 이의 많은 특징 및 이점이 해당 기술분야에서의 통상의 기술자들에게 분명해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 몇몇 실시예들에 따라 썸네일 이미지를 형성하기 위해 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템의 블록도이다.
도 2는 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀들의 값들을 결정하도록 이미지에서 픽셀 값들을 보간하기 위해 사용된 매핑의 다이어그램이다.
도 3은 몇몇 실시예들에 따라 이미지에서 데이터를 액세스하기 위해 단일 패스를 사용하여 썸네일 이미지를 형성하도록 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템의 블록도이다.
도 4는 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트를 포함하는 이미지의 일 부분의 다이어그램이다.
도 5는 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀들과 연관된 스케일링 윈도우들에 의해 중첩되는 MCU의 다이어그램이다.
도 6은 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀과 연관된 스케일링 윈도우에 의해 중첩되는 데이터 유닛들의 세트를 포함한 MCU의 다이어그램이다.
도 7은 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트에 대한 액세스 패턴을 예시하는 이미지의 일 부분의 다이어그램이다.
도 8은 몇몇 실시예들에 따라 다수의 MCU들을 포함하는 스케일링 윈도우에 대응하는 목적지 픽셀의 값의 부분 누적들을 예시하는 이미지의 일 부분의 다이어그램이다.
도 9는 몇몇 실시예들에 따라 동시 이미지 압축 및 썸네일 생성을 위한 방법의 흐름도이다.
도 10은 몇몇 실시예들에 따라 블록에서 픽셀들의 값들에 기초하여 목적지 픽셀들의 부분 값들을 계산하고 저장하는 방법의 흐름도이다.
도 1은 몇몇 실시예들에 따라 썸네일 이미지를 형성하기 위해 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템의 블록도이다.
도 2는 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀들의 값들을 결정하도록 이미지에서 픽셀 값들을 보간하기 위해 사용된 매핑의 다이어그램이다.
도 3은 몇몇 실시예들에 따라 이미지에서 데이터를 액세스하기 위해 단일 패스를 사용하여 썸네일 이미지를 형성하도록 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템의 블록도이다.
도 4는 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트를 포함하는 이미지의 일 부분의 다이어그램이다.
도 5는 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀들과 연관된 스케일링 윈도우들에 의해 중첩되는 MCU의 다이어그램이다.
도 6은 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀과 연관된 스케일링 윈도우에 의해 중첩되는 데이터 유닛들의 세트를 포함한 MCU의 다이어그램이다.
도 7은 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트에 대한 액세스 패턴을 예시하는 이미지의 일 부분의 다이어그램이다.
도 8은 몇몇 실시예들에 따라 다수의 MCU들을 포함하는 스케일링 윈도우에 대응하는 목적지 픽셀의 값의 부분 누적들을 예시하는 이미지의 일 부분의 다이어그램이다.
도 9는 몇몇 실시예들에 따라 동시 이미지 압축 및 썸네일 생성을 위한 방법의 흐름도이다.
도 10은 몇몇 실시예들에 따라 블록에서 픽셀들의 값들에 기초하여 목적지 픽셀들의 부분 값들을 계산하고 저장하는 방법의 흐름도이다.
디지털 카메라들, 스마트폰들, 태블릿들 랩탑 컴퓨터들, 데스크탑 컴퓨터들 등에서 구현된 이미지 프로세싱 시스템들은 대응하는 썸네일 이미지를 생성하기 위해 통상적으로 디지털 이미지의 JPEG 압축 및 디지털 이미지의 다운스케일링 양쪽 모두를 수행한다. 그러나, 종래의 JPEG 압축 및 종래의 다운스케일링은 상이한 포맷들로 디지털 이미지에서의 픽셀들을 액세스한다. 예를 들면, 종래의 JPEG 압축은 이산 코사인 변환(DCT) 압축 알고리즘들을 지원하기 위해 블록들에서 픽셀 값들을 액세스하며 종래의 다운스케일링은 라인 버퍼에 픽셀 값들을 저장하는 것을 지원하기 위해 한 라인씩 픽셀 값들을 액세스한다. 종래의 다운스케일링은 썸네일 이미지에서 목적지 픽셀을 도출하기 위해 사용되는 픽셀들을 정의하는 소스 이미지 윈도우가 다수의 블록들에 걸쳐 확산된다면 픽셀들의 블록들에 대해 수행될 수 없다. 이러한 문제는 소스 이미지 및 썸네일 이미지 사이에서의 보다 큰 스케일링 비를 위해 과장된다. 결과적으로, 메인 메모리에 저장된 원래의 디지털 이미지의 픽셀들에 걸친 두 개의 별개의 패스들은 JPEG 압축 및 다운스케일링 양쪽 모두를 수행하기 위해 픽셀 값들을 검색하도록 요구된다. 각각의 패스는 메모리 대역폭 및 전력을 소비한다.
이미지 압축 및 다운스케일링에 의해 소비된 메모리 대역폭 및 전력은 픽셀들의 값들을 저장하기 위해 사용된 시스템 메모리(또는 시스템 메모리에 대한 캐시)를 통해 단일 패스에서의 디지털 이미지를 나타내는 픽셀들의 값들을 검색하며 그 후 압축된 이미지 및 다운스케일링된 썸네일 이미지 양쪽 모두를 생성하기 위해 픽셀들의 검색된 값들을 사용함으로써 감소된다. 따라서, 각각의 픽셀 값은 종래의 JPEG 압축 및 다운스케일링을 수행하기 위해 요구된 두 개의 검색들(각각의 패스에 대해 하나씩) 대신에, 단지 한 번 시스템 메모리 또는 캐시로부터 검색된다. 단일 패스에서 검색된 픽셀 값들로부터 압축된 이미지 및 다운스케일링된 썸네일 이미지를 생성하는 것은 종래의 실시에서 픽셀 값들을 검색하기 위해 요구된 두 개의 패스들에 대해 절반만큼 메모리 대역폭 및 전력 소비를 감소시킨다.
몇몇 실시예들에서, 디지털 이미지를 나타내는 픽셀들의 값들은 블록들(MCU들과 같은)에서 시스템 메모리 또는 캐시로부터 검색되며 JPEG 압축은 블록들에서 픽셀들의 값들에 대해 수행된다. 블록에서 픽셀 값들을 압축하는 것과 동시에, 썸네일 이미지에서의 목적지 픽셀들의 값들이 목적지 픽셀들에 대한 스케일링 윈도우들의 경계들에 블록의 경계들을 비교함으로써 생성된다. 목적지 픽셀의 스케일링 윈도우 내에 있는 블록에서 픽셀들의 일 부분의 값들은 목적지 픽셀의 위치에 보간되며 보간된 값들은 목적지 픽셀의 부분 값을 형성하기 위해 누적된다. 부분 값들은 현재 블록이 스케일링 윈도우의 일 부분에 중첩하면 또는 스케일링 윈도우가 다수의 아웃하는 블록들에 걸쳐 확산되면 로컬 메모리(랜덤 액세스 메모리, RAM과 같은)에 저장된다. 부분 값은 픽셀들의 뒤이어 검색된 블록과 중첩하는 스케일링 윈도우에 응답하여 로컬 메모리로부터 복원되며 뒤이어 검색된 블록에서 픽셀들의 값들과 함께 누적된다. 예를 들면, 스케일링 윈도우 내에 있는 뒤이어 검색된 블록에서 픽셀들의 일 부분의 값들은 목적지 픽셀의 위치에 보간된다. 보간된 값들은 그 후 목적지 픽셀의 부분 값에서 누적된다. 목적지 픽셀의 최종 값은 스케일링 윈도우의 전체가 픽셀들의 하나 이상의 검색된 블록들과 중첩한다면 부분 값에 기초하여 결정된다.
도 1은 몇몇 실시예들에 따라 썸네일 이미지를 형성하기 위해 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템(100)의 블록도이다. 프로세싱 시스템(100)은 이미지(110)를 나타내는 정보를 저장하는 메모리(105)를 포함한다. 메모리(105)는 블록들(115)로 이미지(110)를 저장하는 시스템 메모리 또는 캐시로서 구현된다(단지 하나만이 명료함을 위해 참조 번호에 의해 표시된다). 예를 들면, 이미지(110)는 픽셀들의 256×256 어레이와 같은 픽셀들의 어레이에 의해 표현될 수 있다. 이미지(110)에서 블록들(115)의 각각은 16×16 픽셀 최소 코딩 유닛, MCU와 같은 픽셀들의 서브세트에 의해 표현된다. 따라서, 이미지(110)는 블록들(115)의 16×16 어레이와 같은 표현을 위해 세분될 수 있다. 이미지(110)는 또한 각각 256개 픽셀들을 포함하는 256개 라인들로서의 표현을 위해 세분될 수 있다.
프로세싱 시스템(100)은, 이미지(110)를 압축하기 위한 압축 알고리즘을 구현하는, 공동 사진 전문가 그룹(JPEG) 인코더(125)와 같은 인코더(125)를 구현하기 위해 사용되는 프로세서(120)를 포함한다. 예시된 실시예에서, JPEG 인코더(125)는 공간(2-차원, 2-D) 도메인으로부터 상이한 진폭들을 가진 주파수 성분들의 세트로서 이미지(110)를 나타내는 주파수 도메인 신호로 이미지(110)를 변환하는 FDCT 압축 알고리즘을 이용하는 포워드 이산 코사인 변환(FDCT) 모듈(130)을 포함한다. FDCT 모듈(130)은 주파수 도메인 신호의 고-주파수 성분들을 폐기하며, 그에 의해 이미지(110)의 표현을 압축한다. 고-주파수 성분들을 폐기함으로써 이미지를 압축하는 것은 몇몇 정보가 압축 시 손실되기 때문에 손실 있는 압축 기술이다. 압축의 양, 예로서 폐기되는 고 주파수 성분들의 수는 압축 비에 의해 결정된다.
이미지(110)의 주파수 도메인 표현은 또한 인코더(135)에서 구현된 무손실 압축 알고리즘을 사용하여 추가로 압축된다. 예를 들면, 인코더(135)는 추정된 주파수에 기초하여 도출되는 가변 길이 코드 테이블 또는 주파수 도메인 표현에서 상이한 값들의 발생 확률을 사용하여 이미지(110)의 주파수 도메인 표현을 인코딩하기 위해 호프만 인코딩을 구현할 수 있다. 인코더(135)는 메모리(145)에 저장되는, 압축된 이미지(140)를 생성한다. 몇몇 실시예들에서, 메모리(145)는 메모리(105)를 구현하기 위해 사용되는 동일한 시스템 메모리 또는 캐시이다. 그러나, 메모리들(105, 145)은 또한 상이한 메모리 요소들 또는 캐시들로서 구현될 수 있다.
적어도 부분적으로 FDCT 모듈(130)이 이미지(110)를 나타내는 픽셀들의 값들을 2-D 도메인으로부터 주파수 도메인으로 변환하기 때문에, FDCT 모듈(130)은 이미지(110)에서의 픽셀들의 값들이 메모리(105)로부터 블록 단위 기반으로 검색되도록 요구한다. 예를 들면, JPEG 인코더(125)는 메모리(105)로부터 블록(115)을 검색하며 그 후 FDCT 모듈(130)은 주파수 도메인 표현의 고-주파수 성분들을 폐기함으로써 압축을 위해 블록(115)에서 픽셀들의 값들을 블록(115)의 주파수 도메인 표현으로 변환한다. 이미지(110)의 블록들(115)은, 메모리 액세스 제어기, 메모리 물리 계층 인터페이스, 하나 이상의 버스들 또는 브리지들 등을 포함한 요소들을 갖고 구현될 수 있는, 인터페이스를 통해 메모리(105)로부터 검색된다. 인터페이스는 블록들(115)의 검색을 위해 (적어도 부분적으로) 할당되는 제한된 메모리 대역폭을 가진다. 더욱이, 인터페이스를 통해 블록들(115)을 검색하는 것은 전력을 소비하며 압축 프로세스로 대기 시간을 도입한다.
프로세싱 시스템(100)은 또한 프로세서(120)와 동일하거나 또는 상이할 수 있는, 프로세서(150)를 포함한다. 프로세서(150)는 이미지(110)에서 픽셀들의 값들로부터 썸네일 이미지(160)를 생성하기 위해 사용되는 썸네일 스케일러(155)를 구현한다. 썸네일 이미지(160)는 메모리(163)에 저장된다. 썸네일 스케일러(155)는 라인 단위 기반으로 이미지(110)로부터 픽셀들의 값들을 검색하며 픽셀들의 각각의 라인을 버퍼(165)에 저장한다. 예를 들면, 썸네일 스케일러(155)는 메모리(105)로부터 256개 픽셀들의 라인을 검색하며 라인을 버퍼(165)에 저장할 수 있다. 예시된 실시예에서, 썸네일 스케일러(155)는 목적지 픽셀의 위치로 라인에서의 픽셀의 값을 보간함으로써 썸네일 이미지에서 목적지 픽셀(목적지 픽셀(175)과 같은)로의 라인에서의 각각의 픽셀의 기여를 추정하기 위해 쌍선형 보간 모듈(170)을 구현한다. 썸네일 스케일러(155)는 또한 목적지 픽셀(175)로의 라인에서의 픽셀들의 기여들을 추정하기 위해 쌍입방 보간 모듈(180)을 구현한다. 평균화 모듈(185)은 그 후 목적지 픽셀(175)의 최종 값을 생성하기 위해 쌍선형 보간 모듈(170) 및 쌍입방 보간 모듈(180)에 의해 생성된 값들을 평균화하기 위해 사용된다.
적어도 부분적으로 썸네일 스케일러(155)가 버퍼(165)에서의 저장을 위해 라인 단위 기반으로 이미지(110)로부터 픽셀들의 값들을 검색하기 때문에, 이미지(110)의 라인 단위 스캔은 JPEG 인코더(125)에 의해 수행된 이미지(110)의 블록 단위 스캔 외에 썸네일 스케일러(155)에 의해 수행된다. 썸네일 스케일러(155)는, 메모리 액세스 제어기, 메모리 물리 계층 인터페이스, 하나 이상의 버스들 또는 브리지들 등을 포함한 요소들을 갖고 구현될 수 있는, 인터페이스를 통해 메모리(105)로부터 라인들을 검색한다. 따라서, 썸네일 스케일러(155)에 의해 수행된 부가적인 스캔은 동일한 이미지(110)가 압축 및 다운스케일링을 수행하기 위해 두 번 인출되기 때문에 메모리 대역폭 소비가 대략 두 배가 된다. 더욱이, 두 개의 패스들에서 이미지(110)에서의 픽셀들이 값들을 검색하는 것은 압축 및 스케일링을 수행하기 위해 요구된 전력 소비의 대략 두 배가 되며, 또한 대기 시간을 증가시킬 수 있다.
도 2는 몇몇 실시예들에 따른 썸네일 이미지에서 목적지 픽셀들의 값들을 결정하기 위해 이미지에서 픽셀 값들을 보간하기 위해 사용된 매핑(200)의 다이어그램이다. 매핑(200)은 썸네일 이미지(220)를 나타내는 목적지 픽셀들(215)(단지 하나만이 명료함을 위해 참조 번호에 의해 표시된다)에 보다 큰 이미지에서의 픽셀들의 서브세트(도 2에 도시되지 않음)를 나타내는 블록(210)에서의 픽셀들(205)의 값들(단지 하나만이 명료함을 위해 참조 번호에 의해 표시된다)을 연관시킨다. 예시된 실시예에서, 블록(210)은 픽셀들의 256×256 어레이에 의해 표현되는 이미지의 일 부분인 16×16 픽셀 최소 코딩 유닛(MCU)에서 픽셀들의 서브세트를 포함한다. 예시된 실시예에서, 썸네일 이미지(220)는 블록(210) 및 썸네일 이미지(220) 사이에서의 다운스케일링 비가 3.99×2.66이도록 목적지 픽셀들(215)의 4×6 어레이이다.
다운스케일링은 블록(210)으로부터 라인(225)과 같은 픽셀들의 라인을 인출하며(화살표(227)에 의해 표시된 바와 같이) 도 1에 도시된 버퍼(165)와 같은 라인 버퍼에 인출된 라인(225)을 저장함으로써 수행된다. 픽셀들(205)의 그룹들은 대응하는 목적지 픽셀들(215)과 연관된다. 예를 들면, 그룹(230)은 목적지 픽셀(215)과 연관된다. 그룹(230)에서 픽셀들(205)의 값들은 각각 목적지 픽셀(215)의 값에 기여를 제공한다. 목적지 픽셀(215)의 값으로의 픽셀들(205)의 각각의 기여는 픽셀들(205)의 위치들로부터 목적지 픽셀(215)의 위치로 보간함으로써 결정된다.
몇몇 실시예들에서, FANT 알고리즘은 X 방향 및 Y 방향으로의 오프셋들에 기초하여 목적지 픽셀(215)의 값들로의 기여들을 결정하기 위해 사용될 수 있다. 기여(Destpel)는 다음과 같이 표현될 수 있다:
여기에서 P[y][x]는 위치(x,y)에서 소스 픽셀의 값이고, xportion은 X 방향으로 가장 가까운 좌측 정수 픽셀로부터의 거리이고, yportion은 Y 방향으로 가장 가까운 최상부 정수 픽셀로부터의 거리이고, x는 그룹(230)에서 픽셀들(205)에 걸쳐 X 방향으로 0으로부터 hscal_ratio로 달라지며, y는 그룹(230)에서 픽셀들(205)에 걸쳐 Y 방향으로 0에서 vscl_ratio으로 달라진다. 일반적으로 말해서, 쌍선형, 쌍입방, 및 FANT 평균화 알고리즘들은 스케일링 윈도우에 포함된 픽셀들을 사용하여 목적지 픽셀의 값에 보간하기 위해 사용될 수 있는 보간 기술들이다. 예를 들면, 목적지 픽셀(215)은 스케일링 윈도우(230)에서 픽셀들의 블록을 사용하여 보간될 수 있다.
라인 버퍼를 구현하기 위해 요구된 면적 비용은 높으며 그룹의 크기에 비례하여, 예로서 hscal_ratio 또는 yscal_ratio에 비례하여 증가한다. 시스템 메모리 또는 캐시로부터 라인들(225)을 인출하는 것은 시스템 메모리 또는 캐시에 대한 인터페이스의 대역폭을 소비한다. 더욱이, 블록(210)을 다운스케일링함으로써 썸네일 이미지(220)를 생성하기 위해 소비된 전력은 라인 버퍼의 크기가 증가됨에 따라 증가하며 또한 라인들(225)을 인출함으로써 소비된 메모리 대역폭의 양이 증가함에 따라 증가한다. 전체 전력 소비는, 첫 번째로, JPEG 인코딩을 수행하기 위해 블록단위 패스 및 두 번째로 썸네일 다운스케일링을 수행하기 위해 라인 단위 패스 대신에 소스 이미지에 대한 단일 패스를 사용하여 JPEG 인코딩 및 썸네일 다운스케일링을 수행함으로써, 라인 버퍼에 대한 요구를 제거하는 동안, 감소될 수 있다.
도 3은 몇몇 실시예들에 따라 이미지에서 데이터를 액세스하기 위해 단일 패스를 사용하여 썸네일 이미지를 형성하기 위해 이미지의 이미지 압축 및 다운스케일링을 수행하기 위한 프로세싱 시스템(300)의 블록도이다. 프로세싱 시스템(300)은 이미지(310)를 나타내는 정보를 저장하는 메모리(305)를 포함한다. 메모리(305)는 블록들(315)에 이미지(310)를 저장하는 시스템 메모리 또는 캐시로서 구현된다(단지 하나만이 명료함을 위해 참조 번호에 의해 표시된다). 예를 들면, 이미지(310)는 픽셀들의 256×256 어레이와 같은 픽셀들의 어레이에 의해 표현될 수 있다. 이미지(310)에서 블록들(315)의 각각은 16×16 픽셀 MCU와 같은 픽셀들의 서브세트에 의해 표현된다. 따라서, 이미지(310)는 블록들(115)의 16×16 어레이로서의 표현을 위해 세분될 수 있다.
메모리(305)는 인터페이스(325)에 의해 프로세서(320)에 연결된다. 인터페이스(325)의 몇몇 실시예들은 메모리(305) 및 프로세서(320) 사이에서 정보를 전달하기 위해 제한된 양의 메모리 대역폭을 제공한다. 예를 들면, 인터페이스(325)는 메모리 액세스 제어기, 메모리 물리 계층 인터페이스, 하나 이상의 버스들, 하나 이상의 브리지들, 또는 하드웨어 요소들의 특성들에 의해 결정된 메모리 대역폭의 양을 제공하기 위해 제한되는 다른 하드웨어 요소들을 사용하여 구현될 수 있다. 메모리(305) 및 프로세서(320) 사이에서 정보를 전달하기 위해 인터페이스(325)를 사용하는 것은 인터페이스(325)를 통해 전달된 정보의 양이 증가함에 따라 증가하는 전력의 양을 소비한다.
프로세서(320)는 이미지(310)를 압축하기 위한 압축 알고리즘을 구현하는, JPEG 인코더(330)와 같은 인코더(330)를 구현한다. 예시된 실시예에서, JPEG 인코더(330)는 공간(2-D) 도메인으로부터 상이한 진폭들을 가진 주파수 성분들의 세트로서 이미지(310)를 나타내는 주파수 도메인 신호로 이미지(310)를 변환하는 FDCT 압축 알고리즘을 이용하는 FDCT 모듈(335)을 포함한다. FDCT 모듈(335)은, 여기에서 논의된 바와 같이, 주파수 도메인 신호의 고-주파수 성분들을 폐기하며, 그에 의해 이미지(310)의 표현을 압축한다. 이미지(310)의 주파수 도메인 표현은 인코더(340)에서 구현된 무손실 압축 알고리즘을 사용하여 추가로 압축된다. 예를 들면, 인코더(340)는 여기에서 논의된 바와 같이, 이미지(310)의 주파수 도메인 표현을 인코딩하기 위해 허프만 인코딩을 구현할 수 있다.
인코더(340)는 메모리 제어기들, 메모리 물리 계층 인터페이스들, 버스들, 브리지들 등을 포함한 하드웨어 요소들의 조합들을 사용하여 구현될 수 있는, 인터페이스(355)에 의해 프로세서(320)로 연결되는 메모리(350)에 저장되는, 압축된 이미지(345)를 생성한다. 인터페이스(355)는 그러므로 프로세서(320) 및 메모리(350) 사이에서 정보를 전달하기 위한 제한된 대역폭을 가진다. 몇몇 실시예들에서, 메모리(350)는 메모리(305)를 구현하기 위해 사용되는 동일한 시스템 메모리 또는 캐시이며, 이 경우에 인터페이스(355)는 인터페이스(325)와 동일하다. 그러나, 메모리들(305, 350)은 또한 상이한 인터페이스들(325, 355)에 의해 프로세서(320)에 연결되는 상이한 메모리 요소들 또는 캐시들로서 구현될 수 있다.
프로세서(320)는 또한 이미지(310)에서 픽셀들의 값들로부터 썸네일 이미지(365)를 생성하기 위해 사용되는 썸네일 스케일러(360)를 구현한다. 예시된 실시예에서, 썸네일 스케일러(360)는 픽셀들의 누적 및 주어진 스케일링 윈도우에 대한 평균화를 수행하기 위해 FANT 평균화 알고리즘(385)을 구현한다. 목적지 픽셀(375)의 값은 블록(310) 내에서 주어진 스케일링 윈도우(HSCL×VSCL)에서의 입력 픽셀들에 의해 결정된다. 따라서, 입력 소스 픽셀들(315) 모두가 감안되며 썸네일 화상(365)에서 목적지 픽셀(375)의 값들에 기여한다. 스케일링 비가 분수이면, 즉 스케일링 윈도우 경계들이 정수 인덱싱된 픽셀들(315) 중간에 속하면, 스케일링 윈도우의 경계 내에 있는 부분 소스 픽셀들(315)은 대응하는 목적지 픽셀(375)의 값에 기여한다. 이것은 스케일링 윈도우 경계들에 걸친 앨리어싱 효과들을 최소화한다. 목적지 픽셀들(375)의 값들은 인터페이스(390)를 통해 메모리(350)로 전달된다. 인터페이스(390)는 메모리 제어기들, 메모리 물리 계층 인터페이스들, 버스들, 브리지들 등을 포함한 하드웨어 요소들의 조합들을 사용하여 구현된다. 인터페이스(390)는 그러므로 프로세서(320) 및 메모리(350) 사이에서 정보를 전달하기 위해 제한된 대역폭을 가진다. 인터페이스(390)의 몇몇 실시예들은 인터페이스(355)와 동일하다.
프로세서(320)는 랜덤 액세스 메모리(RAM)(395)로서 구현될 수 있는 로컬 메모리와 연관된다. RAM(395)은 프로세서(320) 및 로컬 RAM(395) 사이에서 정보를 전달하기 위해 요구된 액세스 대기시간, 메모리 대역폭, 및 전력 소비가 인터페이스들(325, 355, 390)을 통해 정보를 전달하기 위해 요구된 액세스 대기시간, 메모리 대역폭, 및 전력 소비에 비교하여 작도록(및 몇몇 경우들에서 무시해도 될 정도이도록) 프로세서(320) 내에서 또는 프로세서(320)에 근접하여 구현될 수 있다.
프로세서(320)는 블록 단위 기반으로 인터페이스(325)를 통해 메모리(305)에 저장된 이미지(310)로부터 블록(315)을 인출한다. JPEG 인코더(330) 및 썸네일 스케일러(360)는 각각, 압축된 이미지(345) 및 썸네일 이미지(365)를 생성하기 위해 인출된 블록들에 대해 동시에 동작한다. 예를 들면, 프로세서(320)는 메모리(305)로부터 블록(315)에서의 픽셀들의 값들을 검색할 수 있다. JPEG 인코더(330)는 압축된 이미지(345)를 생성하기 위해 값들에 압축 알고리즘을 적용하며 썸네일 스케일러(360)는, 블록(315)에서 픽셀들의 값들에 대한 JPEG 인코더(330)의 동작과 동시에, 목적지 픽셀(375)에 대한 스케일링 윈도우를 중첩시키는 블록(315)의 부분들에서의 픽셀들의 값들에 기초하여 목적지 픽셀(375)의 부분 값을 수정한다. 썸네일 스케일러(360)는 RAM(395)과 같은 프로세서(320)와 연관된 로컬 메모리에서 수정된 부분 값을 저장할 수 있다. 썸네일 스케일러(360)는 또한 여기에서 논의된 바와 같이, 이미지(310)에서 다른 블록들에 대해 동작할 때 RAM(395)으로부터 수정된 부분 값을 검색할 수 있다. JPEG 인코더(330)는 블록(315)을 압축한 후 메모리(350)에 압축된 이미지(345)를 저장한다. 썸네일 스케일러(360)는, 여기에서 논의된 바와 같이, 메모리(350)에 완료된 썸네일 이미지들(365)을 저장한다.
도 4는 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트를 포함하는 이미지의 일 부분(400)의 다이어그램이다. 이미지는 M개 로우들 및 N개 컬럼들의 MCU들로 분할된다. 예를 들면, 이미지는 도 3에 도시된 이미지(310)에 의해 예시된 바와 같이 16개 로우들 및 16개 컬럼들을 포함할 수 있다. 부분(400)은 로우들(m, m+1)의 서브세트 및 컬럼들(n, n+1, n+2)의 서브세트에 의해 식별되는 MCU들의 서브세트를 포함한다. 예를 들면, MCU(405)는 로우/컬럼 쌍(m, n)에 의해 식별된다. MCU들의 각각은 4개의 데이터 유닛들로 추가로 세분된다. 예를 들면, MCU(405)는 데이터 유닛들(410, 411, 412, 413)로 세분되며, 이것은 여기에서 총괄하여 "데이터 유닛들(410 내지 413)"로 불리운다. 데이터 유닛들의 각각은 픽셀들의 블록을 포함한다. 예를 들면, 데이터 유닛(410)은 픽셀(415)을 포함한 픽셀들의 8×8 블록을 포함한다. 여기에서 논의된 바와 같이, MCU들에서 픽셀들의 값들은 시스템 메모리 또는 캐시(도 3에 도시된 메모리(305)와 같은)로부터 검색되며 블록 단위 기반으로 썸네일 이미지를 형성하기 위해 동시에 압축되고 다운스케일링된다.
스케일링 윈도우들(420, 421, 422, 423, 424, 425)(여기에서 총괄하여 "스케일링 윈도우들(420 내지 425)")은 부분(400)을 포함한 이미지를 다운스케일링함으로써 생성되는 썸네일 이미지에서 목적지 픽셀들과 연관된다. 스케일링 윈도우들(420 내지 425)은 중첩하며 썸네일 이미지에서 대응하는 목적지 픽셀에 기여하는 부분(400)에서의 픽셀들을 포함한다. 예를 들면, 스케일링 윈도우(420)는 MCU(405)의 데이터 유닛들(410 내지 413)에서의 픽셀들, 뿐만 아니라 로우/컬럼 쌍들((m, n+1), (m+1, n), (m+1, n+1))에 의해 식별된 MCU들에서의 픽셀들을 포함한다. 스케일링 윈도우들(420 내지 425)의 치수들은 여기에서 논의된 바와 같이, 스케일링 비 또는 별개의 수평 및 수직 스케일링 비들에 의해 결정된다. 스케일링 비들의 몇몇 실시예들은 스케일링 윈도우들(420 내지 425)의 경계들은 정수 값들로 인덱싱되는 픽셀들 사이에 있을 수 있도록 분수이다. 상기 경우에, 스케일링 윈도우들(420 내지 425)의 경계들 내에 있는 부분 소스 픽셀들은 썸네일 이미지에서 대응하는 목적지 픽셀들의 값들의 산출 시 포함된다.
스케일링 윈도우들(420 내지 425)과 연관된 목적지 픽셀들의 최종 값들은 스케일링 윈도우들(420 내지 425)이 다수의 블록들에 중첩하므로 단일 블록에서 픽셀들의 값들에 의해 결정되지 않는다. 대신에, 목적지 픽셀들의 부분 값들은 그러므로 블록 단위 기반으로 결정된다. 예를 들면, 스케일링 윈도우(420)와 연관된 목적지 픽셀의 부분 값은 MCU(405)에서 픽셀들의 값들을 압축하는 것과 동시에 데이터 유닛들(410 내지 413)에서 픽셀들의 값들을 보간함으로써 결정된다. 부분 값은 그 후 MCU(405)의 경계를 검출하는 것에 응답하여 로컬 메모리에 저장된다. 따라서, 썸네일 이미지를 생성하기 위한 다운스케일링을 위해 사용된 MCU(405)에서의 픽셀 값들의 보간 및 MCU(405)에서 픽셀 값들의 압축 양쪽 모두는 시스템 메모리 또는 캐시로부터 단일 스캔에서 검색된 값들을 사용하여 수행될 수 있다.
MCU(405)의 프로세싱이 완료되면, 또 다른 MCU가 시스템 메모리 또는 캐시로부터 검색될 수 있다. 예를 들면, MCU에서 픽셀들의 값들(m, n+1)은 MCU(405)의 다운스케일링 및 압축을 완료하는 것에 응답하여 시스템 메모리 또는 캐시로부터 검색될 수 있다. 검색된 MCU와 중첩하는 스케일링 윈도우들과 연관된 목적지 픽셀들의 부분 값들이 생성되거나 또는 로컬 메모리로부터 검색될 수 있다. 예를 들면, 스케일링 윈도우(420)와 연관된 목적지 픽셀의 부분 값은 시스템 메모리 또는 캐시로부터 MCU(m, n+1)를 검색하는 것에 응답하여 로컬 메모리로부터 검색된다. 또 다른 예를 위해, 스케일링 윈도우(421)와 연관된 목적지 픽셀의 부분 값은 MCU(m, n+1)를 검색하는 것에 응답하여 생성될 수 있다. 스케일링 윈도우들(420, 421)에 의해 포함된 픽셀들의 기여는 그 후 대응하는 부분 값들에서 보간되고 누적되며, 이것은 스케일링 윈도우들(420, 421) 또는 MCU(m, n+1)의 경계를 검출하는 것에 응답하여 로컬 메모리에 저장될 수 있다.
목적지 픽셀의 최종 값은 대응하는 스케일링 윈도우의 전체에 의해 포함된 픽셀들의 값들을 보간하는 것에 응답하여 결정된다. 예를 들면, 스케일링 윈도우(420)와 연관된 목적지 픽셀의 최종 값은 MCU(m+1, n+1)를 프로세싱하는 동안 최하부 우측 코너에서 스케일링 윈도우(420)의 경계에 도달하는 것에 응답하여 결정된다. 목적지 픽셀의 최종 값은 외부 메모리에 저장되며, 이것은 이미지의 부분(400)을 저장하기 위해 사용된 시스템 메모리 또는 캐시와 동일한 메모리 또는 상이한 메모리일 수 있다.
도 5는 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀들과 연관된 스케일링 윈도우들(501, 502, 503, 504)에 의해 중첩되는 MCU(500)의 다이어그램이다. MCU(500)는 여기에서 총괄하여 "데이터 유닛들(510 내지 513)"로 불리우는, 데이터 유닛들(510, 511, 512, 513)로 세분된다. 스케일링 윈도우들(501, 502, 503, 504)(여기에서 총괄하여 "스케일링 윈도우들(501 내지 504)")로 불리우는)은 데이터 유닛(510)의 상이한 부분들(515, 516, 517, 518)(여기에서 총괄하여 "부분들(515 내지 518)"로 불리우는), 뿐만 아니라 데이터 유닛들(511 내지 513)을 포함하는 다른 데이터 유닛들의 부분들을 포함한다.
스케일링 윈도우들(501 내지 504)과 연관된 목적지 픽셀들의 부분 값들은 대응하는 스케일링 윈도우(501 내지 504)에 의해 포함된 블록의 일 부분 내에서 픽셀들의 기여들을 계산하고, 현재 블록으로부터의 기여들 모두가 누적되었다면 로컬 메모리에 부분 값을 저장하고, 대응하는 스케일링 윈도우(501 내지 504)에 의해 적어도 부분적으로 포함되는 새로운 블록을 검색하는 것에 응답하여 로컬 메모리로부터 부분 값을 복원하며, 새롭게 검색된 블록의 일 부분 내에서 픽셀들의 기여들을 누적시킴으로써 블록 단위 기반으로 누적된다.
몇몇 실시예들에서, 부분 값들은 부분들(515 내지 518)의 경계들을 검출하는 것에 응답하여 로컬 메모리에 저장된다. 예를 들면, 스케일링 윈도우(502)와 연관된 목적지 픽셀의 부분 값은 시스템 메모리 또는 캐시로부터 MCU(500)에서 데이터 유닛(510)을 검색하는 것에 응답하여 로컬 메모리로부터 검색된다. 데이터 유닛(510)의 부분(516)에서 픽셀들로부터의 기여들은 부분 값에서 누적되며, 이것은 부분(516)의 경계를 검출하는 것에 응답하여 로컬 메모리에 저장된다. 스케일링 윈도우들(502 내지 504)과 연관된 목적지 픽셀들의 부분 값들은 또한 데이터 유닛(510) 내에서 스케일링 윈도우들(502 내지 504)의 경계들을 검출하는 것에 응답하여 로컬 메모리에 저장된다.
몇몇 실시예들에서, 목적지 픽셀들의 최종 값들은 대응하는 목적지 픽셀들에 대한 픽셀들의 기여들 모두가 계산됨을 나타내는 스케일링 윈도우들(501 내지 504)의 경계들을 검출하는 것에 응답하여 시스템 메모리에 저장된다. 예를 들면, 스케일링 윈도우(501)와 연관된 목적지 픽셀의 부분 값은 시스템 메모리 또는 캐시로부터 MCU(500)에서 데이터 유닛(510)을 검색하는 것에 응답하여 로컬 메모리로부터 검색된다. 목적지 픽셀에 기여하는 마지막 픽셀은 데이터 유닛(510)의 부분(515)의 하부 오른쪽 코너에 있으며 따라서 목적지 픽셀의 최종 값은 부분(515)에서의 픽셀들이 프로세싱된다면 결정된다. 스케일링 윈도우(501)에 대한 목적지 윈도우의 최종 값은 그러므로 데이터 유닛(510)의 프로세싱 동안 스케일링 윈도우(501)의 경계를 검출하는 것에 응답하여 시스템 메모리에 저장된다.
도 6은 몇몇 실시예들에 따라 썸네일 이미지에서 목적지 픽셀과 연관된 스케일링 윈도우(605)에 의해 중첩되는 데이터 유닛들(601, 602, 603, 604)의 세트를 포함한 MCU(600)의 다이어그램이다. 데이터 유닛들(601, 602, 603, 604)은 여기에서 총괄하여 "데이터 유닛들(601 내지 604)"로 불리운다. 스케일링 윈도우(605)는 데이터 유닛(601)에서의 부분(615), 데이터 유닛(602)에서의 부분(616), 데이터 유닛(603)에서의 부분(617), 및 데이터 유닛(604)에서의 부분(618)에서 픽셀들을 포함한다. 예시된 실시예에서, 데이터 유닛들(601 내지 604)은 그것들이 참조 번호들(601 내지 604)의 번호순으로 표시된 순서로 검색되도록 Z-패턴으로 시스템 메모리로부터 검색된다.
스케일링 윈도우(605)와 연관된 목적지 픽셀의 부분 값은 시스템 메모리 또는 캐시로부터 데이터 유닛(601)을 검색하는 것에 응답하여 생성된다. 부분(615)에서 픽셀들의 값들은 목적지 픽셀의 위치에 대해 보간되며 보간된 값들은 부분 값에서 누적되고, 이것은 부분(615) 또는 데이터 유닛(600)에서의 경계 및 하나를 검출하는 것에 응답하여 로컬 메모리에 저장된다. 부분 값은 시스템 메모리로부터 데이터 유닛들(602, 603)을 검색하는 것에 응답하여 로컬 메모리로부터 복원되며 부분들(616, 617)에서 픽셀들의 값들은 부분 값에서 보간되고 누적되며, 이것은 데이터 유닛들(602, 603) 또는 부분들(616, 617)에서 경계들을 검출하는 것에 응답하여 로컬 메모리에 저장된다. 부분 값은 시스템 메모리로부터 데이터 유닛(604)을 검색하는 것에 응답하여 로컬 메모리로부터 복원되며 부분(618)에서 픽셀들의 값들은 부분 값에서 보간되고 누적되며, 이것은 부분(618)에서 경계를 검출하는 것에 응답하여 최종 값을 결정하기 위해 사용된다. 예를 들면, 목적지 픽셀의 최종 값은 부분들(615 내지 618)에서 픽셀들에 의해 기여된 부분 값들의 합과 동일하게 설정될 수 있으며 그 후 합은 스케일링 윈도우(605) 내에서 픽셀들의 총 수로 나누어질 수 있다.
도 7은 몇몇 실시예들에 따라 컬럼들 및 로우들로 조직된 MCU들의 세트에 대한 액세스 패턴을 예시하는 이미지의 일 부분(700)의 다이어그램이다. 이미지는 M개 로우들 및 N개 컬럼들의 MCU들로 분할된다. 예를 들면, 이미지는 도 3에 도시된 이미지(310)에 의해 예시된 바와 같이 16개 로우들 및 16개 컬럼들을 포함할 수 있다. 부분(700)은 로우들(m, m+1)의 서브세트 및 컬럼들(n, n+1, n+2)의 서브세트에 의해 식별되는 MCU들의 서브세트를 포함한다. 예를 들면, MCU(705)는 로우/컬럼 쌍(m, n)에 의해 식별된다. MCU들의 각각은 4개의 데이터 유닛들로 추가로 세분된다. 예를 들면, MCU(705)는 데이터 유닛들(710, 711, 712, 713)로 세분되며, 이것은 여기에서 총괄하여 "데이터 유닛들(710 내지 713)"로 불리운다. 데이터 유닛들의 각각은 픽셀들의 블록을 포함한다. 예를 들면, 데이터 유닛(710)은 픽셀(715)을 포함한 픽셀들의 8×8 블록을 포함한다. 여기에서 논의된 바와 같이, MCU들에서 픽셀들의 값들은 시스템 메모리 또는 캐시(도 3에 도시된 메모리(305)와 같은)로부터 검색되며 블록 단위 기반으로 썸네일 이미지를 형성하기 위해 동시에 압축되고 다운스케일링된다.
데이터 유닛들(710 내지 713)은 라인들(720, 725)에 의해 표시된 바와 같이 Z-패턴으로 액세스된다. 데이터 유닛들(710 내지 713)은 그러므로 참조 번호들(710 내지 713)의 번호순으로 표시된 순서로 액세스된다. MCU들에서 데이터 유닛들의 각각에 중첩하는 스케일링 윈도우들에 대한 부분 값들은 MCU들에서 픽셀 값들을 압축하는 것과 동시에 누적된다. 예를 들면, 로우/컬럼 쌍(m, n+1)에 의해 표시된 MCU에서 하부 좌측 데이터 유닛은 썸네일 이미지에서 대응하는 목적지 픽셀들과 연관되는 9개의 스케일링 윈도우들(730)(단지 하나가 명료함을 위해 참조 번호에 의해 표시된다)에 의해 중첩된다. 스케일링 윈도우들(730)에 대한 부분 값들은 데이터 유닛에서 픽셀들의 값들의 프로세싱 동안 누적된다.
부분 값들은 스케일링 윈도우들(730)의 경계들 및 데이터 유닛의 경계들의 비교가 스케일링 윈도우들(730)에 의해 포함된 픽셀들 모두보다 적은 목적지 픽셀들로의 기여들이 결정되었음을 나타낸다면 로컬 메모리에 저장된다. 목적지 픽셀의 최종 값은 비교가 대응하는 스케일링 윈도우에 의해 포함된 픽셀들 모두의 목적지 픽셀로의 기여들이 결정되었음을 나타낸다면 시스템 메모리에 저장된다. 예를 들면, 도 7에 도시된 중앙 스케일링 윈도우는 전체적으로 MCU(m, n+1)의 하부 좌측 데이터 유닛 내에 있다. 중앙 스케일링 윈도우와 연관된 목적지 픽셀의 최종 값은 그러므로 MCU(m, n+1)의 하부 좌측 데이터에서의 픽셀들의 프로세싱 동안 또는 그것에 이어서 시스템 메모리에 저장된다.
도 8은 몇몇 실시예들에 따라 다수의 MCU들을 포함하는 스케일링 윈도우에 대응하는 목적지 픽셀의 값의 부분 누적들을 예시하는 이미지의 일 부분(800)의 다이어그램이다. 이미지는 M개 로우들 및 N개 컬럼들의 MCU들로 분할된다. 예를 들면, 이미지는 도 3에 도시된 이미지(310)에 의해 예시된 바와 같이 16개 로우들 및 16개 컬럼들을 포함할 수 있다. 부분(800)은 로우들(m, m+1)의 서브세트 및 컬럼들(n, n+1, n+2)의 서브세트에 의해 식별되는 MCU들의 서브세트를 포함한다. 예를 들면, MCU(805)는 로우/컬럼 쌍(m, n)에 의해 식별된다. MCU들의 각각은 4개의 데이터 유닛들로 추가로 세분된다. 예를 들면, MCU(805)는 데이터 유닛들(810, 811, 812, 813)로 세분되며, 이것은 여기에서 총괄하여 "데이터 유닛들(810 내지 813)"로 불리운다. 데이터 유닛들의 각각은 픽셀들의 블록을 포함한다. 예를 들면, 데이터 유닛(810)은 픽셀(815)을 포함한 픽셀들의 8×8 블록을 포함한다. 여기에서 논의된 바와 같이, MCU들에서 픽셀들의 값들은 시스템 메모리 또는 캐시(도 3에 도시된 메모리(305)와 같은)로부터 검색되며 블록 단위 기반으로 썸네일 이미지를 형성하기 위해 동시에 압축되고 다운스케일링된다.
스케일링 윈도우(820)는 썸네일 이미지에서 목적지 픽셀에 기여하는 부분(800)에서의 픽셀들을 포함한다. 여기에서 논의된 바와 같이, 스케일링 윈도우(820)에 의해 포함된 픽셀들의 값들은 픽셀들의 위치들로부터 목적지 픽셀의 위치로 보간되며 보간된 값은 목적지 픽셀의 값을 결정하기 위해 다른 픽셀들의 보간된 값들과 함께 누적된다. 각각의 픽셀에 대한 보간된 값의 계산은 예로서, JPEG 압축 알고리즘에 따라, 압축된 이미지를 생성하기 위해 부분(800)의 인코딩 블록들과 동시에 수행된다. 예를 들면, 영역(821)에서 픽셀들의 보간된 값들은 데이터 유닛(811)에서 픽셀들을 인코딩하는 것과 동시에 목적지 픽셀의 부분 값에서 누적된다. 목적지 픽셀의 부분 값은 그 후 로컬 RAM에 저장된다. 시스템 메모리로부터 데이터 유닛(813)을 검색하는 것에 응답하여, 부분 값은 로컬 RAM으로부터 검색되며 영역(822)에서 픽셀들의 보간된 값들은 데이터 유닛(813)에서 픽셀들을 인코딩하는 것과 동시에 목적지 픽셀의 부분 값에서 누적된다. 부분 값은 그 후 로컬 RAM에 저장된다.
동시에 발생하는 픽셀들의 보간된 값들의 계산 및 부분(800)의 블록들의 인코딩은 블록 단위 기반으로 수행된다. 예를 들면, MCU(805)의 인코딩 및 영역들(821, 822)로부터 목적지 픽셀의 부분 값으로의 기여들의 계산이 완료되면, MCU(m, n+1)는 시스템 메모리로부터 검색되며 목적지 픽셀의 부분 값은 로컬 RAM으로부터 검색된다. 영역들(823, 824, 825, 826)에서 픽셀들의 값들은 목적지 픽셀의 위치로 보간되며 보간된 값들은 목적지 픽셀의 부분 값에서 누적된다. 누적은 MCU(m, n+1)에서 대응하는 데이터 유닛들을 인코딩하는 것과 동시에 수행된다. 부분 값은 그 후 로컬 RAM에 저장된다. 이러한 프로세스는 스케일링 윈도우(820)에 의해 포함된 픽셀들 모두의 기여들이 부분 값에서 누적될 때까지 블록 단위 기반으로 반복적으로 진행된다. 예를 들면, 동시 보간, 부분 값 누적, 및 인코딩은 MCU(m, n+2)의 영역(828)에서의 픽셀들, MCU(m+1, n)의 영역(829)에서의 픽셀들, MCU(m+1, n+1)의 영역들(830, 831)에서의 픽셀들, MCU(m+1, n+2)의 영역(832)에서의 픽셀들에 대해 수행된다. 목적지 픽셀의 최종 값은 영역(832)의 경계를 검출하는 것에 응답하여 메모리에 저장된다.
도 9는 몇몇 실시예들에 따라 동시 이미지 압축 및 썸네일 이미지 생성을 위한 방법(900)의 흐름도이다. 방법(900)은 도 3에 도시된 프로세싱 시스템(300)의 몇몇 실시예들에서 구현된다. 예를 들면, 방법(900)은 도 3에 도시된 프로세서(320)와 같은 프로세서에서 구현될 수 있다.
블록(905)에서, 프로세서는 시스템 메모리 또는 캐시로부터 이미지의 일 부분을 나타내는 픽셀들의 블록의 값들을 검색한다. 픽셀들의 블록은 MCU, MCU 내에서의 데이터 유닛, 또는 픽셀들의 다른 2-D 그룹일 수 있다.
블록(910)에서, 프로세서는 블록의 부분들에 중첩하는 스케일링 윈도우들의 목적지 픽셀들에 대한 부분 값들을 결정한다. 예를 들면, 여기에서 논의된 바와 같이, 목적지 픽셀들의 부분 값들은 픽셀들의 위치들로부터 목적지 픽셀들의 위치들로 블록의 부분들에서의 픽셀들의 값들을 보간함으로써 결정될 수 있다. 부분 값들은, 도 3에 도시된 로컬 RAM(395)과 같은, 로컬 메모리에 저장되며, 이것은 프로세서와 연관된다.
블록(915)에서, 프로세서는 완전한 스케일링 윈도우들에 대한 목적지 픽셀 값들을 결정한다. 예를 들면, 목적지 픽셀의 부분 값은 목적지 픽셀의 값에 기여하는 이미지에서의 픽셀들의 모두, 즉 스케일링 윈도우에 의해 포함된 이미지에서 픽셀들의 모두가 프로세서에 의해 프로세싱됨을 결정하는 것에 대한 프로세스에 응답하여 목적지 픽셀의 최종 값과 동일하게 설정된다. 몇몇 실시예들에서, 누적된 부분 값은 최종 값을 생성하기 위해 목적지 픽셀의 값에 기여하는 픽셀들의 수로 나누어진다. 목적지 픽셀들의 최종 값들은 도 3에 도시된 메모리(350)와 같은 메모리에 저장된다.
블록(920)에서, 프로세서는 블록에서 픽셀들에 의해 표현된 이미지의 부분의 압축된 표현을 형성하기 위해 블록에서 픽셀들의 값들을 인코딩한다. 예를 들면, 프로세서는, 여기에서 논의된 바와 같이, 블록에서 픽셀들의 값들에 대해 FDCT 변환을 수행할 수 있다.
블록(925)에서, 프로세서는 압축된 표현의 무손실 인코딩을 수행한다. 예를 들면, 프로세서는 블록에서 픽셀들에 의해 표현된 이미지의 부분의 압축된 표현에 대해 허프만 인코딩을 수행할 수 있다. 여기에서 논의된 바와 같이, 블록들(910, 915)에서 동작들은 블록들(920, 925)에서의 동작들과 동시에 수행된다. 따라서, 블록에서 픽셀들의 값들은 단지 한 번 또는 단일 패스에서 메모리로부터 검색된다(블록(905)에서).
판단 블록(930)에서, 프로세서는 시스템 메모리 또는 캐시로부터 검색된 부가적인 블록들이 있는지를 결정한다. 그렇다면, 방법(900)은 블록(905)으로 흐르며 프로세서는 블록 단위 이미지 압축 및 썸네일 생성 프로세스의 또 다른 반복을 수행한다. 그렇지 않다면, 방법(900)은 블록(935)으로 흐르며 방법(900)은 종료된다.
도 10은 몇몇 실시예들에 따라 블록에서 픽셀들의 값들에 기초하여 목적지 픽셀들의 부분 값들을 계산하고 저장하는 방법(1000)의 흐름도이다. 방법(1000)은 도 3에 도시된 프로세싱 시스템(300)의 몇몇 실시예들에서 구현된다. 예를 들면, 방법(1000)은 도 3에 도시된 프로세서(320)와 같은 프로세서에서 구현될 수 있다. 방법(1000)은 또한 도 9에 도시된 블록들(910, 915)에서 동작들의 몇몇 실시예들을 수행하기 위해 사용된다. 방법(1000)은 그러므로 픽셀들에 의해 표현된 이미지의 압축된 표현을 생성하기 위해 블록에서 픽셀들의 인코딩과 동시에 블록에서 픽셀들에 대해 수행된다.
블록(1001)에서, 프로세서는 다음 스케일링 윈도우와 연관된 목적지 픽셀의 값을 나타내는 부분 값들을 누적하기 시작한다. 프로세서의 몇몇 실시예들은 부분 값의 누적을 시작하기 전에 부분 값을 0의 값으로 초기화한다.
블록(1005)에서, 프로세서는 시스템 메모리 또는 캐시로부터 검색되어 온 블록으로부터 픽셀의 값을 액세스한다. 예시된 실시예에서, 블록은 프로세서에 의해 현재 프로세싱되고 있는 데이터 유닛의 일 부분이다. 픽셀은 스케일링 윈도우에 의해 포함된다. 따라서, 픽셀은 블록 또는 데이터 유닛의 경계 및 스케일링 윈도우의 경계들의 유니언에 의해 포함되는 영역에 있다. 블록(1010)에서, 프로세서는 목적지 픽셀의 부분 값으로의 픽셀의 기여를 계산한다. 예를 들면, 프로세서는 픽셀의 위치로부터 목적지 픽셀의 위치로 픽셀의 값을 보간할 수 있다. 블록(1015)에서, 프로세서는 블록(1010)에서 결정된 기여를 목적지 픽셀의 부분 값에 부가한다.
블록(1020)에서, 프로세서는 상기 블록에서의 픽셀이 스케일링 윈도우의 끝에 있는지를 결정한다. 예를 들면, 프로세서는, 여기에서 논의된 바와 같이, 픽셀이 스케일링 윈도우의 경계에 있는지 및 스케일링 윈도우에 의해 포함된 픽셀들의 모두가 이전에 프로세싱되었는지를 결정할 수 있다. 픽셀이 스케일링 윈도우에 의해 포함된 픽셀들 모두의 프로세싱을 완료하기 위해 프로세싱될 필요가 있는 마지막 픽셀이면, 방법(1000)은 블록(1025)으로 흐른다. 픽셀이 스케일링 윈도우에 의해 포함된 픽셀들의 모두의 프로세싱을 완료하기 위해 프로세싱될 필요가 있는 마지막 픽셀이 아니면, 방법(1000)은 메모리에 임의의 정보를 저장하지 않고 판단 블록(1030)으로 바로 흐른다.
블록(1025)에서, 목적지 픽셀의 값을 나타내는 이전 부분 값은 로컬 RAM으로부터 검색된다. 예를 들면, 이전 부분 값은 프로세서에 의해 이전에 프로세싱되니 데이터 유닛 및 스케일링 윈도우의 유니언에 의해 포함되는 픽셀들을 사용하여 계산된 부분 값일 수 있다. 블록(1035)에서, 검색된 이전 부분 값은 현재 데이터 유닛을 사용하여 계산된 부분 값에 더해진다. 블록(1040)에서, 부분 값은, 예로서 목적지 픽셀에 대한 부분 값에 기여된 픽셀의 총 수로 나눔으로써, 목적지 픽셀에 대한 최종 값을 생성하기 위해 평균화되며 최종 값은 시스템 메모리에 저장된다.
판단 블록(1030)에서, 프로세서는 현재 데이터 유닛의 경계가 도달되었는지를 결정한다. 그렇지 않다면, 방법(1000)은 블록(1005)으로 흐르며 블록으로부터의 다음 픽셀이 액세스된다. 현재 데이터 유닛의 경계가 도달되었다면, 방법(1000)은 블록(1045)으로 흐르며 부분 값이 로컬 RAM에 저장된다. 여기에서 논의된 바와 같이, 부분 값은 그 다음에 상이한 데이터 유닛으로부터의 픽셀들을 사용하여 스케일링 윈도우에 대해 계산된 부분 값과의 누적을 위해 로컬 RAM으로부터 검색될 수 있다.
몇몇 실시예들에서, 상기 설명된 장치 및 기술들은 도 1 내지 도 10을 참조하여 상기 설명된 프로세싱 시스템과 같은, 하나 이상의 집적 회로(IC) 디바이스들(또한 집적 회로 패키지들 또는 마이크로칩들로 불리우는)을 포함한 시스템에서 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 보조 설계(CAD) 소프트웨어 툴들은 이들 IC 디바이스들의 설계 및 제작에 사용된다. 이들 설계 툴들은 통상적으로 하나 이상의 소프트웨어 프로그램들로서 표현된다. 하나 이상의 소프트웨어 프로그램들은 회로를 제작하도록 제조 시스템을 설계하거나 또는 적응시키기 위해 프로세스의 적어도 일 부분을 수행하도록 하나 이상의 IC 디바이스들의 회로를 나타내는 코드 상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행 가능한 코드를 포함한다. 이러한 코드는 지시들, 데이터, 또는 지시들 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제작 툴을 나타내는 소프트웨어 지시들은 통상적으로 컴퓨팅 시스템으로 액세스 가능한 컴퓨터 판독 가능한 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제작의 하나 이상의 단계들을 나타내는 코드는 동일한 컴퓨터 판독 가능한 저장 매체 또는 상이한 컴퓨터 판독 가능한 저장 매체에 저장되며 그로부터 액세스된다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템으로 지시들 및/또는 데이터를 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한, 임의의 비-일시적 저장 매체, 또는 비-일시적 저장 미디어의 조합을 포함한다. 이러한 저장 미디어는, 이에 제한되지 않지만, 광학 미디어(예로서, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 미디어(예로서, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예로서, 랜덤 액세스 메모리(RAM) 또는 캐시), 비-휘발성 메모리(예로서, 판독-전용 메모리(ROM) 또는 플래시 메모리), 또는 미세전자기계 시스템들(MEMS)-기반 저장 미디어를 포함할 수 있다. 컴퓨터 판독 가능한 저장 매체는, 컴퓨팅 시스템에 내장되고(예로서, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 단단히 부착되고(예로서, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈 가능하게 부착되거나(예로서, 광학 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합될 수 있다(예로서, 네트워크 액세스 가능한 저장 장치(NAS)).
몇몇 실시예들에서, 상기 설명된 기술들의 특정한 양상들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능한 저장 매체상에 저장되거나 또는 그 외 유형으로 구체화된 실행 가능한 지시들의 하나 이상의 세트들을 포함한다. 소프트웨어는, 하나 이상의 프로세서들에 의해 실행될 때, 상기 설명된 기술들 중 하나 이상의 양상들을 수행하도록 하나 이상의 프로세서들을 조작하는 지시들 및 특정한 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체는, 예를 들면, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스들, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비-휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능한 저장 매체에 저장된 실행 가능한 지시들은 소스 코드, 어셈블리어 코드, 오브젝트 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 또는 그 외 실행 가능한 다른 지시 포맷에 있을 수 있다.
일반적인 설명으로 상술된 모든 활동 또는 요소가 필수적인 것은 아니라는 것, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 것들에 더하여, 하나 이상의 추가 활동이 수행되거나 요소들이 포함될 수 있다는 것에 주의하자. 더 나아가, 활동들이 나열된 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 특정 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야에서의 통상의 기술자는 아래 청구범위에 제시된 바에 따라 본 발명의 범위에서 벗어나지 않고 다양한 변형 및 변경이 가해질 수 있다는 것을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 하고, 모든 그러한 변형이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들, 및 문제들에 대한 솔루션들이 특정 실시 예들에 대하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들, 및 임의의 혜택, 이점, 또는 솔루션이 발생하거나 보다 현저해지게 할 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본원에서의 교시 내용의 혜택을 받는 해당 기술분야에서의 통상의 기술자들에게 분명한 상이하나 균등한 방식들로 변형 및 실시될 수 있음에 따라 단지 예시적인 것이다. 아래 청구범위에서 설명되는 것 이외에, 제시된 본원에서의 구성 또는 설계의 세부 사항에 어떠한 제한도 의도되지 않는다. 따라서 위에서 개시된 특정 실시 예들이 대체 또는 변형될 수 있고 모든 그러한 변형예가 개시된 주제의 범위 내로 고려된다는 것이 명백하다. 따라서, 본원에서 추구되는 보호는 아래 청구범위에 제시된 바에 따른다.
Claims (20)
- 방법에 있어서,
제1 메모리로부터 디지털 이미지의 일 부분을 나타내는 픽셀들의 블록의 값들을 검색하는 단계;
제2 메모리로부터 썸네일 이미지에서 목적지 픽셀의 부분 값을 검색하는 단계;
동시에 상기 값들을 압축하여 압축된 이미지를 생성하고 상기 목적지 픽셀에 대한 스케일링 윈도우에 중첩되는 상기 블록의 일 부분에 기초하여 상기 부분 값을 수정하는 단계;
수정된 상기 부분 값을 상기 제2 메모리에 저장하는 단계; 및
압축된 상기 이미지 및 상기 썸네일 이미지를 제3 메모리에 저장하는 단계를 포함하는, 방법. - 청구항 1에 있어서,
반복적으로 상기 디지털 이미지의 복수의 부분들을 나타내는 픽셀들의 복수의 블록들의 값들을 검색하고, 상기 픽셀들의 복수의 블록들에 중첩되는 상기 스케일링 윈도우들에 대응하는 상기 썸네일 이미지에서 상기 목적지 픽셀들의 부분 값들을 검색하며, 동시에 상기 압축 알고리즘을 상기 값들에 적용하고 블록 단위 기반으로 상기 부분 값들을 수정하는 단계를 더 포함하는, 방법. - 청구항 1에 있어서,
상기 목적지 픽셀의 상기 부분 값을 수정하는 단계는 상기 스케일링 윈도우에 중첩되는 상기 블록의 부분을 결정하기 위해 상기 블록의 경계들 및 상기 스케일링 윈도우의 경계들을 비교하는 단계를 포함하는, 방법. - 청구항 3에 있어서,
상기 목적지 픽셀의 상기 부분 값을 수정하는 단계는 상기 목적지 픽셀의 위치로 상기 스케일링 윈도우에 중첩되는 상기 블록의 부분에서의 상기 픽셀들의 값들을 보간하는 단계 및 상기 목적지 픽셀의 상기 부분 값에서 보간된 상기 값들을 누적시키는 단계를 포함하는, 방법. - 청구항 3에 있어서,
수정된 상기 부분 값을 상기 제2 메모리에 저장하는 단계는 상기 스케일링 윈도우의 일 부분이 상기 블록 밖에 있으며 상기 제1 메모리로부터 이전에 검색된 임의의 블록들 밖에 있는 것에 응답하여 수정된 상기 부분 값을 저장하는 단계를 포함하는, 방법. - 청구항 1에 있어서,
상기 제2 메모리로부터 상기 목적지 픽셀의 상기 부분 값을 검색하는 단계는 상기 스케일링 윈도우가 상기 제1 메모리로부터 검색된 상기 픽셀들의 블록에 중첩되는 것에 응답하여 상기 부분 값을 검색하는 단계를 포함하는, 방법. - 청구항 1에 있어서,
상기 스케일링 윈도우의 전체가 상기 블록 또는 상기 제1 메모리로부터 이전에 검색된 적어도 하나의 블록과 중첩한다고 결정하는 것에 응답하여 상기 목적지 픽셀의 완전한 값을 상기 부분 값에 동일하게 설정하는 단계를 더 포함하는, 방법. - 청구항 7에 있어서,
상기 썸네일 이미지를 저장하는 단계는 상기 목적지 픽셀의 상기 완전한 값을 상기 제3 메모리에 저장하는 단계를 포함하는, 방법. - 장치에 있어서,
디지털 이미지를 나타내는 픽셀들의 블록들의 값들을 저장하기 위한 제1 메모리;
썸네일 이미지에 목적지 픽셀들의 부분 값들을 저장하기 위한 제2 메모리;
압축된 이미지들 및 썸네일 이미지들을 저장하기 위한 제3 메모리; 및
프로세서로서:
상기 제1 메모리로부터 픽셀들의 블록의 값들을 검색하고,
동시에 상기 값들을 압축하여 압축된 이미지를 생성하며 상기 목적지 픽셀에 대한 스케일링 윈도우에 중첩되는 상기 블록의 부분들에서의 픽셀들의 값들에 기초하여 목적지 픽셀의 부분 값을 수정하고,
수정된 상기 부분 값을 상기 제2 메모리에 저장하며,
압축된 상기 이미지 및 상기 썸네일 이미지를 상기 제3 메모리에 저장하기 위한, 상기 프로세서를 포함하는, 장치. - 청구항 9에 있어서,
상기 제1 메모리 및 상기 제3 메모리는 제한된 메모리 액세스 대역폭에 의해 특성화된 인터페이스에 의해 상기 프로세서에 연결되는 시스템 메모리 또는 캐시 중 적어도 하나이며, 상기 제2 메모리는 상기 프로세서와 연관된 로컬 랜덤 액세스 메모리(RAM)인, 장치. - 청구항 9에 있어서,
상기 프로세서는 또한: 반복적으로 상기 디지털 이미지를 나타내는 상기 픽셀들의 블록들의 값들을 검색하고, 상기 블록들에 중첩되는 상기 스케일링 윈도우들에 대응하는 상기 썸네일 이미지에서 상기 목적지 픽셀들의 상기 부분 값들을 검색하며, 동시에 상기 값들에 압축 알고리즘을 적용하고 블록 단위 기반으로 상기 부분 값들을 수정하도록 구성되는, 장치. - 청구항 9에 있어서,
상기 프로세서는 또한 상기 스케일링 윈도우에 중첩되는 상기 블록의 부분을 결정하기 위해 상기 블록의 경계들 및 상기 스케일링 윈도우의 경계들을 비교하도록 구성되는, 장치. - 청구항 12에 있어서,
상기 프로세서는 또한 상기 목적지 픽셀의 위치로 상기 스케일링 윈도우에 중첩되는 상기 블록의 부분에서의 상기 픽셀들의 값들을 보간하며 상기 목적지 픽셀의 상기 부분 값에서 상기 보간된 값들을 누적시키도록 구성되는, 장치. - 청구항 12에 있어서,
상기 프로세서는 또한 상기 스케일링 윈도우의 일 부분이 상기 블록의 밖에 및 상기 제1 메모리로부터 이전에 검색된 블록들의 밖에 있는 것에 응답하여 수정된 상기 부분 값을 저장하도록 구성되는, 장치. - 청구항 9에 있어서,
상기 프로세서는 또한 상기 스케일링 윈도우가 상기 제1 메모리로부터 검색된 상기 픽셀들의 블록에 중첩되는 것에 응답하여 상기 제2 메모리로부터 상기 부분 값을 검색하도록 구성되는, 장치. - 청구항 9에 있어서,
상기 프로세서는 또한 상기 스케일링 윈도우의 전체가 상기 블록 또는 상기 제1 메모리로부터 이전에 검색된 적어도 하나의 블록과 중첩한다고 결정하는 것에 응답하여 상기 목적지 픽셀의 완전한 값을 상기 부분 값과 동일하게 설정하도록 구성되는, 장치. - 청구항 16에 있어서,
상기 프로세서는 또한 상기 목적지 픽셀의 상기 완전한 값을 상기 제3 메모리에 저장하도록 구성되는, 장치. - 방법에 있어서,
디지털 이미지를 나타내는 썸네일 이미지에서 목적지 픽셀에 대한 스케일링 윈도우를 정의하는 단계;
제1 메모리로부터 상기 디지털 이미지의 일 부분을 나타내는 픽셀들의 블록을 검색하는 단계;
상기 픽셀들의 블록에 압축 알고리즘을 적용하는 것과 동시에 상기 스케일링 윈도우에 중첩되는 상기 픽셀들의 블록의 일 부분에 기초하여 상기 목적지 픽셀의 부분 값을 결정하는 단계;
상기 스케일링 윈도우의 일 부분이 상기 블록 밖에 및 상기 제1 메모리로부터 이전에 검색된 임의의 블록들 밖에 있다는 것에 응답하여 상기 부분 값을 제2 메모리에 저장하는 단계; 및
상기 스케일링 윈도우의 전체가 상기 블록 또는 상기 제1 메모리로부터 이전에 검색된 적어도 하나의 블록과 중첩한다고 결정하는 것에 응답하여 상기 부분 값을 제3 메모리에 저장하는 단계를 포함하는, 방법. - 청구항 18에 있어서,
상기 부분 값을 결정하는 단계는 상기 스케일링 윈도우가 상기 제1 메모리로부터 검색된 상기 픽셀들의 블록에 중첩하는 것에 응답하여 상기 제2 메모리로부터 상기 부분 값을 검색하는 단계를 포함하는, 방법. - 청구항 19에 있어서,
상기 목적지 픽셀의 상기 부분 값을 결정하는 단계는 상기 목적지 픽셀의 위치로 상기 스케일링 윈도우에 중첩되는 상기 블록의 부분에서의 상기 픽셀들의 값들을 보간하는 단계 및 상기 목적지 픽셀의 상기 부분 값에서 보간된 상기 값들을 누적시키는 단계를 포함하는, 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201641042223 | 2016-12-09 | ||
IN201641042223 | 2016-12-09 | ||
US15/414,466 US10284861B2 (en) | 2016-12-09 | 2017-01-24 | Concurrent image compression and thumbnail generation |
US15/414,466 | 2017-01-24 | ||
PCT/US2017/065002 WO2018106856A1 (en) | 2016-12-09 | 2017-12-07 | Concurrent image compression and thumbnail generation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190085515A KR20190085515A (ko) | 2019-07-18 |
KR102293883B1 true KR102293883B1 (ko) | 2021-08-26 |
Family
ID=62489945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197014760A KR102293883B1 (ko) | 2016-12-09 | 2017-12-07 | 동시 이미지 압축 및 썸네일 생성 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10284861B2 (ko) |
EP (1) | EP3552379B1 (ko) |
JP (2) | JP6961696B2 (ko) |
KR (1) | KR102293883B1 (ko) |
CN (1) | CN110050458B (ko) |
WO (1) | WO2018106856A1 (ko) |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6545687B2 (en) | 1997-01-09 | 2003-04-08 | Canon Kabushiki Kaisha | Thumbnail manipulation using fast and aspect ratio zooming, compressing and scaling |
JP2002359807A (ja) * | 2001-06-01 | 2002-12-13 | Sony Corp | ディジタルスチルカメラ |
JP2002335396A (ja) * | 2002-02-01 | 2002-11-22 | Sharp Corp | 画像圧縮データ処理装置および画像表示方法 |
JP2005277908A (ja) * | 2004-03-25 | 2005-10-06 | Nec Access Technica Ltd | 画像処理装置、その画像処理方法およびカメラつき携帯電話 |
JP2005341382A (ja) * | 2004-05-28 | 2005-12-08 | Sony Corp | 画像処理装置,撮像装置,コンピュータプログラムおよび画像処理方法 |
JP2005352703A (ja) * | 2004-06-09 | 2005-12-22 | Fuji Xerox Co Ltd | 画像処理装置 |
JP4151684B2 (ja) | 2005-01-26 | 2008-09-17 | ソニー株式会社 | 符号化装置、符号化方法および符号化プログラム、並びに撮像装置 |
JP2007067917A (ja) * | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
US8009729B2 (en) * | 2005-11-30 | 2011-08-30 | Qualcomm Incorporated | Scaler architecture for image and video processing |
KR100834669B1 (ko) * | 2006-10-20 | 2008-06-02 | 삼성전자주식회사 | 썸네일 이미지 생성을 위한 웨이블릿 변환 기반 이미지부호화기, 복호화기 및 그 방법 |
KR20090076022A (ko) | 2008-01-07 | 2009-07-13 | 엘지전자 주식회사 | 썸네일 생성 장치 및 이를 포함한 멀티코덱 디코더 장치 |
JP5248980B2 (ja) * | 2008-10-27 | 2013-07-31 | キヤノン株式会社 | 撮像装置及びその制御方法及びプログラム |
US8179452B2 (en) | 2008-12-31 | 2012-05-15 | Lg Electronics Inc. | Method and apparatus for generating compressed file, and terminal comprising the apparatus |
KR101666927B1 (ko) * | 2009-10-08 | 2016-10-24 | 엘지전자 주식회사 | 압축 파일 생성 방법 및 장치, 이를 포함하는 단말기 |
KR101607295B1 (ko) * | 2009-07-31 | 2016-04-11 | 엘지전자 주식회사 | 압축 파일 생성 방법 및 장치, 이와 관련된 카메라 모듈 및 이를 포함하는 단말기 |
JP4848462B2 (ja) * | 2010-03-04 | 2011-12-28 | 株式会社モルフォ | 圧縮画像の部分伸長方法および画像処理装置 |
KR101905621B1 (ko) * | 2012-02-16 | 2018-10-11 | 삼성전자 주식회사 | 카메라의 프레임 이미지 전송 장치 및 방법 |
JP2014099742A (ja) | 2012-11-14 | 2014-05-29 | Canon Inc | カラーモノクロ判定 |
CN103714161B (zh) * | 2013-12-30 | 2017-06-16 | 小米科技有限责任公司 | 图像缩略图的生成方法、装置和终端 |
US9727972B2 (en) | 2013-12-30 | 2017-08-08 | Xiaomi Inc. | Method and terminal for generating thumbnail of image |
US9503644B2 (en) * | 2014-05-22 | 2016-11-22 | Microsoft Technology Licensing, Llc | Using image properties for processing and editing of multiple resolution images |
CN106028117A (zh) * | 2016-05-24 | 2016-10-12 | 青岛海信电器股份有限公司 | 一种图像处理方法及装置 |
-
2017
- 2017-01-24 US US15/414,466 patent/US10284861B2/en active Active
- 2017-12-07 WO PCT/US2017/065002 patent/WO2018106856A1/en unknown
- 2017-12-07 CN CN201780075082.8A patent/CN110050458B/zh active Active
- 2017-12-07 EP EP17878962.4A patent/EP3552379B1/en active Active
- 2017-12-07 JP JP2019530767A patent/JP6961696B2/ja active Active
- 2017-12-07 KR KR1020197014760A patent/KR102293883B1/ko active IP Right Grant
-
2021
- 2021-10-13 JP JP2021168106A patent/JP7194247B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20180167622A1 (en) | 2018-06-14 |
EP3552379A4 (en) | 2020-05-06 |
US10284861B2 (en) | 2019-05-07 |
JP2022009091A (ja) | 2022-01-14 |
JP6961696B2 (ja) | 2021-11-05 |
EP3552379A1 (en) | 2019-10-16 |
JP2020501455A (ja) | 2020-01-16 |
CN110050458B (zh) | 2021-08-13 |
EP3552379B1 (en) | 2021-06-16 |
JP7194247B2 (ja) | 2022-12-21 |
CN110050458A (zh) | 2019-07-23 |
KR20190085515A (ko) | 2019-07-18 |
WO2018106856A1 (en) | 2018-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111447359B (zh) | 数字变焦方法、系统、电子设备、介质及数字成像设备 | |
JP6236259B2 (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム | |
JP2015522988A (ja) | 連続座標系を活用する動き補償および動き予測 | |
CN110889809A (zh) | 图像处理方法及装置、电子设备、存储介质 | |
JP6581359B2 (ja) | 情報処理装置及びその制御方法及びプログラム及び記憶媒体、並びに、ビデオカメラ | |
KR20120020821A (ko) | 영상 왜곡 보정 장치 및 방법 | |
US9706220B2 (en) | Video encoding method and decoding method and apparatuses | |
KR101262164B1 (ko) | 저 해상도 깊이 맵으로부터 고 해상도 깊이 맵을 생성하는 방법 및 이를 기록한 기록매체 | |
JP4563982B2 (ja) | 動き推定方法,装置,そのプログラムおよびその記録媒体 | |
CN115546027A (zh) | 图像缝合线确定方法、装置以及存储介质 | |
KR102293883B1 (ko) | 동시 이미지 압축 및 썸네일 생성 | |
KR101836238B1 (ko) | 다운 스케일링과 비용함수를 이용한 이미지 연결선 추정방법 | |
JP6235860B2 (ja) | 情報処理装置及びその制御方法、プログラム | |
Gour et al. | Hardware accelerator for real-time image resizing | |
KR102655332B1 (ko) | 영상 왜곡 보정 장치 및 방법 | |
CN112767293B (zh) | 获取视差图像的方法、电子设备及存储介质 | |
CN111260559B (zh) | 图像缩放显示方法、装置及终端设备 | |
JP4662969B2 (ja) | 画像処理装置及び方法 | |
CN107527319A (zh) | 图像收缩方法和装置 | |
JP4803224B2 (ja) | 画像処理装置、画像処理システム、撮像装置および画像処理方法 | |
KR101841123B1 (ko) | 근사해를 이용한 블록 기반의 동영상 옵티컬 플로 추정 | |
JP7211271B2 (ja) | 画像選択方法、画像選択プログラム、および画像選択装置 | |
KR20160061869A (ko) | 가우시안 필터링 장치 및 방법 | |
JP6751663B2 (ja) | 画像処理装置、画像処理方法 | |
JP4662968B2 (ja) | 画像処理装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |