KR20210112345A - 멀티-영역 이미지 스캐닝 - Google Patents

멀티-영역 이미지 스캐닝 Download PDF

Info

Publication number
KR20210112345A
KR20210112345A KR1020217024570A KR20217024570A KR20210112345A KR 20210112345 A KR20210112345 A KR 20210112345A KR 1020217024570 A KR1020217024570 A KR 1020217024570A KR 20217024570 A KR20217024570 A KR 20217024570A KR 20210112345 A KR20210112345 A KR 20210112345A
Authority
KR
South Korea
Prior art keywords
region
image
scanning
candidate regions
user
Prior art date
Application number
KR1020217024570A
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 KR20210112345A publication Critical patent/KR20210112345A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/0035User-machine interface; Control console
    • H04N1/00405Output means
    • H04N1/00408Display of information to the user, e.g. menus
    • H04N1/0044Display of information to the user, e.g. menus for image preview or review, e.g. to help the user position a sheet
    • H04N1/00461Display of information to the user, e.g. menus for image preview or review, e.g. to help the user position a sheet marking or otherwise tagging one or more displayed image, e.g. for selective reproduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32101Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N1/32106Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title separate from the image data, e.g. in a different computer file
    • G06K9/3241
    • G06K9/342
    • G06K9/4604
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/12Edge-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/0035User-machine interface; Control console
    • H04N1/00405Output means
    • H04N1/00408Display of information to the user, e.g. menus
    • H04N1/00411Display of information to the user, e.g. menus the display also being used for user input, e.g. touch screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/21Intermediate information storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/21Intermediate information storage
    • H04N1/2166Intermediate information storage for mass storage, e.g. in document filing systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/3245Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document of image modifying data, e.g. handwritten addenda, highlights or augmented reality information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/325Modified version of the image, e.g. part of the image, image reduced in size or resolution, thumbnail or screennail
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3273Display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3274Storage or retrieval of prestored additional information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Analysis (AREA)

Abstract

카메라에 의해 캡처된 이미지는 스캐닝 애플리케이션에 의해 프로세싱되어 이미지 내에서 스캐닝을 위해 적합한 다수의 영역들을 식별할 수 있다. 이들 영역들은 자동으로 스캐닝하도록 검출 및 선택될 수 있다. 단일 이미지에 대한 캡처된 영역들은 개별 이미지 콘텐트 파일들로서 저장될 수 있다.

Description

멀티-영역 이미지 스캐닝
카메라들을 포함하는 컴퓨팅 디바이스들은 랩톱 컴퓨터들, 태블릿들, 디지털 카메라들, 스마트폰들뿐만 아니라, 다른 모바일 데이터, 메시징, 및/또는 통신 디바이스들을 포함하는 모바일 디바이스들에 있어서 점점 더 보편화되고 있다. 일반적으로, 사용자들은 컴퓨팅 디바이스들과 연관된 카메라들의 사용을 행하여 풍경, 사람들, 프레젠테이션(presentation)들, 화이트보드들, 명함(business card)들, 문서들, 스케치들, 페인팅들 등과 같은 다양한 사진들을 촬영한다. 사용자들은 캡처된 이미지들을 참조하여 다이어그램들, 사진들, 리스트들 및 다른 텍스트와 같은 내부에 포함된 정보를 불러오거나, 그리고/또는 이들을 다른 사용자들, 저장 서비스들, 또는 디바이스들에 전자적으로 전달할 수 있다. 그러나, 스캐닝을 통해 전자적으로 사용가능한 그리고/또는 편집가능한 정보를 획득하기 위해 이미지에서 특정 영역들을 추출하는 것이 도전과제로 남아 있다.
부가적으로, 사진은 전형적으로 사이즈가 상당히 크고 풍부한 텍스트 및 그래픽 정보를 포함하기 때문에, 디바이스에 의한 캡처를 위해 자동으로 선택된 이미지 영역이 사용자가 원하는 것이 아닐 수도 있거나 그리고/또는 단일 이미지에 다수의 관심있는 영역들이 있을 수도 있다. 사용자의 관심있는 아이템들 모두를 포함하는 이미지의 특정 부분의 인식은 비효율적이면서도 에러가 발생하기도 쉬웠다. 따라서, 이미지들의 효율적인 스캐닝뿐만 아니라, 사용자를 위한 이미지 영역 검출 및 선택 프로세스의 관리를 위한 새롭고 개선된 아이디어들에 대한 중요한 영역들이 남아 있다.
본 개시내용의 제1 양태에 따른 데이터 프로세싱 디바이스는 적어도 하나의 프로세서 및 하나 이상의 컴퓨터 판독가능 매체들을 포함한다. 컴퓨터 판독가능 매체들은 명령어들을 포함하는데, 이 명령어들은, 적어도 하나의 프로세서에 의해 실행될 때, 적어도 하나의 프로세서로 하여금, 이미지 스캐닝 애플리케이션을 통해 이미지를 수신하게 할 뿐만 아니라, 이미지에서 복수의 이산 후보 영역(discrete candidate region)들을 자동으로 검출하게 한다. 게다가, 이 명령어들은, 적어도 하나의 프로세서로 하여금, 스캐닝을 위해 복수의 이산 후보 영역들의 서브세트를 식별하게 하고 - 서브세트는 제1 영역 및 제2 영역을 포함함 -, 적어도 제1 영역 및 제2 영역의 스캐닝을 개시하기 위한 신호를 수신하게 한다. 부가적으로, 이 명령어들은, 적어도 하나의 프로세서로 하여금, 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 제1 영역 및 제2 영역을 캡처하게 하고, 적어도 제1 영역에 대응하는 제1 이미지 콘텐트 및 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들의 폴더에 저장하게 한다.
본 개시내용의 제2 양태에 따른 방법은, 이미지 스캐닝 애플리케이션을 통해 이미지를 수신하는 단계, 및 이미지에서 복수의 이산 후보 영역들을 자동으로 검출하는 단계를 포함한다. 게다가, 이 방법은, 스캐닝을 위해 복수의 이산 후보 영역들의 서브세트를 식별하는 단계 - 서브세트는 제1 영역 및 제2 영역을 포함함 -, 그리고 그 후에 적어도 제1 영역 및 제2 영역의 스캐닝을 개시하기 위한 신호를 수신하는 단계를 포함한다. 부가적으로, 이 방법은, 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 제1 영역 및 제2 영역을 캡처하는 단계, 그리고 그 후에 적어도 제1 영역에 대응하는 제1 이미지 콘텐트 및 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들의 폴더에 저장하는 단계를 수반한다.
본 개시내용의 제3 양태에 따른 데이터 프로세싱 시스템은, 이미지 스캐닝 애플리케이션을 통해 이미지를 수신하는 수단, 및 이미지에서 복수의 이산 후보 영역들을 자동으로 검출하는 수단을 포함한다. 부가적으로, 이 시스템은, 스캐닝을 위해 복수의 이산 후보 영역들의 서브세트를 식별하는 수단 - 서브세트는 제1 영역 및 제2 영역을 포함함 - 뿐만 아니라, 적어도 제1 영역 및 제2 영역의 스캐닝을 개시하기 위한 제1 신호를 수신하는 수단을 포함한다. 게다가, 이 시스템은, 제1 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 제1 영역 및 제2 영역을 캡처하는 수단, 및 적어도 제1 영역에 대응하는 제1 이미지 콘텐트 및 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들의 폴더에 저장하는 수단을 포함한다.
이 발명의 내용은 상세한 설명에서 아래에 추가로 설명되는 개념들 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 대상물(subject matter)의 핵심적인 피처(feature)들 또는 필수적인 피처들을 식별하도록 의도된 것도 아니고, 청구된 대상물의 범주를 제한하는 데 사용되도록 의도된 것도 아니다. 게다가, 청구된 대상물은 본 개시내용의 임의의 부분에서 언급된 임의의 또는 모든 단점들을 해결하는 구현들로 제한되지 않는다.
그려진 도면들은, 제한으로서가 아니라 단지 예로서, 본 교시들에 따른 하나 이상의 구현들을 묘사한다. 도면들에서, 동일한 참조 번호들은 동일한 또는 유사한 요소들을 지칭한다. 게다가, 도면들은 반드시 일정한 비율로 된 것은 아니라는 것이 이해되어야 한다.
도 1a 및 도 1b는 각각 이미지 스캐닝 애플리케이션 및 환경의 일 구현을 예시한다.
도 2는 스캐닝을 위해 이미지에서의 영역들을 관리하기 위한 분산형 컴퓨팅 환경의 하나의 구현을 예시하는 개념적 다이어그램이다.
도 3은 스캐닝 툴들 및 옵션들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 4는 사용자가 컴퓨팅 디바이스를 통한 스캐닝을 위해 이미지를 수신하는 일 예이다.
도 5a는 영역 검출 프로세스의 일 구현을 위한 이미지 세그먼트화 프로세스의 일 예이다.
도 5b는 선택된 이미지에서의 복수의 영역들을 스캐닝 툴들에 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 6a 및 도 6b는 도 5b의 복수의 영역들이 캡처되어 폴더에 저장된 스캐닝 툴들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 7a 및 도 7b는 스캐닝을 위해 제1 사용자 입력 및 제2 사용자 입력이 2개의 영역들이 선택해제되게 하는 스캐닝 툴들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 8은 선택된 채로 남아 있는 이들 영역들에 대해 스캐닝 툴들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 9a 및 도 9b는 스캐닝을 위해 제1 사용자 입력 및 제2 사용자 입력이 2개의 영역들이 선택되게 하는 스캐닝 툴들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 10은 사용자가 컴퓨팅 디바이스에 대한 스캐닝을 위해 이미지를 수신하는 일 예이다.
도 11은 이미지에서 복수의 영역들을 검출하도록 구성되는 애플리케이션에 의해 캡처되는 실세계 장면의 일 예이다.
도 12a 및 도 12b는 도 11의 복수의 영역들이 캡처되어 폴더에 저장된 스캐닝 툴들을 제공하도록 구성되는 애플리케이션에 대한 사용자 인터페이스의 일 구현을 예시하는 디스플레이 다이어그램이다.
도 13은 스캐닝 선택 툴에 대한 일 구현의 프로세스 플로 다이어그램(process flow diagram)이다.
도 14는 스캐닝 선택들을 관리하기 위한 프로세스의 일 구현을 예시하는 플로 다이어그램이다.
도 15는 본 명세서에서 설명되는 메커니즘들의 구현들을 제공하는 데 사용될 수도 있는 예시적인 컴퓨팅 디바이스의 블록 다이어그램이다.
도 16은 머신 판독가능 매체로부터의 명령어들을 판독하도록 구성되는 예시적인 머신의 컴포넌트들을 예시하는 블록 다이어그램이다.
다음의 상세한 설명에서, 관련 교시들의 완전한 이해를 제공하기 위해 수많은 특정 세부사항들이 예들로서 제시된다. 그러나, 본 교시들은 그러한 세부사항들 없이도 실시될 수도 있다는 것이 명백해야 한다. 다른 경우들에서, 잘 알려진 방법들, 프로시저들, 컴포넌트들, 및/또는 회로부는 본 교시들의 양태들을 불필요하게 모호하게 하는 것을 회피하기 위해 세부사항 없이 비교적 고레벨로 설명되었다.
다음의 구현들은 이미지에서의 모든 잠재적 스캐닝가능 영역들의 자동 검출을 제공함으로써 사용자 스캐닝 경험을 향상시킬 수도 있는 스캔 애플리케이션 툴박스를 소개한다. 스캐닝을 위한 영역을 식별하기 위해, 일부 애플리케이션들은 "쿼드(quad)" 또는 사각형 형상의 영역이라고 지칭되는 것을 검출할 수도 있다. 일부 경우들에서, 쿼드는, 임의의 다른 장면 아티팩트(artifact)들 또는 배경이 드롭 또는 제거된 문서 또는 다른 객체를 표현한다. 그러나, 전통적인 스캐닝 기반 애플리케이션들은 종종, 이미지들에서 원하지 않는 사각형 영역들을 지정하거나, 또는 사용자가 원하는 영역들을 검출하지 못한다. 게다가, 이미지에서 검출될 수도 있는 다수의 쿼드들이 있는 경우들에서, 사용자들은 사용자가 캡처하려고 의도한 모든 쿼드들을 획득하기 위해 수 회의 시도들을 행해야 한다. 전통적으로, 스캐닝 워크플로는, 사용자가 (1) 카메라를 실세계 장면으로 포인팅하고; (2) 사진을 촬영하고; (3) 관심있는 객체를 더 정밀하게 둘러싸기 위해 문서 또는 다른 객체 경계들을 크롭(crop) 또는 드래그하고; (4) 선택된 이미지 콘텐트를 클린 업(clean up)(필터, 원근 보정 등)하고; (5) 파일을 세이브(save)하거나 그리고/또는 스캐닝된 아이템을 공유할 수 있는 일련의 단계들을 포함하고 있다. 단일 실세계 장면에서 다수의 관심있는 객체들을 취득하는 것과 관련하여, 사용자들은 상기의 단계들을 반복하고, 동일한 장면에 있지만 아직 캡처되지 않은 다음의 관심있는 영역을 검출하는 쪽을 향해 애플리케이션을 가이드하려고 시도해야 한다. 이 프로세스는 금방 지루해지고 반복적일 수 있다. 개시된 구현들은, 사용자가, 스캐닝 애플리케이션을 통해 실시간(라이브)으로 캡처되고 - 추가의 사용자 입력 없이 - 애플리케이션에 의해 자동으로 검출된, 장면에서의 모든 이용가능한 스캐닝 후보 영역들을 나타낸 이미지 및/또는 이전에 캡처된 (정적) 이미지들을 뷰잉하게 한다. 스캐닝을 위해 이미지의 다수의 부분들을 캡처하도록 애플리케이션을 신속하고 효과적으로 지향시키는 능력은 사용자들이 전자 콘텐트를 처리할 때 워크플로 효율성을 증가시키게 할 수 있다. 게다가, 이 시스템은 더 큰 이미지를 뷰잉하면서 스캐닝가능 이미지 콘텐트의 다수의 구별되는 영역들의 존재 또는 가용성의 더 광범위한 인식을 사용자들에게 제공할 수 있다.
상기에 소개된 바와 같이, 다양한 애플리케이션들은 디지털 이미지들 또는 전자 콘텐트를 캡처 및/또는 편집하는 데 사용될 수 있다. 일반적으로, 용어 "전자 콘텐트" 또는 "이미지"는, 전자 문서, 미디어 스트림, 실시간 비디오 캡처, 실시간 이미지 디스플레이, 문서, 웹 페이지들, 하이퍼텍스트 문서, 임의의 이미지, 디지털 비디오 또는 비디오 레코딩, 애니메이션, 및 다른 디지털 데이터를 포함하지만 이에 제한되지 않는, 시각적으로 표현될 수도 있는 임의의 디지털 데이터를 포함한다. 일 예로서, 이 전자 콘텐트는, 이미지 캡처 및 사진 스캐닝 애플리케이션들, 또는 디지털 이미지들과 함께 사용하기 위한 툴들을 제공하도록 구성되는 다른 소프트웨어를 포함할 수도 있다.
게다가, 일부 타입들의 문서들 내에서, 전자 콘텐트는 이미지 콘텐트 영역들("콘텐트 영역들"), 또는 더 단순하게는, 영역들이라고 지칭될 하나 이상의 유닛들로 세그먼트화되거나 또는 이들을 포함하는 것으로 이해될 수 있다. 일반적으로, 용어 "영역"은 이미지의 구별되는 또는 이산 세그먼트들로서 식별가능한 그리고/또는 선택가능한 디지털 콘텐트의 부분들을 설명한다. 일 예로서, 하나의 콜렉션의 전자 콘텐트(예컨대, 디지털 사진)는, 하나 이상의 이미지 콘텐트 부분들("콘텐트 부분들")을 각각이 포함할 수도 있는 복수의 영역들로서 또는 이들에 의해 특성화될 수 있다. 상이한 구현들에서, 제1 이미지 콘텐트 영역은, 동일한 이미지에서의 다른 제2 이미지 콘텐트 영역의 일 부분과 오버랩될 수도 있다. 따라서, 콘텐트 영역은, 시스템에 의해 정의되거나 또는 식별가능할 수도 있는 전자 콘텐트의 임의의 부분을 포함한다. 예를 들어, 콘텐트 영역은 콘텐트 부분 자체의 특성으로부터 또는 다른 콘텐트 부분들(예를 들어, 컬러, 광도 레벨(luminosity level), 에지 검출, 형상, 심볼, 픽셀)과 관련하여 자동으로 식별될 수도 있거나, 또는 리뷰어 또는 최종 사용자(예를 들어, 선택된 세트의 픽셀들 또는 객체), 또는 디지털 이미지의 임의의 다른 선택된 부분에 의해 수동으로 정의될 수도 있다.
게다가, 하나의 예에서 최종 사용자(또는 "사용자")는, 전자 콘텐트에서의 선택된 영역들의 생성, 뷰잉, 또는 업데이팅을 포함하여, 전자 콘텐트의 피스(piece)들을 캡처, 편집, 뷰잉, 관리, 또는 삭제하는 사람이다. 최종 사용자는, 본 명세서에서 설명되는 장치 및 시스템들뿐만 아니라, 애플리케이션 프로그램들의 사용자를 포함한다. 게다가, 이 설명의 목적을 위해, 용어 "소프트웨어 애플리케이션", "소프트웨어", 또는 "애플리케이션"은, 컴퓨터 자체와 일반적으로 관련이 없는, 유용한 작업을 수행하는 컴퓨터 프로그램을 지칭한다. 소프트웨어 애플리케이션들의 일부 비제한적인 예들은, 사진 소프트웨어, 이미지 캡처/편집 애플리케이션들, 워드 프로세서들, 스프레드시트들, 슬라이드쇼들, 프레젠테이션 디자인 애플리케이션들, 회계 시스템들, 및 전기통신 프로그램들뿐만 아니라, 게이밍 소프트웨어, 유틸리티 및 생산성 툴들, 모바일 애플리케이션들, 프레젠테이션 그래픽들, 및 다른 생산성 소프트웨어를 포함한다.
개시된 피처들을 포함할 수도 있는 소프트웨어 애플리케이션은 클라이언트의 디바이스 상에 설치되거나, 또는 디바이스와 통신하도록 구성되는 웹-브라우저 애플리케이션과 같은 제3자 애플리케이션과 연관될 수도 있다. 이들 디바이스들은, 예를 들어, 데스크톱 컴퓨터들, 모바일 컴퓨터들, 모바일 통신 디바이스들(예컨대, 모바일 폰들, 스마트 폰들, 태블릿들 등), 스마트 텔레비전들, 게이밍 디바이스들, 셋톱 박스들, 및/또는 카메라 및/또는 이미지-디스플레이 능력을 포함하는 임의의 다른 컴퓨팅 디바이스들을 포함할 수 있다.
일반적으로, 그러한 스캐닝 애플리케이션들은, 최종 사용자들이, 디바이스와 연관된 카메라에 의해 캡처되는 이미지들을 사용하여 또는 메모리로부터 저장 또는 액세스되는 이미지들을 통해 문서들, 프레젠테이션들, 실세계 객체들, 및 다른 대상들을 스캐닝하도록 허용한다. 게다가, 일부 구현들에서, 카메라 기반 스캐닝 애플리케이션들은 종이, 명함들, 화이트보드들, 스크린들 등과 같은 직사각형 또는 다른 다각형 객체들에 대한 원근 효과들을 보정하도록 구성될 수 있다. 상이한 구현들에서, Microsoft Office Suite®에서 제공되는 프로그램들(예를 들어, Office Lens®, Powerpoint®, Visio®)과 같은 소프트웨어 애플리케이션들 및 다른 애플리케이션들은, 이미지에서의 상이한 영역들의 스캐닝 및 식별을 포함하는, 다양한 이미지 캡처링 및 편집 툴들을 제공할 수 있다. 다른 예들은 Microsoft Safety Scanner®, VueScan®, Picasa®, TWAIN®, Windows Fax and Scan®, PaperPort®, SilverFast®, Genius Scan®, TurboScan®, Scanner Pro®, Prizmo®, Google PhotoScans® 및 Helmut Film Scanner®, Google Drive®, Evernote Scannable®, Dropbox®, Scanbot®, CamScanner®, Photomyne®을 포함하고; 이들은 비제한적인 예들이고, 임의의 다른 전자 콘텐트 편집 또는 뷰잉 애플리케이션이 개시된 구현들로부터 이익을 얻을 수도 있다.
이미지의 스캐닝 동안, 스캐닝을 위해 이용가능한 다수의 잠재적 영역들이 있는 경우들에서 최종 사용자들이 느려지거나 또는 방해를 받을 수 있다. 하나의 예로서, 스캔 또는 스캐닝은, 애플리케이션이 사용자에게 관심있을 수도 있는 이미지에서의 특정 영역에 대한 경계를 식별, 선택, 격리, 또는 그렇지 않으면 결정하게 하는 메커니즘을 지칭한다. 따라서, 스캐닝은 실시간으로(예를 들어, 카메라가 장면 또는 객체(들)로 포인팅되는 동안) 그리고/또는 이미지 또는 비디오의 캡처, 생성, 또는 메모리에의 이들의 저장에 뒤이어 발생할 수도 있고, 이미지 내의 특정 영역의 고해상도 캡처를 허용하는 것으로 이해될 수도 있다. 다시 말해, 스캐닝은 일부 구현들에서 더 큰 캡처된 이미지 내의 더 작은 영역의 캡처를 수반할 수 있다.
다음의 구현들은 단일 이미지에서 다수의 스캐닝 후보 영역들을 검출하는 능력을 사용자들에게 제공하도록 구성된다. 일부 구현들에서, 다수의 쿼드들이 이미지에서 이용가능하거나 또는 검출되는 경우, 원하는 쿼드와 연관된 구역에서 사용자에 의한 손가락 탭은 '태핑된(tapped)' 영역과 연관된 잠재적 쿼드의 경계들(즉, 주변부(perimeter))을 결정하는 것을 돕도록 구성될 수 있다. 그러한 애플리케이션은 사용자들이 이들의 선정의 하나 또는 다수의 쿼드들을 캡처하는 것을 가능하게 한다. 따라서, 상이한 구현들에서, 사용자는 휴대용 디바이스의 카메라를 대상을 향해 조준하고 버튼, 보이스 커맨드, 터치, 스타일러스, 마우스, 방향 키들, 및/또는 다른 적합한 입력 디바이스들을 사용하여 대상의 이미지의 캡처 또는 레코딩을 개시할 수 있다. 대안적으로, 사용자가 메모리로부터의 이미지에 액세스할 수 있다. 애플리케이션에 의해 장면이 수신될 때, 실세계 장면의 영역들을 검출하기 위해 스캐닝 동작이 발생할 수 있다. 이미지 선택은 이미지의 다양한 프로세싱을 개시하여 모든 잠재적 스캐닝가능 영역들을 검출하고 이들 영역들을 사용자에게 제시하거나 그리고/또는 각각의 영역을 별개의 이산 이미지 콘텐트 파일로서 캡처하도록 진행할 수 있다.
독자에게 시스템들 및 방법들을 더 잘 소개하기 위해, 도 1a 및 도 1b는 멀티-영역 스캐닝 시스템을 구현하기 위한 대표적인 영역 선택 및 검출 스캐닝 환경의 일 예를 제시한다(시스템은 도 2에 더욱 상세히 개략적으로 예시된다). 상이한 구현들에서, 환경은, 이미지를 캡처, 뷰잉, 편집, 및/또는 수정할 수 있는 복수의 컴퓨팅 디바이스 최종 사용자들, 또는 단순히 "사용자들"(예를 들어, 제1 사용자, 제2 사용자, 제3 사용자 등)을 포함할 수 있다. 하나 이상의 사용자들이 사용자 디바이스를 통해 제시되는 이미지와 상호작용하거나 또는 이를 조작할 수 있다. 사용자들이 이미지와 같은 전자 콘텐트를 뷰잉함에 따라, 이미지의 다양한 영역들이 잠재적으로 스캐닝가능한 것(즉, 후보 영역들)으로서 검출되거나 또는 그렇지 않으면 식별될 수도 있다. 하나의 구현에서, 사용자는 단일 이미지에서 다수의 스캐닝가능 영역들을 식별하기를 원할 수도 있다.
도 1a에서, 제1 사용자(102)는 제1 실세계 장면("제1 장면")(104)을 향해 배향되는 제1 컴퓨팅 디바이스("제1 디바이스")(150)를 보유하고 있다. 제1 장면(104)은, 복수의 객체들(114)이 상부에 배열되는 테이블(112)을 포함한다. 이 예에서, 각각의 객체는 다양한 개인들 또는 조직들과 관련된 명함 또는 다른 개별 정보 세트들을 표현하는 것으로 이해될 수 있다. 여기서 제1 객체(130), 제2 객체(132), 제3 객체(134), 제4 객체(136), 제5 객체(138), 및 제6 객체(140)를 포함하는 각각의 객체는 다른 객체들로부터 분리되어 구별된다. 제1 디바이스(150)는 디스플레이(120)를 포함하고, 제1 디바이스(150)와 연관된 카메라 광학 렌즈들이 테이블(112)을 향해 포인팅됨에 따라, 제1 이미지 프리뷰(first image preview)("제1 이미지")(100)가 이미지 스캐닝 애플리케이션을 통해 디스플레이(120) 상에 제시된다. 제1 이미지(100)는, 상술된 바와 같이, 임의의 타입의 디지털 미디어 파일과 연관될 수 있다.
도 1b에 도시된 바와 같이, 제1 이미지(100)는, 제1 영역(170)(제1 객체(130)에 대응함), 제2 영역(172)(제2 객체(132)에 대응함), 제3 영역(174)(제3 객체(134)에 대응함), 제4 영역(176)(제5 객체(136)에 대응함), 제5 영역(178)(제5 객체(138)에 대응함), 및 제6 영역(180)(제6 객체(140)에 대응함)을 포함하는 복수의 이미지 섹터들 또는 후보 영역들(160)을 포함하는 디지털 이미지 프레임으로서 디스플레이(120) 상에서 프리뷰되고 있다. 이미지 섹터 또는 후보 영역은 잠재적 또는 가능한 스캐닝가능 영역을 지칭하는 것으로 이해될 수도 있다. 각각의 섹터는 여기서 작은 직사각형 형상(사각형 또는 "쿼드")으로 표현된다. 그러나, 다른 구현들에서, 섹터는 다른 규칙적 형상들, 예컨대 삼각형들, 원들, 오각형들, 및 상이한 기하학적 윤곽선들, 또는 다른 불규칙한 형상들에 의해 정의될 수도 있다. 이 예의 목적들을 위해 단지 6개의 섹터들만이 묘사되어 있지만, 이미지가 임의의 수의 섹터들을 포함할 수 있다. 부가적으로, 이 경우에 단순화의 목적들을 위해, 각각의 섹터 또는 쿼드는 실세계에서 별개의 아이템에 대응한다.
모든 구현들이 아닌 일부 구현들에서, 디스플레이(120)는 이미지 캡처 또는 이미지 스캐닝 애플리케이션을 통해 카메라의 시야에 있는 아이템들 또는 객체들의 라이브 프리뷰를 제시하기 위해 제1 디바이스(150)와 연관된 카메라로부터 데이터를 수신하도록 구성될 수 있다. 하나의 구현에서, 상기에 언급된 바와 같이, 애플리케이션은, 본 명세서에서 이미지 콘텐트 뷰잉 인터페이스("인터페이스")라고 지칭되는 그래픽 사용자 인터페이스를 이미지 프리뷰와 함께 또한 제공할 수 있다. 일부 구현들에서, 인터페이스는 디스플레이(120) 상에 또는 디스플레이(120)의 단지 일 부분 상에 '풀 스크린(full-screen)'으로 제시될 수 있다. 부가적으로, 일부 구현들에서, 인터페이스는 실질적으로 투명 또는 반투명할 수도 있어서, 스크린 또는 이미지와의 사용자 상호작용들이 애플리케이션에 의해 입력들로서 수신되는 한편, 다른 경우라면 이미지의 뷰를 방해할 부가적인 인터페이스 그래픽들의 중첩 없이 이미지 자체가 대부분 가시적인 채로 유지된다. 그러나, 다른 구현들에서, 이미지 캡처 애플리케이션은, 시각적 표시자들, 메뉴, 설정들, 또는 다른 옵션들과 같은, 이미지와 연관되거나, 그 위에 오버레이되거나, 또는 그에 인접한 다양한 그래픽 요소들을 제시할 수 있다.
일반적으로, 용어 "인터페이스"는 클라이언트 애플리케이션을 통해 애플리케이션 사용자에게 콘텐트를 통신하기 위한 메커니즘을 지칭하는 것으로 이해되어야 한다. 예를 들어, 인터페이스들은, 네이티브 애플리케이션 사용자 인터페이스(user interface)(UI)들, 컨트롤들, 작동가능 인터페이스들, 대화형 버튼들 또는 네이티브 애플리케이션 UI들을 통해 사용자에게 나타내어질 수도 있는 다른 객체들뿐만 아니라, 이들 네이티브 컨트롤들로 연관된 콘텐트를 제시하기 위한 특정 애플리케이션에 네이티브한 메커니즘들을 통해 사용자에게 제시될 수도 있는 팝업 윈도우들을 포함할 수도 있다. 게다가, "작동" 또는 "작동 이벤트"는, 애플리케이션 또는 디바이스의 디스플레이 또는 기능의 변경을 트리거할 수 있는, 손가락 탭, 키보드 커맨드, 보이스 커맨드, 또는 마우스 클릭과 같은, 인터페이스를 통한 애플리케이션의 특정 입력 또는 사용과 연관된 이벤트(또는 이벤트들의 특정 시퀀스)를 지칭한다.
일부 다른 구현들에서, 이미지 캡처 애플리케이션과 연관된 인터페이스는 이미지에서 검출된 임의의 스캐닝가능 영역들로 사용자를 가이드하기 위해 다양한 표시자들을 디스플레이 또는 제시하도록 구성될 수 있다. 예를 들어, 사용자 인터페이스는, 사용자가 임의의 검출된 영역들을 통해 쉽게 내비게이팅하도록 허용할 수 있거나 그리고/또는 다수의 또는 대안적인 후보 영역들이 동일한 이미지에서 이용가능함을 사용자에게 단순히 경고할 수 있는 시각적 큐(cue)들 또는 심볼들, 또는 다른 작동가능 옵션들을 디스플레이 또는 제시하도록 구성될 수도 있다. 일부 구현들에서, 검출된 영역들은 사용자가 이미지에서의 모든 후보 영역들을 한 번에 뷰잉할 수 있도록 실질적으로 동시적인 방식으로 하이라이트 또는 제시될 수 있다. 다른 구현들에서, 애플리케이션은 스캐닝을 위해 원하는 객체들을 표현할 가능성이 가장 높은 영역들만을 단지 검출하거나, 그리고/또는, 예를 들어, 사용자가 후속하여, 가능성이 더 낮은 다른 영역(들)의 검출을 위한 요청에 대응하는 일부 종류의 입력을 제공하는 경우에는 대안적인 또는 부가적인(2차) 영역들을 검출할 수도 있다.
게다가, 애플리케이션은, 본 명세서에서 설명되는 카메라 기반 스캐닝 기법들을 구현하는 디바이스(150)의 기능성을 포함할 수 있다. 인터페이스(190)는, 사진이 촬영되었거나 또는 스토리지(storage)로부터 액세스되고 있을 때 카메라로부터의 현재 이미지들을 제시하거나 그리고/또는 캡처된 이미지를 (즉, 메모리로부터) 제시하도록 스위칭할 수 있는 뷰파인더로서 예시된다. 부가적으로, 일부 구현들에서, 사용자는 디스플레이(120)의 뷰파인더 부분과의 상호작용을 통해 캡처된 이미지의 부분들을 수정 및/또는 선택하는 것이 가능할 수도 있다.
도 1b에서, 각각의 영역은 도 1a의 제1 장면(104)에서의 특정 피처, 객체, 또는 구역과 연관되거나 또는 이에 대응한다. 상이한 구현들에서, 검출된 영역과 연관된 경계가 하이라이트되거나 또는 그렇지 않으면 차별화되어, 영역이 검출되었음 그리고/또는 스캐닝을 위해 현재 선택됨을 사용자에게 경고한다. 도 1b에서, 영역들(160) 각각은 자동으로 검출되었고 시각적 표시자(190)(여기서는 영역들(160) 각각의 경계를 둘러싸는 볼드(bold) 또는 굵은 라인으로 표현됨)에 의해 식별된다. 그러나, 많은 경우들에서, 사용자는 애플리케이션에 의해 식별된 영역들과는 상이한 세트의 후보 영역들의 선택을 원할 수도 있다는 것이 인식될 수도 있다. 도 7a 내지 도 9b와 관련하여 아래에서 논의되는 바와 같이, 상이한 구현들에서, 시스템은, 다가올 스캐닝 동작에의 포함(또는 배제)을 위해 어떤 영역들을 원하는지를 표시하는 입력을 사용자로부터 수신하기 위한 프로비전(provision)들을 포함할 수 있다.
이 경우에, 사용자는 시스템에 의해 식별된 바와 같은 후보 영역들의 세트에 만족한다고 가정될 수 있다. 이에 따라, 입력 또는 변경들이 이루어지지 않는 미리 설정된 기간에 뒤이어 자동으로, 그리고/또는 스캐닝 동작을 시작하라는 요청에 대응하는 사용자에 의한 입력에 뒤이어, 시스템은 멀티-영역 스캐닝 동작을 진행할 수 있다. 아래에서 더욱 상세히 설명되는 바와 같이, 6개의 영역들(160)은 그 안에서 스캐닝을 위해 동시에 선택될 수도 있고 각각이 이산 파일로서 캡처될 수도 있다. 이 프로세스는 이미지로부터 원하는 콘텐트를 수집하는 데 필요한 시간을 크게 감소시킬 수 있다. 원하는 영역들 모두를 개별적으로 검출하기 위해 애플리케이션을 '다루려는' 시도들에서 사진을 재촬영하거나, 사진을 크롭하거나, 줌 인(zoom-in)하거나, 포커싱하거나, 조명 조건들을 조정하거나, 콘트라스트를 증가시키거나, 또는 다른 이미지 파라미터들을 조작하도록 사용자에게 요구하기보다는 오히려, 사용자는 카메라를 포인팅하는(또는 세이브된 이미지에 액세스하는) 것이 가능하고, 애플리케이션은 스캐닝을 위해 이용가능한 모든 후보 영역들을 자동으로 검출할 수 있다.
이제 도 2를 참조하면, 멀티-영역 검출 스캐닝 시스템("시스템")(200)의 대표적인 아키텍처의 일 예가 묘사되어 있다. 상이한 구현들에서, 시스템(200)은 전자 콘텐트의 디스플레이 및 스캐닝가능 영역들의 식별을 위한 사용자 인터페이스들을 제시하도록 구성될 수 있다. 시스템(200)은 사용자 입력에 기초하여 후보 영역들의 스캐닝 세트를 업데이트하도록 추가로 구성될 수 있다. 여기에 제시된 시스템(200)은 단지 예시적인 구현일 뿐이고, 명료성의 목적들을 위해 단지 일부 양태들만이 제시되며, 매우 다양한 다른 구현들이 가능하다는 것이 이해되어야 한다.
도 2에서, 시스템(200)은 디바이스(240)를 포함한다. 디바이스(240)는, 카메라들, 모바일 폰들, 태블릿들, 랩톱들, 데스크톱들, 게이밍 디바이스들, 프로젝터들, 및 다른 그러한 디바이스들과 같은, 이미지 및/또는 이미지 관련 콘텐트를 제시하는 것이 가능한 임의의 타입의 디바이스를 포함할 수 있다. 디바이스(240)는 매우 다양한 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수 있다. 스캐닝 애플리케이션(250)이 이 예에서 디바이스(240) 상에 로컬로 설치된 것으로서 예시되어 있지만, 다른 구현들에서, 스캐닝 애플리케이션(250)의 일부 또는 모든 양태들 또는 피처들은 다른 디바이스로부터 액세스되거나 또는 클라우드 저장 컴퓨팅 서비스들로부터 액세스될 수도 있다.
상이한 구현들에서, 스캐닝 애플리케이션(250)은 디바이스(240)를 통해 이미지 콘텐트(210)를 수신하도록 구성된다. 이미지 콘텐트(210)는 이전에 캡처되었거나 또는 '정적'일 - 메모리(214)(로컬, 외부, 또는 클라우드 기반 메모리)로부터 액세스되었을 - 수도 있거나 또는 '라이브' 이미지(212)일 수 있고 현재 프레임화되거나 또는 (예를 들어, 스캐닝 동작을 예상하여) 실시간으로 캡처될 수 있다. 이미지 콘텐트(210)는 이미지 프로세싱 모듈(252)을 통해 스캐닝 애플리케이션(250)에 의해 수신될 수 있는데, 이 이미지 프로세싱 모듈(252)은 이미지 콘텐트(210)의 데이터를 프로세싱하고, 대략 또는 실질적으로 사각형 형상의 객체들에 대응하는 이미지의 부분들을 검출하도록 구성된다. 특히, 이미지 프로세싱 모듈(252)은 스캐닝을 위한 잠재적 영역들로서 특성화될 수 있는 이미지 내의 사각형들을 식별하도록 구성될 수 있다. 이들 사각형들은 이미지들 및 다른 문서들 내에서 임의의 형상들을 발견하는 데 적합한 다양한 피처 추출 기법들을 사용하여 검출될 수 있다.
일부 구현들에서, 이미지 프로세싱 모듈은 클러스터링 알고리즘 또는 다른 이미지 세그먼트화 프로세서(254)를 포함한다. 도 5a를 참조하여 아래에서 논의되는 바와 같이, 이미지 세그먼트화 프로세서(254)는 주어진 픽셀이 전경 픽셀로서 분류되어야 하는지 또는 배경 픽셀로서 분류되어야 하는지 여부를 결정하기 위해 다양한 통계 기법들을 적용할 수 있다. 하나의 구현에서, 세그먼트화 알고리즘은 각각의 픽셀이 전경 또는 배경 픽셀일 가능성이 있는지 여부를 표현하는 픽셀당 확률 데이터의 세트를 출력할 수 있다. 픽셀 확률 데이터는, 픽셀 확률 데이터를 데이터 항으로서 사용하여 이미지를 세그먼트화된 이미지로 세그먼트화할 수 있는 글로벌 이진 세그먼트화 알고리즘(global binary segmentation algorithm)에 의해 추가로 프로세싱될 수 있다. 일부 구현들(도 5a 참조)에서, 이미지 세그먼트화 프로세서(254)는 또한, 입력 이미지의 픽셀들로부터 세그먼트화 표시자들(예를 들어, 전경, 배경의 라벨들)을 연관시킬 수 있다. 이들 세그먼트화 표시자들은 에지 검출기(256)로 전달될 출력 이미지를 생성하기 위해 입력 이미지를 수정 및/또는 프로세싱하는 데 사용될 수 있다.
다른 구현에서, 부가적인 프리-프로세싱(pre-processing)이 에지 검출에 앞서 발생할 수도 있다. 예를 들어, 시스템은 이미지 필터들의 적용, 콘트라스트의 향상, 밝기에 대한 조정들, 다운 스케일링, 그레이스케일 변환, 중앙값 필터링, 및 다른 타입들의 필터들을 위해 구성될 수 있다. 일부 구현들에서, 프리-프로세싱은 또한, 이미지의 다운 스케일링, 콘트라스트 향상, 및 노이즈 필터링 중 하나 이상을 포함할 수 있다. 다운 스케일링은 프로세싱되어야 할 픽셀들의 수 및 이미지의 해상도를 감소시키는 것을 도울 수 있다. 이미지의 해상도가 증가됨에 따라, 이미지를 프로세싱하는 데 더 많은 컴퓨팅 리소스들이 소비되고 에지 검출로부터 더 많은 잘못된(예를 들어, 원치 않는) 에지들이 발생할 수 있다. 이에 따라, 다운 스케일링은 프로세싱을 가속화시키고 개선된 에지 검출을 가능하게 할 수 있다. 게다가, 다른 구현에서, 콘트라스트 향상은 이미지에서 가장 밝은 톤들을 백색으로 설정하고 가장 어두운 톤들을 흑색으로 설정하기 위해 채용될 수 있다. 이것은 또한, 콘트라스트 및/또는 밝기의 급격한 차이들을 발견하는 검출 알고리즘을 통해 에지들 및 라인들의 검출을 개선시킬 수 있다. 일부 구현들에서, 양방향(bilateral) 및/또는 중앙값 필터링과 같은, 에지들을 보존하는 노이즈 필터링 기법들이 또한 채용될 수 있다.
상기에 언급된 바와 같이, 상이한 구현들에서, 시스템은 이미지 세그먼트화 프로세서(254)로부터 출력 이미지 콘텐트를 평가하기 위해 하나 이상의 에지 검출 모델들을 채용할 수 있다. 에지 검출기(256)는 밝기의 급격한 변화들과 같은 시각적 차이들에 기초하여 에지들을 검출하도록 동작가능한 에지 검출기 모델 또는 알고리즘을 포함하거나 또는 그렇지 않으면 이들의 사용을 행한다. 에지들이 식별되었을 때, 에지들이 연결된 라인들로 결합되어 사각형들을 형성할 수도 있다. 예를 들어, 에지 검출을 통해 정점들(코너들)이 식별될 수 있고 그 후에 정점들이 연결되어 사각형들을 형성할 수 있다. 이것은, 예를 들어, 검출된 에지들의 결함들에 대한 보정 그리고 에지들에 대응하는 라인들의 유도를 수반할 수 있다. 이에 따라, 검출된 에지들 및 라인들을 사용하여 잠재적 사각형들의 세트가 유도될 수 있고, 여기서 라인들은 특정 방향을 따라 유사하게 배향된 에지들로부터 검출된 후에 조합되어 사각형들을 형성한다. 클러스터링된(출력된) 이미지 콘텐트에 대한 에지 검출기(256)의 적용은 프로세싱 시간을 상당히 감소시키고 컴퓨팅 리소스들의 더 효율적인 사용을 행할 수 있다. 먼저 이미지에서 전경 픽셀들 또는 클러스터들을 식별함으로써, 에지 검출기(256)는 프리-프로세싱된 이미지 콘텐트의 수신으로부터 이익을 얻을 수 있다. 이미지의 모든 픽셀들에 걸쳐 에지 검출기를 실행하기보다는 오히려, 클러스터들은 사각형 탐색 및 검출 프로세스에 포커싱하고 이를 단축시킬 수 있다.
다음 단계로서, 일부 구현들에서, 프로세싱된 이미지 콘텐트는 쿼드 검출 모듈(262)로 전달될 수 있다. 쿼드 검출 모듈(262)은 이미지 프로세싱 모듈(252)에 의해 공유되는 데이터를 검토할 수 있고, 이 이미지에서의 스캐닝을 위해 어떤 에지들 및 사각형들이 지정되어야 하는지를 식별할 수 있다. 식별된 영역들은 쿼드 후보 영역 컴포넌트(266)에 제출되고, 사용자가 선택을 수정하지 않는 한, 다음 단계에서 스캐닝을 위해 타깃팅될 영역들을 포함할 것이다. 검출된 영역들은 시각적 표시자(들) 모듈(288)을 통해 시각적 표시자들에 의해 오버레이될 수 있고, 디바이스 디스플레이(290) 상의 프레젠테이션을 위해 쿼드 디스플레이 컴포넌트(266)에 제출될 수 있다.
상이한 구현들에서, 디바이스(240)는 사용자 입력 프로세서(270)를 통해 사용자 입력(202)을 수신하도록 추가로 구성된다. 사용자 입력(202)은 사용되는 입력 수단의 타입에 기초하여 광범위하게 달라질 수 있다. 도 2에서, 사용자 입력(202)은 사용자에 의해 뷰잉 또는 액세스되고 있는 이미지의 일부 특정 타깃 부분 또는 양태와 연관되거나 또는 이에 대응하는 것으로 이해될 수 있다. 하나의 구현에서, 사용자 입력 프로세서(270)는 입력이 검출된 후보 영역들 중 하나와 관련되는지 여부를 결정할 수 있다. 사용자 입력 모듈(274)에 의해 수신된 사용자 입력이 후보 영역을 구체적으로 선택(또는 선택해제)하는 경우, 입력은 제안된 영역 스캐닝 서브세트(272)를 수정하는 데 사용될 수 있다. 하나의 예로서, 사용자 입력은, 다가올 스캐닝 동작에의 포함(또는 제거)을 위해 사용자가 원하는 영역을 지정하는 마우스 클릭 또는 터치스크린 인터페이스 상의 터치를 포함할 수 있다. 이에 응답하여, 스캐닝 후보 영역들의 세트(영역 스캐닝 서브세트(272))가 변경될 것이다. 하나의 구현에서, 사용자에 의해 행해진 변경들은 시각적 표시자(들) 모듈(288)을 통해 업데이트된 시각적 표시자들에 의해 반영되고, 디바이스 디스플레이(290) 상의 프레젠테이션을 위해 쿼드 디스플레이 컴포넌트(266)에 재제출되어, 세트가 요청에 따라 수정되었음을 사용자에게 확인시킨다.
일단 이미지에서의 후보 영역들이 스캐닝을 위해 선택되었다면, 트리거(예를 들어, 사용자 입력, 또는 얼마간의 시간 경과)가 특정 스캐닝 서브세트(272)에 대해 스캐닝 동작이 시작되어야 함을 스캔 트리거 검출 모듈(290)에게 시그널링할 수 있다. 영역 캡처 모듈(292)이 개별 영역들 각각을 캡처할 수 있고, 이들 영역들(296)을 별개의 이미지 콘텐트(254) 파일들로서 프로세싱할 수 있다. 각각의 영역에 대한 이미지 콘텐트는 다른 애플리케이션들에 의한 또는 사용자에 의한 액세스를 위해 스토리지 모듈(298)에 세이브될 수 있다.
명확성의 목적들을 위해, 다수의 스캐닝가능 영역들의 선택 프로세스의 하나의 구현이 이제 도 3 내지 도 6b를 참조하여 제시될 것이다. 도 3에는, 제2 컴퓨팅 디바이스("제2 디바이스")(320)의 디스플레이(390) 상에서 나타내어지는 그래픽 사용자 인터페이스(graphical user interface)(GUI)로 표현되는 이미지 스캐닝 애플리케이션("애플리케이션")(300)이 묘사되어 있다. 상이한 구현들에서, 애플리케이션(300)은 GUI 및 다양한 사용자 인터페이스 요소들, 피처들, 및 컨트롤들의 디스플레이를 개시하여 카메라(예시되지 않음)를 통해 이미지들을 캡처하는 것, 이미지들의 스캐닝, 및/또는 프로세싱을 용이하게 하는 데 사용된다.
상이한 구현들에서, 시스템은, 특정 사용자 세션들 동안 카메라 및 애플리케이션에 대한 적절한 설정들을 확립하기 위해 사용자 입력들 및 선택들을 수신하기 위한 프로비전들을 포함할 수 있다. 도 3에 도시된 바와 같이, 예시의 목적들을 위해, 사용자가, 수 개의 캡처 모드들을 포함하여, 수 개의 옵션들이 제공되게 하는 애플리케이션 메뉴(312)에 액세스하는 것이 묘사되어 있다. 사용자는 스캐닝 모드 제목 아래의 하위 옵션들을 통해 내비게이팅하고, "멀티 영역" 모드(310)로 라벨링된 옵션을 선택한다. 각각의 하위 옵션은 장면 변화들 및 안정화들을 검출할 뿐만 아니라 선택된 설정에 대응하는 방식으로 관심있는 주요 영역들을 식별할 수 있는 시스템 구성을 활성화시키거나 또는 적용하도록 구성될 수 있다는 것이 이해될 수 있다. 이들 모드들은 카메라 동작의 기동 시에 사용자에게 제공되거나, 디폴트 모드로서 설정되거나, 그리고/또는 카메라 설정들에 링크된 원격 디바이스를 통해 변경될 수 있다. 여기서는 단지 몇 가지 하위 옵션들만이 제시되어 있지만, 사용자에 의해 커스텀-설계된 모드들을 포함하는 광범위한 다른 모드들이 가능하다.
다음으로 도 4를 참조하면, 제2 사용자(350)가 벽(402) 상의 게시판(404)을 포함하는 제2 실세계 장면("제2 장면")(400)을 관찰하는 것이 도시되어 있다. 제2 사용자(350)는 제1 디바이스(320)와 연관된 카메라 렌즈를 제2 장면(400)의 일 부분을 향해 포인팅 또는 지향시킨다. 제2 장면(400)의 타깃팅된 부분은, 다른 복수의 객체들(406)의 배열을 디스플레이하고 있는 게시판(404)이다. 이 예에서, 각각의 객체는 작은 포스터, 카드, 컷아웃(cutout), 인쇄물(printout), 문서, 또는 다른 개별 정보 표현을 표현하는 것으로 이해될 수 있다. 여기서 제1 객체(410), 제2 객체(412), 제3 객체(414), 제4 객체(416), 제5 객체(418), 제6 객체(420), 제7 객체(422), 제8 객체(424), 제9 객체(426), 제10 객체(428), 제11 객체(430), 제12 객체(432), 제13 객체(434), 제14 객체(436), 제15 객체(438), 제16 객체(440), 및 제17 객체(442)를 포함하는 각각의 객체가 다른 객체들로부터 분리되어 구별된다. 부가적으로, 제2 장면(400)은, 13개의 문자들(철자 "SHOW AND TELL")을 포함하는 레터링(450)과 같은, 사각형이 아닌 객체들을 포함한다.
많은 경우들에서, 사용자 자신이, 캡처 또는 뷰잉되는 실세계 장면의 '셋업'에 기여할 수도 있다. 예를 들어, 도 1a에서, 명함들은 스캐닝을 예상하여 로우(row)들 및 컬럼(column)들의 비교적 정돈되고 조직화되며 실질적으로 대칭적인 배열로 테이블 상에 포지셔닝되었다. 그러나, 다른 구현들에서, 실세계 장면에서의 객체들은 어떠한 실제 패턴 없이 더 아무렇게나 포지셔닝될 수 있거나, 그리고/또는 서로에 대해 불규칙한 배열로 제시된다. 이것은 도 4의 경우인 것으로 이해될 수 있는데, 여기서 객체들은 서로에 대해 다양한 각도들, 배향들, 및 포지션들로 게시판(404)에 압정으로 고정되거나 또는 테이핑된다. 부가적으로, 각각의 객체는 상이한 표면적 또는 내부 사이즈, 및 상이한 전체 형상(예를 들어, 평행사변형, 사다리꼴, 직사각형, 정사각형, 또는 다른 불규칙한 사각형) 또는 경계(예를 들어, 주변부 또는 윤곽선)를 갖는다. 여기서는 흑색 및 백색 도면으로 도시되어 있지만, 객체들은 또한 컬러들이 상이할 수도 있다. 일부 구현들에서, 본 명세서에서 설명되는 시스템들은 객체 배열의 방식에 관계없이 후보 영역들을 검출하도록 구성될 수 있다. 따라서, 애플리케이션은 그러한 임의적인 또는 비체계적인 배열들을 포함하는 이미지들을 수신하고, 후술되는 바와 같은, 자동 후보 영역 검출 프로세스를 진행할 수 있다.
상이한 구현들에서, 제안된 시스템들은, 이미지의 부분들을 식별하고 전경 객체들(예를 들어, 두드러진 아이템들)을 배경으로부터 분리시키기 위한 프로비전들을 포함할 수 있다. 일부 구현들에서, 이미지에서 다수의 후보 영역들을 검출하는 초기 단계가 클러스터링인데, 여기서 이미지 데이터는 클래스들 또는 클러스터들로 그룹화되어 클러스터 내의 객체들이 그들 사이에 높은 유사성을 갖지만, 다른 클러스터들에서의 객체들과는 매우 상이하다. 그러한 시나리오에서, 이미지가 공간 데이터세트로서 간주될 수 있고, 이미지 세그먼트화의 프로세스가 이미지를 연결된 세트의 픽셀들의 콜렉션으로 분할하기 시작하는 데 사용된다. 하나의 구현에서, 이미지 세그먼트화는, 이미지의 다양한 세기 및 텍스처 값들에 기초하여, 이미지 내에서 오버랩되지 않고 동종인 그룹들의 묘사를 발생시킬 수 있다. 세그먼트화 알고리즘은, 중앙값 필터와 같은 적절한 필터를 통과하기 위해 주어진 이미지의 노이즈 제거를 수반하는 프리-프로세싱 방법을 일부 구현들에서 채용할 수 있다.
이미지들에서의 배경 계층들로부터의 전경의 실질적인 실시간 세그먼트화는, 모션, 컬러, 콘트라스트, 및 이와 유사한 것을 포함하는 하나 이상의 인자들에 기초할 수도 있는 세그먼트화 프로세스에 의해 제공될 수도 있다. 세그먼트화 에러들을 감소시키기 위해, 컬러, 모션, 그리고 임의로 콘트라스트 정보가 확률적으로 융합되어 전경 및/또는 배경 계층들을 정확하고 효율적으로 추론할 수도 있다.
배경-전경 세그먼트화를 수행하기 위해 많은 상이한 알고리즘들이 존재하고, 그 대부분은 이미지에서의 픽셀들의 컬러 데이터에 의존한다. 이들 방법들은 전형적으로, 동일하거나 또는 유사한 컬러를 갖는 서로 가까운 픽셀들이 이미지에서 동일한 객체의 일부라는 가정 하에서 동작하고, 이것은 픽셀들의 특정 패턴들로 컬러 분포들 또는 그래디언트(gradient)들을 분석함으로써 통상적으로 결정된다. 다른 종래의 배경 전경 세그먼트화 시스템들은 카메라에 의해 제공되는 깊이 데이터를 사용하여 컬러 데이터에 비해 깊이 이미지의 더 작은 해상도를 활용한다. 구체적으로는, 많은 이미지 캡처 디바이스들은, 장면의 3D 공간을 형성할 수 있는 3D 또는 깊이 감지 카메라들(예컨대, RGBD 카메라들)을 또한 갖는다. 이것은, 삼각 측량 알고리즘들을 사용하여 장면에서의 포인트들에 대한 3D 공간 좌표들을 결정하여 장면에 대한 깊이 맵 또는 깊이 이미지를 형성하는, 스마트폰 또는 태블릿과 같은, 단일 디바이스 상의 카메라들 또는 센서들의 어레이를 갖는 입체 시스템을 사용함으로써 달성될 수 있다. 크로마 키 세그먼트화(chroma key segmentation)(크로마 키잉(chroma keying)), 배경 감산, K-평균 클러스터링(K-Means clustering), DBSCAN(Density-Based Spatial Clustering of Applications with Noise), 평균-시프트(Mean-Shift), 응집형 계층적 클러스터링(Agglomerative Hierarchical Clustering), 가우시안 혼합 모델들(Gaussian Mixture Models)(GMM)을 사용하는 기대치-최대화(Expectation-Maximization)(EM) 클러스터링, 또는 다른 이미지 세그먼트화 방법들을 포함하지만 이에 제한되지 않는, 세그먼트화된 이미지들을 생성하기 위한 다른 방법들도 또한 알려져 있다.
이 프로세스의 하나의 예가 도 5a에 개략적으로 표현된다. 도 4에 도시된 게시판(404) 및 그의 연관된 객체들이 세그먼트화된 뷰(500)를 포함하는 것으로 이해될 수도 있는 것으로 이제 제시된다. 장면은, 배경보다는 오히려, 전경 객체들과 같은, 이미지의 더 의미있는 구역들을 이상적으로 표현하는, 영역들의 세트로 분할되었다. 일부 구현들에서, 영역들은, 3D 산업 객체들의 이미지들에서 라인 세그먼트들 및 원호 세그먼트들과 같은 구조체들로 그룹화되는 보더 픽셀(border pixel)들의 세트들일 수도 있다. 세그먼트화된 영역들은, 원 또는 타원 또는 다각형과 같은 특정 형상과 보더 양측 모두를 갖는 픽셀들의 그룹들을 또한 지칭할 수도 있다. 예를 들어, 사용자가 멀티-영역 모드를 개시할 때, 더 두드러진 전경 영역들(510)이 배경 영역들(520)로부터 구별될 수도 있다. 시스템에 의해 사용되는 알고리즘은 다음 프로세싱 단계에서의 사용을 위해 전달 및/또는 저장될 수 있는 이미지 영역들의 세트를 생성할 것이라는 것이 이해될 수 있다. 세그먼트화된 데이터는 원본 이미지들, 라벨링된 이미지들, 경계 인코딩들, 쿼드-트리 데이터 구조체들, 속성 테이블들, 또는 다른 그러한 주석이 달린 이미지 데이터 상의 오버레이들로서 표현될 수 있다. 이 예에서, 클러스터들의 윤곽들 또는 보더들이 나타내어지는데, 이는 후속 에지 검출 프로세스들에 대한 참조로서 사용될 것이다. 참조의 목적들을 위해, 28개의 클러스터들의 세트가 식별되었다는 것이 도 5a에서 보여질 수 있다. 이 세트는, 도 4의 제2 장면(400)의 17개의 객체들 각각에 대응하는 클러스터들뿐만 아니라, 레터링(450)에서의 각각의 문자 객체에 대응하는 클러스터를 포함한다.
일부 구현들에서, 본 명세서에서 설명되는 시스템들은, 밝기의 급격한 변화들과 같은 시각적 차이들에 기초하여 에지들을 검출하도록 동작가능한 에지 검출기를 포함하거나 또는 그렇지 않으면 이의 사용을 행한다. 에지들이 식별되었을 때, 에지들이 연결된 라인들로 결합되어, 사각형 형상을 갖는 주변부를 형성할 수도 있다. 예를 들어, 정점들(코너들)이 에지 검출 메커니즘을 통해 식별될 수 있고, 이들 정점들이 연결 또는 매핑되어 사각형들을 형성할 수 있다. 그 결과, 검출된 에지들 및 라인들에 기초하여 잠재적 사각형 영역들의 세트가 유도될 수 있고, 여기서 라인들은 특정 방향을 따라 유사하게 배향된 에지들로부터 검출된 후에 조합되어 사각형들을 형성한다. 일부 구현들에서, 에지 검출기는, 전체 이미지보다는 오히려, 이전 단계에서 식별된 전경 클러스터들로 주로 또는 전체적으로 지향되어, 그에 의해 이미지를 평가하는 데 필요한 프로세싱 파워의 양을 상당히 감소시킬 뿐만 아니라 영역 검출 시간을 단축시킬 수 있다.
이 메커니즘의 일 예가 도 5b에 제시되는데, 여기서 제2 디바이스(320)의 카메라에 의해 수신되는 제2 장면(400)의 부분을 표현하는 제2 이미지 프리뷰("제2 이미지")(530)가 디스플레이(540) 상에 제시된다. 상이한 구현들에서, 일단 애플리케이션(300)의 스캔 또는 다중 영역 검출 피처가 활성화 또는 개시되었다면, 애플리케이션(300)은 이미지에서 스캐닝을 위한 영역들을 자동으로 검출하도록 구성될 수 있다. 그러나, 다른 구현들에서, 애플리케이션은 수동 모드와 능동 모드 사이의 어떠한 전이(transition)도 요구하지 않을 수도 있고, 그 대신에 이미지 뷰잉이 개시되자마자 스캐닝을 위한 영역들을 검출하도록 구성될 수도 있다는 것이 이해되어야 한다.
도 5b에서, 제2 이미지(530)는 또한 복수의 시각적 표시자들("표시자들")(550)을 포함한다. 이 경우에, 각각의 표시자는 검출된 영역들의 주변부와 연관되거나 또는 이를 둘러싸고 있다. 표시자들(550)은 후보 영역이 검출되었음을 사용자에게 표시할 수 있거나, 그리고/또는 영역의 경계들을 강조할 수 있다. 그러한 표시자들은 사용자 인터페이스에 나타나서, 캡처된 이미지 내에서 검출되거나 그리고/또는 선택된 사각형들을 구별 또는 하이라이트하는 것을 도울 수도 있다. 표시자는 상이한 구현들에서 달라질 수 있고, 깜박임, 광도의 변화들, 검출된 영역의 부분들에 따른 그래픽 요소들의 중첩, 플래싱(flashing), 애니메이팅된 라인들, 컬러 변화들, 플래그들, 에지들을 따라 나타나는 점선 또는 실선 라인들 및 각각의 정점에서의 포인트들 또는 원들과 같은 그래픽 요소들, 또는 다른 그러한 시각적 표시자들과 같은 다양한 효과들을 포함할 수 있다. 예를 들어, 도 5b에서 표시자들(550)은, 17개의 검출된 사각형 후보 영역들을 실질적으로 둘러싸는 증가된 밝기를 포함한다. 11개의 문자들은, 이전 클러스터링 알고리즘에 의해 잠재적으로 두드러진 객체들로서 식별되었지만, 고도로 불규칙하거나 그리고/또는 사각형이 아닌 것으로서 에지 검출기에 의해 결정된, 어떠한 시각적 표시자들과도 연관되지 않는다는 것에 주목할 수 있다.
따라서, 도 5b에서 17개의 클러스터들 각각은 에지 검출기에 의해 검토되었고, 구별되고 별개인 시각적 표시자에 의해 스캐닝의 타깃들을 포함할 특정 영역들로서 구분되었다. 더 구체적으로는, 도 4 및 도 5b를 참조하면, 제1 영역(570)이 게시판(404)의 제1 객체(410)에 대응하고, 제2 영역(572)이 제2 객체(412)에 대응하고, 제3 영역(574)이 제3 객체(414)에 대응하고, 제4 영역(576)이 제4 객체(416)에 대응하고, 제5 영역(578)이 제5 객체(418)에 대응하고, 제6 영역(580)이 제6 객체(420)에 대응하고, 제7 영역(582)이 제7 객체(422)에 대응하고, 제8 영역(584)이 제8 객체(424)에 대응하고, 제9 영역(586)이 제9 객체(426)에 대응하고, 제10 영역(588)이 제10 객체(428)에 대응하고, 제11 영역(590)이 제11 객체(430)에 대응하고, 제12 영역(592)이 제12 객체(432)에 대응하고, 제13 영역(594)이 제12 객체(434)에 대응하고, 제14 영역(596)이 제14 객체(436)에 대응하고, 제15 영역(598)이 제15 객체(438)에 대응하고, 제16 영역(560)이 제15 객체(440)에 대응하며, 제17 영역(562)이 제17 객체(442)에 대응한다.
사용자는 표시자들(550)을 뷰잉하고, 스캐닝 동작 동안 캡처될 것으로 예상되는 영역들을 프리뷰할 수 있다. 사용자가 디스플레이된 어레이의 후보 영역들을 수락하는 경우, 그 또는 그녀는 사용자 입력(여기서는 버튼(552)에 대한 손가락 탭으로서 나타내어짐)을 제출하여 스캐닝 동작을 활성화시킬 수도 있다. 그러한 입력은 시스템에 의해 검출된 개별 영역들 각각의 자동 캡처를 트리거할 수 있다. 다른 구현들에서, 이미지 캡처를 트리거하기 위해 어떠한 추가의 사용자 입력도 필요하지 않을 수도 있다.
상이한 구현들에서, 시스템은, 멀티-영역 검출 시스템의 사용자 경험을 용이하게 하는 방식으로 카메라에 의해 캡처되는 이미지들을 저장하기 위한 프로비전들을 포함할 수 있다. 도 6a에서, 도 5b에서 개시된 스캔 동작이 완료되었다. 후보 영역들 각각에 대한 이산 이미지 콘텐트는, 일단 캡처되었다면, 이미지 파일들의 세트로서 세이브될 수 있다. 예를 들어, 도 6a에서, '/storage/Camera' 제목(610) 아래에 저장된 제1 폴더(600)(예시를 위해 "FolderA"로 라벨링됨)가 스캐닝된 이미지들의 액세스 인터페이스(620)를 통해 액세스된다. 참조의 용이성을 위해, 제2 이미지를 전체로서 묘사하는 아이콘(602)이 제1 폴더(600)와 함께 디스플레이된다. 일부 구현들에서, 스캐닝된 이미지들의 액세스 인터페이스(620)는 이미지 콘텐트에 추가로 관여하기 위해 하나 이상의 선택가능 또는 실행가능 옵션들을 제시할 수 있다. 사용자가 제1 폴더(600)의 17개의 이미지 파일들의 일부 또는 전부를 클라우드 또는 다른 스토리지에 업로드(또는 백업)할 수도 있게 하는 업로드 옵션(622), 제1 폴더(600)에서의 이미지들 또는 일부를 쉽게 공유(예를 들어, 이메일 보내기, 문자 보내기, 소셜 미디어 게시 등)하기 위한 공유 옵션(624)뿐만 아니라, 제1 폴더(600)의 17개의 이산 이미지 콘텐트 파일들 중 하나 이상을 제거하거나 또는 지우기 위한 삭제 옵션(626)을 포함하는 일부 예들이 도시되어 있다. 일부 구현들은, 메인 메뉴로 돌아가기 위한 옵션(메인 메뉴 옵션(632)), 또는 마지막으로 뷰잉된 콘텐트로 내비게이팅하기 위한 옵션('백(back)' 옵션(634))뿐만 아니라, 다른 내비게이션 또는 편집 옵션들도 또한 포함할 수 있다.
부가적으로, 사용자는 폴더 자체, 또는 폴더와 연관된 옵션을 선택하여, 도 6b에 도시된 바와 같이, 스캐닝된 이미지 뷰잉 인터페이스(630)를 열 수 있다. 이 예에서, 제1 폴더(600)는, 일단 열렸다면, 복수의 스캐닝된 이미지들을 포함하는 것으로 드러난다. 각각의 이미지는, 하나의 검출된 영역에 포함되거나 또는 이와 연관된 이산 이미지 콘텐트에 대응한다. 단지 6개의 스캐닝된 이미지들만이 도 6b에 디스플레이되지만, 제1 폴더(600) 전체를 통해 내비게이팅하기 위해 스크롤 바(670), '다음 페이지', 또는 다른 그러한 메커니즘이 제공될 수 있다. 이 경우에, 도 5b와 도 6b 양측 모두를 참조하면, 제1 스캐닝된 이미지(650)가 제1 영역(570)에 대응하고, 제2 스캐닝된 이미지(652)가 제2 영역(572)에 대응하고, 제3 스캐닝된 이미지(654)가 제3 영역(574)에 대응하고, 제4 스캐닝된 이미지(656)가 제4 영역(576)에 대응하고, 제5 스캐닝된 이미지(658)가 제5 영역(578)에 대응하고, 제6 스캐닝된 이미지(660)가 제6 영역(580)에 대응하는 것 등으로 된다.
많은 경우들에서, 시스템에 의해 초기에 검출되고 제시된 복수의 후보 영역들은 사용자에 의해 스캐닝하기를 원하는 특정 세트의 영역들에 대응하지 않을 수도 있다는 것이 인식될 수도 있다. 상이한 구현들에서, 사용자는, 영역 검출 프로세스를 개량하거나 또는 개선시키기 위해 애플리케이션(300)에 의해 사용될 수 있는 입력 신호를 제공할 수 있다. 이 신호는 달라질 수 있지만, 후보 영역들 중 하나 이상을 지정 또는 식별하여 스캐닝 동작으로부터 폐기 또는 제거하거나, 또는 그 영역을 확인 또는 재선택하는 사용자 입력을 포함할 수 있다. 이들 메커니즘들의 일부 예들이 이제 도 7a 내지 도 9b를 참조하여 제시될 것이다.
도 7a에서, 제2 이미지(530)는 표시자들(550)과 함께 제2 디바이스(320)의 디스플레이(540) 상에 다시 도시된다. 앞서 언급된 바와 같이, 이들 표시자들(550)의 보조로 제시된 17개의 영역들 각각은 스캐닝의 자동으로 검출된 잠재적 타깃들을 포함하는 것으로 이해될 수 있다. 사용자는 표시자들(550)을 뷰잉하고, 그에 의해 스캐닝 동작 동안 캡처될 것으로 예상되는 영역들을 프리뷰할 수 있다. 사용자가 디스플레이된 어레이의 영역들을 수락하지 않는 경우, 그 또는 그녀는 사용자 입력을 제출하여 검출된 영역들 중 하나 이상을 선택해제할 수도 있다. 이 예에서, 사용자(350)는 제6 영역(580)과 연관된 픽셀들 중 일부에 제1 입력(710)을 제공한다. 이에 응답하여, 도 7b에 예시된 바와 같이, 제6 영역(580)은 더 이상 표시자를 포함하지 않는다. 다시 말해, 시스템이 초기에는 17개의 후보 영역들의 세트를 검출 및 제시하였지만, 사용자 입력에 응답하여, 애플리케이션은 선택해제를 등록하였고, 단지 16개의 영역들만이 제1 스캐닝 세트(730)에 남아 있다.
게다가, 도 7b에서, 사용자(350)는 다시, 제2 입력(720)을 통해 검출된 영역 - 여기서는, 제17 영역(562) - 을 선택해제하도록 택한다. 도 8을 참조하면, 업데이트된 제2 스캐닝 세트(800)는 이제 15개의 영역들을 포함한다. 다시 말해, 2개의 사용자 입력들에 뒤이어, 제2 이미지(530)로부터 스캐닝을 위한 후보들로서 이전에 제시된 2개의 영역들이 세트로부터 축출되었다. 따라서, (버튼(552)에 대한 손가락 탭으로 표현되는 바와 같이) 스캔이 개시될 때, 시스템에 의해 검출된 개별 영역들 각각에서 2개의 선택해제된 영역들을 마이너스한 것이 캡처될 것이다. 다른 구현들에서, 나머지 영역들의 이미지 캡처를 트리거하기 위해 어떠한 추가의 사용자 입력도 필요하지 않을 수도 있다.
이 예에서 제6 영역(580) 및 제17 영역(562)과 연관된 시각적 표시자들이 단순히 제거되었지만, 다른 구현들에서는, 시각적 표시자가 그 대신에 수정될 수 있다는 것이 이해되어야 한다. 예를 들어, 선택해제된 영역들을 구별하는 동시에 이들 영역들을 잠재적으로 스캐닝가능한 것으로서 계속 식별하기 위해, 표시자의 밝기가 감소될 수 있거나, 반투명의 정도가 증가될 수 있거나, 경계 윤곽선의 두께가 감소될 수 있거나, 그리고/또는 나머지(선택된) 후보 영역들과 관련하여 표시자의 컬러가 변경될 수 있다는 것 등으로 된다.
유사한 메커니즘이 도 9a 및 도 9b를 참조하여 도시되어 있다. 도 9a에서, 제2 이미지(530)는 시각적 표시자들(550)과 함께 제2 디바이스(320)의 디스플레이(540) 상에 다시 도시된다. 앞서 언급된 바와 같이, 이들 표시자들(550)의 보조로 제시된 17개의 영역들 각각은 이미지에서 스캐닝의 자동 검출된 잠재적 타깃들을 포함하는 것으로 이해될 수 있다. 일부 구현들에서, 스캐닝될 섹터들을 식별하기보다는 오히려, 표시자들(550)이 그 대신에 제공되어, 어떤 영역들이 검출되었고 스캐닝에 의한 취득을 위해 이용가능한지에 대한 제안들 또는 가이던스(guidance)를 사용자에게 제공할 수도 있다. 다시 말해, 시스템이 초기에는 17개의 후보 영역들의 세트를 검출 및 제시하였지만, 사용자가 원하는 영역들을 구체적으로 선택하는 일부 부가적인 입력(들)을 제공하지 않는 한, 애플리케이션은 스캐닝 동작으로 진행하지 않을 것이다.
그러한 경우들에서, 사용자는 이들이 구체적으로 원하는 식별된 영역들 중 어떤 것이 스캐닝 동작 동안 캡처되어야 하는지를 확인할 수도 있다. 사용자가 영역들 중 임의의 것을 스캐닝하기를 원하는 경우, 그 또는 그녀는 사용자 입력을 제출하여 검출된 영역들 중 하나 이상을 선택할 수도 있다. 이 예에서, 사용자(350)는 제6 영역(580)과 연관된 픽셀들 중 일부에 제3 입력(910)을 제공한다. 이에 응답하여, 도 9b에 예시된 바와 같이, 제6 영역(580)은 이제, 선택되지 않은 영역들에 대한 나머지 표시자들에 비해 더 크거나 또는 더 밝거나 또는 그렇지 않으면 구별되는 제1 표시자(930)를 포함한다.
게다가, 도 9b에서, 사용자(350)는 다시, 제4 입력(920)을 통해 검출된 영역 - 여기서는, 제17 영역(562) - 을 선택하도록 택한다. 사용자가 이제 스캐닝 동작을 개시하는 경우, 단지 2개의 영역들(제6 영역(580) 및 제17 영역(562))에 대한 이미지 콘텐트만이 캡처되어 제1 폴더에 저장될 것이다. 이 예에서는 제6 영역(580) 및 제17 영역(562)과 연관된 시각적 표시자들이 단순히 수정되었지만, 다른 구현들에서는, 시각적 표시자가 그 대신에 체크 마크 또는 일부 다른 확인 심볼로 향상될 수 있다. 하나의 구현에서, 선택된 영역들은 녹색 표시자와 연관될 수도 있는 한편, 선택되지 않은 영역들은 (하나의 예로서) 적색으로 남아 있다. 다른 구현들에서, 다른 시각적 큐들이 나타내어질 수 있다.
명확성의 목적들을 위해, 멀티-영역 검출 스캐닝 시스템의 다른 예가 도 10 내지 도 12b의 시퀀스로 예시되어 있다. 도 10에서, 제3 사용자(1050)가 제3 컴퓨팅 디바이스("제3 디바이스")(1000)의 카메라 광학 렌즈가 테이블(1092)의 표면 상에 놓인 책(1090)을 향해 지향되도록 그 디바이스를 포지셔닝시키는 것이 도시되어 있다. 열린 책(1090)은, 사용자(1050)에게 가시적인 2개의 페이지들(좌측 페이지(1010) 및 우측 페이지(1020))을 갖는다. 제3 사용자(1050)가 제3 디바이스(1000)를 내려다 볼 때, 수 개의 이미지들 및 텍스트의 섹션들이 지각될 수도 있다. 일부 구현들에서, 제3 디바이스(1000)와 연관된 이미지 캡처 소프트웨어 애플리케이션은 이미지가 수신될 때(즉, 라이브 프리뷰 모드에서) 이미지 세그먼트화 및 에지 검출 알고리즘들의 구현을 포함하는 이미지 프로세싱 패러다임을 자동으로 개시할 수도 있다. 그러나, 다른 구현들에서 제3 사용자(1050)는 (제3 디바이스(1000)로부터 나오는 점선 액션 라인들에 의해 예시된 바와 같이) 이 시간에 전체적으로 이미지를 캡처하고, 후속 시간에 스캐닝을 위해 이 이미지를 세이브하도록 선정할 수도 있다.
이 후속 스캐닝 동작은 도 11에 도시되어 있는데, 여기서 제3 디바이스(1000)의 디스플레이(1110)는 우측 페이지(1020)의 세이브된 이미지(1120)를 제시한다. 임의의 후속 시간에 스캐닝 애플리케이션의 구현에 의해 열리거나 또는 액세스되는, 세이브된 이미지(1120)는 앞서 설명된 바와 같이 다중-영역 스캐닝 검출의 대상일 수 있다. 정적 이미지가 프로세싱되고 이미지 세그먼트화 및 에지 검출 프로세스들이 적용된다. 도 11에서, 세이브된 이미지(1120)에서 복수의 타깃 영역들(1150)이 식별된다. 각각의 타깃 영역은 시각적 표시자와 또한 연관된다. 스캐닝 프로세스를 트리거하는 사용자 입력에 응답하여(또는 미리 설정된 기간의 딜레이에 뒤이어) 검출된 각각의 영역(이 예에서는, 14개의 영역들)에 대한 이미지 콘텐트가 이산 세트의 데이터로서 캡처될 것이다.
다음으로 도 12a를 참조하면, 도 11에서 개시된 스캔 동작이 완료되었다. 후보 영역들 각각에 대한 이산 이미지 콘텐트는, 일단 캡처되었다면, 이미지 파일들의 세트로서 세이브된다. 이 예에서, 제1 폴더(600)가 또한 단순히 비교의 목적들을 위해 예시되고, 제2 폴더(1200)("seventh grade")가 뒤이어지는데, 여기서 양측 폴더들은 '/storage/Camera' 제목(1210) 아래에 저장되고 스캐닝된 이미지들의 액세스 인터페이스(1220)를 통해 액세스된다. 참조의 용이성을 위해, 제2 이미지를 전체로서 묘사하는 아이콘(1202)이 제2 폴더(1200)와 함께 디스플레이된다. 일부 구현들에서, 스캐닝된 이미지들의 액세스 인터페이스(1220)는 이미지 콘텐트에 추가로 관여하기 위해 하나 이상의 선택가능 또는 실행가능 옵션들을 또한 제시할 수 있다(도 6a 참조).
상이한 구현들에서, 사용자는 폴더 자체, 또는 폴더와 연관된 옵션을 선택하여, 도 12b에 도시된 바와 같이, 스캐닝된 이미지 뷰잉 인터페이스(1230)를 열 수 있다. 이 예에서, 제2 폴더(1200)는, 일단 열렸다면, 복수의 스캐닝된 이미지들을 포함하는 것으로 드러난다. 각각의 이미지는, 검출된 영역에 포함되거나 또는 이와 연관된 이산 이미지 콘텐트에 대응한다. 단지 6개의 스캐닝된 이미지들만이 도 12b에 디스플레이되지만, 제2 폴더(1200) 전체를 통해 내비게이팅하기 위해 스크롤 바 또는 다른 그러한 메커니즘이 제공될 수 있다.
본 명세서에서 설명되는 툴들과 함께, 다른 스캐닝 피처들이, 애플리케이션을 사용하는 동안 사용자들에게 이용가능한 채로 남아 있을 수 있다는 것이 이해되어야 한다. 예를 들어, 일부 구현들에서, 예컨대 코너를 재포지셔닝시키기 위해 코너를 드래그함으로써, 선택된 사각형에 대한 조정을 허용하도록 사용자에 의해 다양한 표시자들이 선택가능할 수도 있다. 다른 예로서, 사용자는 사용자 인터페이스와의 상호작용을 통해 하나의 코너를 선택함으로써 커스텀 사각형을 정의할 수도 있고, 애플리케이션은 일부 경우들에서 특정된 코너의 사용자 선택에 기초하여 대응하는 사각형을 자동으로 유도할 수 있다. 사용자는 선택을 위한 구역(예를 들어, 커스텀 사각형들)을 더 직접적으로 식별하기 위해 사용자 인터페이스로 선택 및 드래그 툴을 적용하는 것이 또한 가능할 수도 있다.
명확성의 목적들을 위해, 도 13은 단일 이미지에서 스캐닝 영역들의 자동 검출을 위한 프로세스의 하나의 구현을 예시한다. 이 예에서, 제1 스테이지(1300)는, 디바이스와 연관된 다중 영역 검출 시스템 또는 모드의 활성화 또는 액세스를 포함한다. 이 모드는 전형적으로, 컴퓨팅 디바이스와 연관된 스캐닝 애플리케이션을 통해 액세스될 것이다. 그 후에, 시스템은 제2 스테이지(1310)에서 이미지 데이터를 수신할 수 있는데, 이 이미지 데이터는 제3 스테이지에서 이미지 프로세싱(1320)을 위해 제출될 것이다. 일부 구현들에서, 세그먼트화 프로세스들(1322)은 클러스터링된 이미지 출력을 생성할 수 있다. 그 후에, 이 출력에 대해 에지들이 검출될 수 있다(1324). 통상적으로 식별된 영역과 연관된 영역에서의 또는 그 주위의 시각적 표시자의 중첩을 통해, 제4 스테이지(1330)에서 프로세싱된 이미지에서 복수의 영역들이 검출될 수 있는데, 이는 제5 스테이지(1340)에서 디바이스 디스플레이 상의 후보 영역들의 프레젠테이션을 개시할 수 있다. 이들 영역들은 제6 스테이지(1350)에서 스캐닝 동작의 대상이 될 수 있다. 그러나, 일부 구현들에서, 사용자는 제7 스테이지(1360)에서 선택된 영역들을 수정할 수도 있는데, 이는 제8 스테이지(1370)에서 스캐닝을 위해 제출될 후보 영역들의 세트를 변경할 것이다. 일단 스캐닝 동작이 전체 또는 수정된 스캐닝 세트에 대해 개시되면(제6 스테이지(1350)), 이들 영역들 각각에 대한 이미지 콘텐트는 제9 스테이지(1380)에서 캡처되고, 별개의 이미지 파일로서 저장될 수 있다(1390). 일부 구현들에서, 파일들은 식별의 용이성을 위해 동일한 폴더에 집합적으로 저장될 수 있다.
도 14는 전자 콘텐트에서의 잠재적 스캐닝 영역들의 검출 및 선택을 관리하는 방법(1400)의 일 구현을 예시하는 플로차트이다. 도 14에서, 제1 단계(1410)는, 이미지 스캐닝 애플리케이션을 통해 이미지를 수신하는 단계를 포함하고, 제2 단계(1420)는, 이미지에서 복수의 이산 후보 영역들을 자동으로 검출하는 단계를 포함한다. 제3 단계(1430)에서, 이 방법은, 스캐닝을 위해 복수의 이산 후보 영역들의 서브세트를 식별하는 단계를 포함하고, 여기서 서브세트는 제1 영역 및 제2 영역을 포함한다. 제4 단계(1440)는, 적어도 제1 영역 및 제2 영역의 스캐닝을 개시하기 위한 신호를 수신하는 단계를 포함한다. 신호는, 이미지 캡처를 트리거하거나 또는 스캐닝 동작을 개시하기 위한 사용자 개시된 입력을 포함할 수 있거나, 또는 미리 설정된 시간 경과의 검출과 같은 다른 이벤트들을 포함할 수 있다. 제5 단계(1450)에서, 이 방법은, 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 제1 영역 및 제2 영역을 캡처하는 단계를 수반한다. 제6 단계(1460)는, 적어도 제1 영역에 대응하는 제1 이미지 콘텐트 및 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들의 폴더에 저장하는 단계를 포함한다.
다른 구현들에서, 이 방법은 부가적인 또는 대체 단계들을 포함할 수 있다. 예를 들어, 이 방법은, 저장된 이미지 콘텐트에 액세스하기 위한 그래픽 사용자 인터페이스를 제시하는 단계, 그리고 그 후에 제1 이미지 콘텐트에 대한 제1 세트의 정보 세트 및 제2 이미지 콘텐트에 대한 제2 세트의 정보를, 예를 들어 단일 폴더에서의 파일들로서, 디바이스 디스플레이 상에 제시하는 단계를 더 포함할 수도 있다. 다른 예로서, 이 방법은, 이미지를 디바이스 디스플레이 상에 제시하는 단계, 그리고 그 후에 제1 시각적 표시자로 제1 영역의 적어도 제1 주변부를 오버레이할 뿐만 아니라, 제2 시각적 표시자로 제2 영역의 적어도 제2 주변부를 오버레이하는 단계를 포함할 수도 있다.
다른 예에서, 복수의 이산 후보 영역들의 서브세트는 제3 영역을 더 포함할 수도 있다. 그러한 경우들에서, 이 방법은, 제3 영역을 선택해제하기 위해, 제3 영역과 연관된 제1 사용자 입력을 수신하는 단계, 그리고 그 후에 복수의 이산 후보 영역들의 서브세트로부터 제3 영역을 제거하는 단계를 더 포함할 수 있다. 일부 구현들에서, 청구항의 방법은, 디바이스 디스플레이 상에 이미지를 제1 이미지 프리뷰로서 제시하는 단계, 그리고 각각의 영역의 적어도 일 부분 상의 시각적 표시자의 오버레이에 의해 제1 이미지 프리뷰에서 복수의 이산 후보 영역들 각각을 구별하는 단계를 또한 포함한다. 일부 다른 구현들에서, 이 방법은, 제3 영역을 선택해제하기 위해, 제3 영역과 연관된 (예를 들어, 사용자로부터의) 제1 입력을 수신하는 단계, 그리고 제3 영역 상에 오버레이된 시각적 표시자를 제거하는 단계를 대안적으로 포함한다.
상이한 구현들에서, 복수의 이산 후보 영역들의 각각의 영역은 형상이 실질적으로 사각형이다. 다른 구현에서, 제1 영역은 (예를 들어, 전체 이미지의 수평 축에 대해) 제1 배향으로 배향되고, 제2 영역은 (예를 들어, 전체 이미지의 동일한 수평 축에 대해) 제2 배향으로 배향되고, 제1 배향은 제2 배향과는 상이하다. 하나의 예에서, 제1 영역의 제1 구역은 제2 영역의 제2 구역보다 더 크다.
일부 구현들에서, 이 방법은, 세그먼트화된 이미지를 생성하기 위해 클러스터링 알고리즘을 통해 이미지를 복수의 세그먼트들로 분할하는 단계, 그리고 세그먼트화된 이미지에 에지 검출 알고리즘을 적용하는 단계를 또한 포함할 수 있다. 그러한 경우들에서, 이미지에서의 복수의 이산 후보 영역들의 자동 검출은 적어도 세그먼트화된 이미지에 대한 에지 검출 알고리즘의 적용에 기초한다. 일부 다른 구현들에서, 복수의 이산 후보 영역들의 서브세트는 제3 영역을 더 포함할 수도 있고, 이 방법은 그 후에, 제1 영역을 선택하기 위해, 제1 영역과 연관된 제1 입력을 수신하는 단계, 제2 입력을 선택하기 위해, 제2 영역과 연관된 제2 입력을 수신하는 단계, 그리고 그 후에, 신호에 응답하여, (스캐닝 동작을 개시하기에 앞서) 복수의 이산 후보 영역들의 서브세트로부터 제3 영역을 제거하는 단계를 또한 포함할 수 있다.
다른 예로서, 복수의 이산 후보 영역들의 서브세트가 제3 영역을 더 포함하는 경우들에서, 이 방법은, 제1 신호에 응답하여, 실질적으로 병렬 프로세스 동안 제3 영역을 캡처하는 단계, 그리고 그 후에 제3 영역에 대응하는 제3 이미지 콘텐트를 스캐닝된 이미지들의 폴더에 저장하는 단계를 또한 포함할 수 있다. 하나의 구현에서, 이 방법은, 사용자 입력에 응답하여, 선택된 영역의 제1 주변부의 사이즈를 자동으로 조정하는 단계를 수반할 수 있다.
개시된 시스템들 및 방법들의 사용은 사용자들이 쉽게 이미지를 뷰잉하고 이미지에서의 스캐닝을 위해 이용가능한 복수의 영역들을 뷰잉하는 것을 가능하게 할 수 있다. 실시간 이미지 캡처와 저장된 이미지들 양측 모두에서 모든 잠재적 후보 영역들을 프리뷰하는 능력은 사용자들에게 광범위한 이익들을 제공한다. 이 피처는 다양한 아이템들을 스캐닝하는 데 필요한 시간을 실질적으로 감소시킨다; 스캐닝을 위한 새로운 사각형 영역을 획득하기 위해 동일한 이미지를 재캡처하려고 시도하기보다는 오히려, 사용자는 애플리케이션을 이미지로 단순히 지향시킬 수도 있고, 그 후에 애플리케이션은 이산 이미지 파일들로서 취득될 수 있는 영역(들)을 자동으로 검출할 수 있다. 게다가, 사용자들에게 단일 이미지 내에서 스캐닝하기 위해 다수의 이산 영역들을 선택하게 하는 단순한 수단을 제공함으로써, 사용자들은 이들의 결과적인 스캔(scan)들에 있어서 선택성을 누릴 수 있다.
도 1 내지 도 14와 관련하여 설명된 시스템들, 디바이스들, 및 기법들의 상세한 예들이 본 개시내용 및 그의 이익들의 예시를 위해 본 명세서에 제시된다. 그러한 사용 예들은 본 개시내용의 논리적 프로세스 구현들에 대한 제한들인 것으로 해석되어서는 안 되고, 본 명세서에 설명된 것들로부터의 사용자 인터페이스 방법들의 변형들이 본 개시내용의 범주 밖에 있는 것으로 간주되어서도 안 된다. 일부 구현들에서, 도 1 내지 도 14에 설명된 다양한 피처들은 각각의 모듈들에서 구현되는데, 이 각각의 모듈들은 또한 로직, 컴포넌트들, 유닛들, 및/또는 메커니즘들이라고 지칭되거나 그리고/또는 이들을 포함할 수도 있다. 모듈들은 소프트웨어 모듈들(예를 들어, 머신 판독가능 매체 상에 포함되는 코드) 또는 하드웨어 모듈들 중 어느 하나를 구성할 수도 있다.
일부 예들에서, 하드웨어 모듈은 기계적으로, 전자적으로, 또는 이들의 임의의 적합한 조합으로 구현될 수도 있다. 예를 들어, 하드웨어 모듈은, 특정 동작들을 수행하도록 구성되는 전용 회로부 또는 로직을 포함할 수도 있다. 예를 들어, 하드웨어 모듈은 필드 프로그래밍가능 게이트 어레이(field-programmable gate array)(FPGA) 또는 주문형 집적 회로(Application Specific Integrated Circuit)(ASIC)와 같은 특수 목적 프로세서를 포함할 수도 있다. 하드웨어 모듈은, 특정 동작들을 수행하기 위해 소프트웨어에 의해 일시적으로 구성되는 프로그래밍가능 로직 또는 회로부를 또한 포함할 수도 있고, 그러한 구성을 위한 머신 판독가능 매체 데이터 및/또는 명령어들의 일 부분을 포함할 수도 있다. 예를 들어, 하드웨어 모듈은, 소프트웨어 명령어들의 세트를 실행하도록 구성되는 프로그래밍가능 프로세서 내에 포괄되는 소프트웨어를 포함할 수도 있다. 기계적으로, 전용된 그리고 영구적으로 구성된 회로부로, 또는 일시적으로 구성된 회로부(예를 들어, 소프트웨어에 의해 구성됨)로, 하드웨어 모듈을 구현하기 위한 판정은, 비용, 시간, 지원, 및 엔지니어링 고려사항들에 의해 유도될 수도 있다는 것이 인식될 것이다.
이에 따라, 어구 "하드웨어 모듈"은, 특정 동작들을 수행하는 것이 가능하고 특정 물리적 방식으로 구성 또는 배열될 수도 있고, 특정 방식으로 동작하도록 또는 본 명세서에서 설명되는 특정 동작들을 수행하도록 물리적으로 구성되거나, 영구적으로 구성되거나(예를 들어, 하드와이어드), 그리고/또는 일시적으로 구성되는(예를 들어, 프로그래밍되는) 엔티티(entity)일 수도 있는 유형(tangible)의 엔티티를 포괄하는 것으로 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, "하드웨어 구현 모듈"은 하드웨어 모듈을 지칭한다. 하드웨어 모듈들이 일시적으로 구성되는(예를 들어, 프로그래밍되는) 예들을 고려하면, 하드웨어 모듈들 각각은 시간의 임의의 하나의 인스턴스에서 구성 또는 인스턴스화될 필요가 없다. 예를 들어, 하드웨어 모듈이 특수 목적 프로세서가 되도록 소프트웨어에 의해 구성되는 프로그래밍가능 프로세서를 포함하는 경우, 프로그래밍가능 프로세서는 상이한 시간들에서 (예를 들어, 상이한 하드웨어 모듈들을 포함하는) 각각 상이한 특수 목적 프로세서들로서 구성될 수도 있다. 이에 따라, 소프트웨어는, 예를 들어, 시간의 하나의 인스턴스에서 특정 하드웨어 모듈을 구성하도록 그리고 시간의 상이한 인스턴스에서 상이한 하드웨어 모듈을 구성하도록 특정 프로세서 또는 프로세서들을 구성할 수도 있다. 하나 이상의 프로세서들을 사용하여 구현되는 하드웨어 모듈은 "프로세서 구현" 또는 "컴퓨터 구현"되는 것이라고 지칭될 수도 있다.
하드웨어 모듈들은 다른 하드웨어 모듈들에 정보를 제공하고 다른 하드웨어 모듈들로부터 정보를 수신할 수 있다. 이에 따라, 설명된 하드웨어 모듈들은 통신가능하게 커플링된 것으로서 간주될 수도 있다. 다수의 하드웨어 모듈들이 동시에 존재하는 경우, 통신들은 하드웨어 모듈들 중 2개 이상 사이의 또는 이들 간의 (예를 들어, 적절한 회로들 및 버스들을 통한) 신호 송신을 통해 달성될 수도 있다. 다수의 하드웨어 모듈들이 상이한 시간들에서 구성 또는 인스턴스화되는 구현들에서, 그러한 하드웨어 모듈들 사이의 통신들은, 예를 들어, 다수의 하드웨어 모듈들이 액세스를 갖는 메모리 디바이스들에서의 정보의 저장 및 검색을 통해 달성될 수도 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행하고 메모리 디바이스에 출력을 저장할 수도 있고, 그 후에 다른 하드웨어 모듈은 저장된 출력을 검색 및 프로세싱하기 위해 메모리 디바이스에 액세스할 수도 있다.
일부 예들에서, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서들 또는 프로세서 구현 모듈들에 의해 수행될 수도 있다. 더욱이, 하나 이상의 프로세서들은 또한 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어(software as a service)"(SaaS)로서 관련 동작들의 수행을 지원하도록 동작할 수도 있다. 예를 들어, 동작들 중 적어도 일부는 (프로세서들을 포함하는 머신들의 예들로서) 다수의 컴퓨터들에 의해 그리고/또는 이들 간에 수행될 수도 있는데, 이때 이들 동작들은 네트워크(예를 들어, 인터넷)를 통해 그리고/또는 하나 이상의 소프트웨어 인터페이스들(예를 들어, 애플리케이션 프로그램 인터페이스(application program interface)(API))을 통해 액세스가능하다. 동작들의 특정 수행은, 단일 머신 내에 상주할 뿐만 아니라, 다수의 머신들에 걸쳐 배치되는 프로세서들 간에 분산될 수도 있다. 프로세서들 또는 프로세서 구현 모듈들은 단일 지리적 위치에(예를 들어, 가정 또는 사무실 환경, 또는 서버 팜 내에) 위치될 수도 있거나, 또는 다수의 지리적 위치들에 걸쳐 분산될 수도 있다.
도 15는 예시적인 소프트웨어 아키텍처(1502)를 예시하는 블록 다이어그램(1500)인데, 이들의 다양한 부분들은, 상술된 피처들 중 임의의 것을 구현할 수도 있는, 본 명세서에서 설명되는 다양한 하드웨어 아키텍처들과 함께 사용될 수도 있다. 도 15는 소프트웨어 아키텍처의 비제한적인 예이고, 본 명세서에서 설명되는 기능성을 용이하게 하기 위해 많은 다른 아키텍처들이 구현될 수도 있다는 것이 인식될 것이다. 소프트웨어 아키텍처(1502)는, 다른 것들 중에서도, 문서 스토리지(1070), 프로세서들, 메모리, 및 입/출력(input/output)(I/O) 컴포넌트들을 포함하는 도 1 내지 도 13의 컴퓨팅 디바이스들과 같은 하드웨어 상에서 실행될 수도 있다. 대표적인 하드웨어 계층(1504)이 예시되고, 예를 들어, 도 1 내지 도 14의 컴퓨팅 디바이스들을 표현할 수 있다. 대표적인 하드웨어 계층(1504)은 프로세싱 유닛(1506) 및 연관된 실행가능 명령어들(1508)을 포함한다. 실행가능 명령어들(1508)은, 본 명세서에서 설명되는 방법들, 모듈들 등의 구현을 포함하는, 소프트웨어 아키텍처(1502)의 실행가능 명령어들을 표현한다. 하드웨어 계층(1504)은, 실행가능 명령어들(1508) 및 수반되는 데이터를 또한 포함하는 메모리/스토리지(1510)를 또한 포함한다. 하드웨어 계층(1504)은 또한 다른 하드웨어 모듈들(1512)을 포함할 수도 있다. 프로세싱 유닛(1508)에 의해 보유된 명령어들(1508)은, 메모리/스토리지(1510)에 의해 보유된 명령어들(1508)의 부분들일 수도 있다.
예시적인 소프트웨어 아키텍처(1502)는, 각각이 다양한 기능성을 제공하는 계층들로서 개념화될 수도 있다. 예를 들어, 소프트웨어 아키텍처(1502)는 운영 체제(operating system)(OS)(1514), 라이브러리들(1516), 프레임워크들(1518), 애플리케이션들(1520), 및 프레젠테이션 계층(1544)과 같은 계층들 및 컴포넌트들을 포함할 수도 있다. 동작적으로, 애플리케이션들(1520) 및/또는 계층들 내의 다른 컴포넌트들은 다른 계층들에 대한 API 콜(call)들(1524)을 호출하고 대응하는 결과들(1526)을 수신할 수도 있다. 예시된 계층들은 본질적으로 대표적이고 다른 소프트웨어 아키텍처들이 부가적인 또는 상이한 계층들을 포함할 수도 있다. 예를 들어, 일부 모바일 또는 특수 목적 운영 체제들이 프레임워크들/미들웨어(1518)를 제공하지 않을 수도 있다.
OS(1514)는 하드웨어 리소스들을 관리하고 공통 서비스들을 제공할 수도 있다. OS(1514)는, 예를 들어, 커널(1528), 서비스들(1530), 및 드라이버들(1532)을 포함할 수도 있다. 커널(1528)은 하드웨어 계층(1504)과 다른 소프트웨어 계층들 사이의 추상화 계층으로서 작용할 수도 있다. 예를 들어, 커널(1528)은 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 보안 설정들 등을 담당할 수도 있다. 서비스들(1530)은 다른 소프트웨어 계층들에 대한 다른 공통 서비스들을 제공할 수도 있다. 드라이버들(1532)은 기본 하드웨어 계층(1504)을 제어하거나 또는 이와 인터페이싱하는 것을 담당할 수도 있다. 예를 들어, 드라이버들(1532)은 하드웨어 및/또는 소프트웨어 구성에 따라 디스플레이 드라이버들, 카메라 드라이버들, 메모리/스토리지 드라이버들, (예를 들어, 범용 직렬 버스(Universal Serial Bus)(USB)를 통한) 주변기기 디바이스 드라이버들, 네트워크 및/또는 무선 통신 드라이버들, 오디오 드라이버들 등을 포함할 수도 있다.
라이브러리들(1516)은, 애플리케이션들(1520) 및/또는 다른 컴포넌트들 및/또는 계층들에 의해 사용될 수도 있는 공통 인프라스트럭처를 제공할 수도 있다. 라이브러리들(1516)은 전형적으로, OS(1514)와 직접 상호작용하기보다는 오히려, 태스크들을 수행하기 위해 다른 소프트웨어 모듈들에 의한 사용을 위한 기능성을 제공한다. 라이브러리들(1516)은, 메모리 할당, 문자열 조작, 파일 동작들과 같은 기능들을 제공할 수도 있는 시스템 라이브러리들(1534)(예를 들어, C 표준 라이브러리)을 포함할 수도 있다. 부가적으로, 라이브러리들(1516)은 미디어 라이브러리들(예를 들어, 이미지, 사운드, 및/또는 비디오 데이터 포맷들의 프레젠테이션 및 조작의 지원), 그래픽 라이브러리들(예를 들어, 디스플레이 상의 2D 및 3D 그래픽들을 렌더링하기 위한 OpenGL 라이브러리), 데이터베이스 라이브러리들(예를 들어, SQLite 또는 다른 관계형 데이터베이스 함수들), 및 웹 라이브러리들(예를 들어, 웹 브라우징 기능성을 제공할 수도 있는 WebKit)과 같은 API 라이브러리들(1536)을 포함할 수도 있다. 라이브러리들(1516)은, 애플리케이션들(1520) 및 다른 소프트웨어 모듈들을 위한 많은 기능들을 제공하기 위해 매우 다양한 다른 라이브러리들(1538)을 또한 포함할 수도 있다.
프레임워크들(1518)(때때로 미들웨어라고도 또한 지칭됨)은 애플리케이션들(1520) 및/또는 다른 소프트웨어 모듈들에 의해 사용될 수도 있는 상위 레벨 공통 인프라스트럭처를 제공한다. 예를 들어, 프레임워크들(1518)은 다양한 그래픽 사용자 인터페이스(GUI) 기능들, 고레벨 리소스 관리, 또는 고레벨 위치 서비스들을 제공할 수도 있다. 프레임워크들(1518)은 애플리케이션들(1520) 및/또는 다른 소프트웨어 모듈들에 대한 넓은 스펙트럼의 다른 API들을 제공할 수도 있다.
애플리케이션들(1520)은 빌트인 애플리케이션들(1540) 및/또는 제3자 애플리케이션들(1542)을 포함한다. 빌트인 애플리케이션들(1540)의 예들은 연락처 애플리케이션(contacts application), 브라우저 애플리케이션, 위치 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션, 및/또는 게임 애플리케이션을 포함할 수도 있지만, 이에 제한되지 않는다. 제3자 애플리케이션들(1542)은, 특정 플랫폼의 벤더 이외의 엔티티에 의해 개발된 임의의 애플리케이션들을 포함할 수도 있다. 애플리케이션들(1520)은, 사용자들과 상호동작하기 위한 사용자 인터페이스들을 생성하기 위해 OS(1514), 라이브러리들(1516), 프레임워크들(1518), 및 프레젠테이션 계층(1544)을 통해 이용가능한 기능들을 사용할 수도 있다.
일부 소프트웨어 아키텍처들은, 가상 머신(1548)에 의해 예시된 바와 같은, 가상 머신들을 사용한다. 가상 머신(1548)은 애플리케이션들/모듈들이 이들이 하드웨어 머신(예컨대, 예를 들어, 도 10의 머신(1000)) 상에서 실행되고 있었던 것처럼 실행할 수 있는 실행 환경을 제공한다. 가상 머신(1548)은 호스트 OS(예를 들어, OS(1514)) 또는 하이퍼바이저에 의해 호스팅될 수도 있고, 가상 머신(1548)의 동작 및 호스트 운영 체제와의 상호운용을 관리하는 가상 머신 모니터(1546)를 가질 수도 있다. 가상 머신 외측의 소프트웨어 아키텍처(1502)와는 상이할 수도 있는 소프트웨어 아키텍처는 OS(1550), 라이브러리들(1552), 프레임워크들(1554), 애플리케이션들(1556), 및/또는 프레젠테이션 계층(1558)과 같은 가상 머신(1548) 내에서 실행된다.
도 16은 머신 판독가능 매체(예를 들어, 머신 판독가능 저장 매체)로부터의 명령어들을 판독하고 본 명세서에서 설명되는 피처들 중 임의의 것을 수행하도록 구성되는 예시적인 머신(1600)의 컴포넌트들을 예시하는 블록 다이어그램이다. 예시적인 머신(1600)은 컴퓨터 시스템의 형태로 있고, 그 내에서 머신(1600)으로 하여금 본 명세서에서 설명되는 피처들 중 임의의 것을 수행하게 하기 위한 (예를 들어, 소프트웨어 컴포넌트들의 형태의) 명령어들(1616)이 실행될 수도 있다. 이와 같이, 명령어들(1616)은 본 명세서에서 설명되는 모듈들 또는 컴포넌트들을 구현하는 데 사용될 수도 있다. 명령어들(1616)은, 프로그래밍되지 않은 그리고/또는 구성되지 않은 머신(1600)으로 하여금 설명된 피처들을 수행하도록 구성되는 특정 머신으로서 동작하게 한다. 머신(1600)는 독립형 디바이스로서 동작하도록 구성될 수도 있거나 또는 다른 머신들에 커플링(예를 들어, 네트워킹)될 수도 있다. 네트워킹된 배치에서, 머신(1600)은 피어-투-피어 또는 분산형 네트워크 환경에서의 노드로서, 또는 서버-클라이언트 네트워크 환경에서의 서버 머신 또는 클라이언트 머신의 능력으로 동작할 수도 있다. 머신(1600)은, 예를 들어, 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(personal computer)(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(set-top box)(STB), 게이밍 및/또는 엔터테인먼트 시스템, 스마트 폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 워치), 및 사물 인터넷(Internet of Things)(IoT) 디바이스로서 구체화될 수도 있다. 추가로, 단지 단일 머신(1600)만이 예시되어 있지만, 용어 "머신"은, 명령어들(1616)을 개별적으로 또는 공동으로 실행하는 머신들의 콜렉션을 포함한다.
머신(1600)은, 프로세서들(1610), 메모리(1630), 및 I/O 컴포넌트들(1650)을 포함할 수도 있는데, 이들은, 예를 들어, 버스(1602)를 통해 통신가능하게 커플링될 수도 있다. 버스(1602)는, 다양한 버스 기술들 및 프로토콜들을 통해 머신(1600)의 다양한 요소들을 커플링하는 다수의 버스들을 포함할 수도 있다. 일 예에서, 프로세서들(1610)(예를 들어, 중앙 프로세싱 유닛(central processing unit)(CPU), 그래픽 프로세싱 유닛(graphics processing unit)(GPU), 디지털 신호 프로세서(digital signal processor)(DSP), ASIC, 또는 이들의 적합한 조합을 포함함)은, 명령어들(1616)을 실행하고 데이터를 프로세싱할 수도 있는 하나 이상의 프로세서들(1612a 내지 1612n)을 포함할 수도 있다. 일부 예들에서, 하나 이상의 프로세서들(1610)은, 하나 이상의 다른 프로세서들(1610)에 의해 제공 또는 식별되는 명령어들을 실행할 수도 있다. 용어 "프로세서"는, 명령어들을 동시에 실행할 수도 있는 코어들을 포함하는 멀티-코어 프로세서를 포함한다. 도 16은 다수의 프로세서들을 도시하고 있지만, 머신(1600)은 단일 코어를 갖는 단일 프로세서, 다수의 코어들을 갖는 단일 프로세서(예를 들어, 멀티-코어 프로세서), 각각이 단일 코어를 갖는 다수의 프로세서들, 각각이 다수의 코어들을 갖는 다수의 프로세서들, 또는 이들의 임의의 조합을 포함할 수도 있다. 일부 예들에서, 머신(1600)은, 다수의 머신들 간에 분산되는 다수의 프로세서들을 포함할 수도 있다.
메모리/스토리지(1630)는 메인 메모리(1632), 정적 메모리(1634), 또는 다른 메모리, 및 저장 유닛(1636)을 포함할 수도 있는데, 이들 양측 모두는 예컨대 버스(1602)를 통해 프로세서들(1610)에 액세스가능하다. 저장 유닛(1636) 및 메모리(1632, 1634)는 본 명세서에서 설명되는 기능들 중 임의의 하나 이상을 구체화하는 명령어들(1616)을 저장한다. 메모리/스토리지(1630)는 또한 프로세서들(1610)에 대한 임시, 중간, 및/또는 장기 데이터를 저장할 수도 있다. 명령어들(1616)은 또한, 완전히 또는 부분적으로, 메모리(1632, 1634) 내에, 저장 유닛(1636) 내에, 프로세서들(1610) 중 적어도 하나 내에(예를 들어, 커맨드 버퍼 또는 캐시 메모리 내에), I/O 컴포넌트들(1650) 중 적어도 하나의 I/O 컴포넌트의 메모리 내에, 또는 이들의 임의의 적합한 조합으로, 이들의 실행 동안, 상주할 수도 있다. 이에 따라, 메모리(1632, 1634), 저장 유닛(1636), 프로세서들(1610)에서의 메모리, 및 I/O 컴포넌트들(1650)에서의 메모리는 머신 판독가능 매체들의 예들이다.
본 명세서에서 사용되는 바와 같이, "머신 판독가능 매체"는, 머신(1600)으로 하여금 특정 방식으로 동작하게 하는 명령어들 및 데이터를 일시적으로 또는 영구적으로 저장하는 것이 가능한 디바이스를 지칭한다. 본 명세서에서 사용되는 바와 같은, 용어 "머신 판독가능 매체"는 (예컨대 매체를 통해 전파되는 반송파 상의) 일시적 전기 또는 전자기 신호들 그 자체를 포괄하지 않는다; 그에 따라, 용어 "머신 판독가능 매체"는 유형이고 비일시적인 것으로 간주될 수도 있다. 비일시적 유형의 머신 판독가능 매체의 비제한적인 예들은 비휘발성 메모리(예컨대, 플래시 메모리 또는 판독 전용 메모리(read-only memory)(ROM)), 휘발성 메모리(예컨대, 정적 랜덤 액세스 메모리(random-access memory)(RAM) 또는 동적 RAM), 버퍼 메모리, 캐시 메모리, 광학 저장 매체들, 자기 저장 매체들 및 디바이스들, 네트워크 액세스가능 또는 클라우드 스토리지, 다른 타입들의 스토리지, 및/또는 이들의 임의의 적합한 조합을 포함할 수도 있지만, 이에 제한되지 않는다. 용어 "머신 판독가능 매체"는, 명령어들이, 머신(1600)의 하나 이상의 프로세서들(1610)에 의해 실행될 때, 머신(1600)으로 하여금 본 명세서에서 설명되는 피처들 중 하나 이상을 수행하게 하도록 머신(1600)에 의한 실행을 위한 명령어들(예를 들어, 명령어들(1616))을 저장하는 데 사용되는 단일 매체, 또는 다수의 매체들의 조합에 적용된다. 이에 따라, "머신 판독가능 매체"는 단일 저장 디바이스뿐만 아니라, 다수의 저장 장치 또는 디바이스들을 포함하는 "클라우드 기반" 저장 시스템들 또는 저장 네트워크들을 지칭할 수도 있다.
I/O 컴포넌트들(1650)은 입력을 수신하는 것, 출력을 제공하는 것, 출력을 생성하는 것, 정보를 송신하는 것, 정보를 교환하는 것, 측정치들을 캡처하는 것 등을 하도록 적응되는 매우 다양한 하드웨어 컴포넌트들을 포함할 수도 있다. 특정 머신에 포함되는 특정 I/O 컴포넌트들(1650)은 머신의 타입 및/또는 기능에 의존할 것이다. 예를 들어, 모바일 폰들과 같은 모바일 디바이스들은 터치 입력 디바이스를 포함할 수도 있는 반면, 헤드리스 서버 또는 IoT 디바이스는 그러한 터치 입력 디바이스를 포함하지 않을 수도 있다. 도 16에 예시된 I/O 컴포넌트들의 특정 예들은 결코 제한적이지 않으며, 다른 타입들의 컴포넌트들이 머신(1600)에 포함될 수도 있다. I/O 컴포넌트들(1650)의 그룹화는 단지 이 논의를 단순화하기 위한 것이고, 그룹화는 결코 제한적이지 않다. 다양한 예들에서, I/O 컴포넌트들(1650)은 사용자 출력 컴포넌트들(1652) 및 사용자 입력 컴포넌트들(1654)을 포함할 수도 있다. 사용자 출력 컴포넌트들(1652)은, 예를 들어, 정보를 디스플레이하기 위한 디스플레이 컴포넌트들(예를 들어, 액정 디스플레이(liquid crystal display)(LCD) 또는 프로젝터), 음향 컴포넌트들(예를 들어, 스피커들), 햅틱 컴포넌트들(예를 들어, 진동 모터 또는 포스-피드백 디바이스(force-feedback device)), 및/또는 다른 신호 생성기들을 포함할 수도 있다. 사용자 입력 컴포넌트들(1654)은, 예를 들어, 사용자 커맨드들 및/또는 선택들과 같은 다양한 사용자 입력들을 수신하도록 구성되는 영숫자 입력 컴포넌트들(예를 들어, 키보드 또는 터치 스크린), 포인팅 컴포넌트들(예를 들어, 마우스 디바이스, 터치패드, 또는 다른 포인팅 기기), 및/또는 촉각 입력 컴포넌트들(예를 들어, 터치들 또는 터치 제스처들의 힘 및/또는 위치를 제공하는 터치 스크린 또는 물리적 버튼)을 포함할 수도 있다.
일부 예들에서, I/O 컴포넌트들(1650)은, 다른 환경 센서 컴포넌트들의 광범위한 어레이 중에서도, 생체인식 컴포넌트들(1656) 및/또는 포지션 컴포넌트들(1662)을 포함할 수도 있다. 생체인식 컴포넌트들(1656)은, 예를 들어, 신체 표현들(예를 들어, 얼굴 표정들, 음성 표현들, 손 또는 신체 제스처들, 또는 눈 추적)을 검출하고, 생체 신호들(예를 들어, 심박수 또는 뇌파들)을 측정하며, 사람을 (예를 들어, 보이스 기반, 망막 기반, 및/또는 얼굴 기반 식별을 통해) 식별하기 위한 컴포넌트들을 포함할 수도 있다. 포지션 컴포넌트들(1662)은, 예를 들어, 위치 센서들(예를 들어, 글로벌 포지션 시스템(Global Position System)(GPS) 수신기), 고도 센서들(예를 들어, 고도가 유도될 수도 있게 하는 기압 센서), 및/또는 배향 센서들(예를 들어, 자력계들)을 포함할 수도 있다.
I/O 컴포넌트들(1650)은, 각각의 통신 커플링들(1672 및 1682)을 통해 머신(1600)을 네트워크(들)(1670) 및/또는 디바이스(들)(1680)에 커플링하도록 동작가능한 매우 다양한 기술들을 구현하는 통신 컴포넌트들(1664)을 포함할 수도 있다. 통신 컴포넌트들(1664)은, 네트워크(들)(1670)와 인터페이싱하기 위한 하나 이상의 네트워크 인터페이스 컴포넌트들 또는 다른 적합한 디바이스들을 포함할 수도 있다. 통신 컴포넌트들(1664)은, 예를 들어, 유선 통신, 무선 통신, 셀룰러 통신, 근접장 통신(Near Field Communication)(NFC), 블루투스 통신, Wi-Fi, 및/또는 다른 모달리티들을 통한 통신을 제공하도록 적응되는 컴포넌트들을 포함할 수도 있다. 디바이스(들)(1680)는 다른 머신들 또는 다양한 주변기기 디바이스들(예를 들어, USB를 통해 커플링됨)을 포함할 수도 있다.
일부 예들에서, 통신 컴포넌트들(1664)은 식별자들을 검출하거나 또는 식별자들을 검출하도록 적응되는 컴포넌트들을 포함할 수도 있다. 예를 들어, 통신 컴포넌트들(1664)은 라디오 주파수 식별(Radio Frequency Identification)(RFID) 태그 판독기들, NFC 검출기들, 광학 센서들(예를 들어, 1차원 또는 다차원 바 코드들, 또는 다른 광학 코드들), 및/또는 음향 검출기들(예를 들어, 태깅된 오디오 신호들을 식별하기 위한 마이크로폰들)을 포함할 수도 있다. 일부 예들에서, 위치 정보는, 인터넷 프로토콜(Internet Protocol)(IP) 어드레스를 통한 지리적 위치, Wi-Fi, 셀룰러, NFC, 블루투스, 또는 다른 무선 스테이션 식별 및/또는 신호 삼각 측량을 통한 위치와 같은(그러나 이에 제한되지 않음), 통신 컴포넌트들(1662)로부터의 정보에 기초하여 결정될 수도 있다.
다양한 구현들이 설명되었지만, 설명은 제한하기보다는 오히려 예시적인 것으로 의도되고, 구현들의 범주 내에 있는 더 많은 구현들 및 구현들이 가능하다는 것이 이해된다. 피처들의 많은 가능한 조합들이 첨부 도면들에 도시되고 이 상세한 설명에서 논의되지만, 개시된 피처들의 많은 다른 조합들이 가능하다. 임의의 구현의 임의의 피처가, 구체적으로 제약되지 않는 한, 임의의 다른 구현의 임의의 다른 피처 또는 요소와 조합하여 사용되거나 또는 그에 대체될 수도 있다. 그에 따라, 본 개시내용에 도시 및/또는 논의된 피처들 중 임의의 것이 임의의 적합한 조합으로 함께 구현될 수도 있다는 것이 이해될 것이다. 이에 따라, 구현들은 첨부된 청구범위 및 그의 등가물들의 관점을 제외하고는 제약되어서는 안 된다. 또한, 첨부된 청구범위의 범주 내에서 다양한 수정들 및 변경들이 이루어질 수도 있다.
전술한 것이 최상의 모드 및/또는 다른 예들인 것으로 간주되는 것을 설명하였지만, 다양한 수정들이 그 안에서 이루어질 수도 있고 본 명세서에 개시된 대상물이 다양한 형태들 및 예들로 구현될 수도 있으며, 교시들이 수많은 적용예들에 적용될 수도 있는데, 그 중 단지 일부만이 본 명세서에 설명되었다는 것이 이해된다. 다음의 청구범위에 의해 본 교시들의 진정한 범주 내에 속하는 임의의 그리고 모든 적용예들, 수정들 및 변형들을 청구하는 것으로 의도된다.
달리 언급되지 않는 한, 뒤따르는 청구범위를 포함하여 본 명세서에 제시되는 모든 측정치들, 값들, 등급들, 포지션들, 크기들, 사이즈들, 및 다른 사양들은 근사치이며 정확한 것이 아니다. 이들은 이들이 관련된 기능들과 그리고 이들이 관련된 기술분야에서 관습적인 것과 일치하는 합리적인 범위를 갖는 것으로 의도된다.
보호 범주는 이제 뒤따르는 청구범위에 의해서만 오로지 제한된다. 그 범주는 본 명세서와 뒤따르는 출원 경과에 비추어 해석될 때 청구범위에서 사용되는 언어의 통상적인 의미와 일치할 정도로 폭넓은 것으로 그리고 모든 구조적 및 기능적 등가물들을 포괄하는 것으로 의도되고 그러한 것으로 해석되어야 한다. 그럼에도 불구하고, 청구범위 중 어떠한 것도 특허법의 섹션들 101, 102, 또는 103의 요건을 충족시키지 못하는 대상물을 수용하는 것으로 의도되지 않으며, 이들이 그러한 방식으로 해석되어서도 안 된다. 그러한 대상물의 임의의 의도하지 않은 수용은 이로써 부인된다.
바로 위에 언급된 것을 제외하고는, 언급 또는 예시된 어떠한 것도, 그것이 청구범위에 기재되어 있든지 또는 기재되어 있지 않든지 간에 상관없이, 임의의 컴포넌트, 단계, 피처, 목적, 이익, 이점, 또는 등가물의 공중에게의 양도를 야기하는 것으로 의도되지 않거나 또는 그러한 것으로 해석되어서는 안 된다.
본 명세서에서 사용되는 용어들 및 표현들은, 본 명세서에서 특정 의미들이 달리 제시된 경우를 제외하고는, 이들의 대응하는 각각의 조사 및 연구 영역들과 관련하여 그러한 용어들 및 표현들에 부여되는 바와 같은 통상적인 의미를 갖는 것으로 이해될 것이다. 제1 및 제2 등과 같은 관계형 용어들은 오로지 하나의 엔티티 또는 액션을 다른 엔티티 또는 액션과 구별하기 위해, 그러한 엔티티들 또는 액션들 사이의 임의의 실제적인 그러한 관계 또는 순서를 반드시 요구 또는 암시하는 일 없이, 사용될 수도 있다. 용어들 "포함하다(comprises)", "포함하는(comprising)", 또는 이들의 임의의 다른 변형은 비배타적인 포함을 커버하도록 의도되어, 요소들의 리스트를 포함하는 프로세스, 방법, 물품, 또는 장치가 이들 요소들만을 포함하는 것이 아니라, 명백히 리스팅되지 않거나 그러한 프로세스, 방법, 물품, 또는 장치에 내재하는 다른 요소들을 포함할 수도 있다. 단수형 "a" 또는 "an"으로 진행되는 요소는, 추가의 제약들 없이, 요소를 포함하는 프로세스, 방법, 물품, 또는 장치에서 부가적인 동일한 요소들의 존재를 배제시키지 않는다.
본 개시내용의 요약서는 독자가 기술적 개시내용의 본질을 신속하게 확인하게 하도록 제공된다. 그것은 청구범위의 범주 또는 의미를 해석 또는 제한하는 데 사용되지 않을 것이라는 이해 하에 제출된다. 부가적으로, 전술한 상세한 설명에서, 본 개시내용을 간소화할 목적으로 다양한 피처들이 다양한 예들에서 함께 그룹화된다는 것을 알 수 있다. 본 개시내용의 방법은 청구범위가 각각의 청구항에 명확히 기재된 것보다 더 많은 피처들을 요구한다는 의도를 반영하는 것으로서 해석되어서는 안 된다. 오히려, 다음의 청구범위가 반영하는 바와 같이, 본 발명의 대상물은 단일의 개시된 예의 모든 피처들보다 더 적게 있다. 따라서, 다음의 청구범위는 이로써 상세한 설명에 포함되고, 이때 각각의 청구항은 개별적으로 청구되는 대상물로서 독자적으로 존재한다.

