KR20220066917A - 이미지 디워핑 시스템 - Google Patents
이미지 디워핑 시스템 Download PDFInfo
- Publication number
- KR20220066917A KR20220066917A KR1020227012797A KR20227012797A KR20220066917A KR 20220066917 A KR20220066917 A KR 20220066917A KR 1020227012797 A KR1020227012797 A KR 1020227012797A KR 20227012797 A KR20227012797 A KR 20227012797A KR 20220066917 A KR20220066917 A KR 20220066917A
- Authority
- KR
- South Korea
- Prior art keywords
- image
- dewarping
- pixels
- matrices
- blocks
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 66
- 238000000034 method Methods 0.000 claims abstract description 55
- 239000000872 buffer Substances 0.000 claims abstract description 36
- 238000003672 processing method Methods 0.000 claims 2
- 238000000605 extraction Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 34
- 239000011159 matrix material Substances 0.000 description 44
- 230000008569 process Effects 0.000 description 16
- 238000013507 mapping Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000013500 data storage Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 239000013001 matrix buffer Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/80—Geometric correction
-
- G06T3/0093—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G06T5/006—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20212—Image combination
- G06T2207/20221—Image fusion; Image merging
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
- Geometry (AREA)
- Studio Devices (AREA)
Abstract
이미지 프로세싱을 위한 방법 및 장치. 디워핑 회로는, 제 1 이미지의 픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑하기 위한 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출하도록 구성되며, 여기서 제 1 이미지는 왜곡된 이미지 공간에서의 장면을 묘사한다. 디워핑 회로는 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 제 1 이미지의 픽셀들의 블록들을 메모리 버퍼 내로 읽어들이고, 제 1 이미지의 픽셀들의 블록들에 기초하여 복수의 이미지 타일들을 생성한다. 이미지 타일들의 각각은 디워핑 매트릭스들 중 각각의 디워핑 매트릭스를 사용하여, 취출된 블록들 중 하나 이상으로부터 보간된다. 디워핑 회로는 보정된 이미지 공간에서 장면을 묘사하는 제 2 이미지를 생성하기 위해 외부 메모리에 복수의 이미지 타일들을 기입한다.
Description
기술 분야
본 발명은 일반적으로 이미지 프로세싱에 관한 것이다.
관련 기술의 배경
이미지 프로세싱은, 이미지 캡처 디바이스(예를 들어, 카메라)의 능력들 또는 제한들이 주어지면, 원래의 장면이 가능한 정확하게 재생될 수 있도록, 캡처된 이미지가 디스플레이 상에 렌더링될 수 있게 한다. 예를 들어, 광각 렌즈는 표준 직선형 렌즈보다 더 큰 시야(field of view; FOV)를 캡처하기 위해 사용될 수도 있다. 그러나, 광각 렌즈는 또한 캡처된 이미지들에서 기하학적 비선형 왜곡들을 도입한다. 예시적인 기하학적 왜곡들은 반경방향 또는 배럴 왜곡, 접선 왜곡 등을 포함한다. 따라서, 이미지 프로세싱은 장면이 보다 직선적으로 보이도록 캡처된 이미지에서 기하학적 왜곡들을 보정할 수도 있다. 렌즈 광학 및/또는 이미지 캡처 디바이스의 투시에 의해 도입된 기하학적 왜곡들을 역전시키는 프로세스는 종종 디워핑으로 지칭된다.
요약
이 요약은 이하 상세한 설명에서 추가로 설명되는 개념들의 선택을 간략화된 형태로 도입하기 위해 제공된다. 이 요약은 청구항 청구물의 핵심적인 피처들 또는 필수적인 피처들을 식별하도록 의도되는 것도 아니고, 청구된 청구물의 범위를 제한하도록 의도되는 것도 아니다.
이미지 프로세싱을 위한 방법 및 장치가 개시된다. 이 개시의 청구대상의 다른 혁신적인 양태는 이미지 프로세싱의 방법에서 구현될 수 있다. 일부 실시양태들에서, 방법은, 제 1 이미지의 픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑(remapping)하기 위한 복수의 디워핑 매트릭스들(de-warping matrices)을 순서화된 시퀀스(ordered sequence)로 취출하는 단계 - 제 1 이미지는 왜곡된 이미지 공간에서 장면(scene)을 묘사함 -; 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 제 1 이미지의 픽셀들의 블록들을 취출하는 단계; 제 1 이미지의 픽셀들의 블록들에 기초하여 복수의 이미지 타일들을 생성하는 단계 - 이미지 타일들의 각각은 디워핑 매트릭스들 중 각각의 하나를 사용하여, 취출된 블록들 중 하나 이상으로부터 보간됨 -; 및 복수의 이미지 타일들을 결합하여 보정된 이미지 공간에서 장면을 묘사하는 제 2 이미지를 생성하는 단계를 포함할 수도 있다.
이 개시의 청구대상의 다른 혁신적인 양태는 이미지 프로세싱 시스템에서 구현될 수 있다. 일부 실시양태들에서, 시스템은 프로세서, 메모리, 및 디워핑 회로를 포함할 수도 있다. 메모리는, 프로세서에 의해 실행될 때 시스템으로 하여금, 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 픽셀들을 재맵핑하기 위한 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 생성하게 하는 명령들을 저장한다.
디워핑 회로는, 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 제 1 이미지의 픽셀들의 블록들을 취출하고 - 제 1 이미지는 왜곡된 이미지 공간에서 장면을 묘사함 -; 제 1 이미지의 픽셀들의 블록들에 기초하여 복수의 이미지 타일들을 생성하고 - 이미지 타일들의 각각은 디워핑 매트릭스들 중 각각의 하나를 사용하여, 취출된 픽셀 블록들 중 하나 이상으로부터 보간됨 -; 및 보정된 이미지 공간에서 장면을 묘사하는 제 2 이미지를 생성하기 위해 복수의 이미지 타일들을 결합하도록 구성된다.
도면들의 간단한 설명
본 실시양태들은 예로서 설명되며 첨부 도면들의 도들에 의해 제한되는 것으로 의도되지 않는다.
도 1 은 일부 실시양태들에 따른, 이미지 캡처 및 디스플레이 시스템의 블록도를 나타낸다.
도 2 는 일부 실시양태들에 따른, 렌즈 기하학적 왜곡 보정 (lens geometric distortion correction; LGDC) 회로의 블록도를 나타낸다.
도 3 은 일부 실시양태들에 따른, 예시적인 보정된 이미지 공간을 나타낸다.
도 4 는 보정된 이미지 공간과 왜곡된 이미지 공간 사이의 예시적인 픽셀 맵핑을 나타낸다.
도 5 는 일부 실시양태들에 따른, LGDC 시스템의 블록도를 나타낸다.
도 6 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기의 블록도를 나타낸다.
도 7 은 일부 실시양태들에 따른, 디워핑 회로의 블록도를 나타낸다.
도 8 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기의 다른 블록도를 나타낸다.
도 9 는 일부 실시양태들에 따른, 예시적인 이미지 프로세싱 동작을 나타내는 예시적인 플로우차트이다.
본 실시양태들은 예로서 설명되며 첨부 도면들의 도들에 의해 제한되는 것으로 의도되지 않는다.
도 1 은 일부 실시양태들에 따른, 이미지 캡처 및 디스플레이 시스템의 블록도를 나타낸다.
도 2 는 일부 실시양태들에 따른, 렌즈 기하학적 왜곡 보정 (lens geometric distortion correction; LGDC) 회로의 블록도를 나타낸다.
도 3 은 일부 실시양태들에 따른, 예시적인 보정된 이미지 공간을 나타낸다.
도 4 는 보정된 이미지 공간과 왜곡된 이미지 공간 사이의 예시적인 픽셀 맵핑을 나타낸다.
도 5 는 일부 실시양태들에 따른, LGDC 시스템의 블록도를 나타낸다.
도 6 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기의 블록도를 나타낸다.
도 7 은 일부 실시양태들에 따른, 디워핑 회로의 블록도를 나타낸다.
도 8 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기의 다른 블록도를 나타낸다.
도 9 는 일부 실시양태들에 따른, 예시적인 이미지 프로세싱 동작을 나타내는 예시적인 플로우차트이다.
상세한 설명
다음의 설명에서, 본 개시의 철저한 이해를 제공하기 위해 특정 컴포넌트들, 회로들, 및 프로세스들의 예들과 같은 많은 특정 상세들이 기술된다. 본 명세서에 사용된 바와 같은 용어 "커플링된" 은 하나 이상의 개재 컴포넌트들 또는 회로들에 직접 접속되거나 또는 이를 통해 접속된 것을 의미한다. 또한, 다음의 설명에서 및 설명의 목적으로, 개시의 양태들의 철저한 이해를 제공하기 위해 특정 명명법이 기술된다. 그러나, 이 특정 상세들은 예시의 실시양태들을 실시하는데 필요하지 않을 수도 있음이 당업자에게 명백할 것이다. 다른 경우들에서, 잘 알려진 회로들 및 디바이스들은 본 개시를 모호하게 하는 것을 회피하기 위해 블록도 형태로 나타낸다. 이어지는 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 절차, 로직 블록, 프로세싱 및 다른 상징적 표현에 관하여 제시된다. 회로 엘리먼트들 또는 소프트웨어 블록들 사이의 상호접속은 버스들 또는 단일 신호 라인들로 나타낼 수도 있다. 각각의 버스는 대안적으로 단일 신호 라인일 수도 있고, 각각의 단일 신호 라인은 대안적으로 버스 일 수도 있으며, 단일 라인 또는 버스는 컴포넌트들 간의 통신을 위한 무수한 물리적 또는 논리적 메커니즘들 중 임의의 하나 이상을 나타낼 수도 있다.
다음의 논의로부터 명백한 바와 같이 달리 구체적으로 언급되지 않는 한, 본 출원 전체에 걸쳐, “액세스하는것", "수신하는 것", "전송하는 것", "사용하는 것", "선택하는 것", "결정하는 것", “정규화하는 것", "승산하는 것", "평균화하는 것", "모니터링하는 것", "비교하는 것", "적용하는 것", "업데이트하는 것", "측정하는 것", "도출하는 것” 등과 같은 용어들을 활용한 논의는, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적 (전자적) 양으로서 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장, 송신 또는 디스플레이 디바이스 내의 물리적 양으로서 유사하게 표현된 다른 데이터로 조작 또는 변환하는, 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 액션들 및 프로세스들을 지칭한다.
본 명세서에 설명된 기법들은 특정 방식으로 구현되는 것으로 구체적으로 설명되지 않는 한, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 피처들은 또한, 집적된 로직 디바이스에서 함께 또는 별개지만 상호운용가능한 로직 디바이스들로서 별도로 구현될 수도 있다. 소프트웨어로 구현되면, 기법들은, 실행될 때, 상술한 방법들 중 하나 이상을 수행하는 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 비일시적 컴퓨터 판독가능 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다.
비일시적 프로세서 판독가능 저장 매체는 동기식 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (DRAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그래밍가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 다른 알려진 저장 매체 등을 포함할 수도 있다. 부가적으로 또는 대안적으로, 그 기법들은, 적어도 부분적으로, 명령들 또는 데이터 구조들의 형태로 코드를 운반하거나 통신하고 컴퓨터 또는 다른 프로세서에 의해 액세스, 판독 및/또는 실행될 수 있는 프로세서 판독가능 통신 매체에 의해 실현될 수도 있다.
본 명세서에 개시된 실시양태들과 관련하여 기재된 다양한 예시적인 논리 블록, 모듈, 회로, 및 명령은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 본 명세서에서 사용된 바와 같이, 용어 "프로세서" 는 메모리에 저장된 하나 이상의 소프트웨어 프로그램들의 스크립트 또는 명령을 실행할 수 있는 임의의 범용 프로세서, 통상적인 프로세서, 제어기, 마이크로 제어기, 특수 목적 프로세서, 및/또는 상태 머신을 지칭할 수도 있다.
도 1 은 일부 실시양태들에 따른, 이미지 캡처 및 디스플레이 시스템 (100) 의 블록도를 나타낸다. 시스템(100)은 이미지 캡처 디바이스(110), 이미지 프로세서(120), 및 이미지 디스플레이 디바이스(130)를 포함한다. 이미지 캡처 디바이스(110)는 장면으로부터의 광(101)의 패턴을 캡처하고, 캡처된 광(101)을 디지털 이미지 캡처 데이터(102)로 변환한다. 이미지 캡처 데이터(102)는 장면을 묘사하는 디지털 이미지에 대응할 수도 있다. 이미지 디스플레이 디바이스(130)는 해당 표시면에 광 패턴을 재생하여 디지털 이미지를 디스플레이한다. 일부 양태들에서, 이미지 캡처 디바이스 (110) 는 카메라일 수도 있고 이미지 디스플레이 디바이스 (130) 는 (텔레비전, 컴퓨터 모니터, 스마트폰 등과 같은) 전자적 디스플레이일 수도 있다.
이미지 프로세서(120)는 이미지 캡처 데이터(102)에 대해 이미지 프로세싱을 수행하여 이미지 디스플레이 디바이스(130) 상에 (이미지 캡처 디바이스(110)에 의해 캡처된) 원래 장면을 보다 정확하게 재생하는데 사용될 수 있는 이미지 렌더 데이터(103)를 생성한다. 일부 실시양태들에서, 이미지 프로세서(120)는 이미지 캡처 디바이스(110)에 통합되거나 다른 방식으로 포함될 수도 있다. 이미지 프로세서(120)는 이미지 신호 프로세싱 (ISP) 모듈(122) 및 렌즈 기하학적 왜곡 보정 (LGDC) 모듈(124)을 포함한다. ISP 모듈(122)은 디지털 이미지의 품질을 향상시키기 위해 이미지 캡처 데이터(102)의 다양한 픽셀 왜곡들을 보정할 수도 있다. 예시적인 픽셀 왜곡들은 비네팅, 수차, 및 노이즈를 포함하지만 이에 제한되지 않는다.
LGDC 모듈(124)은 이미지 캡처 데이터(102)를 이미지 디스플레이 디바이스(130) 상에 디스플레이하기에 더 적합하거나 최적화된 다른 이미지 공간으로 변환 또는 전송할 수도 있다. 예를 들어, 이미지 캡처 디바이스 상의 광각 렌즈는 기하학적 왜곡들(예를 들어, 반경방향 또는 배럴 왜곡, 접선 왜곡, 키스톤 왜곡 등)을 이미지 캡처 데이터(102)에 묘사된 장면에 도입할 수도 있다. 따라서, LGDC 모듈(124)은 이미지 캡처 디바이스(110)에 의해 도입된 기하학적 왜곡을 보정하여 캡처된 이미지 또는 장면이 이미지 디스플레이 디바이스(130) 상에서 보다 직선적으로 나타나도록 구성될 수도 있다. 일부 실시양태들에서, 이미지 렌더 데이터(103)는 이미지 디스플레이 디바이스(130) 에 추가하여 또는 그 대신에 다른 디바이스들에 제공될 수도 있다. 예를 들어, 컴퓨터 비전 프로세싱은 직선형 이미지들(rectilinear images)로부터 이익을 얻을 수도 있다. 컴퓨터 비전 프로세싱의 예들은 얼굴 검출, 객체 검출, 및 객체 추적을 포함할 수도 있지만, 이에 제한되지 않는다.
본 개시의 양태들은 특정 애플리케이션들이 이미지 캡처 데이터 (102) 의 거의 실시간 프로세싱을 요구할 수도 있다는 것을 인식한다. 예시적인 실시간 애플리케이션들은 (예컨대, 콘텐츠 전달 네트워크, 비디오 감시 시스템, 비디오 회의 시스템 등으로부터의) 스트리밍 비디오 애플리케이션들 및 (얼굴 인식 시스템들, 자동차 운전자 보조 시스템들, 증강 현실(AR) 시스템들 등과 같은) 컴퓨터 비전 애플리케이션들을 포함하지만, 이에 제한되지 않는다. 그러나 LGDC 동작들은 복잡한 계산들과 데이터 조작을 필요로 한다. 완전한 소프트웨어 디워핑 솔루션은 중앙 처리 장치(CPU)의 대역폭 또는 프로세싱 파워의 상당한 부분을 소비할 수도 있다. 한편, 완전한 하드웨어 디워핑 아키텍처는 상당한 풋프린트를 점유할 수도 있고, 디워핑 알고리즘들을 상이한 렌즈 기하학적 형상들에 재구성하거나 맞춤화하기 위해 제한된 유연성을 제공할 수도 있다.
일부 실시양태들에서, 이미지 프로세서(120)는 LGDC 모듈(124)을 결합된 하드웨어 및 소프트웨어 솔루션으로서 구현할 수도 있다. 보다 구체적으로, 본 개시의 양태들은 이미지 캡처 디바이스 (110) 의 렌즈 파라미터들에 기초하여 이미지 렌더 데이터 (103) 의 하나 이상의 픽셀들에 이미지 캡처 데이터 (102) 의 하나 이상의 픽셀들을 재맵핑하기 위한 명령들을 생성하기 위해 (예를 들어, CPU 또는 특수 목적 프로세서에 의해 실행되는) 소프트웨어의 유연성 및 확장성을 레버리지(leverage)할 수도 있다. 본 개시의 양태들은 CPU에 의해 생성된 명령들에서 진술된 계산들 및 데이터 조작들을 수행하기 위해 하드웨어 로직의 속도 및 대역폭을 추가로 레버리지할 수도 있다.
일부 실시양태들에서, 이미지 렌더 데이터(103)의 이미지 공간(예를 들어, "보정된 이미지 공간")은 디워핑 동작들이 더 미세한 입도로 수행될 수 있도록 복수의 타일들로 분할되거나 세분화될 수도 있다. 예를 들어, 각각의 타일의 사이즈는 LGDC 모듈(124)의 메모리 대역폭에 적어도 부분적으로 기초하여 구성되거나 최적화될 수도 있다. 타일 입도에서 픽셀 재맵핑 동작들을 수행하는 것은 이미지 캡처 데이터(102)의 프레임 또는 이미지를 디워핑하는데 필요한 하드웨어 오버헤드의 양을 상당히 감소시킨다. 이는 이미지 렌더 데이터(103)가 거의 실시간으로 생성될 수 있도록 이미지 프로세싱의 레이턴시 또는 지연을 추가로 감소시킬 수도 있다.
도 2 는 일부 실시양태들에 따른, 렌즈 기하학적 왜곡 보정 (lens geometric distortion correction; LGDC) 회로(200)의 블록도를 나타낸다. LGDC 회로 (200) 는 도 1 의 LGDC 모듈 (124) 의 일 실시양태일 수도 있다. 따라서, LGDC 회로(200)는 왜곡된 이미지(202)에서 기하학적 왜곡을 보정하도록 구성될 수도 있다. 예를 들어, 기하학적 왜곡들은 왜곡된 이미지(202)를 획득하거나 그렇지 않으면 생성하는 데 사용되는 이미지 캡처 디바이스의 렌즈 및/또는 다른 특성들에 의해 도입될 수도 있다. 일부 실시양태들에서, 디워핑 회로(210)는, 보정된 이미지(204)가 실질적으로 직선적으로 보이도록, 왜곡된 이미지(202)의 하나 이상의 픽셀들을 보정된 이미지(204)의 하나 이상의 픽셀들에 재맵핑하도록 구성될 수도 있다.
도 2의 실시양태에서, 왜곡된 이미지(202)는 광각 렌즈를 갖는 카메라(또는 다른 이미지 캡처 디바이스)에 의해 캡처될 수도 있다. 그 결과, 왜곡된 이미지(202)에 묘사된 장면은 반경방향으로 왜곡된 것으로 보인다. 예를 들어, 직선들을 갖는 객체(예를 들어, 건물)는 왜곡된 이미지(202)에서 곡선으로 나타난다. 반대로, 보정된 이미지(204)에 묘사된 장면은 직선적으로 나타난다. 예를 들어, 직선들을 갖는 객체들이 보정된 이미지(204)에는 직선으로 나타난다. 본 명세서에서 사용되는 바와 같이, 용어 "왜곡된 이미지 공간 또는 DIS"는 (예를 들어, 디워핑 전의) 왜곡된 이미지(202)의 이미지 공간을 지칭하고, 용어 "보정된 이미지 공간 또는 CIS"는 (예를 들어, 디워핑 후의) 보정된 이미지(204)의 이미지 공간을 지칭한다.
LGDC 회로 (200) 는 디워핑 회로 (210) 및 메모리 (220) 를 포함한다. 디워핑 회로(210)는 왜곡된 이미지(202)에 대응하는 이미지 데이터를 수신할 수도 있고, 보정된 이미지(204)에 대응하는 보정된 이미지 데이터를 출력할 수도 있다. 일부 양태들에서, 보정된 이미지(204)는 왜곡된 이미지(202)와 동일한 치수들(예를 들어, 픽셀 높이 및 픽셀 폭)을 가질 수도 있다. 그러나, 왜곡된 이미지(202)보다 더 적은 장면이 보정된 이미지(204)에 묘사될 수도 있다. 예를 들어, 왜곡된 이미지(202)의 상부-좌측 코너에 있는 건물은 보정된 이미지(204)에서 나타나지 않는다. 따라서, 디워핑 회로(210)는 왜곡된 이미지(202)의 하나 이상의 픽셀들로부터 보정된 이미지(204)의 각각의 픽셀을 보간(interpolate)할 수도 있다.
일부 실시양태들에서, 디워핑 회로(210)는 이미지 캡처 디바이스의 하나 이상의 카메라 렌즈 파라미터들(206)에 적어도 부분적으로 기초하여 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로의 픽셀들의 재맵핑을 결정할 수도 있다. 예시적인 렌즈 파라미터들(206)은 렌즈 기하학적 구조들 및 초점 길이를 포함할 수도 있지만, 이에 제한되지 않는다. 디워핑 동작은 카메라 렌즈에 의해 도입된 기하학적 왜곡들을 반전시키기 위한 것이기 때문에, 픽셀 재맵핑은 카메라 렌즈에 의해 생성된 픽셀 맵핑의 역일 수도 있다. 일부 양상들에서, 디워핑 회로(210)는 다항식 렌즈 모델(polynomial lens model)에 기초하여 픽셀 재맵핑 계산들을 결정할 수도 있다. 일부 다른 양상들에서, 디워핑 회로(210)는 비-다항식 렌즈 모델(non-polynomial lens model)에 기초하여 픽셀 재맵핑 계산들을 결정할 수도 있다.
메모리(220)는 디워핑 동작을 완료하는데 필요한 임의의 데이터를 저장하거나 버퍼링하도록 구성될 수도 있다. 메모리(220)에 저장된 데이터는 카메라 렌즈 파라미터들(206), 픽셀 재맵핑 계산들(예를 들어, 매트릭스들), 왜곡된 이미지 블록들을 페치하기 위한 인덱스들의 순서, 왜곡된 이미지(202)에 대한 이미지 데이터, 및 보정된 이미지(204)에 대한 이미지 데이터를 포함할 수도 있지만, 이에 제한되지 않는다. 메모리(220) 내의 저장량이 제한되기 때문에, 왜곡된 이미지(202) 및/또는 보정된 이미지(204)의 전체 프레임에 대한 픽셀 데이터의 완전한 세트를 저장하는 것은 (불가능하지는 않은 경우에) 비효율적일 수도 있다. 따라서, 일부 실시양태들에서, LGDC 회로(200)는 한번에 보정된 이미지(204)의 작은 부분들(예를 들어, 타일들)을 생성하도록 구성될 수도 있다. 보정된 이미지(204)의 각각의 부분은 왜곡된 이미지(202)의 픽셀들의 비교적 작은 서브세트(예를 들어, 블록) 상으로부터만 보간되기 때문에, 본 개시의 양상들은 메모리(220)의 메모리 대역폭 요건들을 실질적으로 감소시킬 수도 있다.
도 3 은 일부 실시양태들에 따른, 예시적인 보정된 이미지 공간(300)을 나타낸다. 보정된 이미지 공간(300)은 도 2의 보정 이미지(204)의 이미지 공간의 일 실시양태일 수도 있다. 도 3 에 도시된 바와 같이, 보정된 이미지 공간(300)은 동일하거나 균일한 사이즈의 복수의 타일들(T1(1)-Tn(m))로 분할되거나 세분된다. 각 타일은 보정ehls 이미지 공간(300)의 복수의 픽셀들을 포함할 수도 있다. 일부 실시양태들에서, 각각의 타일의 사이즈(예를 들어, 픽셀 높이 및 픽셀 폭)는 (도 2의 메모리(220)와 같은) LGDC 회로의 메모리 대역폭에 적어도 부분적으로 기초할 수도 있다. 일부 다른 실시양태들에서, 각각의 타일의 사이즈는 (도 2의 보정된 이미지(204)와 같은) 보정된 이미지의 픽셀 심도 및/또는 컬러 포맷에 적어도 부분적으로 기초할 수도 있다.
타일들의 각 행은 각각의 스트라이드(stride)를 형성할 수도 있다. 예를 들어, 스트라이드 S1 은 타일들 T1(1)-T1(m) 을 포함할 수도 있고, 스트라이드 S2 는 타일들 T2(1)-T2(m) 을 포함할 수도 있고, 스트라이드 S3 은 타일들 T3(1)-T3(m) 을 포함할 수도 있는 등이다. 따라서, 스트라이드들(S1-Sn)의 각각은 (예를 들어, 타일들(T1(1)-T1(m))의 결합된 픽셀 폭에 대응하는) 보정된 이미지 공간(300)의 폭에 걸칠 수도 있고, 타일들 중 하나의 픽셀 높이와 동일한 높이를 가질 수도 있다. 일부 실시양태들에서, 디워핑은 래스터 순서로 한 번에 하나의 스트라이드로 타일들의 각각에 대해 수행될 수도 있다. 예를 들어, 디워핑 회로는, 좌측에서 우측으로(예컨대, T2(1), T2(2), ..., T2(m)) 스트라이드 S2의 타일들 각각을 프로세싱하기 위해 진행하기 전에, 좌측에서 우측으로(예컨대, T1(1), T1(2), ..., T1(m)) 스트라이드 S1의 타일들 각각을 연속적으로 프로세싱할 수도 있다.
각각의 스트라이드의 사이즈 및 치수들은 디스플레이 업데이트들의 래스터 순서 및/또는 각각의 업데이트의 입도에 적어도 부분적으로 의존할 수도 있다. 도 3 의 실시양태에서, 예를 들어, 수평 디스플레이 업데이트들에 대한 거의 실시간 디워핑을 지원하기 위해, 보정된 이미지 공간(300)의 수평 행들에 대응하는 스트라이드(S1-Sn)들이 도시된다. 다른 실시양태들에서, 스트리드들은, 예를 들어, 수직 디스플레이 업데이트들에 대한 거의 실시간 디워핑을 지원하기 위해, 보정된 이미지 공간(300)의 수직 열들과 대응할 수도 있다. 예를 들어, 디워핑 회로는, 위에서부터 아래로 (예를 들어, T1(2), T2(2), ..., Tn(2)) 타일들의 다음 열을 프로세싱하기 위해 진행하기 전에, 위에서부터 아래로 (예를 들어, T1(1), T2(1), ..., Tn(1)) 타일들의 전체 열을 연속적으로 프로세싱할 수도 있다. 또한, 일부 실시양태들에서, 보정된 이미지 공간(300)의 다수의 스트라이드들은 (예를 들어, 멀티스레딩을 이용하여) 동시에 프로세싱될 수도 있다.
본 개시의 양태들은 보정된 이미지 공간 (300) 과 왜곡된 이미지 공간 사이의 픽셀들의 맵핑이 비선형적일 수도 있다는 것을 인식한다. 예를 들어, 도 2를 참조하면, 기하학적 왜곡들은 이미지의 중심에 비해 왜곡된 이미지(202)의 에지들 또는 주변부에서 더 두드러질 수도 있다. 따라서, 보정된 이미지(204)의 중심에 있는 픽셀들은 왜곡된 이미지(202)의 중심에 있는 픽셀들에 맵핑될 수도 있다. 그러나, 보정된 이미지(204)의 코너들 및 에지들의 픽셀들은 왜곡된 이미지(202)의 각각의 코너들 및 에지들의 픽셀들에 맵핑되지 않을 수도 있다. 오히려, 보정된 이미지(204)의 코너들 및 에지들에서의 픽셀들은 왜곡된 이미지(202)의 중심에 더 가까운 픽셀들에 맵핑할 수도 있다.
도 4는 보정된 이미지 공간(410)과 왜곡된 이미지 공간(420) 사이의 예시적인 픽셀 맵핑(400)을 도시한다. 보정된 이미지 공간 (410) 은 도 3 의 보정된 이미지 공간 (300) 의 일 실시양태일 수도 있다. 도 4의 실시양태에서, 왜곡은 왜곡된 이미지 공간(420)의 중심에서 상대적으로 현저하지 않다. 예를 들어, 보정된 이미지 공간(410)의 중심에 있는 타일(412)은 왜곡된 이미지 공간(420)의 중심에 있는 픽셀들의 블록(422)에 맵핑할 수도 있다. 그러나, 왜곡은 왜곡된 이미지 공간(420)의 에지들을 향해 상당히 더 두드러지게 된다. 예를 들어, 보정된 이미지 공간(410)의 상부 좌측 코너에 있는 타일들(414, 416, 및 418)은 각각 왜곡된 이미지 공간(420) 내의 동일한 픽셀들의 블록(424)에 맵핑될 수도 있다.
따라서, 일부 실시양태들에서, 각각의 디워핑 매트릭스(또는 매트릭스들의 세트)는 보정된 이미지 공간(410)의 각각의 타일에 대해 생성될 수도 있다. 각각의 디워핑 매트릭스는 보정된 이미지 공간(410)의 특정 타일과 왜곡된 이미지 공간(420)의 픽셀들의 대응하는 블록 사이의 픽셀 맵핑을 정의할 수도 있다. 일부 실시양태들에서, 왜곡된 이미지 공간(420)에서의 픽셀들의 각각의 블록의 사이즈(예를 들어, 픽셀 높이 및 픽셀 폭)는 보정된 이미지 공간(410)의 각각의 타일의 사이즈 및/또는 LGDC 회로의 메모리 대역폭에 적어도 부분적으로 기초할 수도 있다. 일부 양태들에서, 보정된 이미지 공간 (410) 의 블록 사이즈 및 왜곡된 이미지 공간 (420) 의 타일 사이즈는 메모리 저장 포맷의 타일 입도에 적어도 부분적으로 기초하여 구성될 수도 있다. 보다 구체적으로, 타일 입도(tile granularity)는 메모리에 저장된 이미지의 이미지 포맷 및 픽셀 심도에 따라 블록들 및/또는 타일들의 사이즈를 제한할 수도 있다.
일부 실시양태들에서, 보정된 이미지 공간(410)의 블록 사이즈와 왜곡된 이미지 공간(420)의 타일 사이즈 사이의 관계는 또한 하나 이상의 렌즈 왜곡 파라미터들에 대해 변할 수도 있다. 예를 들어, 왜곡된 이미지 공간(420)이 보정 이미지 공간(410)보다 실질적으로 더 넓은 시야를 나타내는 경우, 왜곡 이미지 공간(420)의 블록 사이즈는 보정 이미지 공간(410)의 타일 사이즈보다 상당히 클 수도 있다. 그러나, 덜 심각한 왜곡들에 대해, 왜곡된 이미지 공간(420)의 블록 사이즈는 보정된 이미지 공간(410)의 타일 사이즈에 더 가까울 수도 있다. 일부 양태들에서, 왜곡된 이미지 공간 (420) 의 블록들은 보정된 이미지 공간 (410) 의 타일들보다 클 수도 있다 (예를 들어, 그 사이즈의 적어도 2 배). 아래에서 더 상세히 설명되는 바와 같이, 이는 보정된 이미지 공간(410)의 각각의 타일을 프로세싱하기 위해 필요한 (예를 들어, 메모리로부터의) 블록 판독 동작들의 수 및/또는 빈도를 감소시킬 수도 있다.
도 5 는 일부 실시양태들에 따른, LGDC 시스템(500)의 블록도를 나타낸다. LGDC 시스템 (500) 은 도 2 의 LGDC 회로 (200) 의 일 실시양태일 수도 있다. 따라서, LGDC 시스템(500)은 이미지 캡처 데이터(501)에서 기하학적 왜곡들을 보정하도록 구성될 수도 있다. LGDC 시스템(500)은 이미지 공간 재맵핑 제어기(510), 메모리(520) 및 타일 디워핑 회로(530)를 포함한다.
이미지 공간 재맵핑 제어기(510)는 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 이미지 캡처 데이터(501)의 픽셀들을 재맵핑하는데 사용될 재맵핑 데이터(502)를 생성하도록 구성될 수도 있다. 일부 실시양태들에서, 재맵핑 데이터(502)는 복수의 디워핑 매트릭스들 및 그 디워핑 매트릭스들에 의해 사용될 이미지 캡처 데이터(501)의 픽셀들의 블록들을 식별하는 복수의 룩업 테이블(LUT)들을 포함할 수도 있다. 도 3 및 도 4와 관련하여 설명된 바와 같이, 각각의 디워핑 매트릭스는 보정된 이미지 공간의 각각의 타일과 왜곡된 이미지 공간의 픽셀들의 하나 이상의 블록들 사이의 픽셀 맵핑을 정의할 수도 있다. 따라서, 디워핑 매트릭스들은 디워핑 회로 (530)에 의해 수행될 일련의 디워핑 동작들 (예를 들어, 계산들) 을 정의할 수도 있다.
이미지 공간 재맵핑 제어기 (510) 는 이미지 캡처 데이터 (501) 를 캡처하는데 사용되는 이미지 캡처 디바이스와 연관된 렌즈 구성 데이터 (503)에 적어도 부분적으로 기초하여 디워핑 매트릭스들을 생성할 수도 있다. 예를 들어, 렌즈 구성 데이터(503)는 이미지 캡처 디바이스의 하나 이상의 렌즈 파라미터들(예를 들어, 렌즈 기하학적 구조 및 초점 거리)를 나타낼 수도 있다. 일부 양상들에서, 렌즈 구성 데이터(503)는 디바이스 제조 스테이지에서 재맵핑 제어기(510)에 제공될 수도 있다. 일부 다른 양상들에서, 렌즈 구성 데이터(503) 및/또는 새로운 렌즈 구성 데이터는 LGDC 시스템(500)의 제조 후 임의의 시간에 재맵핑 제어기(510)에 제공될 수도 있다. 따라서, LGDC 시스템(500)은 다양한 이미지 캡처 디바이스들에 의해 캡처된 이미지들을 디워핑하도록 구성(및 재구성)될 수도 있다.
LUT들은 이미지 캡처 데이터(501)의 픽셀들의 블록들이 디워핑 회로(530)에 의해 취출되고 동작될 순서를 특정할 수도 있다. LUT들에 의해 식별된 블록들의 순서는 디워핑 회로(530)에 의해 구현될 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초할 수도 있다. 더 구체적으로, LUT들은 디워핑 회로(530)가 보정된 이미지 공간의 각각의 타일을 보간하기 위해 정확한 순서로 픽셀들의 필요한 블록들을 취출하는 것을 보장할 수도 있다. 일부 실시양태들에서, 디워핑 매트릭스들은 (예를 들어, 도 3과 관련하여 위에서 설명된 바와 같이) 래스터 순서(raster order)로 디워핑 회로(530)에 의해 프로세싱될 수도 있다. 따라서, LUT들에 의해 특정된 블록들의 순서는 또한 보정된 이미지 공간에서의 타일들의 래스터 순서에 의존할 수도 있다.
메모리(520)는 디워핑 동작을 완료하는데 필요한 임의의 데이터를 저장하거나 버퍼링하도록 구성될 수도 있다. 일부 실시양태들에서, 메모리 (520) 는 동적 랜덤-액세스 메모리 (DRAM) 일 수도 있다. 메모리(520)는 재맵핑 데이터 저장부(522), 왜곡된 이미지 공간 (DIS) 이미지 데이터 저장부(524), 보정된 이미지 공간 (CIS) 이미지 데이터 저장부(526)를 포함할 수도 있다. 재맵핑 데이터 저장부(522)는 재맵핑 제어기로부터의 재맵핑 데이터(502)를 저장하거나 버퍼링할 수도 있다. DIS 이미지 데이터 저장부(524)는 이미지 캡처 데이터(501)를 저장하거나 버퍼링할 수도 있다. 일부 양태들에서, DIS 이미지 데이터 저장부 (524) 는 왜곡된 이미지 공간에서 장면을 묘사하는 풀-프레임 픽셀 데이터를 저장하도록 구성될 수도 있다. CIS 이미지 데이터 저장부(526)는 다른 디바이스 또는 전자 시스템(예컨대, 도 1 의 이미지 디스플레이 디바이스(130))에 출력될 이미지 렌더 데이터(507)를 저장하거나 버퍼링할 수도 있다. 일부 양태들에서, CIS 이미지 데이터 저장부 (526) 는 보정된 이미지 공간에서 장면을 묘사하는 풀-프레임 픽셀 데이터를 저장하도록 구성될 수도 있다.
디워핑 회로 (530) 는 이미지 캡처 데이터 (501)에 기초하여 이미지 렌더 데이터 (507) 를 생성하도록 구성될 수도 있다. 예를 들어, 디워핑 회로 (530) 는 (예를 들어, 바이큐빅 보간 (bicubic interpolation) 기법들을 사용하여) 이미지 캡처 데이터 (501) 의 하나 이상의 픽셀들로부터 이미지 렌더 데이터 (507) 의 각각의 픽셀을 보간할 수도 있다. 일부 실시양태들에서, 디워핑 회로(530)는 보정된 이미지 공간의 타일별 입도에 대해 동작할 수도 있다. 더 구체적으로, 디워핑 회로(530)는 재맵핑 데이터 저장부(522)에 저장된 디워핑 매트릭스들의 순서(예를 들어, 래스터 순서)에 기초하여, 보정된 이미지 공간의 각각의 타일을 연속적으로 프로세싱할 수도 있다.
디워핑 회로 (530) 는 보정된 이미지 공간의 각각의 타일과 연관된 디워핑 매트릭스를 결정하기 위해 재맵핑 데이터 저장부 (522) 로부터 재맵핑 데이터 (502) 를 취출할 수도 있다. 디워핑 회로 (530) 는 또한 재맵핑 데이터 (502)에 포함된 LUT들에 기초하여 (예를 들어, 이미지 캡처 데이터 (501) 의) 동작될 픽셀들의 블록들을 결정할 수도 있다. 예를 들어, 디워핑 회로 (530) 는 LUT들에 의해 특정된 순서로 DIS 이미지 데이터 저장부 (524) 로부터 하나 이상의 DIS 이미지 블록들 (504) 을 취출할 수도 있다. 디워핑 회로 (530) 는 디워핑 매트릭스들에 의해 정의된 바와 같이, DIS 이미지 블록들 (504)에 대해 바이큐빅 보간을 수행하여 하나 이상의 CIS 이미지 타일들 (506) 을 생성할 수도 있다. 디워핑 회로(530)는 CIS 이미지 타일들(506)을 이미지 렌더 데이터(507)로서 CIS 이미지 데이터 저장부(526)에 저장할 수도 있다. 따라서, CIS 이미지 타일들(506)은 보정된 이미지 공간에서 이미지 캡처 데이터(501)의 장면을 묘사하는 풀-프레임 이미지를 생성하기 위해 (예를 들어, 래스터 순서로) 결합될 수도 있다.
일부 실시양태들에서, 재맵핑 제어기 (510) 는 소프트웨어로 구현될 수도 있다. 예를 들어, 재맵핑 제어기(510)는 범용 프로세서 또는 CPU에 의해 실행되는 명령들의 세트를 포함할 수도 있다. 이는 디워핑 매트릭스들의 설계 및/또는 구성에서 더 큰 확장성 및 유연성을 제공한다. 예를 들어, 카메라 렌즈의 기하학적 왜곡을 반전시키기 위한 알고리즘들은 사용자 구성가능 (및 재구성가능)할 수도 있다. 따라서, 본 개시의 양태들은 (예를 들어, 방사상 또는 접선 왜곡들을 보정하기 위해) 다항식 렌즈 모델 또는 비-다항식 렌즈 모델에 기초하는 디워핑 매트릭스들을 지원할 수도 있다. 일부 다른 양태들에서, 디워핑 매트릭스들은 틸트, 줌, 회전, 및 포커스 포인트 변화들을 포함하지만 이에 제한되지 않는 추가적인 기하학적 왜곡 보정들을 지원하도록 구성 또는 업데이트될 수도 있다.
일부 실시양태들에서, 디워핑 회로(530)는 하드웨어로 구현될 수도 있다. 예를 들어, 디워핑 회로(530)는 바이큐빅 보간 또는 다른 픽셀 재맵핑 함수들과 같은 디워핑 매트릭스들에 의해 정의된 계산들 또는 수학적 동작들을 수행하도록 하드와이어링된 트랜지스터들 또는 로직 게이트들의 세트를 포함할 수도 있다. 이는 이미지 렌더 데이터(507)를 보간함에 있어서 더 큰 속도 및 대역폭을 제공한다. 타일-사이즈 입도로 이미지 렌더 데이터(507)를 프로세싱함으로써, 본 개시의 양상들은 이용가능한 대역폭 및 리소스들의 사용을 최적화하면서도 디워핑 프로세스의 레이턴시를 추가로 감소시킬 수도 있다. 그 결과, 이미지 렌더 데이터(507)의 프레임들은 (예를 들어, 이미지 렌더 데이터(507)가 이미지 캡처 데이터(501)가 시스템(500)에 의해 수신되는 것과 실질적으로 동일한 레이트로 LGDC 시스템(500)에 의해 출력되도록) 거의 실시간으로 생성될 수도 있다.
도 6 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기(600)의 블록도를 나타낸다. 재맵핑 제어기(600)는 도 5 의 이미지 공간 재맵핑 제어기(510)의 일 실시양태일 수도 있다. 따라서, 재맵핑 제어기(600)는 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 도 5의 이미지 캡처 데이터(501)의 픽셀들을 재맵핑하는데 사용될 재맵핑 데이터를 생성하도록 구성될 수도 있다. 일부 실시양태들에서, 재맵핑 제어기(600)는 보정된 이미지 공간(CIS)의 각각의 스트라이드(602)에 대한 스트라이드-재맵핑 데이터 세트(604)를 생성할 수도 있다. 재맵핑 제어기(600)는 디워핑 매트릭스 생성기(610) 및 이미지 블록 LUT 생성기(620)를 포함한다.
디워핑 매트릭스 생성기(610)는 이미지 캡처 디바이스와 연관된 렌즈 구성 데이터(603)에 적어도 부분적으로 기초하여 복수의 디워핑 매트릭스들 (M(1)-M(m)) 을 생성하도록 구성된다. 디워핑 매트릭스들 (M(1)-M(m)) 의 각각은 현재 CIS 매트릭스 스트라이드 (602) 의 각각의 CIS 매트릭스 타일 T(1)-T(m) 과 연관될 수도 있다. 각 CIS 매트릭스 타일 T() 의 매트릭스 엘리먼트들은 CIS 픽셀들의 행 및 열 인덱스들을 지칭할 수도 있다. 일부 실시양태들에서, 디워핑 매트릭스들 (M(1)-M(m)) 은 CIS 픽셀들과 왜곡된 이미지 공간(DIS)의 픽셀들 사이의 픽셀 맵핑을 정의할 수도 있다. 따라서, 각 디워핑 매트릭스 M() 의 매트릭스 엘리먼트들은 DIS 픽셀들의 행 및 열 인덱스들을 가리킬 수도 있다.
일부 실시양태들에서, 매트릭스 생성기(610)는 (예를 들어, 도 3과 관련하여 전술한 바와 같이) 래스터 순서로 CIS 매트릭스 타일들(T(1)-T(m)) 각각을 프로세싱할 수도 있다. 일부 양상들에서, 각각의 디워핑 매트릭스 엘리먼트는 참조된 DIS 블록 내의 픽셀들에 대한 고정밀 픽셀 레퍼런스들을 포함할 수도 있다. 주어진 CIS 매트릭스 타일의 각각의 픽셀을 프로세싱할 때, 연관된 디워핑 매트릭스 엘리먼트는 또한 픽셀이 보간될 DIS 블록들에서 인트라-픽셀 DIS 픽셀 레퍼런스들에 대한 하나 이상의 분수 좌표들을 특정한다.
이미지 블록 LUT 생성기(620)는 각각의 CIS 매트릭스 스트라이드(602)에 대한 각각의 블록 룩업 테이블(lookup table; LUT)을 생성하도록 구성된다. 각각의 LUT는 CIS 매트릭스 스트라이드(602)와 연관된 하나 이상의 DIS 블록들을 식별할 수도 있다. 메모리 버퍼 공간이 제한될 수도 있기 때문에, LUT는 (도 5의 타일 디워핑 회로(530)와 같은) 디워핑 회로에 의한 프로세싱을 위해 DIS 블록들이 취출될 순서를 특정할 수도 있다. 보다 구체적으로, DIS 블록들의 순서는, 필요한 DIS 블록들이 CIS 매트릭스 타일들 T(1)-T(m) 각각의 프로세싱을 위해 프리페치될 수 있도록 디워핑 매트릭스들 M(1)-M(m) 의 순서와 정렬될 수도 있다.
일부 실시양태들에서, LUT 생성기(620)는 디워핑 매트릭스들 M(1)-M(m) 각각에 포함된 픽셀 레퍼런스들에 적어도 부분적으로 기초하여 LUT에 포함될 DIS 블록들을 결정할 수도 있다. 예를 들어, LUT 생성기(620)는 특정 디워핑 매트릭스(또는 매트릭스들의 세트)에서 최대 및 최소 픽셀 레퍼런스들에 의해 경계가 정해지는 왜곡된 이미지 공간의 영역을 결정할 수도 있다. LUT 생성기(620)는 식별된 영역에 의해 경계지어지는 (또는 일치하는) 하나 이상의 DIS 블록들을 더 식별하고, DIS 블록들을 디워핑 매트릭스와 상관시킬 수도 있다. 예를 들어, LUT 에서의 각각의 DIS 블록은 그것이 서빙하는 CIS 매트릭스의 카운트 또는 다른 표시자와 함께 DIS 블록 열 및 행 오프셋 어드레스에 의해 식별될 수도 있다.
LUT는 디워핑 매트릭스들 M(1)-M(m) 에 첨부될 수도 있고, 스트라이드-재맵핑 데이터 세트(604)로서 (도 5의 메모리(520)와 같은) 시스템 메모리에 저장될 수도 있다. 일부 실시양태들에서, LUT는 데이터 세트(604)의 저장 오버헤드를 감소시키기 위해 (예를 들어, 런-길이 인코딩을 사용하여) 압축될 수도 있다. 일부 다른 실시양태들에서, 재맵핑 매트릭스들 M(1)-M(m) 은 또한 저장 오버헤드를 추가로 감소시키고 및/또는 대역폭 혼잡을 완화하기 위해 압축될 수도 있다. LUT 생성기(620)는 이미지 캡처 데이터의 각각의 프레임에 대해, 보정된 이미지 공간의 각각의 스트라이드(602)를 연속적으로(예를 들어, 래스터 순서) 프로세싱할 수도 있다. 일부 양상들에서, LUT 생성기(620)는 연속적인 데이터 스트림으로서 각각의 스트라이드-재맵핑 데이터 세트(604)를 출력할 수도 있다.
도 7 은 일부 실시양태들에 따른, 타일 디워핑 회로(700)의 블록도를 나타낸다. 디워핑 회로 (700) 는 도 5 의 디워핑 회로 (530) 의 일 실시양태일 수도 있다. 따라서, 디워핑 회로(700)는 왜곡된 이미지 데이터에 기초하여 보정된 이미지 데이터를 생성하도록 구성될 수도 있다. 일부 실시양태들에서, 디워핑 회로(700)는 왜곡된 이미지 공간의 대응하는 블록 픽셀 데이터(706)로부터 타일 픽셀 데이터(708)를 보간함으로써 보정된 이미지 공간의 각각의 타일을 개별적으로(예를 들어, 래스터 스캔 순서로) 프로세싱할 수도 있다.
디워핑 회로(700)는 메모리 인터페이스(710), 스트라이드 프로세싱 제어기(720), 왜곡된 이미지 공간 (distorted image space; DIS) 입력 버퍼(730), 보정된 이미지 공간 (corrected image space; CIS) 출력 버퍼(740), 보간기(750), 및 타이밍 제어기(760)를 포함한다. 메모리 인터페이스(710)는 디워핑 회로(700)가 시스템 메모리(예컨대, 도 5의 메모리 (520))와 통신할 수도 있는 인터페이스를 제공한다. 메모리 인터페이스(710)는 스트라이드 재맵핑 (stride remapping; SR) 데이터 판독 클라이언트(712), DIS 이미지 블록 판독 클라이언트(714), 및 CIS 이미지 블록 기입 클라이언트(716)를 포함할 수도 있다. 스트라이드 재맵핑 데이터 판독 클라이언트(712)는 스트라이드 판독 요청들(701)에 응답하여 메모리로부터 스트라이드 재맵핑(SR) 데이터 세트들(702)을 판독할 수도 있다. DIS 이미지 블록 판독 클라이언트(714)는 블록 판독 요청들(705)에 응답하여 메모리로부터 블록 픽셀 데이터(706)를 판독할 수도 있다. CIS 이미지 블록 기입 클라이언트(716)는 타일 기입 요청들(707)에 응답하여 타일 픽셀 데이터(708)를 메모리에 기록할 수도 있다. 일부 양태들에서, CIS 이미지 블록 기입 클라이언트 (716) 는 래스터 스캔 순서로 메모리에 타일 픽셀 데이터 (708) 를 기입할 수도 있다
스트라이드 프로세싱 제어기(720)는 보정된 이미지 공간의 스트라이드를 프로세싱할 수도 있다. 도 3과 관련하여 설명된 바와 같이, 보정된 이미지 공간은, 미리 결정된 픽셀 높이를 갖고 보정된 이미지 공간의 폭에 걸쳐 있는 복수의 스트라이드들을 포함할 수도 있다. 스트라이드 프로세싱 제어기(720)는 보정된 이미지 공간의 각각의 스트라이드를 프로세싱하기 위한 각각의 스트라이드 판독 요청(701)을 출력할 수도 있다. 스트라이드 재맵핑 데이터 판독 클라이언트(712)는 스트라이드 판독 요청(701)에 응답하여 SR 데이터 세트(702)를 스트라이드 프로세싱 제어기(720)로 리턴한다. 도 6과 관련하여 설명된 바와 같이, SR 데이터 세트(702)는 블록 LUT 및 복수의 디워핑 매트릭스들 (M(1)-M(m)) 을 포함할 수도 있다. 각각의 디워핑 매트릭스는 보정된 이미지 공간의 각각의 타일과 하나 이상의 DIS 블록들 사이의 픽셀 맵핑을 정의할 수도 있다. LUT는 각각의 디워핑 매트릭스를 서빙하는 DIS 블록들을 식별할 수도 있다. 스트라이드 프로세싱 제어기 (720) 는 블록 LUT 및 디워핑 매트릭스들을 각각 LUT 버퍼 (722) 및 매트릭스 버퍼 (724)에 저장할 수도 있다. 일부 실시양태들에서, 매트릭스 버퍼(724)는 한번에 단일 디워핑 매트릭스만을 저장하도록 구성될 수도 있다.
DIS 입력 버퍼(730)는 LUT 버퍼(722)로부터 블록 정보(703)를 판독하여 어느 DIS 블록들이 메모리로부터 취출될 것인지를 결정할 수도 있다. 예를 들어, 블록 정보(703)는 LUT로부터 파싱되어 디워핑 매트릭스들이 프로세싱될 순서로 DIS 입력 버퍼(730)에 제공될 수도 있다. 블록 정보(703)는 메모리로부터 판독될 하나 이상의 DIS 블록들의 인덱스들 및 DIS 블록들의 각각을 참조하는 디워핑 매트릭스들의 수를 나타내는 카운트 값을 포함할 수도 있다. DIS 입력 버퍼(730)는 현재 블록 정보(703)에 특정된 인덱스를 갖는 각각의 DIS 블록(또는 DIS 블록들의 세트)에 대한 각각의 블록 판독 요청(705)을 출력할 수도 있다. DIS 이미지 블록 판독 클라이언트(714)는 요청된 DIS 블록(들)에 대한 블록 픽셀 데이터(706)를 DIS 입력 버퍼(730)로 리턴한다. DIS 입력 버퍼(730)는 후속 블록 정보(703)가 LUT 버퍼(722)로부터 독출될 때까지 블록 픽셀 데이터(706)를 저장하거나 버퍼링할 수도 있다.
보간기 (750) 는 블록 픽셀 데이터 (706) 및 각각의 디워핑 매트릭스 (704)에 기초하여 보정된 이미지 공간의 각각의 타일을 프로세싱할 수도 있다. 예를 들어, 보간기 (750) 는 래스터 순서로 매트릭스 버퍼 (724) 로부터 각각의 디워핑 매트릭스 (704) 를 판독할 수도 있다. 각각의 디워핑 매트릭스 (704)에 대해, 보간기 (750) 는 디워핑 매트릭스 (704)에 의해 특정된 픽셀 맵핑들에 따라 보정된 이미지 공간의 대응하는 타일을 생성하기 위해 버퍼링된 블록 픽셀 데이터 (706) 를 사용할 수도 있다. 일부 실시양태들에서, 보간기(750)는 블록 픽셀 데이터(706) 에서 디워핑 매트릭스에 의해 표시된 레퍼런스 포인트들의 바이큐빅 보간을 기초로 각각의 타일을 생성할 수도 있다. 예를 들어, 보간기 (750) 는 블록 픽셀 데이터 (706) 의 4 루마 (Y) 픽셀들 및 4 크로마 (UV) 픽셀들 및 디워핑 매트릭스 (704) 에 의해 표시된 분수 오프셋들을 사용하여 각각의 타일을 보간할 수도 있다.
CIS 출력 버퍼(740)는 완성된 타일이 CIS 출력 버퍼(740)에 저장될 때까지 보간기(750)의 출력(예를 들어, 타일 픽셀 데이터(708))을 버퍼링할 수도 있다. CIS 출력 버퍼(740) 에서의 타일 픽셀 데이터(708)가 보정된 이미지 공간의 완전한 타일을 나타낼 때, CIS 출력 버퍼(740)는 타일을 시스템 메모리에 다시 기록할 수도 있다. 예를 들어, CIS 출력 버퍼(740)는 타일 픽셀 데이터(708)와 함께 타일 기입 요청(707)을 CIS 이미지 블록 기입 클라이언트(716)로 출력할 수도 있다. 일부 실시양태들에서, 보간기(750)가 보정된 이미지 공간 (또는 다음 디워핑 매트릭스(704)) 에서 다음 타일을 프로세싱하기 시작하기 전에, 각각의 완료된 타일은 래스터 순서로 시스템 메모리에 기록될 수도 있다. 따라서, 디워핑 회로(700)에 의해 디워핑이 완료됨에 따라, 이미지 렌더 디바이스 (또는 이미지 분석 디바이스) 는 타일 픽셀 데이터(708)를 거의 실시간으로 렌더링할 수도 있다.
타이밍 제어기(760)는 스트라이드 프로세싱 제어기(720), DIS 입력 버퍼(730), 및 CIS 출력 버퍼(740)의 타이밍을 제어하기 위한 타이밍 신호(709)를 생성할 수도 있다. 보다 구체적으로, 타이밍 신호(709)는 스트라이드 프로세싱 제어기(720), DIS 입력 버퍼(730), 및 CIS 출력 버퍼(740)의 동작들을 동기화하는데 사용될 수도 있다. 예를 들어, 타이밍 신호(709)는, 스트라이드 프로세싱 제어기(720)가 블록 픽셀 데이터(706)와 연관된 디워핑 매트릭스들(704)을 취출하기 전에, 블록 LUT가 LUT 버퍼(722)에 먼저 로딩되고 DIS 입력 버퍼(730)가 LUT에 의해 식별된 블록 픽셀 데이터(706)를 취출하는 것을 보장할 수도 있다. 다수의 디워핑 매트릭스들(704)이 동일한 블록 픽셀 데이터(706)에 의존할 수도 있기 때문에, DIS 입력 버퍼(730)는 각각의 연속적인 디워핑 매트릭스(704)에 대한 새로운 블록 픽셀 데이터(706)를 취출할 필요가 없다. 일부 양태들에서, DIS 입력 버퍼(730)는 보간기(750)에 의해 프로세싱된 디워핑 매트릭스들의 수가 DIS 입력 버퍼 (730)에 저장된 현재 DIS 블록(들)과 연관된 카운트 값에 도달할 때 새로운 블록 판독 요청 (705) 을 출력할 수도 있다.
도 8 은 일부 실시양태들에 따른, 이미지 공간 재맵핑 제어기(800)의 다른 블록도를 나타낸다. 재맵핑 제어기(800)는 (도 5의 LGDC 시스템(500)과 같은) LGDC 시스템에서 구현될 수도 있다. 따라서, 재맵핑 제어기(800)는 도 6 의 이미지 공간 재맵핑 제어기(600)의 일 실시양태일 수도 있다. 재맵핑 제어기(800)는 프로세서(810) 및 메모리(820)를 포함한다.
메모리(820)는 이미지 캡처 데이터 및/또는 이미지 렌더 데이터를 저장하도록 구성된 이미지 픽셀 데이터 저장부(821)를 포함할 수도 있다. 예를 들어, 이미지 캡처 데이터는 왜곡된 이미지 공간에서의 장면의 이미지에 대응할 수도 있고, 이미지 렌더 데이터는 보정된 이미지 공간에서의 장면의 이미지에 대응할 수도 있다. 메모리 (820) 는 또한 적어도 다음의 소프트웨어 (SW) 모듈들을 저장할 수도 있는 비일시적 컴퓨터 판독가능 매체 (예를 들어, EPROM, EEPROM, 플래시 메모리, 하드 드라이브 등과 같은 하나 이상의 비휘발성 메모리 엘리먼트들) 를 포함할 수도 있다:
·
보정된 이미지 공간 (CIS) 의 타일들과 왜곡된 이미지 공간 (DIS) 의 블록들 사이의 픽셀 맵핑을 나타내는 복수의 디워핑 매트릭스들을 생성하기 위한 디워핑 매트릭스 SW 모듈 (822), 그 디워핑 매트릭스 SW 모듈 (822) 은 다음과 같은 서브-모듈들을 더 포함함:
o
LGDC 시스템의 메모리 대역폭 이용에 적어도 부분적으로 기초하여 각각의 CIS 타일의 사이즈를 구성하기 위한 타일 구성 서브-모듈(823);
o
다항식 렌즈 모델에 기초하여 픽셀 맵핑을 결정하기 위한 다항식 모델링 서브-모듈(824); 및
o
비-다항식 렌즈 모델에 기초하여 픽셀 맵핑을 결정하기 위한 비-다항식 모델링 서브-모듈(825); 및
·
각각의 디워핑 매트릭스와 연관된 하나 이상의 DIS 블록들을 식별하는 복수의 블록 LUT들을 생성하기 위한 블록 LUT SW 모듈(826), 그 블록 LUT SW 모듈(826)은 다음과 같은 서브-모듈들을 더 포함함:
o
LGDC 시스템의 메모리 대역폭 이용에 적어도 부분적으로 기초하여 각각의 DIS 블록의 사이즈를 구성하는 블록 구성 서브-모듈(827); 및
o
디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 DIS 블록들 각각의 페치 순서를 결정하기 위한 블록 순서 서브-모듈(828).
각각의 소프트웨어 모듈은, 프로세서 (810) 에 의해 실행될 때 재맵핑 제어기 (800) 가 대응 기능들을 수행하게 하는 명령들을 포함한다.
프로세서 (810) 는 재맵핑 제어기 (800) 에 저장된 하나 이상의 소프트웨어 프로그램들의 스크립트들 또는 명령들을 실행할 수 있는 임의의 적합한 하나 이상의 프로세서들일 수도 있다. 예를 들어, 프로세서(810)는 보정된 이미지 공간의 각각의 스트라이드에 대한 스트라이드-재맵핑 데이터 세트 (예컨대, 도 6 의 데이터 세트(604)) 를 생성하기 위해 명령들(822-828)을 실행할 수도 있다. 일부 실시양태들에서, 프로세서(810)는 개선된 레이턴시를 위해 동시에 또는 병렬로(예를 들어, 멀티스레딩을 이용하여) 다수의 스트라이드들 상에서 동작하도록 구성될 수도 있다. 보다 구체적으로, 프로세서(810)에 의해 동작되는 동시 스레드들의 수를 증가시킴으로써 소프트웨어 프로세스 레이턴시가 감소시될 수도 있다.
프로세서(810)는 디워핑 매트릭스 SW 모듈(822)을 실행하여 CIS 타일들과 DIS 블록들 사이의 픽셀 맵핑을 나타내는 복수의 디워핑 매트릭스들을 생성할 수도 있다. 디워핑 매트릭스 SW 모듈 (822) 을 실행함에 있어서, 프로세서 (810) 는 타일 구성 서브-모듈 (823), 다항식 모델링 서브-모듈 (824), 및/또는 비-다항식 모델링 서브-모듈 (825) 을 추가로 실행할 수도 있다. 예를 들어, 프로세서(810)는 LGDC 시스템의 메모리 대역폭 활용에 적어도 부분적으로 기초하여 각각의 CIS 타일의 사이즈를 구성하도록 타일 구성 서브-모듈(823)을 실행할 수도 있다. 추가로, 프로세서 (810) 는 다항식 렌즈 모델에 기초하여 픽셀 맵핑을 결정하기 위해 다항식 모델링 서브-모듈 (824) 을 실행할 수도 있다. 또한, 프로세서(810)는 비-다항식 모델링 서브 모듈(825)을 실행하여 비-다항식 렌즈 모델에 기초하여 픽셀 맵핑을 결정할 수도 있다.
프로세서(810)는 또한 블록 LUT SW 모듈(826)을 실행하여 각각의 디워핑 매트릭스와 연관된 하나 이상의 DIS 블록들을 식별하는 복수의 블록 LUT들을 생성할 수도 있다. 블록 LUT SW 모듈 (826) 을 실행함에 있어서, 프로세서 (810) 는 블록 구성 서브-모듈 (827) 및/또는 블록 순서 서브-모듈 (828) 을 추가로 실행할 수도 있다. 예를 들어, 프로세서(810)는 LGDC 시스템의 메모리 대역폭 활용에 적어도 부분적으로 기초하여 각각의 DIS 블록의 사이즈를 구성하도록 블록 구성 서브-모듈(827)을 실행할 수도 있다. 또한, 프로세서 (810) 는 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 DIS 블록들 각각의 페치 순서를 결정하기 위해 블록 순서 서브-모듈 (828) 을 실행할 수도 있다.
도 9 는 일부 실시양태들에 따른, 예시적인 이미지 프로세싱 동작 (900) 을 나타내는 예시적인 플로우차트이다. 도 7 을 참조하면, 동작(900)은 왜곡된 이미지 데이터에 기초하여 보정된 이미지 데이터를 생성하도록 타일 디워핑 회로(700)에 의해 수행될 수도 있다.
디워핑 회로는, 제 1 이미지의 픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑하기 위해 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출할 수도 있다(910). 제 1 이미지는 왜곡된 이미지 공간에서 장면을 묘사할 수도 있다. 예를 들어, 디워핑 회로는 메모리로부터 스트라이드-재맵핑 데이터 세트를 취출할 수도 있다. 데이터 세트는 래스터 순서로 배열된 복수의 디워핑 픽셀들을 포함할 수도 있다. 각각의 디워핑 매트릭스는 각각의 CIS 타일과 하나 이상의 DIS 블록들 사이의 픽셀 맵핑을 정의할 수도 있다.
디워핑 회로는 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 제 1 이미지의 픽셀들의 블록들을 취출할 수도 있다 (920). 예를 들어, 스트라이드-재맵핑 데이터 세트는 각각의 디워핑 매트릭스를 서빙하는 DIS 블록들을 식별하는 블록 LUT를 더 포함할 수도 있다. 따라서, DIS 블록들의 순서는 디워핑 매트릭스들이 디워핑 회로에 의해 취출되고 프로세싱될 순서에 적어도 부분적으로 의존할 수도 있다. 일부 실시양태들에서, 디워핑 회로는 LUT에서 특정된 순서로 DIS 블록들을 취출할 수도 있다.
디워핑 회로는 제 1 이미지의 픽셀들의 블록들에 기초하여 복수의 이미지 타일들을 생성할 수도 있고, 여기서, 이미지 타일들의 각각은 디워핑 매트릭스들 중 각각의 하나를 사용하여, 취출된 픽셀 블록들 중 하나 이상으로부터 보간된다(930). 예를 들어, 디워핑 회로는 취출된 DIS 블록들 및 각각의 디워핑 매트릭스에 기초하여 보정된 이미지 공간의 각각의 타일을 프로세싱할 수도 있다. 일부 실시양태들에서, 디워핑 회로는 DIS 블록들에서 디워핑 매트릭스에 의해 표시된 레퍼런스 포인트들의 바이큐빅 보간에 기초하여 각각의 CIS 타일을 생성할 수도 있다.
그 후, 디워핑 회로는 보정된 이미지 공간에서 장면을 묘사하는 제 2 이미지를 생성하기 위해 복수의 이미지 타일들을 결합할 수도 있다(940). 도 3 과 관련하여 상술한 바와 같이, 복수의 CIS 타일들은 래스터 순서로 배열될 때, 보정된 이미지 공간의 풀-프레임 이미지를 형성할 수도 있다. 일부 실시양태들에서, 디워핑 회로는 보정된 이미지 공간 (또는 다음 디워핑 매트릭스) 에서 다음 타일을 프로세싱하기 전에 각각의 보간된 타일을 메모리에 다시 기입할 수도 있다. 따라서, 디워핑 회로에 의해 디워핑이 완료됨에 따라, 이미지 렌더링 디바이스 (또는 이미지 분석 디바이스) 는 제 2 이미지를 거의 실시간으로 렌더링할 수도 있다.
당해 기술 분야의 당업자는 정보 및 신호들이 여러 상이한 기법들 및 기술들의 어느 것을 사용하여 표현될 수도 있음을 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 언급될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 자기입자, 광학장 또는 광학 입자, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
또한, 당해 기술 분야의 당업자는 본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자의 조합들로서 구현될 수도 있음을 알 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 분명히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자는 설명된 기능성을 각각의 특정 응용에 대해 다른 방식으로 구현할 수도 있지만, 이러한 구현 결정이 본 개시의 범위를 벗어나게 하는 것으로 해석되지 않아야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 방법, 시퀀스 또는 알고리즘은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들 2 개의 조합에서 직접 구현될 수도 있다. 소프트웨어 모듈이 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM 또는 본 기술분야에서 공지된 임의의 다른 형태의 저장 매체 내에 존재할 수도 있다. 예시적 저장 매체는 프로세서가 저장 매체로부터 정보를 판독할 수도 있고 저장 매체에 정보를 기입할 수도 있도록 프로세서에 커플링된다. 다르게는, 저장 매체는 프로세서에 통합될 수도 있다.
전술한 명세서에서, 실시양태들은 그 특정 예들을 참조하여 설명되었다. 그러나, 첨부된 청구항들에서 기술된 바와 같이 개시의 넓은 범위를 벗어나지 않으면서 다양한 수정 및 변경이 이루어질 수도 있음이 자명할 것이다. 따라서, 명세서 및 도면들은 제한적이기보다는 예시적인 것으로 간주되어야 한다.
Claims (29)
- 이미지 프로세싱 방법으로서,
제 1 이미지의 픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑하기 위한 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출하는 단계로서, 상기 제 1 이미지는 상기 왜곡된 이미지 공간에서 장면을 묘사하는, 상기 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출하는 단계;
상기 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 상기 제 1 이미지의 픽셀들의 블록들을 취출하는 단계;
상기 제 1 이미지의 픽셀들의 상기 블록들에 기초하여 복수의 이미지 타일들을 생성하는 단계로서, 상기 이미지 타일들의 각각은 상기 디워핑 매트릭스들 중 각각의 디워핑 매트릭스를 사용하여, 취출된 픽셀 블록들 중 하나 이상으로부터 보간되는, 상기 복수의 이미지 타일들을 생성하는 단계; 및
상기 보정된 이미지 공간에서 상기 장면을 묘사하는 제 2 이미지를 생성하기 위해 상기 복수의 이미지 타일들을 결합하는 단계를 포함하는, 이미지 프로세싱 방법. - 제 1 항에 있어서,
상기 픽셀 블록들의 각각은 상기 제 1 이미지의 복수의 제 1 픽셀들을 포함하고, 상기 이미지 타일들의 각각은 상기 제 2 이미지의 복수의 제 2 픽셀들을 포함하는, 이미지 프로세싱 방법. - 제 2 항에 있어서,
각각의 픽셀 블록에서의 상기 복수의 제 1 픽셀들의 수는 각각의 이미지 타일에서의 상기 복수의 제 2 픽셀들의 수보다 많은, 이미지 프로세싱 방법. - 제 2 항에 있어서,
상기 제 2 픽셀들의 각각은 바이큐빅 보간을 이용하여 상기 제 1 픽셀들 중 하나 이상으로부터 보간되는, 이미지 프로세싱 방법. - 제 1 항에 있어서,
상기 순서화된 시퀀스는 상기 제 2 이미지에서의 상기 이미지 타일들의 래스터 순서에 적어도 부분적으로 기초하는, 이미지 프로세싱 방법. - 제 5 항에 있어서,
상기 결합하는 단계는,
상기 래스터 순서로 상기 복수의 이미지 타일들을 저장하는 단계를 포함하는, 이미지 프로세싱 방법. - 제 1 항에 있어서,
상기 제 2 이미지는 균일한 높이 및 폭의 복수의 스트라이드들로 분할되고, 각각의 스트라이드의 높이는 상기 이미지 타일들 중 하나의 높이와 동일하고, 각각의 스트라이드의 폭은 상기 제 2 이미지의 폭과 동일하며, 상기 스트라이드들의 각각은 상기 이미지 타일들 중 2개 이상을 시퀀스로 포함하는, 이미지 프로세싱 방법. - 제 7 항에 있어서,
상기 디워핑 매트릭스들의 취출은,
상기 복수의 스트라이드들 중 제 1 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 디워핑 매트릭스들을 취출하는 것; 및
상기 제 1 스트라이드와 연관된 상기 디워핑 매트릭스들의 각각이 취출된 후에만 상기 복수의 스트라이드들 중 제 2 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 디워핑 매트릭스들을 취출하는 것을 포함하는, 이미지 프로세싱 방법. - 제 7 항에 있어서,
상기 픽셀들의 블록들의 취출은,
상기 복수의 스트라이드들 중 제 1 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 픽셀들의 블록들을 식별하는 제 1 룩업 테이블 (LUT) 을 취출하는 것; 및
상기 제 1 LUT 에 의해 식별된 상기 픽셀들의 블록들의 각각이 취출된 후에만 상기 복수의 스트라이드들 중 제 2 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 픽셀들의 블록들을 식별하는 제 2 LUT 를 취출하는 것을 포함하는, 이미지 프로세싱 방법. - 제 1 항에 있어서,
상기 제 1 이미지는 이미지 캡처 디바이스에 의해 캡처되고,
상기 방법은,
상기 이미지 캡처 디바이스의 렌즈의 초점 길이 또는 하나 이상의 기하학적 왜곡 파라미터들에 적어도 부분적으로 기초하여 상기 복수의 디워핑 매트릭스들을 생성하는 단계를 더 포함하는, 이미지 프로세싱 방법. - 제 10 항에 있어서,
상기 렌즈는 상기 제 1 이미지에 의해 묘사된 상기 장면에서 비선형 왜곡들을 도입하고, 상기 제 2 이미지에 의해 묘사된 상기 장면은 직선적인, 이미지 프로세싱 방법. - 제 10 항에 있어서,
상기 하나 이상의 기하학적 왜곡 파라미터들 또는 상기 초점 길이에 적어도 부분적으로 기초하여 상기 이미지 타일들 또는 픽셀 블록들의 사이즈를 선택하는 단계를 더 포함하는, 이미지 프로세싱 방법. - 제 10 항에 있어서,
상기 디워핑 매트릭스들은 다항식 렌즈 모델에 기초하여 생성되는, 이미지 프로세싱 방법. - 제 10 항에 있어서,
상기 디워핑 매트릭스들은 비-다항식 렌즈 모델에 기초하여 생성되는, 이미지 프로세싱 방법. - 제 1 항에 있어서,
상기 이미지 타일들의 각각을 생성하기 위한 메모리 대역폭 요건에 적어도 부분적으로 기초하여 상기 이미지 타일들 또는 픽셀 블록들의 사이즈를 선택하는 단계를 더 포함하는, 이미지 프로세싱 방법. - 제 15 항에 있어서,
상기 선택은 상기 제 1 이미지의 이미지 포맷 또는 픽셀 심도에 더 기초하는, 이미지 프로세싱 방법. - 디워핑 회로로서,
메모리 버퍼; 및
하드웨어 로직을 포함하고,
상기 하드웨어 로직은,
제 1 이미지의 픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑하기 위한 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출하는 것으로서, 상기 제 1 이미지는 상기 왜곡된 이미지 공간에서 장면을 묘사하는, 상기 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 취출하는 것을 행하고;
상기 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 상기 제 1 이미지의 픽셀들의 블록들을 상기 메모리 버퍼 내로 읽어들이고;
상기 제 1 이미지의 픽셀들의 상기 블록들에 기초하여 복수의 이미지 타일들을 생성하는 것으로서, 상기 이미지 타일들의 각각은 상기 디워핑 매트릭스들 중 각각의 디워핑 매트릭스를 사용하여, 취출된 픽셀 블록들 중 하나 이상으로부터 보간되는, 상기 복수의 이미지 타일들을 생성하는 것을 행하고; 그리고
상기 보정된 이미지 공간에서 상기 장면을 묘사하는 제 2 이미지를 생성하기 위해 상기 복수의 이미지 타일들을 외부 메모리에 기입하도록
구성되는, 디워핑 회로. - 제 17 항에 있어서,
상기 픽셀 블록들의 각각은 상기 제 1 이미지의 복수의 제 1 픽셀들을 포함하고, 상기 이미지 타일들의 각각은 상기 제 2 이미지의 복수의 제 2 픽셀들을 포함하는, 디워핑 회로. - 제 18 항에 있어서,
각각의 픽셀 블록에서의 상기 복수의 제 1 픽셀들은 각각의 이미지 타일에서의 상기 복수의 제 2 픽셀들보다 큰, 디워핑 회로. - 제 17 항에 있어서,
상기 순서화된 시퀀스는 상기 제 2 이미지에서의 상기 이미지 타일들의 래스터 순서에 적어도 부분적으로 기초하는, 디워핑 회로. - 제 20 항에 있어서,
상기 하드웨어 로직은 상기 래스터 순서로 상기 복수의 이미지 타일들을 저장하도록 추가로 구성되는, 디워핑 회로. - 제 17 항에 있어서,
상기 제 2 이미지는 균일한 높이 및 폭의 복수의 스트라이드들로 분할되고, 각각의 스트라이드의 높이는 상기 이미지 타일들 중 하나의 높이와 동일하고, 각각의 스트라이드의 폭은 상기 제 2 이미지의 폭과 동일하며, 상기 스트라이드들의 각각은 상기 이미지 타일들 중 2개 이상을 포함하는, 디워핑 회로. - 제 17 항에 있어서,
상기 하드웨어 로직은,
상기 복수의 스트라이드들 중 제 1 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 디워핑 매트릭스들을 취출하는 것; 및
상기 제 1 스트라이드와 연관된 상기 디워핑 매트릭스들의 각각이 취출된 후에만 상기 복수의 스트라이드들 중 제 2 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 디워핑 매트릭스들을 취출하는 것
에 의해 상기 디워핑 매트릭스들을 취출하는, 디워핑 회로. - 제 17 항에 있어서,
상기 하드웨어 로직은,
상기 복수의 스트라이드들 중 제 1 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 픽셀들의 블록들을 식별하는 제 1 룩업 테이블 (LUT) 을 취출하는 것; 및
상기 제 1 LUT 에 의해 식별된 상기 픽셀들의 블록들의 각각이 취출된 후에만 상기 복수의 스트라이드들 중 제 2 스트라이드의 상기 이미지 타일들을 생성하기 위해 사용되는 상기 픽셀들의 블록들을 식별하는 제 2 LUT 를 취출하는 것
에 의해 상기 픽셀들의 블록들을 상기 메모리 버퍼 내로 읽어들이는, 디워핑 회로. - 시스템으로서,
프로세서;
명령들이 상기 프로세서에 의해 실행될 때 상기 시스템으로 하여금,
픽셀들을 왜곡된 이미지 공간으로부터 보정된 이미지 공간으로 재맵핑하기 위한 복수의 디워핑 매트릭스들을 순서화된 시퀀스로 생성하게 하는, 상기 명령들을 저장하는 메모리; 및
상기 디워핑 매트릭스들의 순서에 적어도 부분적으로 기초하여 제 1 이미지의 픽셀들의 블록들을 취출하는 것으로서, 상기 제 1 이미지는 상기 왜곡된 이미지 공간에서 장면을 묘사하는, 상기 제 1 이미지의 픽셀들의 블록들을 취출하는 것을 행하고;
상기 제 1 이미지의 픽셀들의 상기 블록들에 기초하여 복수의 이미지 타일들을 생성하는 것으로서, 상기 이미지 타일들의 각각은 상기 디워핑 매트릭스들 중 각각의 디워핑 매트릭스를 사용하여, 취출된 픽셀 블록들 중 하나 이상으로부터 보간되는, 상기 복수의 이미지 타일들을 생성하는 것을 행하며; 그리고
상기 보정된 이미지 공간에서 상기 장면을 묘사하는 제 2 이미지를 생성하기 위해 상기 복수의 이미지 타일들을 결합하도록
구성된 디워핑 회로를 포함하는, 시스템. - 제 25 항에 있어서,
상기 디워핑 매트릭스들은 다항식 렌즈 모델에 기초하여 생성되는, 시스템. - 제 25 항에 있어서,
상기 디워핑 매트릭스들은 비-다항식 렌즈 모델에 기초하여 생성되는, 시스템. - 제 25 항에 있어서,
상기 명령들의 실행은 추가로 상기 시스템으로 하여금,
상기 이미지 타일들의 각각을 생성하기 위한 메모리 대역폭 요건에 적어도 부분적으로 기초하여 상기 이미지 타일들 또는 픽셀 블록들의 사이즈를 선택하게 하는, 시스템. - 제 28 항에 있어서,
상기 선택은 상기 제 1 이미지의 이미지 포맷 또는 픽셀 심도에 더 기초하는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/577,275 | 2019-09-20 | ||
US16/577,275 US11669942B2 (en) | 2019-09-20 | 2019-09-20 | Image de-warping system |
PCT/US2020/035847 WO2021055027A1 (en) | 2019-09-20 | 2020-06-03 | Image de-warping system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220066917A true KR20220066917A (ko) | 2022-05-24 |
Family
ID=74881060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227012797A KR20220066917A (ko) | 2019-09-20 | 2020-06-03 | 이미지 디워핑 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11669942B2 (ko) |
JP (1) | JP2022548556A (ko) |
KR (1) | KR20220066917A (ko) |
CN (1) | CN114375459A (ko) |
WO (1) | WO2021055027A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024058436A1 (ko) * | 2022-09-13 | 2024-03-21 | 삼성전자 주식회사 | 영상을 표시하는 전자 장치 및 이의 제어 방법 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11544895B2 (en) * | 2018-09-26 | 2023-01-03 | Coherent Logix, Inc. | Surround view generation |
US11132831B1 (en) * | 2020-03-02 | 2021-09-28 | Qualcomm Incorporated | Methods and apparatus for efficient multi-view rasterization |
KR20210155695A (ko) * | 2020-06-16 | 2021-12-23 | 삼성전자주식회사 | 화질 튜닝을 수행하는 이미지 처리 시스템 및 화질 튜닝 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10039248C2 (de) * | 2000-08-11 | 2002-10-24 | Zeiss Carl Jena Gmbh | Verfahren zur elektronischen Bildentzerrung bei Laser-Scan-Einrichtungen |
US8078001B2 (en) * | 2007-05-11 | 2011-12-13 | Micron Technology, Inc. | Methods, apparatuses and systems for piecewise generation of pixel correction values for image processing |
US9105090B2 (en) * | 2011-07-13 | 2015-08-11 | Analog Devices, Inc. | Wide-angle lens image correction |
CN104246795B (zh) | 2012-03-01 | 2019-01-01 | Geo半导体有限公司 | 用于超广角透镜图像的自适应透视修正的方法和系统 |
US20150131924A1 (en) | 2013-11-13 | 2015-05-14 | Microsoft Corporation | Creation of Rectangular Images from Input Images |
CN105321147B (zh) * | 2014-06-25 | 2019-04-12 | 腾讯科技(深圳)有限公司 | 图像处理的方法及装置 |
US10659750B2 (en) * | 2014-07-23 | 2020-05-19 | Apple Inc. | Method and system for presenting at least part of an image of a real object in a view of a real environment, and method and system for selecting a subset of a plurality of images |
US20160119551A1 (en) | 2014-10-22 | 2016-04-28 | Sentry360 | Optimized 360 Degree De-Warping with Virtual Cameras |
KR20170007069A (ko) | 2015-07-08 | 2017-01-18 | 주식회사 케이티 | 파노라믹 비디오의 왜곡보정 방법 및 장치 |
KR102500836B1 (ko) | 2016-09-27 | 2023-02-16 | 한화테크윈 주식회사 | 광각 영상 처리 방법 및 이를 위한 장치 |
JP6707022B2 (ja) * | 2016-12-26 | 2020-06-10 | 日立オートモティブシステムズ株式会社 | ステレオカメラ |
US10796402B2 (en) * | 2018-10-19 | 2020-10-06 | Tusimple, Inc. | System and method for fisheye image processing |
US20210042890A1 (en) * | 2019-08-05 | 2021-02-11 | Nxp Usa, Inc. | Adaptive Tiles for Geometric Correction |
-
2019
- 2019-09-20 US US16/577,275 patent/US11669942B2/en active Active
-
2020
- 2020-06-03 JP JP2022515656A patent/JP2022548556A/ja active Pending
- 2020-06-03 WO PCT/US2020/035847 patent/WO2021055027A1/en active Application Filing
- 2020-06-03 CN CN202080065587.8A patent/CN114375459A/zh active Pending
- 2020-06-03 KR KR1020227012797A patent/KR20220066917A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024058436A1 (ko) * | 2022-09-13 | 2024-03-21 | 삼성전자 주식회사 | 영상을 표시하는 전자 장치 및 이의 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
WO2021055027A1 (en) | 2021-03-25 |
US20210090220A1 (en) | 2021-03-25 |
CN114375459A (zh) | 2022-04-19 |
US11669942B2 (en) | 2023-06-06 |
JP2022548556A (ja) | 2022-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669942B2 (en) | Image de-warping system | |
CN107924554B (zh) | 图像处理流水线中对图像数据的多速率处理 | |
US7630584B2 (en) | Image processing apparatus, image processing system, imaging apparatus and image processing method | |
US9232139B2 (en) | Image stabilization using striped output transformation unit | |
US9787922B2 (en) | Pixel defect preprocessing in an image signal processor | |
KR101646608B1 (ko) | 실시간 비디오 프레임 선-프로세싱 하드웨어 | |
US9386234B2 (en) | Auto filter extent management | |
EP2063646A2 (en) | Method and apparatus for predictive coding | |
US20080062288A1 (en) | Image processing method, image processing apparatus and image pickup apparatus and display apparatus suitable for the application of image processing method | |
US9462189B2 (en) | Piecewise perspective transform engine | |
US8861846B2 (en) | Image processing apparatus, image processing method, and program for performing superimposition on raw image or full color image | |
JP4337463B2 (ja) | 画像処理装置、画像処理システム、撮像装置および画像処理方法 | |
KR101140953B1 (ko) | 영상 왜곡 보정 장치 및 방법 | |
JP2013146080A (ja) | 小さな画像又は大きな画像を処理する小さなラインバッファを容易に用いる技術 | |
US11127111B2 (en) | Selective allocation of processing resources for processing image data | |
JP6209026B2 (ja) | 画像符号化装置及びその制御方法 | |
JP2008172410A (ja) | 撮像装置、画像処理装置、画像処理方法、画像処理方法のプログラム及び画像処理方法のプログラムを記録した記録媒体 | |
US9374526B2 (en) | Providing frame delay using a temporal filter | |
JP2009116763A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP4803224B2 (ja) | 画像処理装置、画像処理システム、撮像装置および画像処理方法 | |
Blasinski et al. | Real-time, color image barrel distortion removal | |
Luo et al. | Improved LUT-based image warping for video cameras | |
JP2009065323A (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
US20070103568A1 (en) | Method of enlarging an image by interpolation means and a related digital camera using the same | |
JP2013187630A (ja) | 画像処理装置及び方法、並びに撮像装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |