KR20240035992A - 현저성에 기초한 초해상도 - Google Patents

현저성에 기초한 초해상도 Download PDF

Info

Publication number
KR20240035992A
KR20240035992A KR1020247000603A KR20247000603A KR20240035992A KR 20240035992 A KR20240035992 A KR 20240035992A KR 1020247000603 A KR1020247000603 A KR 1020247000603A KR 20247000603 A KR20247000603 A KR 20247000603A KR 20240035992 A KR20240035992 A KR 20240035992A
Authority
KR
South Korea
Prior art keywords
region
input image
blocks
resolution
image
Prior art date
Application number
KR1020247000603A
Other languages
English (en)
Inventor
종보 시
웨이싱 완
시먀오 우
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20240035992A publication Critical patent/KR20240035992A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4053Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)

Abstract

이미지 프로세싱을 위한 시스템들 및 기법들이 설명된다. 예를 들어, 이미징 시스템은 제1 구역 및 제2 구역을 갖는 입력 이미지를, 둘 모두 제1 해상도로 획득할 수 있다. 이미징 시스템은 (예를 들어, 현저성 값들을 입력 이미지의 픽셀들에 맵핑하는 현저성 맵에 기초하여) 제1 구역이 제2 구역보다 현저하다고 결정할 수 있다. 이미징 시스템은 제1 해상도를 제2 해상도로 증가시키기 위해 제1 구역을 수정하도록 (예를 들어, 이를테면 머신 러닝 초해상도 시스템의 트레이닝된 네트워크를 사용하여) 제1 프로세스를 사용할 수 있다. 이미징 시스템은 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 구역을 수정하도록 (예를 들어, 보간 프로세스에 기초하여) 제2 프로세스를 사용할 수 있다. 이미징 시스템은 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 생성 및/또는 출력할 수 있다.

Description

현저성에 기초한 초해상도
본 개시내용은 일반적으로 이미지 프로세싱에 관한 것이다. 예를 들어, 본 개시내용의 양태들은 현저성(saliency)에 기초하여 초해상도(super resolution) 이미지들을 생성하기 위해 이미지 데이터를 프로세싱하기 위한 시스템들 및 기법들을 포함한다.
초해상도 이미징은 이미지의 해상도를 증가시키는 기법들을 지칭한다. 일부 예들에서, 초해상도 이미징 기법들은 최근접 이웃 보간(nearest neighbor interpolation) 또는 이중선형 보간(bilinear interpolation)과 같은 보간-기반 업스케일링 기법들을 포함할 수 있다. 그러나, 보간에 기초한 전통적인 초해상도 이미징 기법들은 일반적으로, 흐릿하고 그리고/또는 뭉툭하며, 따라서 미세한 세부사항들을 정확하게 재현하지 않는 이미지들을 생성한다.
이미징에서, 이미지 내의 픽셀의 현저성(saliency)은 픽셀이 이미지의 다른 픽셀들과 비교하여 얼마나 고유한지를 지칭한다. 일부 경우들에서, 사람들 또는 동물들의 묘사들과 같은 이미지의 중요한 시각적 엘리먼트들은 이미지의 배경 엘리먼트들보다 높은 현저성 값들을 가질 수 있다.
일부 예들에서, 현저성에 기초하여 초해상도 이미지들을 생성하기 위해 이미지 데이터를 프로세싱하기 위한 시스템들 및 기법들이 설명된다. 이미징 시스템은, 예를 들어 이미징 시스템의 이미지 센서로부터 또는 외부 전송자 디바이스로부터 입력 이미지를 획득한다. 입력 이미지는 저해상도일 수 있는 제1 해상도를 갖는다. 입력 이미지는 적어도 제1 구역 및 제2 구역을 포함하며, 이들 둘 모두는 제1 해상도를 갖는다. 이미징 시스템은 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정할 수 있다. 예를 들어, 이미징 시스템은, 개개의 현저성 값을 입력 이미지의 각각의 픽셀에 맵핑하고, 제1 구역을 제2 구역보다 현저한 것으로 식별하는 현저성 맵을 생성할 수 있다. 일부 예들에서, 이미징 시스템은 ML(machine learning) 현저성 맵핑 시스템을 입력 이미지에 적용함으로써 입력 이미지의 각각의 픽셀에 대한 각각의 현저성 값을 생성할 수 있다. 일부 예들에서, 이미징 시스템은 입력 이미지를 다수의 블록들로, 예를 들어 블록들의 그리드 또는 격자로 파티셔닝할 수 있다. 이미징 시스템은 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 입력 이미지의 제1 구역을 수정하도록 ML 초해상도 시스템을 사용한다. 제2 해상도는 제1 해상도보다 크다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 제1 구역을 수정하는 것은, 제1 구역에 대응하는(예를 들어, 그의 적어도 일부를 포함하는) 블록들의 제1 서브세트의 각각의 블록을 제1 해상도로부터 제2 해상도로 수정하는 것을 포함할 수 있다. 이미징 시스템은 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 입력 이미지의 제2 구역을 수정하도록 보간을 사용한다. 보간은, 예를 들어 최근접 이웃 보간, 이중 선형 보간, 바이큐빅(bicubic) 보간, 본 명세서에서 식별된 다른 타입들의 보간, 또는 이들의 조합을 포함할 수 있다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 제2 구역을 수정하는 것은, 제2 구역에 대응하는(예를 들어, 그의 적어도 일부를 포함하는) 블록들의 제2 서브세트의 각각의 블록을 제1 해상도로부터 제2 해상도로 수정하는 것을 포함할 수 있다. 이미징 시스템은 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 생성 및/또는 출력한다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 이미징 시스템은 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성할 수 있다. 이미징 시스템은 블록들의 에지들에서 시각적 아티팩트들을 감소시키기 위해 디블록킹 필터를 출력 이미지에 적용할 수 있다.
일 예에서, 이미지 데이터를 프로세싱하기 위한 장치가 제공된다. 장치는 적어도 하나의 메모리 및 메모리에 커플링된 하나 이상의 프로세서들(예를 들어, 회로부에서 구현됨)을 포함할 수 있다. 하나 이상의 프로세서들은, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 것으로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하고; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하고; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하고; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하는 것으로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하고; 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하도록 구성된다.
다른 예에서, 이미지 데이터를 프로세싱하는 방법이 제공된다. 방법은, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 단계로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하는 단계; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 단계; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하는 단계; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하는 단계로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하는 단계; 및 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하는 단계를 포함한다.
다른 예에서, 명령들이 저장되어 있는 비일시적 컴퓨터-판독가능 매체가 제공되며, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하게 하는 것으로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하게 하고; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하게 하고; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하게 하고; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하게 하는 것으로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하게 하고; 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하게 한다.
다른 예에서, 비디오 데이터를 프로세싱하기 위한 장치가 제공된다. 장치는, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하기 위한 수단으로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하기 위한 수단; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하기 위한 수단; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하기 위한 수단; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하기 위한 수단으로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하기 위한 수단; 및 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하기 위한 수단을 포함한다.
일부 양태들에서, 입력 이미지의 제1 구역은 제1 구역이 제2 구역보다 현저하다고 결정하는 것에 기초하여 제1 프로세스를 사용하여 수정된다.
일부 양태들에서, 제1 프로세스는 트레이닝된 네트워크에 기초한 초해상도 프로세스이다. 예를 들어, 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 트레이닝된 네트워크를 사용하여 초해상도 프로세스를 수행하는 것을 포함할 수 있다. 일부 경우들에서, 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크(convolutional neural network)들을 포함한다.
일부 양태들에서, 제2 프로세스는 보간 프로세스이다. 예를 들어, 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 보간 프로세스를 수행하는 것을 포함할 수 있다. 일부 경우들에서, 보간 프로세스는, 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅(cubic) 보간, 바이큐빅 보간, 트리큐빅(tricubic) 보간, 스플라인(spline) 보간, 랑조스(lanczos) 보간, 싱크(sinc) 보간, 푸리에-기반 보간, 및 에지-지향(edge-directed) 보간 중 적어도 하나를 포함한다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는, 현저성 맵에 기초하여 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 것을 포함할 수 있다. 예를 들어, 현저성 맵은 제1 구역을 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함할 수 있다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는, 입력 이미지의 각각의 픽셀에 대해 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 입력 이미지에 기초하여 현저성 맵을 생성하는 것을 포함할 수 있다.
일부 양태들에서, 복수의 픽셀들 중의 픽셀에 대한 현저성 맵의 현저성 값은 복수의 픽셀들 중의 픽셀과 다른 픽셀들 사이의 거리에 기초한다.
일부 양태들에서, 현저성 맵을 생성하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 부가적인 트레이닝된 네트워크를 입력 이미지에 적용하는 것을 포함할 수 있다. 일부 경우들에서, 부가적인 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 입력 이미지를 복수의 블록들로 파티셔닝하는 것을 포함할 수 있다. 일부 경우들에서, 복수의 블록들의 각각의 블록은 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는다. 일부 경우들에서, 복수의 블록들은 제1 복수의 블록들 및 제2 복수의 블록들을 포함하고, 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖는다. 일부 양태들에서, 제1 복수의 블록들은 픽셀들의 수 및 형상 중 적어도 하나에 기초하여 제2 복수의 블록들과 상이하다.
일부 양태들에서, 입력 이미지의 제1 구역을 수정하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 입력 이미지의 제1 구역에 대응하는 복수의 블록들의 제1 서브세트를 제1 해상도로부터 제2 해상도로 수정하기 위해 제1 프로세스를 사용하는 것을 포함할 수 있다.
일부 양태들에서, 입력 이미지의 제2 구역을 수정하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 입력 이미지의 제2 구역에 대응하는 복수의 블록들의 제2 서브세트를 수정하기 위해 제2 프로세스를 사용하는 것을 포함할 수 있다.
일부 양태들에서, 입력 이미지의 제1 구역을 수정하고 입력 이미지의 제2 구역을 수정하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 복수의 블록들 각각의 제1 해상도를 제2 해상도로 증가시키기 위해 복수의 블록들 각각을 수정하는 것을 포함할 수 있다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성하는 것을 포함할 수 있다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 디블록킹 필터를 출력 이미지에 적용함으로써 적어도 부분적으로 출력 이미지를 수정하는 것을 포함할 수 있다.
일부 양태들에서, 제2 해상도는 디스플레이의 해상도에 기초한다. 일부 경우들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 디스플레이 상에서 출력 이미지를 디스플레이하는 것을 포함할 수 있다.
일부 양태들에서, 출력 이미지를 출력하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 출력 이미지로 하여금 디스플레이 상에서 디스플레이되게 하는 것을 포함할 수 있다. 예를 들어, 방법은 디스플레이 상에서 출력 이미지를 디스플레이하는 단계를 포함할 수 있다. 일부 경우들에서, 장치들은 디스플레이를 포함할 수 있다.
일부 양태들에서, 입력 이미지를 획득하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 입력 이미지를 캡처하도록 구성된 이미지 센서로부터 입력 이미지를 수신하는 것을 포함할 수 있다. 예를 들어, 장치들은 이미지 센서를 포함할 수 있다.
일부 양태들에서, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는, 적어도 하나의 사용자 입력을 수신하는 것; 및 적어도 하나의 사용자 입력에 기초하여 제1 구역 및 제2 구역 중 적어도 하나를 수정하는 것을 포함할 수 있다.
일부 양태들에서, 입력 이미지를 획득하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 통신 수신기를 통해 전송자 디바이스로부터 입력 이미지를 수신하는 것을 포함할 수 있다. 예를 들어, 장치들은 통신 수신기를 포함할 수 있다.
일부 양태들에서, 출력 이미지를 출력하기 위해, 위에서 설명된 방법들, 장치들, 및 컴퓨터-판독가능 매체는 통신 송신기를 통해 출력 이미지를 수신자 디바이스에 송신하는 것을 포함할 수 있다. 예를 들어, 장치들은 통신 송신기를 포함할 수 있다.
일부 양태들에서, 출력 이미지는 비디오 프레임들의 시퀀스의 일부로서 출력된다. 일부 경우들에서, 출력 이미지는 (예를 들어, 비디오 프레임들의 시퀀스를 이용하여) 미리보기 스트림에서 디스플레이된다.
일부 양태들에서, 위에서 설명된 장치들 중 하나 이상은 모바일 디바이스(예를 들어, 모바일 전화기 또는 소위 "스마트 폰" 또는 다른 모바일 디바이스), 웨어러블 디바이스, 확장 현실 디바이스(예를 들어, VR(virtual reality) 디바이스, AR(augmented reality) 디바이스, 또는 MR(mixed reality) 디바이스), 카메라, 개인용 컴퓨터, 랩톱 컴퓨터, 서버 컴퓨터, 차량 또는 컴퓨팅 디바이스 또는 차량의 컴포넌트, 또는 다른 디바이스이고, 그의 일부이고, 그리고/또는 이를 포함한다. 일부 양태들에서, 장치는 하나 이상의 이미지들을 캡처하기 위한 이미지 센서 또는 다수의 이미지 센서들(예를 들어, 카메라 또는 다수의 카메라들)을 포함한다. 일부 양태들에서, 장치는 부가적으로 또는 대안적으로 하나 이상의 이미지들, 통지들, 및/또는 다른 디스플레이가능 데이터를 디스플레이하기 위한 디스플레이를 포함한다. 일부 양태들에서, 위에서 설명된 장치들은 하나 이상의 센서들(예를 들어, 하나 이상의 IMU(inertial measurement unit)들, 이를테면 하나 이상의 자이로미터들, 하나 이상의 가속도계들, 이들의 임의의 조합, 및/또는 다른 센서)을 포함할 수 있다.
이러한 요약은 청구된 청구대상의 핵심적이거나 본질적인 특성들을 식별하도록 의도되지 않을 뿐만 아니라, 청구된 청구대상의 범위를 결정하기 위해 별개로 사용되도록 의도되지 않는다. 청구 대상은 본 특허의 전체 명세서의 적절한 부분들, 임의의 또는 모든 도면들, 및 각각의 청구항을 참조하여 이해되어야 한다.
전술한 것은 다른 특징들 및 실시예들과 함께, 다음의 설명, 청구항들, 및 첨부 도면들을 참조할 시에 더 명백해질 것이다.
본 출원의 예시적인 실시예들은 다음의 도면의 도들을 참조하여 아래에서 상세히 설명된다.
도 1은 일부 예들에 따른, 이미지 캡처 및 프로세싱 시스템의 예시적인 아키텍처를 예시하는 블록 다이어그램이다.
도 2는 일부 예들에 따른, 현저성 맵퍼를 사용하여 입력 이미지에 기초하여 현저성 맵을 생성하는 이미징 시스템을 예시하는 블록 다이어그램이다.
도 3은 일부 예들에 따른, ML(machine learning) 기반 초해상도 엔진을 사용하여 높은 현저성 블록들의 해상도를 증가시키고 보간-기반 초해상도 엔진을 사용하여 낮은 현저성 블록들의 해상도를 증가시키는 것에 기초하여 입력 이미지로부터 초해상도 출력 이미지를 생성하는 이미징 시스템을 예시하는 블록 다이어그램이다.
도 4a는 일부 예들에 따른, P0 내지 P63으로 라벨링된 복수의 픽셀들을 포함하는 입력 이미지의 일 예를 예시하는 개념도이다.
도 4b는 일부 예들에 따른, 도 4a의 입력 이미지의 픽셀들 각각에 대응하는 공간적으로 변하는 현저성 값들을 맵핑하는 현저성 맵의 일 예를 예시하는 개념도이다.
도 5는 일부 예들에 따른, 현저성 맵을 생성하기 위해 이미징 시스템에 의해 그리고/또는 ML(machine learning) 초해상도 엔진에 대해 사용될 수 있는 뉴럴 네트워크의 일 예를 예시하는 블록 다이어그램이다.
도 6a는 일부 예들에 따른, 현저성 맵을 생성하기 위해 이미징 시스템의 ML(machine learning) 현저성 맵퍼 엔진에 의해 사용될 수 있는 트레이닝된 뉴럴 네트워크의 뉴럴 네트워크 아키텍처의 일 예를 예시하는 블록 다이어그램이다.
도 6b는 일부 예들에 따른, 출력 블록들을 생성하기 위해 이미징 시스템의 ML(machine learning) 초해상도 엔진에 의해 사용될 수 있는 트레이닝된 뉴럴 네트워크의 뉴럴 네트워크 아키텍처의 일 예를 예시하는 블록 다이어그램이다.
도 7은 일부 예들에 따른, 이미지를 큰 블록들, 중간 블록들, 및 작은 블록들로 파티셔닝하는 블록 격자를 예시하는 개념도이다.
도 8은 일부 예들에 따른, 이미지 데이터를 프로세싱하기 위한 동작들을 예시하는 흐름도이다.
도 9는 본 명세서에 설명된 특정 양태들을 구현하기 위한 컴퓨팅 시스템의 일 예를 예시하는 다이어그램이다.
본 개시내용의 특정 양태들 및 실시예들이 아래에서 제공된다. 이들 양태들 및 실시예들 중 일부는 독립적으로 적용될 수 있고, 이들 중 일부는 당업자들에게 명백할 바와 같이 조합하여 적용될 수 있다. 다음의 설명에서, 설명의 목적들을 위해, 특정 세부사항들이 본 출원의 실시예들의 완전한 이해를 제공하기 위해 기재된다. 그러나, 다양한 실시예들이 이들 특정 세부사항들 없이 실시될 수 있다는 것이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 예시적인 실시예들만을 제공하며, 본 개시내용의 범위, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적인 실시예들의 다음의 설명은 예시적인 실시예를 구현하기 위한 가능한 설명을 당업자들에게 제공할 것이다. 첨부된 청구항들에 기재된 바와 같이 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 어레인지먼트에 다양한 변경들이 이루어질 수 있다는 것이 이해되어야 한다.
카메라는 이미지 센서를 사용하여, 광을 수신하고 정지 이미지들 또는 비디오 프레임들과 같은 이미지 프레임들을 캡처하는 디바이스이다. 용어 "이미지", "이미지 프레임", 및 "프레임"은 본 명세서에서 상호교환가능하게 사용된다. 카메라들은 다양한 이미지 캡처 및 이미지 프로세싱 세팅들을 이용하여 구성될 수 있다. 상이한 세팅들은 상이한 외건들을 갖는 이미지들을 초래한다. ISO, 노출 시간, 조리개 사이즈, f/스톱, 셔터 속도, 포커스, 및 이득과 같은 일부 카메라 세팅들은 하나 이상의 이미지 프레임들의 캡처 전에 또는 그 동안 결정 및 적용된다. 예를 들어, 하나 이상의 이미지 프레임들을 캡처하기 위해 세팅들 또는 파라미터들이 이미지 센서에 적용될 수 있다. 다른 카메라 세팅들은 대비, 밝기, 채도, 선예도, 레벨들, 커브들, 또는 컬러들에 대한 변경들과 같은 하나 이상의 이미지 프레임들의 포스트-프로세싱을 구성할 수 있다. 예를 들어, 세팅들 또는 파라미터들은 이미지 센서에 의해 캡처된 하나 이상의 이미지 프레임들을 프로세싱하기 위한 프로세서(예를 들어, 이미지 신호 프로세서 또는 ISP)에 적용될 수 있다.
초해상도 이미징은 이미지의 해상도를 증가시키는 기법들을 지칭한다. 일부 예들에서, 초해상도 이미징 기법들은 최근접 이웃 보간, 이중선형 보간과 같은 보간-기반 업스케일링 기법들을 포함할 수 있다. 보간-기반 초해상도 기법은 입력 이미지보다 높은 해상도를 갖는 출력 이미지를 출력하기 위해 보간을 사용하여 입력 이미지의 해상도를 증가시킬 수 있다. 그러나, 보간-기반 초해상도 이미징 기법들은 일반적으로, 흐릿하고 그리고/또는 뭉툭한 이미지들을 생성하며, 따라서 일반적으로 미세한 세부사항들, 이를테면 얼굴들, 영숫자 문자들, 텍스처들, 및/또는 복잡한 설계들을 정확하게 재현하지 못한다.
일부 경우들에서, 초해상도 이미징은 하나 이상의 트레이닝된 ML(machine learning) 모델들, 이를테면 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트(random forest)들, 또는 이들의 조합을 사용하여 수행될 수 있다. ML-기반 초해상도 기법은 입력 이미지를 하나 이상의 ML 모델들에 입력할 수 있으며, 이는 입력 이미지보다 높은 해상도를 갖는 출력 이미지를 출력할 수 있다. 그러나, 완전한 ML-기반 초해상도 기법들은 XR(extended reality) 컨텍스트에서의 패스-스루(pass-through) 비디오와 같은 특정 애플리케이션들에서 사용하기에 너무 느릴 수 있다. XR은 VR(virtual reality), AR(augmented reality), MR(mixed reality), 또는 이들의 조합을 지칭할 수 있다. 더욱이, 완전한 ML-기반 초해상도 기법들은, 연장된 시간 기간에 걸쳐 일관되게 사용하기 위해, 제한된 배터리 전력 및/또는 제한된 컴퓨팅 리소스들을 갖는 디바이스들, 이를테면 휴대용 디바이스들에 대해 너무 전력-집약적이고 그리고/또는 프로세싱-집약적일 수 있다.
이미징에서, 이미지 내의 픽셀의 현저성은 픽셀이 이미지의 다른 픽셀들과 비교하여 얼마나 고유한지를 지칭한다. 일부 경우들에서, 사람들 또는 동물들의 묘사들과 같은 이미지의 중요한 시각적 엘리먼트들은 이미지의 배경 엘리먼트들보다 높은 현저성 값들을 가질 수 있다. 일부 경우들에서, 이미지의 주어진 픽셀에 대한 현저성 값은 픽셀에 대한 픽셀 값과 이미지의 다른 픽셀들에 대한 다른 픽셀 값들의 세트의 각각의 픽셀 값 사이의 차이들의 세트의 합으로서 계산될 수 있다. 일부 경우들에서, 이미지의 주어진 픽셀에 대한 현저성 값은 하나 이상의 트레이닝된 ML(machine learning) 모델들, 이를테면 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합을 사용하여 결정될 수 있다. 현저성 맵은 이들 방법들 중 어느 하나 또는 이들 방법들의 조합을 사용하여 생성될 수 있다. 현저성 맵은 입력 이미지의 각각의 픽셀을 개개의 현저성 값에 맵핑할 수 있다.
입력 이미지의 현저성 맵 내의 현저성 값들에 기초하여 초해상도 이미지를 생성 및 출력하기 위해 입력 이미지에 대한 이미지 데이터를 프로세싱하기 위한 시스템들 및 기법들이 설명된다. 이미징 시스템은, 예를 들어 이미징 시스템의 이미지 센서로부터 또는 외부 전송자 디바이스로부터 입력 이미지를 획득한다. 입력 이미지는 저해상도일 수 있는 제1 해상도를 갖는다. 입력 이미지는 적어도 제1 구역 및 제2 구역을 포함하며, 이들 둘 모두는 제1 해상도를 갖는다. 이미징 시스템은 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정할 수 있다. 예를 들어, 이미징 시스템은, 개개의 현저성 값을 입력 이미지의 각각의 픽셀에 맵핑하고, 제1 구역을 제2 구역보다 현저한 것으로 식별하는 현저성 맵을 생성할 수 있다. 이미징 시스템은 입력 이미지의 각각의 픽셀에 대한 각각의 현저성 값을, 그 픽셀과 입력 이미지의 다른 픽셀들 사이의 픽셀 거리들을 합산함으로써 생성할 수 있다. 이미징 시스템은 ML(machine learning) 현저성 맵핑 시스템을 입력 이미지에 적용함으로써 입력 이미지의 각각의 픽셀에 대한 각각의 현저성 값을 생성할 수 있다. ML 현저성 맵핑 시스템은 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 CNN(convolutional neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합을 포함할 수 있다. 일부 예들에서, 이미징 시스템은 입력 이미지를 다수의 블록들로, 예를 들어 블록들의 그리드 또는 격자로 파티셔닝할 수 있다. 일부 예들에서, 각각의 블록은 동일한 사이즈 및 형상을 가질 수 있다. 일부 예들에서, 일부 블록들은 다른 블록들보다 클 수 있다(예를 들어, 그들보다 더 많은 픽셀들을 포함할 수 있다). 일부 예들에서, 일부 블록들은 다른 블록들과 상이한 형상들을 가질 수 있다(예를 들어, 높이 대 길이의 상이한 비들을 포함할 수 있다).
이미징 시스템은 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 입력 이미지의 제1 구역을 수정하도록 ML 초해상도 시스템을 사용한다. 제2 해상도는 제1 해상도보다 크다. ML 초해상도 시스템은 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 CNN(convolutional neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합을 포함할 수 있다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 제1 구역을 수정하는 것은, 제1 구역에 대응하는(예를 들어, 그의 적어도 일부를 포함하는) 블록들의 제1 서브세트의 각각의 블록을 제1 해상도로부터 제2 해상도로 수정하는 것을 포함할 수 있다.
이미징 시스템은 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 입력 이미지의 제2 구역을 수정하도록 보간을 사용한다. 보간은, 예를 들어 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅 보간, 바이큐빅 보간, 트리큐빅 보간, 스플라인 보간, 랑조스 보간, 싱크 보간, 푸리에-기반 보간, 에지-지향 보간, 또는 이들의 조합을 포함할 수 있다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 제2 구역을 수정하는 것은, 제2 구역에 대응하는(예를 들어, 그의 적어도 일부를 포함하는) 블록들의 제2 서브세트의 각각의 블록을 제1 해상도로부터 제2 해상도로 수정하는 것을 포함할 수 있다.
이미징 시스템은 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 생성 및/또는 출력한다. 이미징 시스템이 입력 이미지를 블록들로 파티셔닝하는 예들에서, 이미징 시스템은 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성할 수 있다. 이미징 시스템은 블록들의 에지들에서 시각적 아티팩트들을 감소시키기 위해 디블록킹 필터를 출력 이미지에 적용할 수 있다.
이미징 시스템은 에지들, 패턴들, 텍스처들, 그레디언트들, 컬러들, 미세한 세부사항들, 또는 이들의 조합들과 같은 특징들에 대한 해상도의 더 정확한 증가들을 제공함으로써, 완전한 보간-기반 초해상도 기법들 및 시스템들에 비해 기술적 개선들을 제공한다. 예를 들어, 이미징 시스템은 얼굴들에 대한 해상도의 더 정확한 증가들을 제공함으로써, 완전한 보간-기반 초해상도 기법들 및 시스템들에 비해 기술적 개선들을 제공한다. 이미징 시스템은, 프로세싱 시간, 배터리 전력 소비, 사용되는 프로세싱 전력, 사용되는 프로세싱 대역폭, 또는 이들의 조합의 감소를 제공하면서 해상도가 높은 매우-현저한 구역들(예를 들어, 미세한 세부사항들을 포함할 수 있음)의 정확한 증가들을 보존함으로써 완전한 ML-기반 초해상도 기법들 및 시스템들에 비해 기술적 개선들을 제공한다.
도 1은 이미지 캡처 및 프로세싱 시스템(100)의 아키텍처를 예시하는 블록 다이어그램이다. 이미지 캡처 및 프로세싱 시스템(100)은 장면의 이미지(예를 들어, 장면(110)의 이미지)를 캡처 및 프로세싱하는 데 사용되는 다양한 컴포넌트들을 포함한다. 이미지 캡처 및 프로세싱 시스템(100)은 독립형 이미지들(또는 사진들)을 캡처할 수 있고 그리고/또는 특정 시퀀스에서 다수의 이미지들(또는 비디오 프레임들)을 포함하는 비디오들을 캡처할 수 있다. 시스템(100)의 렌즈(115)는 장면(110)을 향하고 장면(110)으로부터 광을 수신한다. 렌즈(115)는 이미지 센서(130)를 향해 광을 휘어지게 한다. 렌즈(115)에 의해 수신된 광은 하나 이상의 제어 메커니즘들(120)에 의해 제어되는 조리개를 통과하고 이미지 센서(130)에 의해 수신된다.
하나 이상의 제어 메커니즘들(120)은 이미지 센서(130)로부터의 정보에 기초하여 그리고/또는 이미지 프로세서(150)로부터의 정보에 기초하여 노출, 포커스, 및/또는 줌을 제어할 수 있다. 하나 이상의 제어 메커니즘들(120)은 다수의 메커니즘들 및 컴포넌트들을 포함할 수 있고; 예를 들어, 제어 메커니즘들(120)은 하나 이상의 노출 제어 메커니즘들(125A), 하나 이상의 포커스 제어 메커니즘들(125B), 및/또는 하나 이상의 줌 제어 메커니즘들(125C)을 포함할 수 있다. 하나 이상의 제어 메커니즘들(120)은 또한, 예시된 것 외에 부가적인 제어 메커니즘들, 이를테면 아날로그 이득, 플래시, HDR, 피사계 심도, 및/또는 다른 이미지 캡처 속성들을 제어하는 제어 메커니즘들을 포함할 수 있다.
제어 메커니즘들(120)의 포커스 제어 메커니즘(125B)은 포커스 세팅을 획득할 수 있다. 일부 예들에서, 포커스 제어 메커니즘(125B)은 포커스 세팅을 메모리 레지스터에 저장한다. 포커스 세팅에 기초하여, 포커스 제어 메커니즘(125B)은 이미지 센서(130)의 포지션에 대한 렌즈(115)의 포지션을 조정할 수 있다. 예를 들어, 포커스 세팅에 기초하여, 포커스 제어 메커니즘(125B)은 모터 또는 서보를 작동시킴으로써 렌즈(115)를 이미지 센서(130)에 더 가깝게 또는 이미지 센서(130)로부터 더 멀리 이동시키며, 그에 의해, 포커스를 조정할 수 있다. 일부 경우들에서, 광이 포토다이오드에 도달하기 전에 대응하는 포토다이오드를 향해 렌즈(115)로부터 수신된 광을 각각 휘어지게 하는, 이미지 센서(130)의 각각의 포토다이오드 위의 하나 이상의 마이크로렌즈들과 같은 부가적인 렌즈들이 시스템(100)에 포함될 수 있다. 포커스 세팅은 CDAF(contrast detection autofocus), PDAF(phase detection autofocus) 또는 이들의 일부 조합을 통해 결정될 수 있다. 포커스 세팅은 제어 메커니즘(120), 이미지 센서(130), 및/또는 이미지 프로세서(150)를 사용하여 결정될 수 있다. 포커스 세팅은 이미지 캡처 세팅 및/또는 이미지 프로세싱 세팅으로 지칭될 수 있다.
제어 메커니즘들(120)의 노출 제어 메커니즘(125A)은 노출 세팅을 획득할 수 있다. 일부 경우들에서, 노출 제어 메커니즘(125A)은 노출 세팅을 메모리 레지스터에 저장한다. 이러한 노출 세팅에 기초하여, 노출 제어 메커니즘(125A)은 조리개의 사이즈(예를 들어, 조리개 사이즈 또는 f/스톱), 조리개가 열려 있는 시간의 지속기간(예를 들어, 노출 시간 또는 셔터 속도), 이미지 센서(130)의 감도(예를 들어, ISO 속도 또는 필름 속도), 이미지 센서(130)에 의해 적용된 아날로그 이득, 또는 이들의 임의의 조합을 제어할 수 있다. 노출 세팅은 이미지 캡처 세팅 및/또는 이미지 프로세싱 세팅으로 지칭될 수 있다.
제어 메커니즘(120)의 줌 제어 메커니즘(125C)은 줌 세팅을 획득할 수 있다. 일부 예들에서, 줌 제어 메커니즘(125C)은 메모리 레지스터에 줌 세팅을 저장한다. 줌 세팅에 기초하여, 줌 제어 메커니즘(125C)은 렌즈(115) 및 하나 이상의 부가적인 렌즈들을 포함하는 렌즈 엘리먼트들의 어셈블리(렌즈 어셈블리)의 포커스 거리를 제어할 수 있다. 예를 들어, 줌 제어 메커니즘(125C)은 서로에 대해 렌즈들 중 하나 이상을 이동시키기 위해 하나 이상의 모터들 또는 서보들을 작동시킴으로써 렌즈 어셈블리의 포커스 거리를 제어할 수 있다. 줌 세팅은 이미지 캡처 세팅 및/또는 이미지 프로세싱 세팅으로 지칭될 수 있다. 일부 예들에서, 렌즈 어셈블리는 동포커스(parfocal) 줌 렌즈 또는 가변포커스(varifocal) 줌 렌즈를 포함할 수 있다. 일부 예들에서, 렌즈 어셈블리는 먼저 장면(110)으로부터 광을 수신하는 (일부 경우들에서, 렌즈(115)일 수 있는) 포커싱 렌즈를 포함할 수 있으며, 이어서, 광이 이미지 센서(130)에 도달하기 전에 포커싱 렌즈(예를 들어, 렌즈(115))와 이미지 센서(130) 사이의 무한포커스(afocal) 줌 시스템을 광이 통과한다. 일부 경우들에서, 무한포커스 줌 시스템은, (예를 들어, 임계 차이 내에 있는) 동일하거나 유사한 포커스 길이의 2개의 포지티브(예를 들어, 수렴, 볼록) 렌즈들을 포함할 수 있으며, 그들 사이에는 네거티브(예를 들어, 발산, 오목) 렌즈를 갖는다. 일부 경우들에서, 줌 제어 메커니즘(125C)은 네거티브 렌즈, 및 포지티브 렌즈들 중 하나 또는 둘 모두와 같은 무한포커스 줌 시스템에서의 렌즈들 중 하나 이상을 이동시킨다.
이미지 센서(130)는 포토다이오드들 또는 다른 감광성 엘리먼트들의 하나 이상의 어레이들을 포함한다. 각각의 포토다이오드는 이미지 센서(130)에 의해 생성된 이미지 내의 특정 픽셀에 최종적으로 대응하는 광의 양을 측정한다. 일부 경우들에서, 상이한 포토다이오드들은 상이한 컬러 필터들에 의해 커버될 수 있고, 따라서, 포토다이오드를 커버하는 필터의 컬러와 매칭하는 광을 측정할 수 있다. 예를 들어, 베이어(Bayer) 컬러 필터들은 적색 컬러 필터들, 청색 컬러 필터들, 및 녹색 컬러 필터들을 포함하며, 이미지의 각각의 픽셀은 적색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 적색 광 데이터, 청색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 청색 광 데이터, 및 녹색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 녹색 광 데이터에 기초하여 생성된다. 다른 타입들의 컬러 필터들이 적색, 청색, 및/또는 녹색 컬러 필터들 대신에 또는 그에 부가하여 황색, 마젠타, 및/또는 시안("에메랄드"로 또한 지칭됨) 컬러 필터들을 사용할 수 있다. 일부 이미지 센서들에는 컬러 필터들이 전혀 없을 수 있으며, 대신에 (일부 경우들에서 수직으로 적층된) 픽셀 어레이 전체에 걸쳐 상이한 포토다이오드들을 사용할 수 있다. 픽셀 어레이 전체에 걸쳐 상이한 포토다이오드들은 상이한 스펙트럼 감도 커브들을 가지며, 따라서 상이한 파장들의 광에 반응할 수 있다. 또한, 모노크롬 이미지 센서들에는 컬러 필터들이 없으며, 따라서 색 심도가 없을 수 있다.
일부 경우들에서 이미지 센서(130)는, 특정 시간들에 그리고/또는 특정 각도들로부터, 특정 포토다이오드들, 또는 특정 포토다이오드들의 부분들에 광이 도달하는 것을 차단하는 불투명 및/또는 반사 마스크들을 대안적으로 또는 부가적으로 포함할 수 있으며, 이들은 PDAF(phase detection autofocus)를 위해 사용될 수 있다. 이미지 센서(130)는 또한, 포토다이오드들에 의해 출력된 아날로그 신호들을 증폭하기 위한 아날로그 이득 증폭기 및/또는 포토다이오드들의 출력된 (및/또는 아날로그 이득 증폭기에 의해 증폭된) 아날로그 신호들을 디지털 신호들로 변환하기 위한 ADC(analog to digital converter)를 포함할 수 있다. 일부 경우들에서, 제어 메커니즘들(120) 중 하나 이상에 관해 논의된 특정 컴포넌트들 또는 기능들이 이미지 센서(130) 대신에 또는 그에 부가적으로 포함될 수 있다. 이미지 센서(130)는 CCD(charge-coupled device) 센서, EMCCD(electron-multiplying CCD) 센서, APS(active-pixel sensor), CMOS(complimentary metal-oxide semiconductor), NMOS(N-type metal-oxide semiconductor), 하이브리드 CCD/CMOS 센서(예를 들어, sCMOS), 또는 이들의 일부 다른 조합일 수 있다.
이미지 프로세서(150)는, 하나 이상의 ISP(image signal processor)들(ISP(154)를 포함함), 하나 이상의 호스트 프로세서들(호스트 프로세서(152)를 포함함), 및/또는 컴퓨팅 시스템(900)에 관해 논의된 임의의 다른 타입의 프로세서(910)의 하나 이상과 같은 하나 이상의 프로세서들을 포함할 수 있다. 호스트 프로세서(152)는 DSP(digital signal processor) 및/또는 다른 타입의 프로세서일 수 있다. 일부 구현들에서, 이미지 프로세서(150)는 호스트 프로세서(152) 및 ISP(154)를 포함하는 단일 집적 회로 또는 칩(예를 들어, 시스템-온-칩 또는 SoC로 지칭됨)이다. 일부 경우들에서, 칩은 또한 하나 이상의 입력/출력 포트들(예를 들어, 입력/출력(I/O) 포트들(156)), CPU(central processing unit)들, GPU(graphics processing unit)들, 브로드밴드 모뎀들(예를 들어, 3G, 4G 또는 LTE, 5G 등), 메모리, 연결 컴포넌트들(예를 들어, BluetoothTM, GPS(Global Positioning System) 등), 이들의 임의의 조합, 및/또는 다른 컴포넌트들을 포함할 수 있다. I/O 포트들(156)은 하나 이상의 프로토콜 또는 규격에 따른 임의의 적합한 입력/출력 포트들 또는 인터페이스, 이를테면 I2C(Inter-Integrated Circuit 2) 인터페이스, I3C(Inter-Integrated Circuit 3) 인터페이스, SPI(Serial Peripheral Interface) 인터페이스, GPIO(serial General Purpose Input/Output) 인터페이스, MIPI(Mobile Industry Processor Interface)(이를테면, MIPI CSI-2 물리적(PHY) 계층 포트 또는 인터페이스, AHB(Advanced High-performance Bus) 버스, 이들의 임의의 조합 및/또는 다른 입력/출력 포트를 포함할 수 있다. 하나의 예시적인 예에서, 호스트 프로세서(152)는 I2C 포트를 사용하여 이미지 센서(130)와 통신할 수 있고, ISP(154)는 MIPI 포트를 사용하여 이미지 센서(130)와 통신할 수 있다.
이미지 프로세서(150)는 디모자이킹, 컬러 공간 변환, 이미지 프레임 다운샘플링, 픽셀 보간, AE(automatic exposure) 제어, AGC(automatic gain control), CDAF, PDAF, 자동 화이트 밸런스, HDR 이미지를 형성하기 위한 이미지 프레임들의 병합, 이미지 인식, 오브젝트 인식, 특징 인식, 입력들의 수신, 출력들 관리, 메모리 관리, 또는 이들의 일부 조합과 같은 다수의 태스크들을 수행할 수 있다. 이미지 프로세서(150)는 이미지 프레임들 및/또는 프로세싱된 이미지들을 RAM(random access memory)(140 및/또는 920), ROM(read-only memory)(145 및/또는 925), 캐시, 메모리 유닛, 다른 저장 디바이스, 또는 이들의 일부 조합에 저장할 수 있다.
다양한 입력/출력(I/O) 디바이스들(160)이 이미지 프로세서(150)에 연결될 수 있다. I/O 디바이스(160)는 디스플레이 스크린, 키보드, 키패드, 터치스크린, 트랙패드, 터치 감응형 표면, 프린터, 임의의 다른 출력 디바이스들(935), 임의의 다른 입력 디바이스들(945), 또는 이들의 일부 조합을 포함할 수 있다. 일부 경우들에서, 캡션은 I/O 디바이스들(160)의 물리적 키보드 또는 키패드를 통해, 또는 I/O 디바이스들(160)의 터치스크린의 가상 키보드 또는 키패드를 통해 이미지 프로세싱 디바이스(105B)에 입력될 수 있다. I/O(160)는 시스템(100)과 하나 이상의 주변 디바이스들 사이의 유선 연결을 가능하게 하는 하나 이상의 포트들, 잭들, 또는 다른 커넥터들을 포함할 수 있으며, 이들을 통해 시스템(100)은 하나 이상의 주변 디바이스로부터 데이터를 수신하고 그리고/또는 하나 이상의 주변 디바이스들에 데이터를 송신할 수 있다. I/O(160)는 시스템(100)과 하나 이상의 주변 디바이스들 사이의 무선 연결을 가능하게 하는 하나 이상의 무선 트랜시버들을 포함할 수 있으며, 이들을 통해 시스템(100)은 하나 이상의 주변 디바이스로부터 데이터를 수신하고 그리고/또는 하나 이상의 주변 디바이스들에 데이터를 송신할 수 있다. 주변 디바이스들은 이전에 논의된 타입들의 I/O 디바이스들(160) 중 임의의 것을 포함할 수 있으며, 일단 그들이 포트들, 잭들, 무선 트랜시버들, 또는 다른 유선 및/또는 무선 커넥터들에 커플링되면, 그들 자체는 I/O 디바이스들(160)로 고려될 수 있다.
일부 경우들에서, 이미지 캡처 및 프로세싱 시스템(100)은 단일 디바이스일 수 있다. 일부 경우들에서, 이미지 캡처 및 프로세싱 시스템(100)은 이미지 캡처 디바이스(105A)(예를 들어, 카메라) 및 이미지 프로세싱 디바이스(105B)(예를 들어, 카메라에 커플링된 컴퓨팅 디바이스)를 포함하는 2개 이상의 별개의 디바이스들일 수 있다. 일부 구현들에서, 이미지 캡처 디바이스(105A) 및 이미지 프로세싱 디바이스(105B)는, 예를 들어 하나 이상의 와이어들, 케이블들, 또는 다른 전기 커넥터들을 통해, 그리고/또는 하나 이상의 무선 트랜시버들을 통해 무선으로 함께 커플링될 수 있다. 일부 구현들에서, 이미지 캡처 디바이스(105A) 및 이미지 프로세싱 디바이스(105B)는 서로 연결해제될 수 있다.
도 1에 도시된 바와 같이, 수직 파선은 도 1의 이미지 캡처 및 프로세싱 시스템(100)을, 이미지 캡처 디바이스(105A) 및 이미지 프로세싱 디바이스(105B)를 각각 표현하는 2개의 부분들로 분할한다. 이미지 캡처 디바이스(105A)는 렌즈(115), 제어 메커니즘들(120) 및 이미지 센서(130)를 포함한다. 이미지 프로세싱 디바이스(105B)는 이미지 프로세서(150)(ISP(154) 및 호스트 프로세서(152)를 포함함), RAM(140), ROM(145), 및 I/O(160)를 포함한다. 일부 경우들에서, ISP(154) 및/또는 호스트 프로세서(152)와 같은 이미지 캡처 디바이스(105A)에 예시된 특정 컴포넌트들은 이미지 캡처 디바이스(105A)에 포함될 수 있다.
이미지 캡처 및 프로세싱 시스템(100)은 전자 디바이스, 이를테면 모바일 또는 고정식 전화기 핸드셋(예를 들어, 스마트폰, 셀룰러 전화기 등), 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, IP(Internet Protocol) 카메라, 또는 임의의 다른 적합한 전자 디바이스를 포함할 수 있다. 일부 예들에서, 이미지 캡처 및 프로세싱 시스템(100)은 셀룰러 네트워크 통신들, 802.11 wi-fi 통신들, WLAN(wireless local area network) 통신들, 또는 이들의 일부 조합과 같은 무선 통신들을 위한 하나 이상의 무선 트랜시버들을 포함할 수 있다. 일부 구현들에서, 이미지 캡처 디바이스(105A) 및 이미지 프로세싱 디바이스(105B)는 상이한 디바이스들일 수 있다. 예를 들어, 이미지 캡처 디바이스(105A)는 카메라 디바이스를 포함할 수 있고, 이미지 프로세싱 디바이스(105B)는 모바일 핸드셋, 데스크톱 컴퓨터, 또는 다른 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스를 포함할 수 있다.
이미지 캡처 및 프로세싱 시스템(100)이 특정 컴포넌트들을 포함하는 것으로 도시되지만, 당업자는 이미지 캡처 및 프로세싱 시스템(100)이 도 1에 도시된 것들보다 많은 컴포넌트들을 포함할 수 있다는 것을 인식할 것이다. 이미지 캡처 및 프로세싱 시스템(100)의 컴포넌트들은 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 하나 이상의 조합들을 포함할 수 있다. 예를 들어, 일부 구현들에서, 이미지 캡처 및 프로세싱 시스템(100)의 컴포넌트들은, 하나 이상의 프로그래밍가능 전자 회로들(예를 들어, 마이크로프로세서들, GPU들, DSP들, CPU들, 및/또는 다른 적합한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있거나, 그리고/또는 본 명세서에 설명된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고 그리고/또는 이들을 사용하여 구현될 수 있다. 소프트웨어 및/또는 펌웨어는, 컴퓨터-판독가능 저장 매체 상에 저장되고 이미지 캡처 및 프로세싱 시스템(100)을 구현하는 전자 디바이스의 하나 이상의 프로세서들에 의해 실행가능한 하나 이상의 명령들을 포함할 수 있다.
도 2는 현저성 맵퍼(210)를 사용하여 입력 이미지(205)에 기초하여 현저성 맵(215)을 생성하는 이미징 시스템(200)을 예시하는 블록 다이어그램이다. 도 2의 입력 이미지(205)는 배경에 건물들을 갖는, 펜스들에 의해 둘러싸인 필드 상에서 축구를 플레이하는 5명의 사람들을 묘사한다. 5명의 사람들 중 2명은 입력 이미지(205) 내의 다른 3명의 사람들의 앞의 입력 이미지(205)의 전경에 묘사되어 있다. 입력 이미지(205)의 전경 내의 2명의 사람들은 입력 이미지(205) 내의 다른 3명의 사람들보다 입력 이미지(205)에서 더 크고 더 두드러진다.
이미징에서, 이미지 내의 픽셀의 현저성 값은 픽셀이 이미지의 다른 픽셀들과 비교하여 얼마나 고유한지를 지칭한다. 일부 경우들에서, 사람들 또는 동물들의 묘사들과 같은 이미지의 중요한 시각적 엘리먼트들은 이미지의 배경 엘리먼트들보다 높은 현저성 값들을 가질 수 있다. 현저성 맵은 현저성 값을 이미지 내의 모든 픽셀에 맵핑한다. 현저성 맵은, 예를 들어 현저성 맵에서 백색들 및 밝은 회색 음영들로 높은 현저성 값들(예를 들어, 현저성 값 임계치 초과)을 표현함으로써 그리고 현저성 맵에서 흑색들 및 어두운 회색 음영들로 낮은 현저성 값들(예를 들어, 현저성 값 임계치 미만)을 표현함으로써 시각적으로 묘사될 수 있고, 그 반대의 경우도 가능하다.
현저성 맵퍼(210)에 의해 생성된 현저성 맵(215)은 현저성 맵(215)에서 백색 또는 밝은 회색 픽셀들을 갖는 높은 현저성 값을 갖는 입력 이미지(205)의 픽셀들을 식별한다. 현저성 맵퍼(210)에 의해 생성된 현저성 맵(215)은 현저성 맵(215)에서 흑색 또는 어두운 회색 픽셀들을 갖는 낮은 현저성 값을 갖는 입력 이미지(205)의 픽셀들을 식별한다. 입력 이미지(205)의 전경에서 2명의 사람들, 및 입력 이미지(205)의 전경에서 2명의 사람들 중 한명 바로 뒤에 묘사된 제3 사람의 일부를 묘사하는 입력 이미지(205) 내의 픽셀들은 현저성 맵(215)에 따라 높은 현저성 값들(예를 들어, 현저성 값 임계치 초과)을 갖고, 따라서 현저성 맵(215)에서 흰색들 및 밝은 회색 음영들로 표현된다. 입력 이미지(205)의 나머지 픽셀들(예를 들어, 잔디, 펜스들, 건물들, 및 나머지 3명의 사람들을 묘사함)은 현저성 맵(215)에 따라 낮은 현저성 값들(예를 들어, 현저성 값 임계치 미만)을 갖고, 따라서 현저성 맵(215)에서 흑색들 및 어두운 회색 음영들로 표현된다.
이미징 시스템(200)의 현저성 맵퍼(210)는 ML(machine learning) 현저성 맵퍼 엔진(220), 픽셀 거리 합산 엔진(225), 또는 둘 모두를 포함할 수 있다. 픽셀 거리 합산 엔진(225)은 입력 이미지(205)의 각각의 픽셀에 대한 개개의 현저성 값을, 그 픽셀과 입력 이미지(205)의 다른 픽셀들 사이의 복수의 픽셀 거리들의 합이 되도록(또는 그에 기초하도록) 계산할 수 있다. 예를 들어, 입력 이미지(205)의 픽셀 k에 대한 현저성 값은 공식 을 사용하여 픽셀 거리 합산 엔진(225)에 의해 결정될 수 있으며, 여기서 는 픽셀 i에 대한 픽셀 값이고, 는 픽셀 k에 대한 픽셀 값이고, N은 입력 이미지(205) 내의 픽셀들의 총 수이다. 픽셀 값들 는, 예를 들어 0(흑색) 내지 255(백색)의 범위에 놓인 수치 값들일 수 있다. 픽셀 값들 는 0 내지 255의 범위에 각각 놓인 수치 값들의 다수의 세트들을 포함할 수 있으며, 예를 들어 세트는 각각 상이한 컬러 채널들(예를 들어, 적색, 녹색, 청색)에 대응한다. 픽셀 값들 은, 예를 들어 000000(흑색) 내지 FFFFFF(백색)의 범위에 놓인 16진법 컬러 코드들(예를 들어, HTML 컬러 코드들)일 수 있다. 의 값은 픽셀 k에 대응하는 하나 이상의 픽셀 값들의 세트와 픽셀 i에 대응하는 하나 이상의 픽셀 값들의 세트 사이의 거리(예를 들어, 유클리드 거리, 맨하탄 거리(Manhattan distance), 마할라노비스 거리(Mahalanobis distance), 민코프스키 거리(Minkowski distance), 또는 이들의 조합)를 표현할 수 있다. 일부 경우들에서, 거리는 다차원 컬러 공간에서의 거리일 수 있으며, 예를 들어 상이한 컬러 채널들(예를 들어, 적색, 녹색, 청색)은 다차원 컬러 공간에서 상이한 축들을 따라 변화되고, 색조 및 광도는 다차원 컬러 공간에서 상이한 축들을 따라 변화되고, 또는 이들의 조합이 이루어진다. 일부 예들에서, 승수 m이 현저성 공식에 도입되어, 공식 을 만들 수 있다. 일부 예들에서, 입력 이미지(205) 내의 다수의 픽셀들은 동일한 픽셀 값들을 가질 수 있으며, 이 경우, 수정된 현저성 공식: 이 사용될 수 있고, 여기서 은 픽셀 값 이 입력 이미지(205) 내의 상이한 픽셀들 n에서 얼마나 빈번하게 나타나는지의 빈도를 표현한다. 현저성 맵(215)은 픽셀 거리 합산 엔진(225)에 의해 생성될 수 있는 현저성 맵의 일 예이다. 픽셀 거리 합산 엔진(225)은 픽셀 거리 합산 시스템으로 지칭될 수 있다.
이미징 시스템(200)의 현저성 맵퍼(210)는 ML(machine learning) 현저성 맵퍼 엔진(220)을 포함할 수 있다. ML 현저성 맵퍼 엔진(220)은 하나 이상의 트레이닝된 ML(machine learning) 모델들, 이를테면 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합을 포함할 수 있다. ML 현저성 맵퍼 엔진(220)은 입력 이미지(205), 및/또는 입력 이미지(205)와 연관된 메타데이터를 하나 이상의 트레이닝된 ML 모델들에 대한 입력으로서 하나 이상의 트레이닝된 ML 모델들에 제공할 수 있다. 따라서, ML 현저성 맵퍼 엔진(220)은 하나 이상의 트레이닝된 ML 모델들을 입력 이미지(205)에 그리고/또는 입력 이미지(205)와 연관된 메타데이터에 적용할 수 있다. ML 현저성 맵퍼 엔진(220)의 하나 이상의 트레이닝된 ML 모델들은, 현저성 맵(210)(예를 들어, 임계치 초과의 현저성 값을 갖는 픽셀들의 포지션들만, 또는 임계치 미만의 현저성 값을 갖는 픽셀들의 포지션들만)을 생성하기 위해, 현저성 맵(215), 또는 현저성 맵퍼(210)에 의해 사용될 수 있는 정보를 출력할 수 있다. 일부 예들에서, ML 현저성 맵퍼 엔진(220)의 하나 이상의 트레이닝된 ML 모델들은 지도 학습, 비지도 학습, 심층 학습(deep learning), 또는 이들의 조합을 사용하여 트레이닝된다. 일부 예들에서, ML 현저성 맵퍼 엔진(220)의 하나 이상의 트레이닝된 ML 모델들은 픽셀 거리 합산 엔진(225), 또는 유사한 시스템을 사용하여 생성되었던 이미지들 및 대응하는 현저성 맵들을 포함하는 트레이닝 데이터를 사용하여 트레이닝된다. 도 5의 뉴럴 네트워크(500)는 ML 현저성 맵퍼 엔진(220)의 일부로서 사용되는 뉴럴 네트워크의 일 예일 수 있다. 도 6a의 뉴럴 네트워크 아키텍처(600)(그의 트레이닝된 뉴럴 네트워크(620)를 가짐)는 ML 현저성 맵퍼 엔진(220)의 일부로서 사용되는 뉴럴 네트워크 아키텍처의 일 예일 수 있다. ML 현저성 맵퍼 엔진(220)은 ML 현저성 맵퍼 시스템으로, ML 엔진으로, ML 시스템으로, 또는 이들의 조합으로 지칭될 수 있다.
도 3은, ML(machine learning) 기반 초해상도 엔진(350)을 사용하여 높은 현저성 블록들(330)의 해상도를 증가시키고 보간-기반 초해상도 엔진(355)을 사용하여 낮은 현저성 블록들(335)의 해상도를 증가시키는 것에 기초하여 입력 이미지(305)로부터 초해상도 출력 이미지(380)를 생성하는 이미징 시스템(300)을 예시하는 블록 다이어그램이다. 이미징 시스템(300)은, 예를 들어 이미징 시스템(300)의 이미지 센서로부터 또는 이미징 시스템(300)이 통신하는 외부 전송자 디바이스로부터 입력 이미지(305)를 획득한다. 도 3에 예시된 입력 이미지(305)는 잔디밭에 앉아 있는 원숭이를 묘사한다. 입력 이미지(305)는 저해상도일 수 있는 제1 해상도를 갖는다.
이미징 시스템(300)은 이미징 시스템(200)의 현저성 맵퍼(210)를 포함한다. 이미징 시스템(200)에서와 같이, 이미징 시스템(300)의 현저성 맵퍼(210)는 ML(machine learning) 현저성 맵퍼 엔진(220), 픽셀 거리 합산 엔진(225), 또는 둘 모두를 포함할 수 있다. 이미징 시스템(300)의 현저성 맵퍼(210)는 입력 이미지(305)에 기초하여 현저성 맵(315)을 생성한다. 현저성 맵퍼(210)에 의해 생성된 현저성 맵(315)은 현저성 맵(315)에서 백색 또는 밝은 회색 픽셀들을 갖는 높은 현저성 값을 갖는 입력 이미지(305)의 픽셀들을 식별한다. 현저성 맵퍼(210)에 의해 생성된 현저성 맵(315)은 현저성 맵(315)에서 흑색 또는 어두운 회색 픽셀들을 갖는 낮은 현저성 값을 갖는 입력 이미지(305)의 픽셀들을 식별한다. 입력 이미지(305)의 전경에서 원숭이를 묘사하는 입력 이미지(305)의 픽셀들은 현저성 맵(315)에 따라 높은 현저성 값들(예를 들어, 현저성 값 임계치 초과)을 갖고, 따라서 현저성 맵(315)에서 백색들 및 밝은 회색 음영들로 표현된다. 입력 이미지(305)의 나머지 픽셀들(예를 들어, 원숭이 뒤의 배경을 묘사함)은 현저성 맵(315)에 따라 낮은 현저성 값들(예를 들어, 현저성 값 임계치 미만)을 갖고, 따라서 현저성 맵(315)에서 흑색들 및 어두운 회색 음영들로 표현된다. 현저성 맵퍼(210)는 ML 현저성 맵퍼 엔진(220), 픽셀 거리 합산 엔진(225), 또는 이들의 조합을 사용하여 입력 이미지(305)로부터 현저성 맵(315)을 생성할 수 있다.
이미징 시스템(300)은 블록 파티셔너(320)를 포함한다. 블록 파티셔너(320)는 입력 이미지를 블록 격자(325)로 배열된 다수의 블록들로 파티셔닝한다. 블록 격자(325)는 블록 그리드로 지칭될 수 있다. 도 3의 블록 격자(325)의 블록들은 입력 이미지(305)의 사본 위에 흑색으로 윤곽표시(outline)된다. 도 3의 블록 격자(325)는 총 264개의 블록들에 대해 12개의 블록들의 높이 및 22개의 블록들의 폭을 포함한다. 블록 격자(325) 내의 블록들은 모두 동일한 사이즈(및 그에 따라 동일한 수의 픽셀들)를 공유하고, 모두 동일한 형상(정사각형)을 공유한다. 일부 예들에서, 블록 파티셔너(320)는 도 7의 블록 격자(750)의 3개의 사이즈들과 같은 상이한 사이즈들(및 그에 따라 상이한 수들의 픽셀들)의 블록들로 이미지를 파티셔닝할 수 있다. 일부 예들에서, 블록 파티셔너(320)는 이미지를 상이한 형상들의 블록들로 파티셔닝할 수 있다. 예를 들어, 일부 블록들은 정사각형들일 수 있는 반면, 다른 블록들은 장방형 직사각형들이다(예를 들어, 2개 이상의 인접한 정사각형 블록들이 함께 접합되어, 장방형 직사각형을 형성할 수 있다). 블록들은 사변형들일 수 있다. 블록은 사변형일 필요는 없으며, 예를 들어 삼각형, 오각형, 육각형, 칠각형, 팔각형, 구각형, 십각형, 다른 다각형 형상, 또는 이들의 조합일 수 있다. 일부 예들에서, 블록들은 하나 이상의 만곡된 측부들을 포함할 수 있다. 일부 예들에서, 블록들은 규칙적인 다면체들이고 그리고/또는 블록 격자(325)는 규칙적인 다면체 격자이다.
이미징 시스템(300)은, 현저성 맵(315)에 기초하여 블록 격자(325) 내의 블록들 각각을 높은 현저성 블록들(330) 또는 낮은 현저성 블록들(335) 중 어느 하나로서 분류하는 블록 분류기(327)를 포함한다. 도 3에 예시된 예에서, 블록 분류기(327)는, 블록에 포함된 높은-현저성 구역의 부분이 작은 경우에도, 높은-현저성 구역의 임의의 부분을 포함하는 블록 격자(325) 내의 임의의 블록을 높은 현저성 블록들(330) 중 하나로서 분류한다. 도 3에 예시된 예에서, 블록 분류기(327)는, 블록 격자(325) 내의 임의의 나머지 블록(예를 들어, 높은-현저성 구역의 어떠한 부분도 포함하지 않음)을 낮은 현저성 블록들(335) 중 하나로서 분류한다. 그러한 블록 분류기(327)는, 높은 현저성 블록들(330)의 세트 내로의 블록들의 과대-포함 및 낮은 현저성 블록들(335)의 세트 내로의 블록들의 과소-포함의 측면에서 오류를 범한다. 이러한 방식으로의 블록들의 분류는, 이미지 내의 더 중요한 엘리먼트들을 묘사하는 블록들이 보간 초해상도 엔진(355)보다는 ML 초해상도 엔진(350)을 사용하여 향상될 가능성을 증가시키며, 더 높은 품질의 출력 이미지(380)를 초래할 수 있다.
일부 예들에서, 그러한 블록 분류기(327)는 대신, 낮은 현저성 블록들(335)의 세트 내로의 블록들의 과대-포함 및 높은 현저성 블록들(330)의 세트 내로의 블록들의 과소-포함의 측면에서 오류를 범할 수 있다. 예를 들어, 블록 분류기(327)는, 블록에 포함된 낮은-현저성 구역의 부분이 작은 경우에도, 낮은-현저성 구역의 임의의 부분을 포함하는 블록 격자(325) 내의 임의의 블록을 낮은 현저성 블록들(335) 중 하나로서 분류할 수 있다. 블록 분류기(327)는 블록 격자(325) 내의 임의의 나머지 블록(예를 들어, 낮은-현저성 구역의 어떠한 부분도 포함하지 않음)을 높은 현저성 블록들(330) 중 하나로서 분류할 수 있다. 이러한 방식으로의 블록들의 분류는, 블록들이 ML 초해상도 엔진(350)보다는 보간 초해상도 엔진(355)을 사용하여 향상될 가능성을 증가시킬 수 있으며, 이는 프로세싱 시간, 배터리 전력 소비, 사용되는 프로세싱 전력, 사용되는 프로세싱 대역폭, 또는 이들의 조합의 부가적인 감소들을 제공할 수 있다.
일부 예들에서, 블록 분류기(327)는 블록을 높은 현저성 블록들(330) 중 하나로서 분류할지 또는 낮은 현저성 블록들(335) 중 하나로서 분류할지를 결정하기 위해 블록에서 나타나는 높은-현저성 구역의 양을 임계치와 비교할 수 있다. 예를 들어, 블록에서 나타나는 높은-현저성 구역의 양이 임계치를 초과하면, 블록 분류기(327)는 블록을 높은 현저성 블록들(330) 중 하나로서 분류할 수 있다. 블록에서 나타나는 높은-현저성 구역의 양이 임계치보다 작으면, 블록 분류기(327)는 블록을 낮은 현저성 블록들(335) 중 하나로서 분류할 수 있다. 임계치는 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100%, 또는 이전에 열거된 값들 중 임의의 2개의 값들 사이의 값일 수 있다. 임계치가 높을수록, 블록 분류기(327)는 높은 현저성 블록들(330)의 세트 내로의 블록들의 과대-포함 및 낮은 현저성 블록들(335)의 세트 내로의 블록들의 과소-포함의 측면에서 더 많은 오류를 범한다. 임계치가 낮을수록, 블록 분류기(327)는 낮은 현저성 블록들(335)의 세트 내로의 블록들의 과대-포함 및 높은 현저성 블록들(330)의 세트 내로의 블록들의 과소-포함의 측면에서 더 많은 오류를 범한다.
높은 현저성 블록들(330)의 세트는, 높은 현저성 블록들(330)이 블록 격자(325)에 예시된 바와 같이 보존되는 반면, 낮은 현저성 블록들(335)은 블랙 아웃(black out)되는 블록 격자(325)의 사본으로서 도 3에 예시되어 있다. 따라서, 높은 현저성 블록들(330)의 세트는 원숭이를 묘사하는 블록들을 포함하는 것으로 도 3에 예시되어 있으며, 모든 다른 블록들(예를 들어, 잔디를 묘사함)은 낮은 현저성 블록들(335)로서 블랙 아웃된다. 원숭이의 눈을 묘사하는 예시적인 블록은 줌인된 블록에서 하이라이트되어, 원숭이 눈이 입력 이미지(305)에서 흐릿하게 나타난다는 것을 보여준다.
낮은 현저성 블록들(335)의 세트는, 낮은 현저성 블록들(335)이 블록 격자(325)에 예시된 바와 같이 보존되는 반면, 높은 현저성 블록들(330)은 블랙 아웃되는 블록 격자(325)의 사본으로서 도 3에 예시되어 있다. 따라서, 낮은 현저성 블록들(330)의 세트는 잔디를 묘사하는 블록들을 포함하는 것으로 도 3에 예시되어 있으며, 모든 다른 블록들(예를 들어, 원숭이를 묘사함)은 높은 현저성 블록들(330)로서 블랙 아웃된다. 잔디의 밝은 조각을 묘사하는 예시적인 블록은 줌인된 블록에서 하이라이트되어, 잔디의 밝은 조각이 입력 이미지(305)에서 흐릿하게 나타난다는 것을 보여준다.
높은 현저성 블록들(330)은 ML 초해상도 엔진(350)에 대한 입력 블록들(340)로서 사용되며, 이는 입력 블록들(340) 각각의 해상도를 제1 해상도로부터 제1 해상도보다 높은 제2 해상도로 증가시키기 위해 ML-기반 초해상도 이미징을 수행하고, 따라서 출력 블록들(360)을 생성하는 것을 발생시킨다. ML 초해상도 엔진(350)은 하나 이상의 트레이닝된 ML(machine learning) 모델들(390), 이를테면 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합을 포함할 수 있다. ML 초해상도 엔진(350)은 입력 블록들(340), 및/또는 입력 블록들(340) 및/또는 입력 이미지(305)와 연관된 메타데이터를 하나 이상의 트레이닝된 ML 모델들(390)에 대한 입력으로서 하나 이상의 트레이닝된 ML 모델들(390)에 제공할 수 있다. 따라서, ML 초해상도 엔진(350)은 하나 이상의 트레이닝된 ML 모델들(390)을 입력 블록들(340), 및/또는 입력 블록들(340) 및/또는 입력 이미지(305)와 연관된 메타데이터에 적용할 수 있다. ML 초해상도 엔진(350)의 하나 이상의 트레이닝된 ML 모델들(390)은 출력 블록들(360)을 출력할 수 있다. 일부 예들에서, ML 초해상도 엔진(350)의 하나 이상의 트레이닝된 ML 모델들(390)은 지도 학습, 비지도 학습, 심층 학습, 또는 이들의 조합을 사용하여 트레이닝된다. 일부 예들에서, ML 초해상도 엔진(350)의 하나 이상의 트레이닝된 ML 모델들(390)은 고해상도 이미지들 및 고해상도 이미지들의 대응하는 다운스케일링된(및 그에 따라 저해상도) 버전들을 포함하는 트레이닝 데이터를 사용하여 트레이닝된다. 도 5의 뉴럴 네트워크(500)는 ML 초해상도 엔진(350)의 일부로서, 예를 들어 하나 이상의 트레이닝된 ML 모델들(390) 중 하나로서 사용되는 뉴럴 네트워크의 일 예일 수 있다. 도 6b의 뉴럴 네트워크 아키텍처(650)(그의 트레이닝된 뉴럴 네트워크(670)를 가짐)는 ML 초해상도 엔진(350)의 일부로서, 예를 들어 하나 이상의 트레이닝된 ML 모델들(390) 중 하나로서 사용되는 뉴럴 네트워크 아키텍처의 일 예일 수 있다. ML 초해상도 엔진(350)은 ML 초해상도 시스템으로, ML 엔진으로, ML 시스템으로, 또는 이들의 조합으로 지칭될 수 있다. 입력 블록들(340) 및 출력 블록들(360)의 예들이 도 3에 예시되어 있으며, 원숭이 눈 주위의 눈꺼풀들과 같은 세부사항들은 입력 블록들(340)에서보다 출력 블록들(360)에서 현저하게 더 선명하고 더 명확하게 나타나며, 여기서 그러한 세부사항들은 흐릿하다.
낮은 현저성 블록들(335)은 보간 초해상도 엔진(355)에 대한 입력 블록들(345)로서 사용되며, 이는 입력 블록들(345) 각각의 해상도를 제1 해상도로부터 제1 해상도보다 높은 제2 해상도로 증가시키기 위해 보간-기반 초해상도 이미징을 수행하고, 따라서 출력 블록들(365)을 생성하는 것을 발생시킨다. 보간 초해상도 엔진(355)은 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅 보간, 바이큐빅 보간, 트리큐빅 보간, 스플라인 보간, 랑조스 보간, 싱크 보간, 푸리에-기반 보간, 에지-지향 보간, 또는 이들의 조합과 같은 하나 이상의 보간 기법들을 사용하여 입력 블록들(345) 각각의 해상도를 제1 해상도로부터 제2 해상도로 증가시킬 수 있다. 보간 초해상도 엔진(355)은 보간 초해상도 시스템으로, 보간 엔진으로, 보간 시스템으로, 또는 이들의 조합으로 지칭될 수 있다. 입력 블록들(345) 및 출력 블록들(365)의 예들이 도 3에 예시되어 있으며, 잔디에서의 세부사항들은 입력 블록들(345) 및 출력 블록들(365) 둘 모두에서 유사한 레벨의 세부사항, 선예도, 및 선명도를 갖는다.
이미징 시스템(300)은, (높은 현저성 블록들(330)에 기초하여 생성된) ML 초해상도 엔진(350)에 의해 생성된 출력 블록들(360)을 (낮은 현저성 블록들(335)에 기초하여 생성된) 보간 초해상도 엔진(355)에 의해 생성된 출력 블록들(365)과 병합하는 병합기(370)를 포함한다. 병합기(370)는 출력 블록들(360) 각각을 높은 현저성 블록들(330)의 세트의 일부로서, 입력 블록들(340) 중 대응하는 입력 블록이 원래 있었던 블록 격자(325) 내에 포지셔닝시킨다. 병합기(370)는 출력 블록들(365) 각각을 낮은 현저성 블록들(335)의 세트의 일부로서, 입력 블록들(345) 중 대응하는 입력 블록이 원래 있었던 블록 격자(325) 내에 포지셔닝시킨다. 따라서, 병합기(370)는, 대응하는 입력 블록들(340) 및 입력 블록들(345)이 블록 격자(325)에 있었던 바와 같이 배열되게, 출력 블록들(360) 및 출력 블록들(365)을 병합함으로써 초해상도 출력 이미지(380)를 생성한다. 일부 예들에서, 병합기(370)는, 병합기(370)가 초해상도 출력 이미지(380) 내의 블록들의 에지들에서 시각적 아티팩트들을 감소시키기 위해 초해상도 출력 이미지(380)에 적용할 수 있는 디블록킹 필터(375)를 포함할 수 있다. 디블록킹 필터(375)는 입력 이미지(305)를 기준 프레임으로서 사용할 수 있다. 일부 예들에서, 디블록킹 필터(375)는, 차단 아티팩트들이 입력 이미지(305)에서 나타나지 않는 초해상도 출력 이미지(380)에서 나타나는 블록들의 에지들을 따라 가우시안 블러링과 같은 블러링을 적용할 수 있다. 일부 예들에서, 디블록킹 필터(375)는, 차단 아티팩트들이 입력 이미지(305)에서 나타나지 않는 초해상도 출력 이미지(380)에서 나타나는 블록들의 에지들을 따라 (예를 들어, 보간 초해상도 엔진(355)에 의해 적용되는 보간 초해상도 이미징으로) 입력 이미지(305)로부터 이미지 데이터를 임포트(import)할 수 있다. 차단 아티팩트들은, 예를 들어 컬러, 색조, 채도, 광도, 또는 이들의 조합에서 현저한 차이들(예를 들어, 임계치 초과)을 포함할 수 있다.
일부 예들에서, 디블록킹 필터(375)는, 하나 이상의 트레이닝된 NN들, 하나 이상의 트레이닝된 SVM들, 하나 이상의 트레이닝된 랜덤 포레스트들, 또는 이들의 조합과 같은 하나 이상의 트레이닝된 ML 모델들을 포함할 수 있는 ML 디블록킹 엔진(도시되지 않음)을 사용하여 적용될 수 있다. ML 디블록킹 엔진은, 디블록킹 필터(375)가 아직 적용되지 않은 병합된 초해상도 출력 이미지(380)를 ML 디블록킹 엔진의 하나 이상의 트레이닝된 ML 모델들에 대한 입력으로서 사용할 수 있다. 일부 예들에서, 입력 이미지(305) 및/또는 입력 이미지와 연관된 메타데이터는 또한 ML 디블록킹 엔진의 하나 이상의 트레이닝된 ML 모델들에 대한 입력(들)일 수 있다. ML 디블록킹 엔진의 하나 이상의 트레이닝된 ML 모델들은, 디블록킹 필터(375)가 아직 적용되지 않은 병합된 초해상도 출력 이미지(380)에 적용되어, 디블록킹 필터(375)가 적용된 초해상도 출력 이미지(380)를 생성할 수 있다. 도 5의 뉴럴 네트워크(500)는 ML 디블록킹 엔진의 일부로서 사용되는 뉴럴 네트워크의 일 예일 수 있다. ML 디블록킹 엔진은 뉴럴 네트워크 아키텍처(600), 뉴럴 네트워크 아키텍처(650), 또는 이들의 조합과 유사한 뉴럴 네트워크 아키텍처를 사용할 수 있다.
초해상도 출력 이미지(380)는, 오버레이되어 출력 블록들(360)의 경계들 및 출력 블록들(365)의 경계들을 표현하는 흑색 라인들의 격자로 예시된다. 초해상도 출력 이미지(380)에서 원숭이의 눈을 묘사하는 예시적인 블록은 줌인된 블록에서 하이라이트되어, 원숭이의 눈이 초해상도 출력 이미지(380)에서 선명하고, 명확하고, 상세하게 나타난다는 것을 보여준다. 초해상도 출력 이미지(380)에서 잔디의 밝은 조각을 묘사하는 예시적인 블록은 줌인된 블록에서 하이라이트되어, 잔디의 밝은 조각이 입력 이미지(305)에서와 같이 초해상도 출력 이미지(380)에서 유사한 레벨의 세부사항, 선예도, 및 선명도를 갖는 것으로 나타난다는 것을 보여준다.
일부 예들에서, 출력 블록들(360/365) 및 초해상도 출력 이미지(380)의 해상도는 디스플레이의 해상도에 기초하여 선택될 수 있다. 예를 들어, 출력 블록들(360/365) 및 초해상도 출력 이미지(380)의 해상도는, 디스플레이의 폭이 초해상도 출력 이미지(380)의 폭과 동일한 수의 픽셀들을 가져서, 디스플레이의 높이가 초해상도 출력 이미지(380)의 높이와 동일한 수의 픽셀들을 갖도록, 또는 둘 모두를 갖도록 선택될 수 있다. 이미징 시스템은 디스플레이 상에서 초해상도 출력 이미지(380)를 디스플레이함으로써 적어도 부분적으로 초해상도 출력 이미지(380)를 출력할 수 있다. 이미징 시스템은 통신 송신기를 사용하여 초해상도 출력 이미지(380)를 수신자 디바이스에 송신함으로써 적어도 부분적으로 초해상도 출력 이미지(380)를 출력할 수 있다. 이어서, 수신자 디바이스는 수신자 디바이스의 디스플레이 상에서 초해상도 출력 이미지(380)를 디스플레이할 수 있다.
일부 예들에서, 이미징 시스템(300)은 블록 파티셔너(320)를 포함하지 않거나 사용하지 않는다. 대신에, 이미징 시스템(300)은 현저성 맵(315)에 기초하여 입력 이미지(305)의 높은-현저성 구역(예를 들어, 입력 이미지(305)의 현저성 값들이 현저성 맵(315)에서 표시된 바와 같은 현저성 값 임계치를 초과하는 입력 이미지(305)의 그러한 픽셀들만을 포함하는 높은-현저성 구역)을 추출하고, 이러한 높은-현저성 구역을 ML 초해상도 엔진(350)에 공급하여, 높은-현저성 구역의 초해상도 버전을 생성할 수 있다. 이미징 시스템(300)은 현저성 맵(315)에 기초하여 입력 이미지(305)의 낮은-현저성 구역(예를 들어, 입력 이미지(305)의 현저성 값들이 현저성 맵(315)에서 표시된 바와 같은 현저성 값 임계치보다 작은 입력 이미지(305)의 그러한 픽셀들만을 포함하는 낮은-현저성 구역)을 추출하고, 이러한 낮은-현저성 구역을 보간 초해상도 엔진(355)에 공급하여, 낮은-현저성 구역의 초해상도 버전을 생성할 수 있다. 일부 예들에서, 높은-현저성 구역은 입력 이미지(305)의 낮은-현저성 구역들에 대응하는 알파 투명도를 갖는 이미지로서 추출될 수 있다. 일부 예들에서, 낮은-현저성 구역은 입력 이미지(305)의 높은-현저성 구역들에 대응하는 알파 투명도를 갖는 이미지로서 추출될 수 있다. 일부 예들에서, 높은 현저성 구역의 초해상도 버전 및 저해상도 구역의 초해상도 버전은 이러한 투명도를 유지할 수 있다. 그러한 예들에서, 병합기(370)는 초해상도 출력 이미지(380)를 생성하기 위해 저해상도 구역의 초해상도 버전 위에 높은 현저성 구역의 초해상도 버전을 오버레이하거나, 그 반대의 경우도 가능하다. 일부 예들에서, 특정 컬러(예를 들어, 입력 이미지(305)에서 달리 사용되지 않는 컬러)는, 그러한 투명 구역(들)에 대한, 예를 들어 알파 투명도 채널을 포함하지 않는 디바이스들 또는 이미지 코덱들에 대한 대체물로서 사용되거나, 또는 알파 투명도 채널을 인코딩하지 않음으로써 저장 공간을 절약하도록 선택될 수 있다.
도 4a는 P0 내지 P63으로 라벨링된 복수의 픽셀들을 포함하는 입력 이미지(410)의 일 예를 예시하는 개념도이다. 입력 이미지(410)는 9개의 픽셀들의 너비 및 9개의 픽셀들의 높이이다. 픽셀들은 상단 행으로부터 시작하여 하단 행을 향해 카운트 업하여, 각각의 행 내에서 좌측으로부터 우측으로 P0으로부터 P63까지 순차적으로 넘버링된다.
도 4b는 도 4a의 입력 이미지(410)의 픽셀들 각각에 대응하는 공간적으로 변하는 현저성 값들을 맵핑하는 현저성 맵(420)의 일 예를 예시하는 개념도이다. 공간적으로 변하는 현저성 값들은 V0 내지 V63으로 라벨링된 복수의 값들을 포함한다. 공간적으로 변하는 현저성 값들은 너비가 9개의 셀들(픽셀들)이고 높이가 9개의 셀들(픽셀들)인 튜닝 맵(tuning map)(420)으로 예시된다. 셀들은 상단 행으로부터 시작하여 하단 행을 향해 카운트 업하여, 각각의 행 내에서 좌측으로부터 우측으로 V0으로부터 V63까지 순차적으로 넘버링된다.
현저성 맵(420)의 각각의 셀들 내의 각각의 현저성 값들은 입력 이미지(410) 내의 픽셀에 대응한다. 예를 들어, 튜닝 맵(420) 내의 값 V0은 입력 이미지(410) 내의 픽셀 P0에 대응한다. 현저성 맵(420) 내의 값은 현저성 맵퍼(210)를 사용하여 결정된 바와 같이 입력 이미지(410) 내의 그의 대응하는 픽셀의 현저성 값을 표시하는 데 사용된다. 픽셀들의 현저성 값들은, 그 픽셀이 현저성 맵(420)에서 높은 현저성 구역(예를 들어, 현저성 맵들(215 및 315)에서 백색 또는 밝은 회색으로 묘사됨)에 있는지 또는 낮은 현저성 구역(예를 들어, 현저성 맵들(215 및 315)에서 흑색 또는 어두운 회색으로 묘사됨)에 있는지를 제어한다. 픽셀들의 현저성 값들은 블록 격자(예를 들어, 블록 격자(325))로 파티셔닝되는 블록과 함께, 그 픽셀이 높은 현저성 블록(예를 들어, 높은 현저성 블록들(330))에 있는지 또는 낮은 현저성 블록(예를 들어, 낮은 현저성 블록들(335))에 있는지를 제어한다.
도 5는 현저성 맵(예를 들어, 현저성 맵(215), 현저성 맵(315), 현저성 맵(420), 또는 현저성 맵(615))을 생성하기 위해 이미징 시스템(예를 들어, 이미징 시스템(200) 또는 이미징 시스템(300))에 의해 그리고/또는 ML(machine learning) 초-해상도 엔진(350)에 대해 사용될 수 있는 뉴럴 네트워크(500)의 일 예를 예시하는 블록 다이어그램이다. 뉴럴 네트워크(500)는 CNN(convolutional neural network), 오토인코더(autoencoder), DBN(deep belief net), RNN(Recurrent Neural Network), GAN(Generative Adversarial Networks), 및/또는 다른 타입의 뉴럴 네트워크와 같은 임의의 타입의 심층 네트워크를 포함할 수 있다. 뉴럴 네트워크(500)는, 예를 들어 ML 초해상도 엔진(350)의 하나 이상의 트레이닝된 ML 모델들(390) 중 하나일 수 있다. 뉴럴 네트워크(500)는, 예를 들어 트레이닝된 뉴럴 네트워크(620)일 수 있다. 뉴럴 네트워크(500)는, 예를 들어 트레이닝된 뉴럴 네트워크(670)일 수 있다.
뉴럴 네트워크(500)의 입력 계층(510)은 입력 데이터를 포함한다. 입력 계층(510)의 입력 데이터는 입력 이미지 프레임의 픽셀들을 표현하는 데이터를 포함할 수 있다. 예시적인 예에서, 입력 계층(510)의 입력 데이터는 이미지 데이터(예를 들어, 입력 이미지(205), 입력 이미지(305), 입력 이미지(410), 입력 이미지(605), 입력 블록들(340), 입력 블록들(655), 또는 이들의 조합)의 픽셀들을 표현하는 데이터 및/또는 이미지 데이터에 대응하는 메타데이터(예를 들어, 메타데이터(610), 메타데이터(660), 또는 이들의 조합)를 포함할 수 있다. 하나의 예시적인 예에서, 입력 계층(510)의 입력 데이터는 입력 이미지(205), 입력 이미지(305), 입력 이미지(410), 입력 이미지(605), 및/또는 메타데이터(610)를 포함할 수 있다. 다른 예시적인 예에서, 입력 계층(510)의 입력 데이터는 입력 블록들(340), 입력 블록들(655), 및/또는 메타데이터(660)를 포함할 수 있다. 이미지들은 원시 픽셀 데이터(예를 들어, 베이어(Bayer) 필터에 기초한 픽셀당 단일 컬러를 포함함) 또는 프로세싱된 픽셀 값들(예를 들어, RGB 이미지의 RGB 픽셀들)을 포함하는 이미지 센서로부터의 이미지 데이터를 포함할 수 있다. 뉴럴 네트워크(500)는 다수의 은닉 계층들(512a, 512b, 내지 512n)을 포함한다. 은닉 계층들(512a, 512b, 내지 512n)은 "n"개의 은닉 계층들을 포함하며, 여기서 "n"은 1 이상의 정수이다. 은닉 계층들의 수는 주어진 애플리케이션을 위해 필요한 만큼 많은 계층들을 포함하도록 이루어질 수 있다. 뉴럴 네트워크(500)는 은닉 계층들(512a, 512b, 내지 512n)에 의해 수행된 프로세싱으로부터 기인되는 출력을 제공하는 출력 계층(514)을 더 포함한다. 일부 예들에서, 출력 계층(514)은 현저성 맵, 이를테면 현저성 맵(215), 현저성 맵(315), 현저성 맵(420), 및/또는 현저성 맵(615)을 제공할 수 있다. 일부 예들에서, 출력 계층(514)은 출력 블록들, 이를테면 출력 블록들(360) 및/또는 출력 블록들(665)을 제공할 수 있다.
뉴럴 네트워크(500)는 상호연결된 필터들의 멀티-계층 뉴럴 네트워크이다. 각각의 필터는 입력 데이터를 표현하는 특징을 학습하도록 트레이닝될 수 있다. 필터들과 연관된 정보는 상이한 계층들 사이에서 공유되고, 각각의 계층은 정보가 프로세싱될 때 정보를 보유한다. 일부 경우들에서, 뉴럴 네트워크(500)는 피드-포워드 네트워크를 포함할 수 있으며, 이 경우, 네트워크의 출력들이 그 자체로 피드백되는 피드백 연결들은 존재하지 않는다. 일부 경우들에서, 네트워크(500)는 재귀 뉴럴 네트워크를 포함할 수 있으며, 이는 입력을 판독하면서 노드들에 걸쳐 정보가 반송되게 허용하는 루프들을 가질 수 있다.
일부 경우들에서, 정보는 다양한 계층들 사이에서 노드-노드 상호연결들을 통해 계층들 사이에서 교환될 수 있다. 일부 경우들에서, 네트워크는 콘볼루셔널 뉴럴 네트워크를 포함할 수 있으며, 이는 하나의 계층 내의 모든 노드를 다음 계층 내의 모든 다른 노드에 링크시킬 수 없다. 정보가 계층들 사이에서 교환되는 네트워크들에서, 입력 계층(510)의 노드들은 제1 은닉 계층(512a) 내의 노드들의 세트를 활성화시킬 수 있다. 예를 들어, 도시된 바와 같이, 입력 계층(510)의 입력 노드들 각각은 제1 은닉 계층(512a)의 노드들 각각에 연결될 수 있다. 은닉 계층의 노드들은 각각의 입력 노드의 정보를, 정보에 활성화 기능들(예를 들어, 필터들)을 적용함으로써 변환할 수 있다. 이어서, 변환으로부터 도출된 정보는 그들 자신의 지정된 기능들을 수행할 수 있는 다음 은닉 계층(512b)의 노드들로 전달되고 이들을 활성화시킬 수 있다. 예시적인 기능들은 콘볼루셔널 기능들, 다운스케일링, 업스케일링, 데이터 변환, 및/또는 임의의 다른 적합한 기능들을 포함한다. 이어서, 은닉 계층(512b)의 출력은 다음 은닉 계층의 노드들을 활성화시키는 등을 할 수 있다. 마지막 은닉 계층(512n)의 출력은 프로세싱된 출력 이미지를 제공하는 출력 계층(514)의 하나 이상의 노드들을 활성화시킬 수 있다. 일부 경우들에서, 뉴럴 네트워크(500) 내의 노드들(예를 들어, 노드 (516))이 다수의 출력 라인들을 갖는 것으로 도시되어 있지만, 노드는 단일 출력을 갖고, 노드로부터 출력되고 있는 것으로 도시되는 모든 라인들은 동일한 출력 값을 표현한다.
일부 경우들에서, 각각의 노드 또는 노드들 사이의 상호연결은, 뉴럴 네트워크(500)의 트레이닝으로부터 도출된 파라미터들의 세트인 가중치를 가질 수 있다. 예를 들어, 노드들 사이의 상호연결은 상호연결된 노드들에 관해 학습된 정보의 피스를 표현할 수 있다. 상호연결은 (예를 들어, 트레이닝 데이터세트에 기초하여) 튜닝될 수 있는 튜닝가능 수치 가중치를 가질 수 있어서, 뉴럴 네트워크(500)가 입력들에 적응적이고, 점점 더 많은 데이터가 프로세싱됨에 따라 학습할 수 있게 허용한다.
뉴럴 네트워크(500)는, 출력 계층(514)을 통해 출력을 제공하기 위해, 상이한 은닉 계층들(512a, 512b, 내지 512n)을 사용하여 입력 계층(510) 내의 데이터로부터의 특징들을 프로세싱하도록 프리-트레이닝(pre-training)된다.
도 6a는 현저성 맵(615)을 생성하기 위해 이미징 시스템(예를 들어, 이미징 시스템(200) 또는 이미징 시스템(300))의 ML(machine learning) 현저성 맵퍼 엔진(220)에 의해 사용될 수 있는 트레이닝된 뉴럴 네트워크(620)의 뉴럴 네트워크 아키텍처(600)의 일 예를 예시하는 블록 다이어그램이다. 현저성 맵(615)의 예들은 현저성 맵(215), 현저성 맵(315), 및/또는 현저성 맵(420)을 포함한다. 예를 들어, 이미징 시스템은 이미징 시스템(200)일 수 있으며, 이 경우, 현저성 맵은 현저성 맵(215)일 수 있다. 이미징 시스템은 이미징 시스템(300)일 수 있으며, 이 경우, 현저성 맵은 현저성 맵(315)일 수 있다.
트레이닝된 뉴럴 네트워크(620)는 ML 현저성 맵퍼 엔진(220)의 하나 이상의 트레이닝된 ML 모델들 중 하나의 트레이닝된 ML 모델의 일 예일 수 있다. 뉴럴 네트워크 아키텍처(600)는 입력 이미지(605) 및 메타데이터(610)를 입력으로서 수신한다. 입력 이미지(605)는 원시 이미지 데이터(예를 들어, 별개의 컬러 컴포넌트들을 가짐) 또는 프로세싱된(예를 들어, 디모자이크된) 이미지 데이터를 포함할 수 있다. 입력 이미지(605)의 예들은 입력 이미지(205) 또는 입력 이미지(305)를 포함한다. 메타데이터(610)는 입력 이미지(605)에 관한 정보, 이를테면 입력 이미지(605)를 캡처하는 데 사용되는 이미지 캡처 세팅들, 입력 이미지(605)의 캡처의 날짜 및/또는 시간, 입력 이미지(605)의 캡처의 로케이션, 입력 이미지(605)의 캡처의 배향(예를 들어, 피치, 요, 및/또는 롤), 또는 이들의 조합을 포함할 수 있다.
트레이닝된 뉴럴 네트워크(620)는, 예를 들어 입력 이미지(605)의 각각의 픽셀을 개개의 현저성 값에 맵핑하는 하나 이상의 현저성 맵들(615)의 형태로 입력 이미지(605)의 픽셀들에 대응하는 현저성 값들을 출력한다. 하나 이상의 현저성 맵들(615)의 예들은 현저성 맵(215), 현저성 맵(315), 및/또는 현저성 맵(420)을 포함한다. 트레이닝된 뉴럴 네트워크(620)는, 예를 들어 (예를 들어, 현저성 맵(215) 및 현저성 맵(315)에 예시된 바와 같이) 상이한 현저성 값들을 표현하는 상이한 광도들을 갖는 이미지들로서 하나 이상의 현저성 맵들(615)을 출력할 수 있다. 트레이닝된 뉴럴 네트워크(620)는 리스트, 행렬, 그리드, 테이블, 데이터베이스, 다른 데이터 구조, 또는 이들의 조합으로 배열될 수 있는 개별 현저성 값들의 세트들로서 하나 이상의 현저성 맵들(615)을 출력할 수 있다.
키(630)는 입력 이미지(605) 및/또는 메타데이터(610)에 기초하여 현저성 맵(들)(615)을 생성하기 위해, 트레이닝된 NN(620)에 의해 수행되는 상이한 NN 동작들을 식별한다. 예를 들어, 3x3 필터들 및 1의 스트라이드(stride)를 갖는 콘볼루션들은 흑색으로 윤곽표시되고 우측을 가리키는 두꺼운 백색 화살표에 의해 표시된다. 2x2 필터들 및 2의 스트라이드를 갖는 콘볼루션들은 하향을 가리키는 두꺼운 흑색 화살표에 의해 표시된다. 업샘플링(예를 들어, 이중선형 업샘플링)은 상향을 가리키는 두꺼운 흑색 화살표에 의해 표시된다.
도 6b는, 출력 블록들(665)을 생성하기 위해 이미징 시스템(300)의 ML(machine learning) 초해상도 엔진(350)에 의해 사용될 수 있는 트레이닝된 뉴럴 네트워크(670)의 뉴럴 네트워크 아키텍처(650)의 일 예를 예시하는 블록 다이어그램이다. 출력 블록들(665)의 예들은 ML 초해상도 엔진(350)에 의해 생성된 출력 블록들(360)을 포함한다.
트레이닝된 뉴럴 네트워크(670)는 ML 초해상도 엔진(350)의 하나 이상의 트레이닝된 ML 모델들(390) 중 하나의 트레이닝된 ML 모델의 일 예일 수 있다. 뉴럴 네트워크 아키텍처(650)는 그의 입력으로서 하나 이상의 입력 블록(들)(665) 및/또는 메타데이터(660)를 수신한다. 하나 이상의 입력 블록(들)(665)의 예들은 도 3의 입력 블록들(340)을 포함한다. 입력 블록(들)(665)은 원시 이미지 데이터(예를 들어, 별개의 컬러 컴포넌트들을 가짐) 또는 프로세싱된(예를 들어, 디모자이크된) 이미지 데이터를 포함할 수 있다. 메타데이터(660)는, 입력 블록(들)(665)이 추출되는 입력 이미지(예를 들어, 입력 이미지(605))에 관한 정보, 이를테면 입력 이미지를 캡처하는 데 사용되는 이미지 캡처 세팅들, 입력 이미지의 캡처의 날짜 및/또는 시간, 입력 이미지의 캡처의 로케이션, 입력 이미지의 캡처의 배향(예를 들어, 피치, 요, 및/또는 롤), 또는 이들의 조합을 포함할 수 있다. 메타데이터(660)는, 입력 이미지에서 입력 블록(들)(665)이 추출되었던 곳에 관한 정보(예를 들어, 입력 이미지의 2차원 평면을 따른 좌표들)를 포함할 수 있다.
트레이닝된 뉴럴 네트워크(670)는 입력 블록(들)(655)의 향상된 변형들을 표현하는 하나 이상의 출력 블록(들)(665)을 출력하며, 입력 블록(들)(655) 각각의 해상도는 제1 (저)해상도로부터 제2 (고)해상도로 증가된다. 제2 해상도는 제1 해상도보다 크다. 하나 이상의 출력 블록(들)(665)의 예들은 출력 블록(들)(360)을 포함한다.
도 6a의 키(630)는 또한 도 6b에서 재현되고, 입력 블록(들)(655) 및/또는 메타데이터(660)에 기초하여 출력 블록(들)(665)을 생성하기 위해, 트레이닝된 NN(670)에 의해 수행되는 상이한 NN 동작들을 식별한다.
도 7은 이미지(730)를 큰 블록들, 중간 블록들, 및 작은 블록들로 파티셔닝하는 블록 격자(750)를 예시하는 개념도(700)이다. 이미지(730)는 플랫한(flat) 백색 배경 앞의 전경에 있는 여성을 묘사한다. 이미지(730)는 비디오의 비디오 프레임일 수 있다. 범례(legend)(790)는 수평 X축, 및 수평 X축에 수직인 수직 Y축을 예시한다. 이미지(730)는 X 축 및 Y 축에 걸쳐 있는 평면 상에 예시된다.
큰 블록들의 예들은 큰 블록들(705A 및 705B)을 포함한다. 중간 블록들의 예들은 중간 블록들(710A 및 710B)을 포함한다. 작은 블록들의 예들은 작은 블록들(715A 및 715B)을 포함한다. 이들 블록들은 128 제곱 픽셀들(128x128 픽셀들), 64 제곱 픽셀들(64x64 픽셀들), 32 제곱 픽셀(32x32 픽셀들), 16 제곱 픽셀(16x16 픽셀들), 8 제곱 픽셀들(8x8 픽셀들), 또는 4 제곱 픽셀들(4x4 픽셀들)과 같은 다양한 사이즈들의 정사각형들일 수 있다. 도 7에 예시된 예에서, 큰 블록들은 32x32 픽셀들이고, 중간 블록들은 16x16 픽셀들이고, 작은 블록들은 8x8 픽셀들이다.
도 7에 예시된 이미지(730)의 예시적인 블록 격자(750)는 다양한 사이즈들의 블록들을 생성한다. 예를 들어, 32 제곱 픽셀들의 사이즈를 갖는 제1 큰 블록(705A)이 이미지의 가장 상단-좌측에 예시된다. 제1 큰 블록(705A)은 Y축을 따라 이미지(730)의 가장 상단에 있고, X축을 따라 이미지(730)의 가장 좌측에 있다. 제1 큰 블록(705A)은 이미지(730)에서 묘사된 여성 뒤의 배경을 묘사하는 플랫한 영역(720) 내에 포지셔닝된다. 제1 큰 블록(705A)은 이미지(730) 내의 여성의 묘사로부터 비교적 멀리 떨어져 포지셔닝된다. 16 제곱 픽셀들의 사이즈를 갖는 제1 중간 블록(710A)은 Y축을 따라 이미지(730)의 상단 부근에서, 이미지(730)의 X축을 따라 수평 중심의 좌측에 예시된다. 제1 중간 블록(710A)은 이미지(730)에서 묘사된 여성 뒤의 배경을 묘사하는 플랫한 영역(720) 내에 포지셔닝된다. 제1 중간 블록(710A)은, X축을 따라 제1 중간 블록(710A)의 우측에 있는 다음 블록이 배경과 여성의 머리의 일부 사이의 에지를 묘사하므로, 이미지(730) 내의 여성의 묘사에 가깝다. 8 제곱 픽셀들의 사이즈를 갖는 제1 작은 블록(715A)은 Y축을 따라 이미지(730)의 상단 부근에서, 이미지(730)의 X축을 따라 수평 중심의 우측에 예시된다. 제1 작은 블록(715A)은 배경과 여성의 머리의 일부 사이의 에지를 묘사한다. 여성의 머리는 텍스처화된 영역(725)이다.
일부 경우들에서, 더 작은 블록 사이즈들(예를 들어, 16x16, 8x8, 4x4)은 오브젝트들 또는 텍스처화된 콘텐츠의 에지들을 묘사하는 것들과 같이, 더 복잡한 이미지(730)의 영역들에서 가장 양호하게 사용된다. 따라서, 제1 작은 블록(715A)은 플랫 영역(720)(배경)과 텍스처화된 영역(725)(여자의 머리) 사이의 에지를 묘사한다. 제1 중간 블록(710A)은 유사한 에지 부근에 포지셔닝된다. 반면에, 더 큰 블록 사이즈들(예를 들어, 128x128, 64x64, 32x32, 16x16)은 일부 경우들에서, 비교적 단순하고 그리고/또는 플랫한, 그리고/또는 텍스처들 및/또는 에지들과 같은 복잡성들이 없는 이미지 또는 비디오 프레임의 영역들에서 가장 양호하게 사용된다. 따라서, 제1 큰 블록(705A)은 플랫 영역(720)(배경)을 묘사한다. 제1 중간 블록(710A)은, 플랫 영역(720)(배경)과 텍스처화된 영역(725)(여성의 머리) 사이의 에지 근처에 포지셔닝됨에도 불구하고, 마찬가지로 플랫 영역(720)(배경)을 묘사한다.
일부 경우들에서, 텍스처화된 영역(725)과 같은 복잡한 이미지(730)의 영역에서 더 큰 블록 사이즈(예를 들어, 128x128, 64x64, 32x32, 16x16)가 최적일 수 있다. 예를 들어, 제2 큰 블록(705B)은 텍스처화된 영역(725)(여성의 머리)과 여성의 얼굴 사이의 에지, 에지 텍스처화된 영역(725)(여성의 머리)과 여성의 귀 사이의 에지, 및 여성의 귀의 상이한 부분들을 묘사하는 여러 에지들을 포함하는 여러 에지들 및 텍스처화된 영역(725)(여성의 머리) 둘 모두를 묘사한다. 마찬가지로, 일부 경우들에서, 더 작은 블록 사이즈(예를 들어, 16x16, 8x8, 4x4)가 플랫하고 단순하며 복잡성들이 없는 이미지(730)의 영역에서 최적일 수 있다. 예를 들어, 제2 작은 블록(705B)은 플랫 영역(720)(배경)을 묘사하고, 이미지(730) 내의 여성의 묘사로부터 비교적 멀리 떨어져 포지셔닝된다. 제2 중간 블록(710B)은 이미지(730) 내의 여성의 손의 피부의 비교적 플랫하고 단순한 영역을 묘사한다.
일부 경우들에서, 블록 파티셔너(320)는 이미지 압축, 비디오 압축, 또는 이들의 조합에 관련된 인자들에 기초하여 블록 격자(750)를 생성할 수 있다. 예를 들어, 이미지(730)는 압축을 겪은 이미지 또는 압축을 겪은 비디오의 프레임일 수 있으며, 이 경우, 블록 격자(750)를 생성하기 위한 블록 파티셔닝은 이들 압축 절차들의 일부로서 수행될 수 있고, 동일한 블록 격자(750)는 이미징 시스템(300)의 블록 격자(325)로서 이미징 시스템에 의해 사용될 수 있다. 예를 들어, 블록 파티셔너(320)는 RDO(rate-distortion optimization) 또는 RDO의 추정에 기초하여 블록 격자(750)를 생성할 수 있다. 압축 컨텍스트들에서, 블록 격자(750) 내의 블록들은 CU(coding unit)들, CTU(coding tree unit)들, LCU(largest coding units)들, 또는 이들의 조합으로 지칭될 수 있다.
도 8은 이미지 데이터를 프로세싱하기 위한 프로세스(800)의 일 예를 예시하는 흐름도이다. 프로세스(800)의 동작들은 이미징 시스템에 의해 수행될 수 있다. 일부 예들에서, 프로세스(800)의 동작들을 수행하는 이미징 시스템은 이미징 시스템(300)일 수 있다. 일부 예들에서, 프로세스(800)의 동작들을 수행하는 이미징 시스템은, 예를 들어 이미지 캡처 및 프로세싱 시스템(100), 이미지 캡처 디바이스(105A), 이미지 프로세싱 디바이스(105B), 이미지 프로세서(150), ISP(154), 호스트 프로세서(152), 이미징 시스템(200), 이미징 시스템(300), 뉴럴 네트워크(500), 뉴럴 네트워크 아키텍처(600), 트레이닝된 뉴럴 네트워크(620), 뉴럴 네트워크 아키텍처(650), 트레이닝된 뉴럴 네트워크(670), 컴퓨팅 시스템(900), 또는 이들의 조합을 포함할 수 있다.
동작(805)에서, 프로세스(800)는 (예를 들어, 이미징 시스템에 의해) 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 것을 포함한다. 제1 구역 및 제2 구역은 제1 해상도를 갖는다. 입력 이미지의 하나의 예시적인 예는 도 3의 입력 이미지(305)를 포함한다. 일부 예들에서, 입력 이미지를 획득하기 위해, 프로세스(800)는 입력 이미지를 캡처하도록 구성된 (예를 들어, 프로세스(800)를 수행하는 장치 또는 컴퓨팅 디바이스와 같은 장치 또는 컴퓨팅 디바이스의) 이미지 센서로부터 입력 이미지를 수신하는 것을 포함할 수 있다. 일부 예들에서, 입력 이미지를 획득하기 위해, 프로세스(800)는 (예를 들어, 프로세스(800)를 수행하는 장치 또는 컴퓨팅 디바이스와 같은 장치 또는 컴퓨팅 디바이스의) 통신 수신기를 통해 전송자 디바이스로부터 입력 이미지를 수신하는 것을 포함할 수 있다.
동작(810)에서, 프로세스(800)는 (예를 들어, 이미징 시스템에 의해) 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 것을 포함한다. 일부 예들에서, 프로세스(800)는 (예를 들어, 이미징 시스템에 의해) 현저성 맵에 기초하여 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 것을 포함할 수 있다. 예를 들어, 현저성 맵은 제1 구역을 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함할 수 있다.
일부 양태들에서, 프로세스(800)는 입력 이미지의 각각의 픽셀에 대한 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 입력 이미지에 기초하여 현저성 맵을 (예를 들어, 이미징 시스템에 의해) 생성하는 것을 포함할 수 있다. 일 예에서, 도 2 및 도 3의 현저성 맵퍼(210)가 현저성 맵을 생성하는 데 사용될 수 있다. 일부 경우들에서, (현저성 맵의) 복수의 픽셀들 중의 픽셀에 대한 현저성 맵의 현저성 값은 복수의 픽셀들 중의 픽셀과 다른 픽셀들 사이의 거리에 기초한다. 하나의 예시적인 예에서, 위에서 언급된 바와 같이, 이미징 시스템(200)의 현저성 맵퍼(210)는 픽셀 거리 합산 엔진(225)을 포함할 수 있으며, 이는 입력 이미지(205)의 각각의 픽셀에 대한 개개의 현저성 값을, 그 픽셀과 입력 이미지(205)의 다른 픽셀들 사이의 복수의 픽셀 거리들의 합이 되도록(또는 그에 기초하도록) 계산할 수 있다. 다양한 예시적인 예들은 도 2 및 3에 관해 본 명세서에서 제공된다. 일부 양태들에서, 현저성 맵을 생성하기 위해, 프로세스(800)는 부가적인 트레이닝된 네트워크(예를 들어, 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들)를 입력 이미지에 적용할 수 있다. 하나의 예시적인 예에서, 부가적인 트레이닝된 네트워크는 도 2 및 도 3의 ML 현저성 맵퍼 엔진(220) 포함할 수 있으며, 이는 하나 이상의 트레이닝된 ML 모델들, 이를테면 하나 이상의 트레이닝된 NN(neural network)들, 하나 이상의 트레이닝된 SVM(support vector machine)들, 하나 이상의 트레이닝된 랜덤 포레스트들, 이들의 임의의 조합, 및/또는 다른 트레이닝된 ML 모델을 포함할 수 있다.
동작(815)에서, 프로세스(800)는 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 (예를 들어, 이미징 시스템에 의해) 수정하는 것을 포함한다. 일부 경우들에서, 입력 이미지의 제1 구역은 제1 구역이 제2 구역보다 현저하다고 결정하는 것에 기초하여 제1 프로세스를 사용하여 수정된다. 일부 예들에서, 제1 프로세스는 트레이닝된 네트워크에 기초한 초해상도 프로세스이다. 예를 들어, 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하기 위해, 프로세스(800)는 트레이닝된 네트워크를 사용하여 초해상도 프로세스를 (예를 들어, 이미징 시스템을 사용하여) 수행할 수 있다. 일부 경우들에서, 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다. 하나의 예시적인 예에서, 트레이닝된 네트워크는 도 3의 ML 기반 초해상도 엔진(350)을 포함할 수 있다.
동작(820)에서, 프로세스(800)는 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 (예를 들어, 이미징 시스템에 의해) 수정하는 것을 포함한다. 제2 프로세스는 제1 프로세스와 상이하다. 일부 예들에서, 제2 프로세스는 제1 프로세스와 상이한 보간 프로세스이다(이는 위에서 언급된 바와 같이, 일부 경우들에서, 트레이닝된 네트워크를 사용하여 수행될 수 있음). 예를 들어, 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하기 위해, 프로세스(800)는 보간 프로세스를 수행하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 보간 프로세스는 도 3의 보간-기반 초해상도 엔진(355)에 의해 수행될 수 있다. 일부 경우들에서, 보간 프로세스는, 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅 보간, 바이큐빅 보간, 트리큐빅 보간, 스플라인 보간, 랑조스 보간, 싱크 보간, 푸리에-기반 보간, 및 에지-지향 보간, 이들의 임의의 조합, 및/또는 다른 보간 프로세스를 포함한다.
일부 양태들에서, 프로세스(800)는 입력 이미지를 복수의 블록들로 파티셔닝하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 도 3의 블록 파티셔너(320)는 도 3에 도시된 바와 같이 입력 이미지(305)를 복수의 블록들로 파티셔닝할 수 있다. 일부 경우들에서, 복수의 블록들의 각각의 블록은 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는다. 일부 경우들에서, 복수의 블록들은 제1 복수의 블록들 및 제2 복수의 블록들을 포함하며, 여기서 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖는다. 일부 예들에서, 제1 복수의 블록들은 픽셀들의 수에 기초하여 그리고/또는 형상에 기초하여 제2 복수의 블록들과 상이하다. 일 예에서, 일부 경우들에서, 일부 블록들은 다른 블록들보다 클 수 있다(예를 들어, 그들보다 더 많은 픽셀들을 포함할 수 있다). 다른 예에서, 일부 블록들은 다른 블록들과 상이한 형상들을 가질 수 있다(예를 들어, 높이 대 길이의 상이한 비들을 포함할 수 있다). 다른 예에서, 일부 블록들은 다른 블록들보다 클 수 있고(예를 들어, 더 많은 픽셀들을 포함할 수 있음), 다른 블록들과 상이한 형상들을 가질 수 있다(예를 들어, 높이 대 길이의 상이한 비들을 포함할 수 있음).
일부 경우들에서, 입력 이미지의 제1 구역을 수정하기 위해, 프로세스(800)는 입력 이미지의 제1 구역에 대응하는 복수의 블록들의 제1 서브세트를 제1 해상도로부터 제2 해상도로 수정하기 위해 제1 프로세스(예를 들어, 도 3의 ML 기반 초해상도 엔진(350)과 같은 트레이닝된 네트워크)를 사용하는 것을 포함할 수 있다. 부가적으로 또는 대안적으로, 일부 경우들에서, 입력 이미지의 제2 구역을 수정하기 위해, 프로세스(800)는 입력 이미지의 제2 구역에 대응하는 복수의 블록들의 제2 서브세트를 수정하기 위해 제2 프로세스(예를 들어, 도 3의 보간-기반 초해상도 엔진(355)을 사용하는 것과 같은 보간 프로세스)를 사용하는 것을 포함할 수 있다. 부가적으로 또는 대안적으로, 일부 예들에서, 입력 이미지의 제1 구역을 수정하고 입력 이미지의 제2 구역을 수정하기 위해, 프로세스(800)는 복수의 블록들 각각의 제1 해상도를 제2 해상도로 증가시키기 위해 복수의 블록들의 각각의 블록(예를 들어, 모든 블록들)을 수정하는 것을 포함할 수 있다.
동작(825)에서, 프로세스(800)는 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 (예를 들어, 이미징 시스템에 의해) 출력하는 것을 포함한다. 위에서 언급된 바와 같이, 일부 경우들에서, 프로세스(800)는 입력 이미지를 복수의 블록들로 파티셔닝할 수 있다. 그러한 경우들에서, 프로세스(800)는 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성하는 것을 포함할 수 있다. 일부 양태들에서, 프로세스(800)는 디블록킹 필터를 출력 이미지에 적용함으로써 적어도 부분적으로 출력 이미지를 수정하는 것을 포함할 수 있다.
일부 구현들에서, 본 명세서에 설명된 초해상도 시스템들 및 기법들은 사용자 입력을 수신하는 것에 응답하여 수행될 수 있다. 예를 들어, 사용자는 본 명세서에 설명된 프로세스(800) 및/또는 다른 동작 또는 프로세스로 하여금 수행되게 하는 초해상도 세팅을 선택하기 위한 사용자 입력(예를 들어, 터치 입력, 제스처 입력, 음성 입력, 물리적 또는 가상 버튼의 누름 등)을 제공할 수 있다. 하나의 예시적인 예에서, 프로세스(800)는 사용자 입력에 기초하여 수행될 수 있다. 예를 들어, 프로세스(800)는 (예를 들어, 터치스크린, 이미지 센서, 마이크로폰, 물리적 또는 가상 버튼 등과 같은 입력 디바이스를 통해) 적어도 하나의 사용자 입력을 수신하는 것을 포함할 수 있다. 적어도 하나의 사용자 입력에 기초하여, 프로세스(800)는 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 것, 제1 구역 및 제2 구역 중 적어도 하나를 수정하는 것, 및/또는 출력 이미지를 출력하는 것 중 하나 이상을 포함할 수 있다.
일부 예들에서, 제2 해상도는 장치 또는 컴퓨팅 디바이스(예를 들어, 프로세스(800)를 수행하는 장치 또는 컴퓨팅 디바이스)의 디스플레이의 해상도에 기초한다. 일부 경우들에서, 프로세스(800)는 디스플레이 상에서 출력 이미지를 디스플레이하는 것(또는 출력 이미지로 하여금 디스플레이 상에서 디스플레이되게 하는 것)을 포함할 수 있다. 일부 양태들에서, 출력 이미지를 출력하기 위해, 프로세스(800)는 출력 이미지로 하여금 디스플레이 상에서 디스플레이되게 하는 것을 포함할 수 있다. 일부 양태들에서, 출력 이미지를 출력하기 위해, 프로세스(800)는 장치 또는 컴퓨팅 디바이스(예를 들어, 프로세스(800)를 수행하는 장치 또는 컴퓨팅 디바이스)의 통신 송신기를 통해 출력 이미지를 수신자 디바이스에 송신하는 것을 포함할 수 있다. 일부 예들에서, 출력 이미지는 비디오 프레임들의 시퀀스의 일부로서 출력된다. 일부 경우들에서, 출력 이미지는 (예를 들어, 비디오 프레임들의 시퀀스를 이용하여) 미리보기 스트림에서 디스플레이된다.
일부 양태들에서, 이미징 시스템은 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하기 위한 수단을 포함할 수 있다. 일부 예들에서, 획득하기 위한 수단은 도 2 및/또는 도 3의 현저성 맵퍼(210), 도 3의 블록 파티셔너(320), 도 9의 통신 인터페이스(940), 도 9의 프로세서(910), 및/또는 입력 이미지를 획득하도록 구성된 다른 컴포넌트를 포함할 수 있다. 일부 양태들에서, 이미징 시스템은 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하기 위한 수단을 포함할 수 있다. 일부 예들에서, 결정하기 위한 수단은 도 2 및/또는 도 3의 현저성 맵퍼(210), 도 3의 블록 분류기(327), 도 9의 프로세서(910), 및/또는 입력 이미지를 획득하도록 구성된 다른 컴포넌트를 포함할 수 있다.
일부 양태들에서, 이미징 시스템은 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하기 위한 수단을 포함할 수 있다. 일부 예들에서, 제1 구역을 수정하기 위한 수단은 도 3의 ML 기반 초해상도 엔진(350), 도 9의 프로세서(910), 및/또는 입력 이미지를 획득하도록 구성된 다른 컴포넌트를 포함할 수 있다. 일부 양태들에서, 이미징 시스템은 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하기 위한 수단을 포함할 수 있다. 일부 예들에서, 제2 구역을 수정하기 위한 수단은 도 3의 보간-기반 초해상도 엔진(355), 도 9의 프로세서(910), 및/또는 입력 이미지를 획득하도록 구성된 다른 컴포넌트를 포함할 수 있다.
일부 양태들에서, 이미징 시스템은 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하기 위한 수단을 포함할 수 있다. 일부 예들에서, 출력 이미지를 출력하기 위한 수단은 도 3의 병합기(370), 도 9의 프로세서(910), 도 9의 통신 인터페이스(940), 도 9의 출력 디바이스(935), 디스플레이, 및/또는 입력 이미지를 획득하도록 구성된 다른 컴포넌트를 포함할 수 있다.
일부 예들에서, 본 명세서에서 설명된 프로세스들(예를 들어, 프로세스(800) 및/또는 본 명세서에서 설명된 다른 프로세스들)은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수 있다. 일부 예들에서, 프로세스(800)의 동작들은 이미징 시스템(200) 및/또는 이미징 시스템(300)에 의해 수행될 수 있다. 일부 예들에서, 프로세스(800)의 동작들은 도 9에 도시된 컴퓨팅 시스템(900)을 갖는 컴퓨팅 디바이스에 의해 수행될 수 있다. 예를 들어, 도 9에 도시된 컴퓨팅 시스템(900)을 갖는 컴퓨팅 디바이스는 이미징 시스템(200) 및/또는 이미징 시스템(300)의 컴포넌트들 중 적어도 일부를 포함할 수 있고 그리고/또는 도 8의 프로세스(800)의 동작들을 구현할 수 있다.
컴퓨팅 디바이스는 임의의 적합한 디바이스, 이를테면 모바일 디바이스(예를 들어, 모바일 폰), 데스크톱 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 웨어러블 디바이스(예를 들어, VR 헤드셋, AR 헤드셋, AR 안경, 네트워크-연결된 워치 또는 스마트워치, 또는 다른 웨어러블 디바이스), 서버 컴퓨터, 차량(예를 들어, 자율주행 차량 또는 사람-운전 차량) 또는 차량의 컴퓨팅 디바이스, 로봇 디바이스, 텔레비전, 및/또는 프로세스(800)의 동작들을 포함하는, 본 명세서에서 설명된 프로세스들을 수행하기 위한 리소스 능력들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 다양한 컴포넌트들, 이를테면 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 하나 이상의 카메라들, 하나 이상의 센서들, 및/또는 본 명세서에 설명된 프로세스들의 단계들을 수행하도록 구성된 다른 컴포넌트(들)을 포함할 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 포함할 수 있다. 네트워크 인터페이스는 IP(Internet Protocol) 기반 데이터 또는 다른 타입의 데이터를 통신 및/또는 수신하도록 구성될 수 있다.
컴퓨팅 디바이스의 컴포넌트들은 회로부에서 구현될 수 있다. 예를 들어, 컴포넌트들은 하나 이상의 프로그래밍가능 전자 회로들(예를 들어, 마이크로프로세서들, GPU(graphics processing unit)들, DSP(digital signal processor)들, CPU(central processing unit)들 및/또는 다른 적합한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있으며, 그리고/또는 본 명세서에 설명된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있다.
프로세스(800)의 동작들은 논리적 흐름도로서 예시되며, 그의 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들의 맥락에서, 동작들은 하나 이상의 컴퓨터-판독가능 저장 매체들 상에 저장된 컴퓨터-실행가능 명령들을 표현하며, 그 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 언급된 동작들을 수행한다. 일반적으로, 컴퓨터-실행가능 명령들은 특정 기능들을 수행하거나 특정 데이터 타입들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들은 프로세스들을 구현하기 위해 임의의 순서로 그리고/또는 병렬로 조합될 수 있다.
부가적으로, 프로세스(800) 및/또는 본 명세서에 설명된 다른 프로세스들의 동작들은 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있으며, 하나 이상의 프로세서들 상에서 집합적으로 실행하는 코드(예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 어플리케이션들)로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수 있다. 위에서 언급된 바와 같이, 코드는, 예를 들어 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터-판독가능 또는 기계-판독가능 저장 매체 상에 저장될 수 있다. 컴퓨터-판독가능 또는 기계-판독가능 저장 매체는 비-일시적일 수 있다.
도 9는 본 기술의 특정 양태들을 구현하기 위한 시스템의 일 예를 예시하는 다이어그램이다. 특히, 도 9는, 예를 들어 내부 컴퓨팅 시스템, 원격 컴퓨팅 시스템, 카메라 또는 이들의 임의의 컴포넌트를 구성하는 임의의 컴퓨팅 디바이스일 수 있는 컴퓨팅 시스템(900)의 일 예를 예시하며, 여기서 시스템의 컴포넌트들은 연결(905)을 사용하여 서로 통신한다. 연결(905)은 버스를 사용한 물리적 연결이거나, 또는 칩셋 아키텍처에서와 같이 프로세서(910)로의 직접 연결일 수 있다. 연결(905)은 가상 연결, 네트워킹된 연결, 또는 논리적 연결일 수 있다.
일부 실시예들에서, 컴퓨팅 시스템(900)은 본 개시내용에 설명된 기능들이 데이터센터, 다수의 데이터 센터들, 피어 네트워크 등 내에서 분산될 수 있는 분산 시스템이다. 일부 실시예들에서, 설명된 시스템 컴포넌트들 중 하나 이상은 컴포넌트가 설명된 기능의 일부 또는 전체를 각각 수행하는 많은 그러한 컴포넌트들을 표현한다. 일부 실시예들에서, 컴포넌트들은 물리적 또는 가상 디바이스들일 수 있다.
예시적인 시스템(900)은 적어도 하나의 프로세싱 유닛(CPU 또는 프로세서)(910), 및 ROM(read-only memory)(920) 및 RAM(random access memory)(925)와 같은 시스템 메모리(915)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(910)에 커플링시키는 연결(905)을 포함한다. 컴퓨팅 시스템(900)은 프로세서(910)와 직접 연결되거나, 이에 매우 근접하거나, 또는 이의 일부로서 통합된 고속 메모리의 캐시(912)를 포함할 수 있다.
프로세서(910)는 프로세서(910)를 제어하도록 구성된 저장 디바이스(930)에 저장된 서비스들(932, 934 및 936)과 같은 임의의 범용 프로세서 및 하드웨어 서비스 또는 소프트웨어 서비스 뿐만 아니라 소프트웨어 명령들이 실제 프로세서 설계에 통합되는 특수-목적 프로세서를 포함할 수 있다. 프로세서(910)는 본질적으로 다수의 코어들 또는 프로세서들, 버스, 메모리 제어기, 캐시 등을 포함하는 완전히 자립형 컴퓨팅 시스템일 수 있다. 멀티-코어 프로세서는 대칭 또는 비대칭일 수 있다.
사용자 상호작용을 가능하게 하기 위해, 컴퓨팅 시스템(900)은 스피치를 위한 마이크, 제스처 또는 그래픽 입력을 위한 터치-감응형 스크린, 키보드, 마우스, 모션 입력, 스피치 등과 같은 임의의 수의 입력 메커니즘들을 표현할 수 있는 입력 디바이스(945)를 포함한다. 컴퓨팅 시스템(900)은 또한 다수의 출력 메커니즘들 중 하나 이상일 수 있는 출력 디바이스(935)를 포함할 수 있다. 일부 예시들에서, 다중모드 시스템들은 사용자가 컴퓨팅 시스템(900)과 통신하기 위해 다수의 타입들의 입력/출력을 제공할 수 있게 할 수 있다. 컴퓨팅 시스템(900)은, 사용자 입력 및 시스템 출력을 일반적으로 통제하고 관리할 수 있는 통신 인터페이스(940)를 포함할 수 있다. 통신 인터페이스는 오디오 잭/플러그, 마이크로폰 잭/플러그, 범용 직렬 버스(USB) 포트/플러그, Apple® Lightning® 포트/플러그, 이더넷 포트/플러그, 광섬유 포트/플러그, 사유의(proprietary) 유선 포트/플러그, BLUETOOTH® 무선 신호 전달, BLUETOOTH® BLE(low energy) 무선 신호 전달, IBEACON® 무선 신호 전달, RFID(radio-frequency identification) 무선 신호 전달, NFC(near-field communications) 무선 신호 전달, DSRC(dedicated short range communication) 무선 신호 전달, 802.11 Wi-Fi 무선 신호 전달, WLAN(wireless local area network) 신호 전달, VLC(Visible Light Communication), WiMAX(Worldwide Interoperability for Microwave Access), 적외선(IR) 통신 무선 신호 전달, PSTN(Public Switched Telephone Network) 신호 전달, ISDN(Integrated Services Digital Network) 신호 전달, 3G/4G/5G/LTE 셀룰러 데이터 네트워크 무선 신호 전달, ad-hoc 네트워크 신호 전달, 라디오 파 신호 전달, 마이크로파 신호 전달, 적외선 신호 전달, 가시 광 신호 전달, 자외선 광 신호 전달, 전자기 스펙트럼을 따른 무선 신호 전달, 또는 이들의 일부 조합을 이용하는 것들을 포함하는, 유선 및/또는 무선 트랜시버들을 사용하는 유선 또는 무선 통신들의 수신 및/또는 송신을 수행하거나 또는 용이하게 할 수 있다. 통신 인터페이스(940)는 또한 하나 이상의 GNSS(Global Navigation Satellite System) 시스템들과 연관된 하나 이상의 위성들로부터 하나 이상의 신호들의 수신에 기초하여 컴퓨팅 시스템(900)의 위치를 결정하는 데 사용되는 하나 이상의 GNSS 수신기들 또는 트랜시버들을 포함할 수 있다. GNSS 시스템은 미국-기반 GPS(Global Positioning System), 러시아-기반 GLONASS(Global Navigation Satellite System), 중국-기반 BDS(BeiDou Navigation Satellite System), 및 유럽-기반 갈릴레오 GNSS를 포함하지만 이에 제한되지 않는다. 임의의 특정 하드웨어 어레인지먼트에 대해 동작하는 것에 제한이 없으며, 따라서, 여기에서의 기본 특징들은 이들이 개발됨에 따라, 개선된 하드웨어 또는 펌웨어 어레인지먼트들로 쉽게 대체될 수 있다.
저장 디바이스(930)는 비-휘발성 및/또는 비-일시적 및/또는 컴퓨터-판독가능 메모리 디바이스일 수 있으며, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 하드 디스크 또는 다른 타입들의 컴퓨터 판독가능 매체들, 이를테면 자기 카세트들, 플래시 메모리 카드들, 솔리드 스테이트 메모리 디바이스들, 디지털 다기능 디스크들, 카트리지들, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 자기 스트립/스트라이프, 임의의 다른 자기 저장 매체, 플래시 메모리, 멤리스터 메모리, 임의의 다른 솔리드-스테이트 메모리, CD-ROM(compact disc read only memory) 광 디스크, 재기입가능 CD(compact disc) 광 디스크, DVD(digital video disk) 광 디스크, BDD(blu-ray disc) 광 디스크, 홀로그래픽 광 디스크, 다른 광학 매체, SD(secure digital) 카드, microSD(micro secure digital) 카드, Memory Stick® 카드, 스마트카드 칩, EMV 칩, SIM(subscriber identity module) 카드, 미니/마이크로/나노/피코 SIM 카드, 다른 IC(integrated circuit) 칩/카드, RAM(random access memory), SRAM(static RAM), DRAM(dynamic RAM), ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), FLASHEPROM(flash EPROM), 캐시 메모리(L1/L2/L3/L4/L5/L#), RRAM/ReRAM(resistive random-access memory), PCM(phase change memory), STT-RAM(spin transfer torque RAM), 다른 메모리 칩 또는 카트리지, 및/또는 이들의 조합일 수 있다.
저장 디바이스(930)는, 그러한 소프트웨어를 정의하는 코드가 프로세서(910)에 의해 실행될 때 시스템으로 하여금 기능을 수행하게 하는 소프트웨어 서비스들, 서버들, 서비스들 등을 포함할 수 있다. 일부 실시예들에서, 특정 기능을 수행하는 하드웨어 서비스는, 기능을 수행하기 위해, 프로세서(910), 연결(905), 출력 디바이스(935) 등과 같은 필요한 하드웨어 컴포넌트들과 관련하여 컴퓨터-판독가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다.
용어 "컴퓨터-판독가능 매체"는, 휴대용 또는 비-휴대용 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 운반할 수 있는 다양한 다른 매체들을 포함하지만, 이에 제한되지 않는다. 컴퓨터-판독가능 매체는, 데이터가 저장될 수 있고 무선으로 또는 유선 연결들을 통해 전파되는 반송파들 및/또는 일시적인 전자 신호들을 포함하지 않는 비-일시적 매체를 포함할 수 있다. 비-일시적 매체의 예들은 자기 디스크 또는 테이프, CD(compact disk) 또는 DVD(digital versatile disk)와 같은 광학 저장 매체들, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨터-판독가능 매체에는, 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트(statement)들의 임의의 조합을 표현할 수 있는 코드 및/또는 기계-실행가능 명령들이 저장되어 있을 수 있다. 코드 세그먼트는, 정보, 데이터, 독립변수(argument)들, 파라미터들, 또는 메모리 콘텐츠들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 독립변수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적합한 수단을 사용하여 전달, 포워딩, 또는 송신될 수 있다.
일부 실시예들에서, 컴퓨터-판독가능 저장 디바이스들, 매체들, 및 메모리들은 비트 스트림 등을 포함하는 무선 신호 또는 케이블을 포함할 수 있다. 그러나, 언급될 때, 비-일시적 컴퓨터-판독가능 저장 매체들은 에너지, 캐리어 신호들, 전자파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
본 명세서에서 제공되는 실시예들 및 예들의 철저한 이해를 제공하기 위해, 특정 세부사항들이 위의 설명에서 제공된다. 그러나, 실시예들이 이들 구체적인 세부사항들 없이 실시될 수 있다는 것이 당업자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 예시들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어로 구현되는 방법의 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 기능 블록들을 포함하는 개별 기능 블록들을 포함하는 것으로 제시될 수 있다. 도면들에 도시되고 그리고/또는 본 명세서에 설명되는 것들 이외의 부가적인 컴포넌트들이 사용될 수 있다. 예를 들어, 불필요한 세부사항으로 실시예들을 모호하게 하지 않기 위해 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 블록도 형태로 컴포넌트들로서 도시될 수 있다. 다른 예시들에서, 잘-알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기법들은 실시예들을 불명료하게 하는 것을 피하기 위해 불필요한 세부사항 없이 도시될 수 있다.
개별 실시예들은 흐름도, 흐름 다이어그램, 데이터 흐름 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시된 프로세스 또는 방법으로서 위에서 설명될 수 있다. 흐름도가 순차적인 프로세스로서 동작들을 설명할 수 있지만, 동작들의 대부분은 병렬로 또는 동시에 수행될 수 있다. 부가적으로, 동작들의 순서는 재배열될 수 있다. 프로세스는 그의 동작들이 완료될 때 종료되지만, 도면에 포함되지 않은 부가적인 단계들을 가질 수 있다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그의 종료는 호출 함수 또는 메인 함수로의 함수의 복귀에 대응할 수 있다.
위에서-설명된 예들에 따른 프로세스들 및 방법들은 컴퓨터-판독가능 매체들로부터 저장되거나 그렇지 않으면 컴퓨터-판독가능 매체들로부터 이용가능한 컴퓨터-실행가능 명령들을 사용하여 구현될 수 있다. 그러한 명령들은, 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터 또는 프로세싱 디바이스로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하거나 그렇지 않으면 이들을 수행하도록 범용 컴퓨터, 특수 목적 컴퓨터 또는 프로세싱 디바이스을 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 리소스들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행가능 명령들은, 예를 들어 어셈블리 언어, 펌웨어, 소스 코드 등과 같은 이진수들, 중간 포맷 명령들일 수 있다. 명령들, 사용된 정보, 및/또는, 설명된 예들에 따른 방법들 동안 생성된 정보를 저장하기 위해 사용될 수 있는 컴퓨터-판독가능 매체들의 예들은 자기 또는 광학 디스크들, 플래시 메모리, 비-휘발성 메모리가 제공된 USB 디바이스들, 네트워킹된 저장 디바이스들 등을 포함한다.
이러한 개시내용들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어들, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 폼 팩터를 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현될 때, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예를 들어, 컴퓨터-프로그램 제품)은 컴퓨터-판독가능 또는 기계-판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 태스크들을 수행할 수 있다. 폼 팩터들의 통상적인 예들은 랩톱들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 개인용 컴퓨터들, 개인 휴대 정보 단말들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본 명세서에 설명되는 기능은 또한 주변기기들 또는 애드인(add-in) 카드들로 구현될 수 있다. 그러한 기능은 또한 추가적인 예로서, 단일 디바이스에서 실행되는 상이한 프로세스들 또는 상이한 칩들 사이의 회로 보드 상에서 구현될 수 있다.
명령들, 그러한 명령들을 전달하기 위한 매체들, 명령들을 실행하기 위한 컴퓨팅 리소스들, 및 그러한 컴퓨팅 리소스들을 지원하기 위한 다른 구조들은 본 개시내용에 설명되는 기능들을 제공하기 위한 예시적인 수단들이다.
전술한 설명에서, 본 출원의 양태들은 본 출원의 특정 실시예들을 참조하여 설명되지만, 당업자들은 본 출원이 이에 제한되지 않는다는 것을 인식할 것이다. 따라서 본 출원의 예시적인 실시예들이 본 명세서에 상세히 설명되었지만, 본 발명의 개념들은 다른 식으로 다양하게 구현 및 이용될 수 있고, 첨부된 청구항들은 종래 기술에 의해 제한된 것을 제외하면, 그러한 변형들을 포함하는 것으로 해석되도록 의도된다는 것이 이해되어야 한다. 위에서 설명된 애플리케이션의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 사용될 수 있다. 추가로, 실시예들은, 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않으면서, 본 명세서에 설명된 것들 이외의 임의의 수의 환경들 및 애플리케이션들에서 이용될 수 있다. 따라서, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다. 예시의 목적들을 위해, 방법들은 특정 순서로 설명되었다. 대안적인 실시예들에서, 방법들이 설명된 것과 상이한 순서로 수행될 수 있다는 것이 인식되어야 한다.
당업자는 본 명세서에서 사용된 미만("<") 및 초과(">") 심볼들 또는 용어가 본 개시내용의 범위를 벗어나지 않으면서 이하("≤") 및 이상("≥") 심볼들로 각각 대체될 수 있다는 것을 인식할 것이다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 설명되는 경우, 그러한 구성은, 예를 들어 동작을 수행하도록 전자 회로들 또는 다른 하드웨어를 설계함으로써, 동작을 수행하도록 프로그래밍가능 전자 회로들(예를 들어, 마이크로프로세서들, 또는 다른 적합한 전자 회로들)을 프로그래밍함으로써, 또는 이들의 임의의 조합에 의해 달성될 수 있다.
어구 "~에 커플링된"은 다른 컴포넌트에 직접적으로 또는 간접적으로 물리적으로 연결된 임의의 컴포넌트, 및/또는, 다른 컴포넌트와 직접적으로 또는 간접적으로 통신하는(예를 들어, 유선 또는 무선 연결, 및/또는 다른 적합한 통신 인터페이스를 통해 다른 컴포넌트에 연결된) 임의의 컴포넌트를 지칭한다.
세트 "중 적어도 하나" 또는 세트 "중 하나 이상"을 언급하는 청구항 언어 또는 다른 언어는 세트의 하나의 멤버 또는 세트의 다수의 멤버들이 (임의의 조합으로) 청구항을 만족시키는 것을 표시한다. 예를 들어, "A 및 B 중 적어도 하나"를 언급하는 청구항 언어는 A, B, 또는 A와 B를 의미한다. 다른 예에서, "A, B 및 C 중 적어도 하나"를 언급하는 청구항 언어는 A, B, C, 또는 A와 B, 또는 A와 C, 또는 B와 C, 또는 A와 B와 C를 의미한다. 언어로서, 세트 "중 적어도 하나" 및/또는 세트 중 "하나 이상"은 세트를 그 세트에 열거된 항목들로 제한하지 않는다. 예를 들어, "A 및 B 중 적어도 하나"를 인용하는 청구항 언어는 A, B, 또는 A 및 B를 의미할 수 있고, A 및 B 의 세트에 열거되지 않은 항목들을 부가적으로 포함할 수 있다.
본 명세서에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합들로 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능 관점들에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지는 특정 애플리케이션, 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들이 본 출원의 범위를 벗어나게 하는 것으로서 해석되지는 않아야 한다.
본 명세서에 설명된 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 그러한 기법들은 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 적용을 포함하여 다수의 용도들을 갖는 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들 또는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 특징부들은 통합 로직 디바이스로 함께 구현될 수 있거나, 또는 별개이지만 상호운용가능 로직 디바이스들로서 개별적으로 구현될 수 있다. 소프트웨어로 구현되면, 기법들은, 실행될 때 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터-판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수 있다. 컴퓨터-판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터-판독가능 매체는 메모리 또는 데이터 저장 매체들, 이를테면 RAM(random access memory), 이를테면 SDRAM(synchronous dynamic random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리, 자기 또는 광학 데이터 저장 매체들 등을 포함할 수 있다. 부가적으로 또는 대안적으로, 기법들은, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 반송 또는 전달하고, 컴퓨터, 이를테면 전파 신호들 또는 파들에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수 있다.
프로그램 코드는, 하나 이상의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 또는 다른 동등한 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수 있는 프로세서에 의해 실행될 수 있다. 그러한 프로세서는 본 개시내용에서 설명되는 기법들 중 임의의 기법을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만; 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어 DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 따라서, 본 명세서에서 사용된 바와 같이, 용어 "프로세서"는, 본 명세서에 설명된 기법들의 구현에 적합한 전술한 구조, 전술한 구조의 임의의 조합, 또는 임의의 다른 구조 또는 장치 중 임의의 것을 지칭할 수 있다. 부가적으로, 일부 양태들에서, 본 명세서에 설명된 기능은, 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에서 제공되거나, 또는 결합된 비디오 인코더-디코더(CODEC)에 통합될 수 있다.
본 개시내용의 예시적인 양태들은 다음을 포함한다:
양태 1: 이미지 데이터를 프로세싱하기 위한 장치로서, 장치는, 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함하며, 하나 이상의 프로세서들은, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 것으로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하고; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하고; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하고; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하는 것으로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하고; 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하도록 구성된다.
양태 2: 양태 1의 장치에 있어서, 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하기 위해, 하나 이상의 프로세서들은 트레이닝된 네트워크를 사용하여 초해상도 프로세스를 수행하도록 구성된다.
양태 3: 양태 2의 장치에 있어서, 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다.
양태 4: 양태 1 내지 양태 3 중 어느 한 양태의 장치에 있어서, 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하기 위해, 하나 이상의 프로세서들은 보간 프로세스를 수행하도록 구성된다.
양태 5: 양태 4의 장치에 있어서, 보간 프로세스는, 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅 보간, 바이큐빅 보간, 트리큐빅 보간, 스플라인 보간, 랑조스 보간, 싱크 보간, 푸리에-기반 보간, 및 에지-지향 보간 중 적어도 하나를 포함한다.
양태 6: 양태 1 내지 양태 5 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은, 현저성 맵에 기초하여 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하도록 구성되며, 현저성 맵은 제1 구역을 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함한다.
양태 7: 양태 6의 장치에 있어서, 하나 이상의 프로세서들은 입력 이미지의 각각의 픽셀에 대해 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 입력 이미지에 기초하여 현저성 맵을 생성하도록 구성된다.
양태 8: 양태 6 또는 양태 7의 장치에 있어서, 복수의 픽셀들 중의 픽셀에 대한 현저성 맵의 현저성 값은 복수의 픽셀들 중의 픽셀과 다른 픽셀들 사이의 거리에 기초한다.
양태 9: 양태 6 내지 양태 8 중 어느 한 양태의 장치에 있어서, 현저성 맵을 생성하기 위해, 하나 이상의 프로세서들은 부가적인 트레이닝된 네트워크를 입력 이미지에 적용하도록 구성된다.
양태 10: 양태 9의 장치에 있어서, 부가적인 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다.
양태 11: 양태 1 내지 양태 10 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 입력 이미지를 복수의 블록들로 파티셔닝하도록 구성된다.
양태 12: 양태 11의 장치에 있어서, 복수의 블록들의 각각의 블록은 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는다.
양태 13: 양태 11의 장치에 있어서, 복수의 블록들은 제1 복수의 블록들 및 제2 복수의 블록들을 포함하며, 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖고, 제1 복수의 블록들은 픽셀들의 수 및 형상 중 적어도 하나에 기초하여 제2 복수의 블록들과 상이하다.
양태 14: 양태 11 내지 양태 13 중 어느 한 양태의 장치에 있어서, 입력 이미지의 제1 구역을 수정하기 위해, 하나 이상의 프로세서들은 입력 이미지의 제1 구역에 대응하는 복수의 블록들의 제1 서브세트를 제1 해상도로부터 제2 해상도로 수정하기 위해 제1 프로세스를 사용하도록 구성된다.
양태 15: 양태 11 내지 양태 14 중 어느 한 양태의 장치에 있어서, 입력 이미지의 제2 구역을 수정하기 위해, 하나 이상의 프로세서들은 입력 이미지의 제2 구역에 대응하는 복수의 블록들의 제2 서브세트를 수정하기 위해 제2 프로세스를 사용하도록 구성된다.
양태 16: 양태 11 내지 양태 15 중 어느 한 양태의 장치에 있어서, 입력 이미지의 제1 구역을 수정하고 입력 이미지의 제2 구역을 수정하기 위해, 하나 이상의 프로세서들은 복수의 블록들 각각의 제1 해상도를 제2 해상도로 증가시키기 위해 복수의 블록들 각각을 수정하도록 구성된다.
양태 17: 양태 11 내지 양태 16 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성하도록 구성된다.
양태 18: 양태 1 내지 양태 17 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 디블록킹 필터를 출력 이미지에 적용함으로써 적어도 부분적으로 출력 이미지를 수정하도록 구성된다.
양태 19: 양태 1 내지 양태 18 중 어느 한 양태의 장치에 있어서, 제2 해상도는 디스플레이의 해상도에 기초하고, 하나 이상의 프로세서들은 디스플레이 상에서 출력 이미지를 디스플레이하도록 구성된다.
양태 20: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 디스플레이를 더 포함하며, 출력 이미지를 출력하기 위해, 하나 이상의 프로세서들은 출력 이미지로 하여금 디스플레이 상에서 디스플레이되게 하도록 구성된다.
양태 21: 양태 1 내지 양태 20 중 어느 한 양태의 장치에 있어서, 입력 이미지를 캡처하도록 구성된 이미지 센서를 더 포함하며, 입력 이미지를 획득하기 위해, 하나 이상의 프로세서들은 이미지 센서로부터 입력 이미지를 수신하도록 구성된다.
양태 22: 양태 1 내지 양태 21 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 적어도 하나의 사용자 입력을 수신하고; 적어도 하나의 사용자 입력에 기초하여 제1 구역 및 제2 구역 중 적어도 하나를 수정하도록 구성된다.
양태 23: 양태 1 내지 양태 22 중 어느 한 양태의 장치에 있어서, 통신 수신기를 더 포함하며, 입력 이미지를 획득하기 위해, 하나 이상의 프로세서들은 통신 수신기를 통해 전송자 디바이스로부터 입력 이미지를 수신하도록 구성된다.
양태 24: 양태 1 내지 양태 23 중 어느 한 양태의 장치에 있어서, 통신 송신기를 더 포함하며, 출력 이미지를 출력하기 위해, 하나 이상의 프로세서들은 통신 송신기를 통해 출력 이미지를 수신자 디바이스에 송신하도록 구성된다.
양태 25: 양태 1 내지 양태 24 중 어느 한 양태의 장치에 있어서, 출력 이미지는 비디오 프레임들의 시퀀스의 일부로서 출력된다.
양태 26: 양태 25의 장치에 있어서, 출력 이미지는 미리보기 스트림에서 디스플레이된다.
양태 27: 양태 1 내지 양태 26 중 어느 한 양태의 장치에 있어서, 입력 이미지의 제1 구역은 제1 구역이 제2 구역보다 현저하다고 결정하는 것에 기초하여 제1 프로세스를 사용하여 수정된다.
양태 28: 이미지 데이터를 프로세싱하는 방법으로서, 제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 단계로서, 제1 구역 및 제2 구역은 제1 해상도를 갖는, 입력 이미지를 획득하는 단계; 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 단계; 제1 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하는 단계; 제2 구역의 제1 해상도를 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하는 단계로서, 제2 프로세스는 제1 프로세스와 상이한, 제2 구역을 수정하는 단계; 및 수정된 제1 구역 및 수정된 제2 구역을 포함하는 출력 이미지를 출력하는 단계를 포함한다.
양태 29: 양태 28의 방법에 있어서, 제1 프로세스를 사용하여 입력 이미지의 제1 구역을 수정하는 단계는 트레이닝된 네트워크를 사용하여 초해상도 프로세스를 수행하는 단계를 포함한다.
양태 30: 양태 29의 방법에 있어서, 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다.
양태 31: 양태 28 내지 양태 30 중 어느 한 양태의 방법에 있어서, 제2 프로세스를 사용하여 입력 이미지의 제2 구역을 수정하는 단계는 보간 프로세스를 수행하는 단계를 포함한다.
양태 32: 양태 31의 방법에 있어서, 보간 프로세스는, 최근접 이웃 보간, 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅 보간, 바이큐빅 보간, 트리큐빅 보간, 스플라인 보간, 랑조스 보간, 싱크 보간, 푸리에-기반 보간, 및 에지-지향 보간 중 적어도 하나를 포함한다.
양태 33: 양태 28 내지 양태 32 중 어느 한 양태의 방법에 있어서, 현저성 맵에 기초하여 입력 이미지의 제1 구역이 입력 이미지의 제2 구역보다 현저하다고 결정하는 단계를 더 포함하며, 현저성 맵은 제1 구역을 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함한다.
양태 34: 양태 33의 방법에 있어서, 입력 이미지의 각각의 픽셀에 대해 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 입력 이미지에 기초하여 현저성 맵을 생성하는 단계를 더 포함한다.
양태 35: 양태 33 또는 양태 34의 방법에 있어서, 복수의 픽셀들 중의 픽셀에 대한 현저성 맵의 현저성 값은 복수의 픽셀들 중의 픽셀과 다른 픽셀들 사이의 거리에 기초한다.
양태 36: 양태 33 내지 양태 35 중 어느 한 양태의 방법에 있어서, 현저성 맵을 생성하는 단계는 부가적인 트레이닝된 네트워크를 입력 이미지에 적용하는 단계를 포함한다.
양태 37: 양태 36의 방법에 있어서, 부가적인 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함한다.
양태 38: 양태 28 내지 양태 37 중 어느 한 양태의 방법에 있어서, 입력 이미지를 복수의 블록들로 파티셔닝하는 단계를 더 포함한다.
양태 39: 양태 38의 방법에 있어서, 복수의 블록들의 각각의 블록은 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는다.
양태 40: 양태 38의 방법에 있어서, 복수의 블록들은 제1 복수의 블록들 및 제2 복수의 블록들을 포함하며, 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖고, 제1 복수의 블록들은 픽셀들의 수 및 형상 중 적어도 하나에 기초하여 제2 복수의 블록들과 상이하다.
양태 41: 양태 38 내지 양태 40 중 어느 한 양태의 방법에 있어서, 입력 이미지의 제1 구역을 수정하는 단계는 입력 이미지의 제1 구역에 대응하는 복수의 블록들의 제1 서브세트를 제1 해상도로부터 제2 해상도로 수정하기 위해 제1 프로세스를 사용하는 단계를 포함한다.
양태 42: 양태 38 내지 양태 41 중 어느 한 양태의 방법에 있어서, 입력 이미지의 제2 구역을 수정하는 단계는 입력 이미지의 제2 구역에 대응하는 복수의 블록들의 제2 서브세트를 수정하기 위해 제2 프로세스를 사용하는 단계를 포함한다.
양태 43: 양태 38 내지 양태 42 중 어느 한 양태의 방법에 있어서, 입력 이미지의 제1 구역을 수정하는 단계 및 입력 이미지의 제2 구역을 수정하는 단계는 복수의 블록들 각각의 제1 해상도를 제2 해상도로 증가시키기 위해 복수의 블록들 각각을 수정하는 단계를 포함한다.
양태 44: 양태 38 내지 양태 43 중 어느 한 양태의 방법에 있어서, 복수의 블록들 각각을 수정한 이후 복수의 블록들을 병합함으로써 적어도 부분적으로 출력 이미지를 생성하는 단계를 더 포함한다.
양태 45: 양태 28 내지 양태 44 중 어느 한 양태의 방법에 있어서, 디블록킹 필터를 출력 이미지에 적용함으로써 적어도 부분적으로 출력 이미지를 수정하는 단계를 더 포함한다.
양태 46: 양태 28 내지 양태 45 중 어느 한 양태의 방법에 있어서, 제2 해상도는 디스플레이의 해상도에 기초하며, 디스플레이 상에서 출력 이미지를 디스플레이하는 단계를 더 포함한다.
양태 47: 양태 28 내지 양태 46 중 어느 한 양태의 방법에 있어서, 출력 이미지를 출력하는 단계는 출력 이미지로 하여금 디스플레이 상에서 디스플레이되게 하는 단계를 포함한다.
양태 48: 양태 28 내지 양태 47 중 어느 한 양태의 방법에 있어서, 입력 이미지를 획득하는 단계는 이미지 센서로부터 입력 이미지를 수신하는 단계를 포함한다.
양태 49: 양태 28 내지 양태 48 중 어느 한 양태의 방법에 있어서, 적어도 하나의 사용자 입력을 수신하는 단계; 및 적어도 하나의 사용자 입력에 기초하여 제1 구역 및 제2 구역 중 적어도 하나를 수정하는 단계를 더 포함한다.
양태 50: 양태 28 내지 양태 49 중 어느 한 양태의 방법에 있어서, 입력 이미지를 획득하는 단계는 통신 수신기를 통해 전송자 디바이스로부터 입력 이미지를 수신하는 단계를 포함한다.
양태 51: 양태 28 내지 양태 50 중 어느 한 양태의 방법에 있어서, 출력 이미지를 출력하는 단계는 통신 송신기를 통해 출력 이미지를 수신자 디바이스에 송신하는 단계를 포함한다.
양태 52: 양태 28 내지 양태 51 중 어느 한 양태의 방법에 있어서, 출력 이미지는 비디오 프레임들의 시퀀스의 일부로서 출력된다.
양태 53: 양태 52의 방법에 있어서, 출력 이미지는 미리보기 스트림에서 디스플레이된다.
양태 54: 양태 28 내지 양태 53 중 어느 한 양태의 방법에 있어서, 입력 이미지의 제1 구역은 제1 구역이 제2 구역보다 현저하다고 결정하는 것에 기초하여 제1 프로세스를 사용하여 수정된다.
양태 55. 명령들을 저장하는 컴퓨터-판독가능 저장 매체로서, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 양태 1 내지 양태 54 중 어느 한 양태에 따른 동작들을 수행하게 한다.
양태 56. 장치로서, 양태 1 내지 양태 54 중 어느 한 양태에 따른 동작들을 수행하기 위한 수단을 포함한다.

Claims (30)

  1. 이미지 데이터를 프로세싱하기 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 것으로서, 상기 제1 구역 및 상기 제2 구역은 제1 해상도를 갖는, 상기 입력 이미지를 획득하고;
    상기 입력 이미지의 상기 제1 구역이 상기 입력 이미지의 상기 제2 구역보다 현저(salient)하다고 결정하고;
    상기 제1 구역의 상기 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 상기 입력 이미지의 상기 제1 구역을 수정하고;
    상기 제2 구역의 상기 제1 해상도를 상기 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 상기 입력 이미지의 상기 제2 구역을 수정하는 것으로서, 상기 제2 프로세스는 상기 제1 프로세스와 상이한, 상기 제2 구역을 수정하고;
    수정된 상기 제1 구역 및 수정된 상기 제2 구역을 포함하는 출력 이미지를 출력하도록
    구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  2. 제1항에 있어서,
    상기 제1 프로세스를 사용하여 상기 입력 이미지의 상기 제1 구역을 수정하기 위해, 상기 하나 이상의 프로세서들은 트레이닝된 네트워크를 사용하여 초해상도(super resolution) 프로세스를 수행하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  3. 제2항에 있어서,
    상기 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크(convolutional neural network)들을 포함하는, 이미지 데이터를 프로세싱하기 위한 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제2 프로세스는 보간 프로세스인, 이미지 데이터를 프로세싱하기 위한 장치.
  5. 제4항에 있어서,
    상기 보간 프로세스는, 최근접 이웃 보간(nearest neighbor interpolation), 선형 보간, 이중선형 보간, 삼중선형 보간, 큐빅(cubic) 보간, 바이큐빅(bicubic) 보간, 트리큐빅(tricubic) 보간, 스플라인(spline) 보간, 랑조스(lanczos) 보간, 싱크(sinc) 보간, 푸리에-기반 보간, 및 에지-지향(edge-directed) 보간 중 적어도 하나를 포함하는, 이미지 데이터를 프로세싱하기 위한 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 하나 이상의 프로세서들은, 현저성 맵(saliency map)에 기초하여 상기 입력 이미지의 상기 제1 구역이 상기 입력 이미지의 상기 제2 구역보다 현저하다고 결정하도록 구성되며, 상기 현저성 맵은 상기 제1 구역을 상기 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함하는, 이미지 데이터를 프로세싱하기 위한 장치.
  7. 제6항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 입력 이미지의 각각의 픽셀에 대해 상기 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 상기 입력 이미지에 기초하여 상기 현저성 맵을 생성하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  8. 제6항 또는 제7항에 있어서,
    복수의 픽셀들 중의 픽셀에 대한 상기 현저성 맵의 현저성 값은 상기 복수의 픽셀들 중의 상기 픽셀과 다른 픽셀들 사이의 거리에 기초하는, 이미지 데이터를 프로세싱하기 위한 장치.
  9. 제6항 내지 제8항 중 어느 한 항에 있어서,
    상기 현저성 맵을 생성하기 위해, 상기 하나 이상의 프로세서들은,
    부가적인 트레이닝된 네트워크를 상기 입력 이미지에 적용하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  10. 제9항에 있어서,
    상기 부가적인 트레이닝된 네트워크는 하나 이상의 트레이닝된 콘볼루셔널 뉴럴 네트워크들을 포함하는, 이미지 데이터를 프로세싱하기 위한 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 입력 이미지를 복수의 블록들로 파티셔닝하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  12. 제11항에 있어서,
    상기 복수의 블록들의 각각의 블록은 상기 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는, 이미지 데이터를 프로세싱하기 위한 장치.
  13. 제11항에 있어서,
    상기 복수의 블록들은 제1 복수의 블록들 및 제2 복수의 블록들을 포함하며, 상기 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 상기 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖고, 상기 제1 복수의 블록들은 픽셀들의 수 및 형상 중 적어도 하나에 기초하여 상기 제2 복수의 블록들과 상이한, 이미지 데이터를 프로세싱하기 위한 장치.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 입력 이미지의 상기 제1 구역을 수정하기 위해, 상기 하나 이상의 프로세서들은 상기 입력 이미지의 상기 제1 구역에 대응하는 상기 복수의 블록들의 제1 서브세트를 상기 제1 해상도로부터 상기 제2 해상도로 수정하기 위해 상기 제1 프로세스를 사용하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 입력 이미지의 상기 제2 구역을 수정하기 위해, 상기 하나 이상의 프로세서들은 상기 입력 이미지의 상기 제2 구역에 대응하는 상기 복수의 블록들의 제2 서브세트를 수정하기 위해 상기 제2 프로세스를 사용하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서,
    상기 입력 이미지의 상기 제1 구역을 수정하고 상기 입력 이미지의 상기 제2 구역을 수정하기 위해, 상기 하나 이상의 프로세서들은,
    상기 복수의 블록들 각각의 상기 제1 해상도를 상기 제2 해상도로 증가시키기 위해 상기 복수의 블록들 각각을 수정하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 제2 해상도는 디스플레이의 해상도에 기초하고, 상기 하나 이상의 프로세서들은 상기 디스플레이 상에서 상기 출력 이미지를 디스플레이하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서,
    디스플레이를 더 포함하며, 상기 출력 이미지를 출력하기 위해, 상기 하나 이상의 프로세서들은 상기 출력 이미지로 하여금 상기 디스플레이 상에서 디스플레이되게 하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서,
    상기 입력 이미지를 캡처하도록 구성된 이미지 센서를 더 포함하며, 상기 입력 이미지를 획득하기 위해, 상기 하나 이상의 프로세서들은 상기 이미지 센서로부터 상기 입력 이미지를 수신하도록 구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서,
    상기 하나 이상의 프로세서들은,
    적어도 하나의 사용자 입력을 수신하고;
    상기 적어도 하나의 사용자 입력에 기초하여 상기 제1 구역 및 상기 제2 구역 중 적어도 하나를 수정하도록
    구성되는, 이미지 데이터를 프로세싱하기 위한 장치.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서,
    상기 출력 이미지는 비디오 프레임들의 시퀀스의 일부로서 출력되는, 이미지 데이터를 프로세싱하기 위한 장치.
  22. 제21항에 있어서,
    상기 출력 이미지는 미리보기 스트림에서 디스플레이되는, 이미지 데이터를 프로세싱하기 위한 장치.
  23. 이미지 데이터를 프로세싱하는 방법으로서,
    제1 구역 및 제2 구역을 포함하는 입력 이미지를 획득하는 단계로서, 상기 제1 구역 및 상기 제2 구역은 제1 해상도를 갖는, 상기 입력 이미지를 획득하는 단계;
    상기 입력 이미지의 상기 제1 구역이 상기 입력 이미지의 상기 제2 구역보다 현저하다고 결정하는 단계;
    상기 제1 구역의 상기 제1 해상도를 제2 해상도로 증가시키기 위해 제1 프로세스를 사용하여 상기 입력 이미지의 상기 제1 구역을 수정하는 단계;
    상기 제2 구역의 상기 제1 해상도를 상기 제2 해상도로 증가시키기 위해 제2 프로세스를 사용하여 상기 입력 이미지의 상기 제2 구역을 수정하는 단계로서, 상기 제2 프로세스는 상기 제1 프로세스와 상이한, 상기 제2 구역을 수정하는 단계; 및
    수정된 상기 제1 구역 및 수정된 상기 제2 구역을 포함하는 출력 이미지를 출력하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  24. 제23항에 있어서,
    상기 제1 프로세스를 사용하여 상기 입력 이미지의 상기 제1 구역을 수정하는 단계는 트레이닝된 네트워크를 사용하여 초해상도 프로세스를 수행하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  25. 제23항 또는 제24항에 있어서,
    상기 제2 프로세스를 사용하여 상기 입력 이미지의 상기 제2 구역을 수정하는 단계는 보간 프로세스를 수행하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
  26. 제23항 내지 제25항 중 어느 한 항에 있어서,
    상기 입력 이미지의 상기 제1 구역은 현저성 맵에 기초하여 상기 입력 이미지의 상기 제2 구역보다 현저하다고 결정되며, 상기 현저성 맵은 상기 제1 구역을 상기 제2 구역보다 현저한 것으로 식별하는 하나 이상의 현저성 값들을 포함하는, 이미지 데이터를 프로세싱하는 방법.
  27. 제26항에 있어서,
    상기 입력 이미지의 각각의 픽셀에 대해 상기 하나 이상의 현저성 값들의 개개의 현저성 값을 생성함으로써 적어도 부분적으로 상기 입력 이미지에 기초하여 상기 현저성 맵을 생성하는 단계를 더 포함하는, 이미지 데이터를 프로세싱하는 방법.
  28. 제23항 내지 제27항 중 어느 한 항에 있어서,
    상기 입력 이미지를 복수의 블록들로 파티셔닝하는 단계를 더 포함하며, 상기 복수의 블록들의 각각의 블록은 상기 복수의 블록들의 다른 블록들과 동일한 형상 및 동일한 수의 픽셀들을 갖는, 이미지 데이터를 프로세싱하는 방법.
  29. 제23항 내지 제27항 중 어느 한 항에 있어서,
    상기 입력 이미지를 제1 복수의 블록들 및 제2 복수의 블록들로 파티셔닝하는 단계를 더 포함하며, 상기 제1 복수의 블록들의 각각의 블록은 제1 형상 및 제1 수의 픽셀들을 갖고, 상기 제2 복수의 블록들의 각각의 블록은 제2 형상 및 제2 수의 픽셀들을 갖고, 상기 제1 복수의 블록들은 픽셀들의 수 및 형상 중 적어도 하나에 기초하여 상기 제2 복수의 블록들과 상이한, 이미지 데이터를 프로세싱하는 방법.
  30. 제23항 내지 제27항 중 어느 한 항에 있어서,
    상기 입력 이미지를 복수의 블록들로 파티셔닝하는 단계를 더 포함하며;
    상기 입력 이미지의 상기 제1 구역을 수정하는 단계는 상기 입력 이미지의 상기 제1 구역에 대응하는 상기 복수의 블록들의 제1 서브세트를 상기 제1 해상도로부터 상기 제2 해상도로 수정하기 위해 상기 제1 프로세스를 사용하는 단계를 포함하고;
    상기 입력 이미지의 상기 제2 구역을 수정하는 단계는 상기 입력 이미지의 상기 제2 구역에 대응하는 상기 복수의 블록들의 제2 서브세트를 수정하기 위해 상기 제2 프로세스를 사용하는 단계를 포함하는, 이미지 데이터를 프로세싱하는 방법.
KR1020247000603A 2021-07-15 2021-07-15 현저성에 기초한 초해상도 KR20240035992A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/106384 WO2023283855A1 (en) 2021-07-15 2021-07-15 Super resolution based on saliency

Publications (1)

Publication Number Publication Date
KR20240035992A true KR20240035992A (ko) 2024-03-19

Family

ID=84918919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247000603A KR20240035992A (ko) 2021-07-15 2021-07-15 현저성에 기초한 초해상도

Country Status (4)

Country Link
EP (1) EP4371057A1 (ko)
KR (1) KR20240035992A (ko)
CN (1) CN117642766A (ko)
WO (1) WO2023283855A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11244195B2 (en) * 2018-05-01 2022-02-08 Adobe Inc. Iteratively applying neural networks to automatically identify pixels of salient objects portrayed in digital images
CN110310229B (zh) * 2019-06-28 2023-04-18 Oppo广东移动通信有限公司 图像处理方法、图像处理装置、终端设备及可读存储介质
KR20210019835A (ko) * 2019-08-13 2021-02-23 한국전자통신연구원 방향 적응형 병렬 신경망을 이용한 초해상도 영상 생성 장치 및 방법
KR102624027B1 (ko) * 2019-10-17 2024-01-11 삼성전자주식회사 영상 처리 장치 및 방법

Also Published As

Publication number Publication date
WO2023283855A1 (en) 2023-01-19
EP4371057A1 (en) 2024-05-22
CN117642766A (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
US11983846B2 (en) Machine learning based image adjustment
US11776129B2 (en) Semantic refinement of image regions
US20210390747A1 (en) Image fusion for image capture and processing systems
US11895409B2 (en) Image processing based on object categorization
US11810256B2 (en) Image modification techniques
US11863729B2 (en) Systems and methods for generating synthetic depth of field effects
US20230388623A1 (en) Composite image signal processor
WO2023146698A1 (en) Multi-sensor imaging color correction
WO2023283855A1 (en) Super resolution based on saliency
US11363209B1 (en) Systems and methods for camera zoom
US20240144717A1 (en) Image enhancement for image regions of interest
US20230377096A1 (en) Image signal processor
KR20240067983A (ko) 이미지 수정 기법들
WO2024015691A1 (en) Removal of objects from images
WO2023140979A1 (en) Motion based exposure control for high dynamic range imaging