Claims (15)

  1. 데이터 프로세싱 디바이스로서,
    적어도 하나의 프로세서; 및
    명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체
    를 포함하고,
    상기 명령어들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금,
    이미지 스캐닝 애플리케이션을 통해 이미지를 수신하게 하고;
    상기 이미지에서 복수의 이산 후보 영역(discrete candidate region)들을 자동으로 검출하게 하고;
    스캐닝을 위해 상기 복수의 이산 후보 영역들의 서브세트를 식별하게 하고 - 상기 서브세트는 제1 영역 및 제2 영역을 포함함 -;
    적어도 상기 제1 영역 및 상기 제2 영역의 스캐닝을 개시하기 위한 제1 신호를 검출하게 하고;
    상기 제1 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 상기 제1 영역 및 상기 제2 영역을 캡처하게 하고;
    적어도 상기 제1 영역에 대응하는 제1 이미지 콘텐트 및 상기 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들 폴더에 저장하게 하는 것인, 데이터 프로세싱 디바이스.
  2. 제1항에 있어서,
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    저장된 이미지 콘텐트에 액세스하기 위한 그래픽 사용자 인터페이스를 제시하게 하고;
    상기 제1 이미지 콘텐트에 대한 제1 세트의 정보 및 상기 제2 이미지 콘텐트에 대한 제2 세트의 정보를 디바이스 디스플레이 상에 제시하게 하는 것인, 데이터 프로세싱 디바이스.
  3. 제1항에 있어서,
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 이미지를 디바이스 디스플레이 상에 제시하게 하고;
    제1 시각적 표시자로 상기 제1 영역의 적어도 제1 주변부(first perimeter)를 오버레이하게 하고, 제2 시각적 표시자로 상기 제2 영역의 적어도 제2 주변부를 오버레이하게 하는 것인, 데이터 프로세싱 디바이스.
  4. 제1항에 있어서,
    상기 복수의 이산 후보 영역들의 서브세트는 제3 영역을 더 포함하고;
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 제3 영역을 선택해제하기 위해, 상기 제3 영역과 연관된 제1 입력을 수신하게 하고;
    상기 복수의 이산 후보 영역들의 서브세트로부터 상기 제3 영역을 제거하게 하는 것인, 데이터 프로세싱 디바이스.
  5. 제1항에 있어서,
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    디바이스 디스플레이 상에 상기 이미지를 제1 이미지 프리뷰(first image preview)로서 제시하게 하고;
    각각의 영역의 적어도 일 부분 상의 시각적 표시자의 오버레이에 의해 상기 제1 이미지 프리뷰에서 상기 복수의 이산 후보 영역들 각각을 구별하게 하는 것인, 데이터 프로세싱 디바이스.
  6. 제5항에 있어서,
    상기 복수의 이산 후보 영역들의 서브세트는 제3 영역을 더 포함하고;
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    상기 제3 영역을 선택해제하기 위해, 상기 제3 영역과 연관된 제1 입력을 수신하게 하고;
    상기 제3 영역 상에 오버레이된 시각적 표시자를 제거하게 하는 것인, 데이터 프로세싱 디바이스.
  7. 제1항에 있어서,
    상기 복수의 이산 후보 영역들의 각각의 영역은 형상이 실질적으로 사각형인 것인, 데이터 프로세싱 디바이스.
  8. 제7항에 있어서,
    상기 제1 영역은 제1 배향으로 배향되고, 상기 제2 영역은 제2 배향으로 배향되고, 상기 제1 배향은 상기 제2 배향과는 상이한 것인, 데이터 프로세싱 디바이스.
  9. 제1항에 있어서,
    상기 제1 영역의 제1 구역은 상기 제2 영역의 제2 구역보다 더 큰 것인, 데이터 프로세싱 디바이스.
  10. 제1항에 있어서,
    상기 명령어들은 또한, 상기 적어도 하나의 프로세서로 하여금,
    세그먼트화된 이미지를 생성하기 위해 클러스터링 알고리즘을 통해 상기 이미지를 복수의 세그먼트들로 분할하게 하고;
    상기 세그먼트화된 이미지에 에지 검출 알고리즘을 적용하게 하고;
    상기 이미지에서의 상기 복수의 이산 후보 영역들의 자동 검출은 적어도 상기 세그먼트화된 이미지에 대한 상기 에지 검출 알고리즘의 적용에 기초하는 것인, 데이터 프로세싱 디바이스.
  11. 방법으로서,
    이미지 스캐닝 애플리케이션을 통해 이미지를 수신하는 단계;
    상기 이미지에서 복수의 이산 후보 영역들을 자동으로 검출하는 단계;
    스캐닝을 위해 상기 복수의 이산 후보 영역들의 서브세트를 식별하는 단계 - 상기 서브세트는 제1 영역 및 제2 영역을 포함함 -;
    적어도 상기 제1 영역 및 상기 제2 영역의 스캐닝을 개시하기 위한 제1 신호를 수신하는 단계;
    상기 제1 신호에 응답하여, 실질적으로 병렬 프로세스에서 적어도 상기 제1 영역 및 상기 제2 영역을 캡처하는 단계; 및
    적어도 상기 제1 영역에 대응하는 제1 이미지 콘텐트 및 상기 제2 영역에 대응하는 제2 이미지 콘텐트를 스캐닝된 이미지들 폴더에 저장하는 단계
    를 포함하는, 방법.
  12. 제11항에 있어서,
    저장된 이미지 콘텐트에 액세스하기 위한 그래픽 사용자 인터페이스를 제시하는 단계; 및
    상기 제1 이미지 콘텐트에 대한 제1 세트의 정보 및 상기 제2 이미지 콘텐트에 대한 제2 세트의 정보를 디바이스 디스플레이 상에 제시하는 단계
    를 더 포함하는, 방법.
  13. 제11항에 있어서,
    상기 이미지를 디바이스 디스플레이 상에 제시하는 단계; 및
    제1 시각적 표시자로 상기 제1 영역의 적어도 제1 주변부를 오버레이하고, 제2 시각적 표시자로 상기 제2 영역의 적어도 제2 주변부를 오버레이하는 단계
    를 더 포함하는, 방법.
  14. 제11항에 있어서,
    상기 복수의 이산 후보 영역들의 서브세트는 제3 영역을 더 포함하고;
    상기 방법은,
    상기 제3 영역을 선택해제하기 위해, 상기 제3 영역과 연관된 제1 입력을 수신하는 단계;
    상기 복수의 이산 후보 영역들의 서브세트로부터 상기 제3 영역을 제거하는 단계
    를 더 포함하는, 방법.
  15. 제11항에 있어서,
    디바이스 디스플레이 상에 상기 이미지를 제1 이미지 프리뷰로서 제시하는 단계; 및
    각각의 영역의 적어도 일 부분 상의 시각적 표시자의 오버레이에 의해 상기 제1 이미지 프리뷰에서 상기 복수의 이산 후보 영역들 각각을 구별하는 단계
    를 더 포함하는, 방법.
KR1020217024570A 2019-01-07 2019-12-30 멀티-영역 이미지 스캐닝 KR20210112345A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/241,904 US11532145B2 (en) 2019-01-07 2019-01-07 Multi-region image scanning
US16/241,904 2019-01-07
PCT/US2019/068882 WO2020146158A1 (en) 2019-01-07 2019-12-30 Multi-region image scanning

Publications (1)

Publication Number Publication Date
KR20210112345A true KR20210112345A (ko) 2021-09-14

Family

ID=69188024

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024570A KR20210112345A (ko) 2019-01-07 2019-12-30 멀티-영역 이미지 스캐닝

Country Status (5)

Country Link
US (1) US11532145B2 (ko)
EP (1) EP3909231A1 (ko)
KR (1) KR20210112345A (ko)
CN (1) CN113273167B (ko)
WO (1) WO2020146158A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210065374A1 (en) * 2019-08-26 2021-03-04 Organize Everything Inc. System and method for extracting outlines of physical objects

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668636A (en) 1995-12-20 1997-09-16 Xerox Corporation Embedded data controlled digital highlight color copier
GB9711022D0 (en) 1997-05-28 1997-07-23 Rank Xerox Ltd Text/image selection from document images
US5880858A (en) 1997-12-31 1999-03-09 Mustek Systems Inc. Method of auto-cropping images for scanners
US6151426A (en) * 1998-10-01 2000-11-21 Hewlett-Packard Company Click and select user interface for document scanning
US6970607B2 (en) * 2001-09-05 2005-11-29 Hewlett-Packard Development Company, L.P. Methods for scanning and processing selected portions of an image
US7212316B2 (en) 2001-12-19 2007-05-01 Wen-Yung Huang Method for automatically identifying scan area
US7634138B2 (en) 2002-12-20 2009-12-15 Eastman Kodak Company Method for generating an image of a detected subject
US7668404B2 (en) * 2004-06-30 2010-02-23 Lexmark International, Inc. Method and system of deskewing an image using monochrome conversion to separate foreground from background
US7885463B2 (en) 2006-03-30 2011-02-08 Microsoft Corp. Image segmentation using spatial-color Gaussian mixture models
US8184915B2 (en) * 2006-12-04 2012-05-22 Lockheed Martin Corporation Device and method for fast computation of region based image features
US7953268B2 (en) 2008-01-18 2011-05-31 Mitek Systems, Inc. Methods for mobile image capture and processing of documents
JP4525787B2 (ja) * 2008-04-09 2010-08-18 富士ゼロックス株式会社 画像抽出装置、及び画像抽出プログラム
US9177218B2 (en) 2008-09-08 2015-11-03 Kofax, Inc. System and method, and computer program product for detecting an edge in scan data
US8913285B1 (en) * 2009-06-07 2014-12-16 Apple Inc. Automated method of decomposing scanned documents
US8345106B2 (en) 2009-09-23 2013-01-01 Microsoft Corporation Camera-based scanning
US9165187B2 (en) 2012-01-12 2015-10-20 Kofax, Inc. Systems and methods for mobile image capture and processing
US9443314B1 (en) 2012-03-29 2016-09-13 Google Inc. Hierarchical conditional random field model for labeling and segmenting images
KR20140031742A (ko) * 2012-09-05 2014-03-13 삼성전기주식회사 이미지 특징 추출 장치 및 이미지 특징 추출 방법, 그를 이용한 영상 처리 시스템
JP2014092899A (ja) * 2012-11-02 2014-05-19 Fuji Xerox Co Ltd 画像処理装置及び画像処理プログラム
EP2790152B1 (en) * 2013-04-12 2015-12-02 Alcatel Lucent Method and device for automatic detection and tracking of one or multiple objects of interest in a video
US9177223B2 (en) 2014-01-14 2015-11-03 Welch Allyn, Inc. Edge detection in images
WO2015116803A1 (en) 2014-01-31 2015-08-06 3M Innovative Properties Company Note capture and recognition with manual assist
WO2016207875A1 (en) 2015-06-22 2016-12-29 Photomyne Ltd. System and method for detecting objects in an image
US10091392B2 (en) * 2015-08-25 2018-10-02 Hitachi Information & Telecommunication Engineering, Ltd. Image reading device, image reading method, and image reading program
US10095944B2 (en) 2015-08-28 2018-10-09 Tata Consultancy Services Limited Methods and systems for shape based image analysis for detecting linear objects
US10922832B2 (en) * 2018-07-31 2021-02-16 Intel Corporation Removal of projection noise and point-based rendering
US10902277B2 (en) 2018-09-10 2021-01-26 Microsoft Technology Licensing, Llc Multi-region detection for images

Also Published As

Publication number Publication date
CN113273167B (zh) 2023-10-13
WO2020146158A1 (en) 2020-07-16
US11532145B2 (en) 2022-12-20
CN113273167A (zh) 2021-08-17
EP3909231A1 (en) 2021-11-17
US20200218924A1 (en) 2020-07-09

Similar Documents

Publication Publication Date Title
US11113523B2 (en) Method for recognizing a specific object inside an image and electronic device thereof
US10698560B2 (en) Organizing digital notes on a user interface
US11550993B2 (en) Ink experience for images
US9384405B2 (en) Extracting and correcting image data of an object from an image
CN112673617B (zh) 针对图像的多区域检测
US9292186B2 (en) Note capture and recognition with manual assist
US20200304713A1 (en) Intelligent Video Presentation System
WO2015116799A1 (en) Note capture, recognition, and management with hints on a user interface
KR102303206B1 (ko) 전자장치에서 이미지 내의 특정 객체를 인식하기 위한 방법 및 장치
CN113273167B (zh) 数据处理设备、方法和存储介质
US10686983B1 (en) Automatic image capture mode based on changes in a target region
WO2020107186A1 (en) Systems and methods for taking telephoto-like images
WO2020107187A1 (en) Systems and methods for taking telephoto-like images