KR20070116925A - 웹 페이지 데이터 전송 시스템 및 방법 - Google Patents

웹 페이지 데이터 전송 시스템 및 방법 Download PDF

Info

Publication number
KR20070116925A
KR20070116925A KR1020077024755A KR20077024755A KR20070116925A KR 20070116925 A KR20070116925 A KR 20070116925A KR 1020077024755 A KR1020077024755 A KR 1020077024755A KR 20077024755 A KR20077024755 A KR 20077024755A KR 20070116925 A KR20070116925 A KR 20070116925A
Authority
KR
South Korea
Prior art keywords
image
resolution
data
cache
image data
Prior art date
Application number
KR1020077024755A
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
Priority claimed from US11/141,958 external-priority patent/US7546419B2/en
Priority claimed from US11/247,513 external-priority patent/US7912299B2/en
Priority claimed from US11/252,181 external-priority patent/US7930434B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20070116925A publication Critical patent/KR20070116925A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents

Abstract

프록시 서버로 인터넷 사이트에 액세스하는 단계, 상기 인터넷 사이트로부터의 이미지 데이터를 다중 해상도 표현(multiresolution representation)으로 변환하는 단계, 및 상기 다중 해상도 표현의 상기 이미지 데이터를 클라이언트 장치로 전송하는 단계를 포함하는 시스템 및 방법이 개시되어 있다.
다중 해상도 표현, 내비게이션, 프록시 서버, 줌인, 줌아웃, 패닝

Description

웹 페이지 데이터 전송 시스템 및 방법{SYSTEM AND METHOD FOR TRANSFERRING WEB PAGE DATA}
개인 휴대 단말기(PDA), 셀룰러 전화, 또는 무선 단말기 등의 소형 장치 상에서 웹을 브라우징하면 유용할 것이라고 오래 전부터 인식하고 있었다. 이러한 장치 상에서 웹 브라우징하는 것을 구현하는 데 관련된 어려움은 일반적으로 컴퓨팅 능력의 제한으로 인한 것이 아니다. 오히려, 이러한 어려움은 이하의 2가지 원인으로 인한 것이다. 첫째, 디스플레이는 보통 아주 작으며, 디스플레이가 보다 큰 디스플레이 또는 윈도우(예를 들어, 일반적으로 적어도 800x200 또는 1024x768 픽셀)용으로 특별히 설계된 웹 페이지를 디스플레이하는 것을 어렵게 만든다. 둘째, 소형 무선 장치는 일반적으로 낮은 대역폭으로 원거리 통신망(wide-area network)에 연결되어 있으며, HTML(Hypertext Markup Language, 하이퍼텍스트 마크업 언어) 페이지를 보기 이전에 이들 페이지를 전부 다운로드해야 하기 때문에 종래의 웹 브라우징을 번거롭게 만든다.
이 문제점에 대한 몇몇 부분적인 해결책이 있다. 예를 들어, 한 컴퓨터 하드웨어 제조업자가 BREW(Binary Runtime Environment for Wireless)에 기초하여 소형 장치로 컨텐츠를 무선 전달하는 새로운 플랫폼을 설계하였다. 그렇지만, 이러한 종류의 해결책은 컨텐츠 제공업자가 그의 컨텐츠를 BREW 기술을 사용하여 제공 하기로 동의할 것과 제3자 컨텐츠 통합자(content aggregator)가 컨텐츠 또는 응용 프로그램에 특수한 형식을 사용하여 계속하여 기존의 컨텐츠를 재패키징(repackage)하고, 다시 그 결과를 BREW 기술을 사용하여 서비스할 것을 요구한다.
다른 부분적 해결책으로는 Opera Mobile Accelerator(오페라 모바일 액셀러레이터) 및 Small-Screen Rendering(스몰-스크린 렌더링)™와 함께 Opera For Mobile(이동 전화용 오페라)이 있다. 이들 기술은 이동 전화 무선 플랫폼으로 포팅된 인기있는 웹 브라우저, Opera에 기초하고 있다. Small-Screen Rendering™은 웹 페이지를 이동 전화 단말기의 디스플레이의 수평 크기 내에 들어가도록 동적으로 형식 변경(reformat)하려고 시도한다. Opera Mobile Accelerator는 프록시 서버를 사용하여 요구 시에 그의 원래의 HTML 형식의 웹 페이지에 액세스하며, 이어서 그의 HTML을 압축하고 그 압축된 버전을 이동 전화 단말기로 전달한다. Opera에 따르면, Opera Mobile Accelerator는 웹 페이지의 크기를 대략 50-70%만큼 감소시키지만, 웹 페이지를 90%까지 감소시킬 수 있다. 이것을 염두에 두면, 데이터가 더 신속히 검색되고 웹 페이지가 더 빨리 디스플레이된다. 일반적으로, 속도의 증가는 방문하고 있는 사이트의 유형에 의존한다. 이들 2가지 기술은 웹 브라우징과 관련하여 이동 전화 단말기 디스플레이 크기 및 대역폭의 문제점에 대한 부분 해결책을 제공한다. 그렇지만, 기술 분야에서 제한된 대역폭 또는 다른 통신 및/또는 처리 능력 제한을 갖는 디지털 장치에 웹 페이지 데이터를 제공하는 개선된 시스템 및 방법이 필요하다.
한 측면에 따르면, 본 발명은, 프록시 서버로 인터넷 사이트에 액세스하는 단계, 상기 인터넷 사이트로부터의 이미지 데이터를 다중 해상도 표현(multiresolution representation)으로 변환하는 단계, 및 상기 다중 해상도 표현의 상기 이미지 데이터를 클라이언트 장치로 전송하는 단계를 포함할 수 있는 방법을 개시한다. 양호하게는, 본 방법은 상기 클라이언트 장치로 웹 페이지를 내비게이션하는 단계를 더 포함한다. 양호하게는, 상기 내비게이션하는 단계는, (a) 상기 프록시 서버로 상기 인터넷 사이트 이미지 데이터를 내비게이션하는 단계, 및 (b) 상기 클라이언트 장치로 상기 다중 해상도 이미지 데이터를 내비게이션하는 단계를 포함하며, 상기 단계 (a)의 내비게이션하는 단계 및 상기 단계 (b)의 내비게이션하는 단계는 거의 동시에 행해진다.
양호하게는, 상기 내비게이션하는 단계는, 상기 웹 페이지의 적어도 거의 전부에 대한 다중 해상도 이미지 데이터를 상기 프록시 서버에 저장하는 단계, 및 상기 클라이언트 장치로 상기 저장된 다중 해상도 이미지 데이터를 내비게이션하는 단계를 포함한다. 양호하게는, 상기 변환하는 단계는 상기 클라이언트 장치에 의한 상기 내비게이션 단계에서 필요하게 될 때 상기 인터넷 사이트 이미지 데이터를 연속적으로 변환하는 단계를 포함한다. 양호하게는, 상기 변환하는 단계는, 상기 프록시 서버로 상기 인터넷 사이트로부터의 선택된 이미지 데이터를, 상기 선택된 이미지 데이터가 상기 클라이언트 장치 내비게이션을 위해 필요하게 되기 이전에, 사전 변환하는 단계, 및 상기 사전 변환된 이미지 데이터를 상기 프록시 서버에 저장하는 단계를 포함한다.
양호하게는, 본 방법은 상기 클라이언트 장치 내비게이션에서 필요하게 될 때 상기 저장된 이미지 데이터를 상기 클라이언트 장치로 전송하는 단계를 더 포함한다. 양호하게는, 본 방법은 상기 저장된 사전 변환된 이미지 데이터가 이 데이터의 상기 클라이언트 장치로의 전송 이전에 오래된 것(stale)이 되지 않도록 보장해주는 단계를 더 포함한다. 양호하게는, 상기 보장해주는 단계는 상기 사전 변환된 이미지 데이터의 타임스탬프 및 체크섬 중 하나를 상기 인터넷 사이트로부터 나온 대응하는 이미지 데이터의 타임스탬프 및 체크섬 중 하나와 각각 비교하는 단계를 포함한다. 양호하게는, 상기 사전 변환하는 단계는, 상기 프록시 서버로 적어도 하나의 웹 페이지에 대한 이미지 데이터를 변환하는 단계, 및 상기 적어도 하나의 웹 페이지에 대한 상기 변환된 이미지 데이터를 상기 프록시 서버에 저장하는 단계를 포함한다.
양호하게는, 본 방법은 상기 클라이언트 장치와 상기 인터넷 사이트 간의 양방향 대화형 통신(bi-directional interactive communication)을 가능하게 해주는 단계를 더 포함한다. 양호하게는, 상기 대화형 통신은 상기 클라이언트 장치로부터의 내비게이션 명령을 상기 프록시 서버로 전송하는 단계를 포함한다. 양호하게는, 본 방법은 상기 프록시 서버로 상기 클라이언트 장치에 대한 동적 인터넷 그래픽(dynamic Internet graphics)을 에뮬레이트하는 단계를 더 포함한다. 양호하게는, 상기 에뮬레이트하는 단계는, 동적 HTML(Hypertext Markup Language, 하이퍼텍스트 마크업 언어), 및 애플릿(applet) 중 적어도 하나를 에뮬레이트하는 단계를 포함한다. 양호하게는, 상기 내비게이션하는 단계는 상기 클라이언트 장치에서 상기 웹 페이지의 적어도 일부분을 보게 될 해상도 레벨을 선택하는 단계를 포함한다.
양호하게는, 상기 내비게이션하는 단계는 상기 클라이언트 장치 상에 디스플레이하기 위한 상기 웹 페이지의 영역을 선택하는 단계를 포함한다. 양호하게는, 상기 내비게이션하는 단계는 상기 웹 페이지의 상기 영역을 보게 될 해상도를 선택하는 단계를 더 포함한다. 양호하게는, 상기 내비게이션하는 단계는 상기 클라이언트 장치에서 보기 위한 상기 웹 페이지의 복수의 부분을 선택하는 단계를 포함한다. 양호하게는, 상기 내비게이션하는 단계는 상기 복수의 웹 페이지 부분을 보게 될 복수의 각자의 해상도를 선택하는 단계를 더 포함한다. 양호하게는, 상기 다중 해상도 이미지 데이터를 내비게이션하는 상기 단계는 상기 다중 해상도 이미지 데이터를 패닝(panning)하는 단계를 포함한다. 양호하게는, 상기 다중 해상도 이미지 데이터를 내비게이션하는 상기 단계는 상기 다중 해상도 이미지 데이터를 줌인(zoom in)하는 단계를 포함한다.
다른 측면에 따르면, 본 발명은, 클라이언트 장치, 및 상기 클라이언트 및 인터넷 사이트와 통신하고 이들 사이의 중개자(intermediary)로서 역할하는 프록시 서버를 포함하는 장치를 제공할 수 있으며, 상기 프록시 서버는 상기 인터넷 사이트로부터의 이미지 데이터를 다중 해상도 비쥬얼 데이터 형식(multiresolution visual data format)으로 변환하는 동작을 한다. 양호하게는, 상기 다중 해상도 비쥬얼 데이터 형식은 JPEG2000이다. 양호하게는, 상기 클라이언트 장치는 셀 전화(cell phone)이고, 상기 셀 전화는 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 내비게이션하는 적어도 하나의 메카니즘을 포함한다. 양호하게는, 상기 메카니즘은 터치패드이고, 상기 터치패드는 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 패닝하는 것을 가능하게 해준다. 양호하게는, 상기 메카니즘은 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 줌인(zoom in)하는 것을 가능하게 해준다. 양호하게는, 상기 줌잉(zooming)하는 메카니즘은 상기 클라이언트 장치의 사용자에 의해 회전가능한 롤러(roller)를 포함한다. 양호하게는, 상기 클라이언트 장치는, 셀 전화, PDA(Personal Digital Assistant, 개인 휴대 단말기), 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 및 텔레비전 세트로 이루어진 그룹 중 하나이다.
첨부 도면과 관련하여 본 명세서에서 본 발명의 양호한 실시예의 설명을 보면 기타 측면, 특징, 이점 등이 당업자에게는 명백할 것이다.
도 1은 본 발명의 하나 이상의 실시예에 따른 프록시 서버 및 클라이언트 장치를 포함하는 통신 시스템의 블록도.
도 2a는 본 발명의 하나 이상의 실시예에 따라 커스터마이즈된 클라이언트 장치(셀 전화일 수 있음)의 정면도.
도 2b는 본 발명의 하나 이상의 실시예에 따라 커스터마이즈된 클라이언트 장치(셀 전화일 수 있음)의 배면의 입면도.
도 2c는 본 발명의 하나 이상의 실시예에 따라 커스터마이즈된 클라이언트 장치(셀 전화일 수 있음)의 배면의 입면도.
도 3은 본 발명의 하나 이상의 실시예에 따른 클라이언트 장치로 이미지 데이터를 내비게이션하는 방법의 플로우차트.
도 4는 본 발명의 하나 이상의 실시예에 따른 클라이언트 장치 상에 보여지는 웹 페이지 칼럼(web page column)을 나타낸 도면.
도 5a는 본 발명의 하나 이상의 실시예에 따른, 초당 20 킬로비트의 속도로 약 2초 로드한 후에 도 4의 웹 페이지를 나타낸 도면.
도 5b는 본 발명의 하나 이상의 실시예에 따른, 초당 20 킬로비트의 속도로 약 10초 로드한 후에 도 4의 웹 페이지를 나타낸 도면.
도 6a는 본 발명의 하나 이상의 실시예에 따른, 초당 20 킬로비트로 약 2초 동안 데이터를 로드한 후에 도 4의 웹 페이지의 상부 부분을 나타낸 도면.
도 6b는 본 발명의 하나 이상의 실시예에 따른, 초당 20 킬로비트로 약 10초 동안 데이터를 로드한 후에 도 4의 웹 페이지의 상부 부분을 나타낸 도면.
도 7은 본 발명의 하나 이상의 실시예에 따른, 도 6의 보기(view)를 캡처한 직후에 캡처된 도 4의 웹 페이지의 일부분을 줌인(zoom in)하여 나타낸 도면.
도 8a 및 도 8b는 각각 본 발명의 하나 이상의 실시예에 따른, 도 4의 웹 페이지의 일부분의 세로 보기(portrait view) 및 가로 보기(landscape view)를 나타낸 도면.
도 9는 본 발명의 하나 이상의 실시예에서 사용하도록 구성가능한 컴퓨터 시스템의 블록도.
본 발명의 여러가지 측면을 설명하기 위해, 현재 양호한 형태가 도면에 도시되어 있지만, 본 발명이 도시된 정확한 구성 및 수단으로 제한되지 않는다는 것을 잘 알 것이다.
도 1은 본 발명의 하나 이상의 실시예에 따른 프록시 서버(150) 및 클라이언트 장치(230)를 포함하는 통신 시스템(140)의 블록도이다. 통신 시스템(140)은 인터넷(180), 클라이언트 장치(230) 및 프록시 서버(150)를 포함할 수 있으며, 프록시 서버(150)는 또한 캐쉬(160)를 포함할 수 있다. 인터넷(180)은 프록시 서버(150)가 종래의 방식으로 인터넷을 브라우징할 수 있게 해주는 데 필요한 통신 링크와 컴퓨팅 및 통신 하드웨어를 포함하는 것으로 해석될 수 있다. 프록시 서버(150)와 인터넷(180) 간에 사용하기 위해서는 고대역폭 연결이 바람직하지만, 기술 분야에 공지된 어떤 통신 링크라도 프록시 서버(150)를 인터넷(180)에 연결하는 데 사용될 수 있다. 일반적으로, 프록시 서버(150)는 전체로서 인터넷으로의 게이트웨이로서 역할하는 인터넷 서비스 공급자(Internet Service Provider, ISP)(도시 생략)에 연결될 수 있다. 본 명세서에서의 하나 이상의 실시예에서, 인터넷(180)은 이러한 인터넷 서비스 공급자를 포함시키기 위한 것이다.
프록시 서버(150)는 인터넷과 통신을 하고 인터넷으로부터 다운로드된, 이미지 데이터를 비롯한, 데이터를 처리하도록 적절히 구성된 퍼스널 컴퓨터 또는 기타 컴퓨팅 장치일 수 있다. 프록시 서버(150)는 양호하게는 인터넷(180)으로 명령을 전송하고 그로부터 이미지 데이터를 수신할 수 있다.
프록시 서버(150)는 이미지 데이터를 비롯한 데이터에의 빠르고 용이한 액세스를 가능하게 해주기 위해 이러한 데이터를 저장하는 캐쉬(160)를 포함할 수 있다. 캐쉬(160)는, 프록시 서버(150)와 동일한 물리적 인클로저(physical enclosure) 내에 있는 것 등에 의해, 물리적으로 서버(150) 내에 포함될 수 있다. 다른 대안으로서, 캐쉬(160)는 프록시 서버(150)와 분리되어 하우징될 수 있지만 캐쉬(160)에 액세스가능하다.
클라이언트 장치(230)는 양호하게는 프록시 서버(150)와 통신을 수행할 수 있는 휴대용 컴퓨팅 장치이다. 그렇지만, 클라이언트 장치는 데스크톱 컴퓨터 등의 보다 큰 휴대가능하지 않은(non-portable) 컴퓨팅 장치일 수 있다. 클라이언트 장치(230)는 셀 전화, 개인 휴대 단말기(PDA), 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터 및 텔레비전 세트 중 하나일 수 있다. 그렇지만, 클라이언트 장치(230)는 이상의 물품 중 하나인 것으로 제한되지 않는다. 양호하게는, 클라이언트 장치(230)가 텔레비전 세트인 경우, 이 텔레비전 세트는 다중 해상도 이미지 데이터를 수신하고 내비게이션 명령을 프록시 서버(150)(이에 한정되지 않음) 등의 외부 장치로 전송할 수 있다. 클라이언트 장치(230)는 또한 프록시 서버(150)로부터 수신된 다중 해상도 이미지 데이터를 저장하는, 휘발성 및/또는 비휘발성 저장소를 비롯한, 데이터 저장 기능(data storage capability)을 포함할 수 있다. 이러한 데이터 저장소는 RAM(Random Access Memory, 랜덤 액세스 메모리), ROM(Read Only Memory, 판독 전용 메모리), 하드 드라이브, CD-ROM 드라이브, CD-RW(CD read-write), 및 버블 메모리(bubble memory)를 포함할 수 있지만, 이에 한정되는 것은 아니다. 원하는 경우, 클라이언트 장치(230) 데이터 저장소는 캐쉬 메모리를 포함할 수 있다.
프록시 서버(150)는 클라이언트 장치(230)가 인터넷(180)으로부터의 이미지 데이터를 다중 해상도 형식으로 변환한 후에 이러한 데이터를 브라우징할 수 있게 해주기 위해 인터넷(180)과 클라이언트 장치(230) 간의 중개자(intermediary)로서 역할할 수 있으며, 이에 대해서는 도 2a 내지 도 2c와 관련하여 보다 상세히 기술된다.
도 2a는, 본 발명의 하나 이상의 실시예에 따라 커스터마이즈된 셀 전화일 수 있는 클라이언트 장치(230)의 정면도이다. 도 2b는 도 2a의 클라이언트 장치(230)의 배면의 입면도이다. 그리고, 도 2c는 도 2a의 클라이언트 장치의 배면의 입면도이다.
도 2a 내지 도 2c의 예시들이 다루고 있는 하나 이상의 실시예들에서, 클라이언트 장치(230)는 다중 해상도 이미지 데이터를 브라우징하도록 특별히 구성된 셀 전화 또는 PDA이다. 클라이언트 장치(230)는 본체(body)(232), 디스플레이(234), 안테나(236), 터치패드(238), 조이스틱(240), 및/또는 롤러(roller)(242)를 포함할 수 있다. 도 2a 내지 도 2c에서, 롤러(242)는 클라이언트 장치(230)의 본체(232)로부터 어느 정도 돌출해 있는 것으로 도시되어 있다. 이 돌출이 설명을 위해 도시되어 있다. 롤러 또는 휠(wheel)(242)은 클라이언트 장치(230)의 사용자에 의해 접근가능하기만 하면 된다. 따라서, 이는 본체(232)로부터 아주 약간 돌출해있을 수 있다. 다른 대안으로서, 본체(232) 측면에 있는 함몰부(도시 생략)가 제공될 수 있으며, 그 안에 휠(242)이 내포되어 있음으로써, 휠(242)이 클라이언트 장치(230)의 본체(232)의 측면의 직선 모서리 부분(straight-edged portion)을 넘어 돌출하지 않을 수 있게 해준다.
하나 이상의 실시예들에서, 디스플레이(234)는 클라이언트 장치(230)의 전면 상에 위치될 수 있다(도 2a). 그렇지만, 다른 실시예들에서, 디스플레이(234)는 클라이언트 장치(230) 상의 어디에라도 위치될 수 있다. 터치패드(238)는 클라이언트 장치(230)의 배면 상에 위치될 수 있으며(도 2b), 프록시 서버(150)로부터 수신된 이미지 데이터를 패닝하는 데 사용될 수 있다. 그렇지만, 다른 대안으로서, 터치패드(238)는 클라이언트 장치(230)의 어느 면에도 위치될 수 있다. 다른 대안으로서, 터치패드(238)는 이미지 데이터를 줌잉(zooming)하는 데 사용될 수 있다. 하나 이상의 다른 실시예들에서, 터치패드(238)는 이미지 데이터를 패닝(panning) 및 줌잉(zooming)하는 데 사용될 수 있다.
클라이언트 장치(230)의 사용자는 터치패드(238)의 표면을 따라 손가락을 이동시킴으로써 이미지 데이터를 패닝 또는 줌잉할 수 있다. 이에 부가하여 또는 다른 대안으로서, 터치패드(238)는 디스플레이(234) 상에 디스플레이된 하나 이상의 이미지 영역 또는 웹 페이지 영역 상에서 커서를 이동시키는 데 이용될 수 있다. 복수의 이미지(아마도 2개의 서로 다른 웹 페이지로부터 온 것이지만, 꼭 그럴 필요는 없음)가 디스플레이(234) 상에 디스플레이되는 경우, 그 이미지들 중 하나에 대해 내비게이션 단계를 수행하기 위해 그 이미지를 확인하는 데 커서의 사용이 유익할 수 있다.
대안의 실시예에서, 터치패드(238)에 부가하여 또는 그 대신에, 조이스틱(240)(도 2c)이 이미지 데이터를 패닝하는 데 이용될 수 있다. 조이스틱은 클라이언트 장치(230)의 사용자가 이미지를 패닝하고자 하는 방향에 대응하는 방향으로 조이스틱(240)을 밀어서 이미지 데이터를 패닝하는 데 사용될 수 있다. 터치패드(238)에서와 같이, 조이스틱(240)도 클라이언트 장치(230)의 어느 면에도 위치될 수 있다.
하나 이상의 실시예들에서, 휠(24) 등의 별도의 장치 또는 슬라이더(도시 생략) 등의 기타 장치를 사용하여 또는, 터치패드(238) 표면의 모서리 상에서 손가락을 위아래로 슬라이딩시키는 등, 터치패드(238) 상에서 전형적인 손놀림(stereotyped gesture)을 사용하여 줌잉이 달성될 수 있다. 후자의 경우에, 터치패드(238) 상에서 양쪽 검지 손가락이 동시에 사용될 수 있으며, 한쪽은 패닝을 하고 다른 쪽은 줌잉을 한다.
터치패드(238) 및 휠(242) 둘다를 포함하는 하나 이상의 실시예들에서, 클라이언트 장치(230)의 사용자는 줌잉과 패닝 간을 신속하게 왔다갔다 전환할 수 있거나 심지어 패닝 및 줌잉을 동시에 할 수 있다. 본 명세서에서, 휠(242)은 또한 "롤러"라고도 할 수 있다.
상기한 특징들 중 하나 이상을 이용하면, 비록 클라이언트 장치(230)의 사용자가 디스플레이(화면)(234)를 통해 더 큰 표면을 보고 있더라도, 패닝 및/또는 줌잉이 촉각적 경험(tactile experience)이 될 수 있다. 한쪽 손의 검지 손가락이 터치패드(238)를 스트로크(stroke)하여, 이미지를 패닝하고 터치패드(238)를 사용 하여 보다 큰 이미지가 디스플레이(234) 후방으로부터 이동되고 있다는 느낌을 제공할 수 있다. 이와 유사한 방식으로, 휠(242)의 움직임이 "보다 큰 이미지"를, 휠(242)의 회전 방향에 따라, 디스플레이(234)에 더 가깝게 또는 그로부터 더 멀리 이동시키는 느낌을 제공하기 위해 이미지를 줌인하는 데 휠(242)을 사용하는 것이 이용될 수 있다.
상기한 촉각 인터페이스(haptic interface)는 얄팍한 학습 곡선(shallow learning curve)을 갖는 자연스럽고 친숙한 "느낌(feel)"을 제공할 수 있다. 하나 이상의 실시예들은 또한, 터치스크린을 사용하는 보다 종래의 해결책과 비교하여, 이미지를 패닝하기 위해 손가락이 터치패드(238)를 스트로크하는 동안 방해받지 않고 디스플레이를 볼 수 있게 해주는 이점을 제공할 수 있다. 게다가, 하나 이상의 실시예들에서, 터치패드(238) 및 휠(242)을 사용하든지 기타 내비게이션 메카니즘을 사용하든지 간에, 용이하게 패닝과 줌잉을 교대로 할 수 있고 및/또는 이들 2가지 활동을 동시에 또는 거의 동시에 수행할 수 있음으로써 상승 효과가 얻어질 수 있다.
하나 이상의 실시예들에서, 터치패드(238)는 약 2 인치 x 1.5 인치의 크기를 가질 수 있지만, 터치패드(238)는 어느 한 치수가 열거된 값보다 작거나 클 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따른, 클라이언트 장치(230)로 이미지 데이터를 내비게이션하는 방법(320)의 플로우차트이다. 도 3에 도시된 단계들은 도시된 순서로 수행되는 것으로 제한되지 않는다. 어떤 경우에, 도시된 단계 들 중 2개 이상이 동시에 수행될 수 있다. 이하에서, 이들 단계가 열거되고 요약되어 있으며, 그 다음에 이들 단계를 기본적인 대화형 브라우징 및 그의 변형에 적용하는 것에 대해 기술되어 있다.
방법(320)은 프록시 서버(150)로 인터넷(180)에 있는 인터넷 사이트에 액세스하는 단계(단계 322)를 포함할 수 있다. 프록시 서버는 액세스된 인터넷 사이트로부터의 이미지 데이터를, 공간적 랜덤 액세스(spatial random access)를 지원하는 다중 해상도 비쥬얼 데이터 형식(다중 해상도 이미지 데이터)으로 변환할 수 있다(단계 324). JPEG2000은 이러한 비쥬얼 데이터 형식의 한 가능한 예이다. 그렇지만, 본 발명은 이 표준의 사용으로 제한되지 않는다. 본 명세서에서, 용어 "변환(converting)"은 일반적으로 통상의 웹 페이지 데이터를 다중 해상도 이미지 데이터로 전환시키는 것에 적용되는 용어 "재패키징(repackaging)"에 대응한다.
방법(320)은, 궁극적으로 클라이언트 장치(230) 상에 디스플레이하기 위해(단계 328), 프록시 서버(150)에서 다중 해상도 이미지 데이터를 클라이언트 장치(230)로 전송하는 단계를 포함할 수 있다(단계 326). 클라이언트 장치(230)는, 단계(326)에서의 전송 이후에 또는 그와 동시에, 전송된 다중 해상도 이미지 데이터를 내비게이션할 수 있다(단계 330). 클라이언트 장치(230)로 내비게이션되는(단계 330) 전송된 다중 해상도 이미지 데이터는 동적 HTML 및 애플릿 기능(이에 한정되지 않음) 등의 에뮬레이트된 인터넷 그래픽 특징을 포함할 수 있다.
일 실시예에서, 프록시 서버(150)는 인터넷(180) 상의 웹 페이지로부터의 이미지 데이터를, 이러한 데이터가 클라이언트 장치(230)의 내비게이션(단계 330)에 서 필요하게 될 때, 다중 해상도 이미지 데이터로 변환한다(단계 324).
다중 해상도 이미지 데이터는 이어서 양호하게는 클라이언트 장치(230)로 전송되고(단계 326) 클라이언트 장치(230) 상에 디스플레이된다(단계 328). 이 실시예에서, 프록시 서버(150)로 웹 페이지일 수 있는 인터넷 사이트에 액세스하는 단계(단계 322) 및 클라이언트 장치(230)로 다중 해상도 이미지 데이터를 내비게이션하는 단계는 거의 동시에 행해질 수 있다. 따라서, 이 실시예에서, 웹 페이지 이미지 데이터(또는 다른 유형의 이미지 데이터)의 변환(단계 324)은, 클라이언트 장치(230)에 의해 행해지는 내비게이션(단계 330)에 응답하여, 실질적으로 "동작 중에(on the fly)" 행해진다. 내비게이션(단계 330)은 클라이언트 장치(230)로 패닝 및 줌잉하는 것을 포함할 수 있지만, 이에 한정되지 않는다.
다른 실시예에서, 프록시 서버는 하나 이상의 전체 웹 페이지 또는 다른 형태의 인터넷 이미지 데이터를 다중 해상도 이미지 데이터로 변환 또는 "사전 변환(pre-convert)"하고, 이 변환된 데이터를, 클라이언트 장치(230)가 즉각 액세스할 수 있도록 또 클라이언트 장치(230)로 전송하기 위해, 프록시 서버(150)가 액세스가능한 캐쉬(160) 또는 다른 메모리 장치에 저장할 수 있다. 이 사전 변환은 관련 웹 페이지 데이터가 필요로 되기 이전에 클라이언트 장치(230) 내비게이션(단계 330) 명령에 응답하여 수행될 수 있다.
하나 이상의 실시예들에서, 프록시 서버(150)는, 클라이언트 장치(230)로부터의 이미지 데이터의 요청에 대해 서비스할 때, 원래의 HTML 컨텐츠가 캐싱된 버전과 비교하여 변경되지 않았음을 검증함으로써 캐싱된 사전 변환된 다중 해상도 이미지 데이터가 "오래된(stale)" 것이 되지 않도록 보장해줄 수 있다. 이 검증은 타임스탬프(timestamp), 체크섬(checksum)을 비교함으로써 또는 기타의 공지된 방법을 사용함으로써 달성될 수 있다. 프록시 서버가 해야 하는 HTML 요청의 수를 제한하기 위해 "오래됨(staleness)"에 대한 어떤 허용오차가 내장되어 있을 수 있다. 본 설명에서, "오래된" 것이 아닌 데이터는 "신선한(fresh)" 것이다.
하나 이상의 실시예들에서, 프록시 서버(150)는 인터넷(180), 또는 보다 구체적으로는 인터넷(180)의 사이트 또는 인터넷 페이지와 클라이언트 장치(230) 간의 중개자로서 역할한다. 그 결과, 프록시 서버(150)의 인터넷(180)과의 통신은 양호하게는 클라이언트 장치(230)에서 다중 해상도 이미지 데이터를 브라우징하는 것에 반응한다. 또한, 도 3에 도시된 단계들 중 2개 이상이, 한번에 하나씩 또한 엄격히 말하여 도시된 순서로 행해지기 보다는, 상호작용적으로 및/또는 동시에 행해질 수 있다.
일반적으로, 웹 페이지 이미지 데이터는 인터넷(180)으로부터 프록시 서버(150)로 흐르며, 이 프록시 서버(150)에서 이 데이터는 다중 해상도 이미지 데이터로 변환될 수 있다. 그 시점에서, 다중 해상도 이미지 데이터는 캐쉬(160)에 저장되고 및/또는 클라이언트 장치(230)로 전송되어 클라이언트 장치(230) 상에 디스플레이될 수 있다. 클라이언트 장치는, 필요한 경우, 수신된 다중 해상도 이미지 데이터를 저장할 수 있다.
내비게이션 또는 브라우징 명령은 일반적으로 반대 방향으로 진행된다. 구체적으로 말하면, 내비게이션 요청 및/또는 웹 페이지나 인터넷 사이트를 브라우징 하는 것과 관련된 기타 명령은 클라이언트 장치(230)에서 시작되어 프록시 서버(150)로 진행할 수 있으며, 그 후에, 아마도 수정된 형태로, 프록시 서버(150)로부터 인터넷(180)으로 전송될 수 있다. 클라이언트 장치(230)로부터 프록시 서버(150)에 수신된 명령의 적당한 변환 또는 재구성은, 이러한 명령을 인터넷(180)으로 재전송하기 이전에, 프록시 서버(150)에서 실시될 수 있다. 예를 들어, 클라이언트 장치(230)가 다른 웹 페이지로의 링크를 클릭하는 경우, 프록시 서버(150)는 그 대상 웹 페이지(target web page)에 액세스하기 위해 이 링크 명령(linking command)을 인터넷(180)으로 재전송할 수 있다. 클라이언트 장치(230)에 의해 전송될 수 있는 명령은 패닝 및 줌잉 등의 내비게이션 명령을 포함할 수 있다. 또다른 명령으로는 마우스 또는 기타 장치로 클릭하는 것, 타이핑하는 것, 말하는 것(음성 명령이 클라이언트 장치(230)에서 이해될 수 있음), 몸짓하는 것, 터치패드(238)의 표면을 따라 손가락 또는 기구를 움직이는 것, 휠(242)을 움직이는 것, 또는 조이스틱(240)을 움직이는 것이 있을 수 있다.
하나의 웹 페이지가 액세스되고(단계 322) 다중 해상도 이미지 데이터로 변환되며(단계 324) 캐쉬(160)에 저장되는 제1 예를 생각해보자. 캐쉬(160)에 저장된 후에, 클라이언트 장치(230)에서 필요하게 될 때 다중 해상도 이미지 데이터가 브라우징될 수 있다.
계속하여 이 예에서, 클라이언트 장치(230)가 저해상도 레벨의 변환된 웹 페이지의 최초 렌더링을 수신하는 것으로 가정한다. 이 시작점("해상도 레벨 1")으로부터, 클라이언트 장치(230)의 사용자는 웹 페이지의 선택 영역 "A"를 줌인한다. 클라이언트 장치가 그의 로컬 저장소에 고해상도 이미지 데이터를 가지고 있지 않은 것으로 가정하면, 줌잉 명령이 양호하게는 필요한 데이터를 캐쉬(160)로부터 검색할 수 있고 이 이미지 데이터를 클라이언트 장치(230)로 전송할 수 있는 프록시 서버(150)로 전송된다.
양호하게는, 클라이언트 장치(230)에 의해 요청되는 줌잉의 범위는 프록시 서버(150)에 의해 선택된 해상도 레벨(이 예에서, "해상도 레벨 2")과 연관되어 있을 수 있다. 그 결과 얻어지는 해상도 레벨은 선택된 영역(영역 "A")의 일련의 사전 정의된 해상도 레벨들 중 하나로부터 선택될 수 있다. 다른 대안으로서, 선택된 해상도 레벨이 사전 정의된 해상도 레벨들 중 하나에 정확하게 대응하지 않는 경우, 본 명세서에 포함된 문서에 개시되어 있는 하나 이상의 보간 계산(interpolation calculation)을 수행함으로써 요청된 해상도 레벨이 계산될 수 있다.
이어서, 클라이언트 장치(230)의 디스플레이(234)는 양호하게는 선택된 해상도로 선택된 영역 "A"를 보여준다. 아마도, 실질적으로는 변환된 웹 페이지의 영역 A만이 디스플레이(234) 상에 디스플레이된다.
계속하여 이 예에서, 클라이언트 장치(230)의 사용자가 그 다음에 양호하게는 영역 "A"를 디스플레이하는 데 이전에 사용된 해상도 레벨("해상도 레벨 2")을 유지하면서 웹 페이지 내에서 영역 "A"로부터 영역 "B"(영역들이 도시되어 있지 않음)로 측방으로 패닝하고자 하는 상황을 생각해보자. 영역 "B"에 대한 다중 해상도 이미지 데이터가 클라이언트 장치(230) 내에서 이용가능하지 않은 것으로 가정 할 때, 영역 "B" 쪽으로 패닝하는 단계는 양호하게는 프록시 서버(150)로 하여금 캐쉬(160) 또는 프록시 서버(150)가 액세스가능한 다른 데이터 저장 장치로부터 영역 "B"에 대한 이미지 데이터를 탐색(seek)하여 이 데이터를 클라이언트 장치(230)로 전송하게 한다. 이 데이터를 수신할 시에, 클라이언트 장치(230)는 영역 "B"를 "해상도 레벨 2"로 디스플레이할 수 있어야만 한다. 유의할 점은, 해상도 레벨 2에 대한 이미지 데이터가 캐쉬(160)에 없는 경우, 프록시 서버(150)가 양호하게는 다시 인터넷(180)으로부터 적당한 웹 페이지에 액세스하고 그 웹 페이지에 대한 데이터를 캐쉬(160)에 저장된 것보다 더 높은 해상도를 갖는 다중 해상도 이미지 데이터로 변환한다는 것이다.
계속하여 이 예에서, 그 다음에 클라이언트 장치(230)의 사용자가 제1 웹 페이지 내의, 양호하게는 제1 웹 페이지의 영역 B 내의 하이퍼링크를 활성화시키고자 하는 상황을 생각해보자.
클라이언트 장치(230)의 사용자가 하이퍼링크를 클릭할 때, 프록시 서버(150)는 이 하이퍼링크와 연관된 웹 페이지 이미지 데이터가 캐쉬(160)에 있는지를 판정할 수 있다. 그에 따라, 프록시 서버(150)는 양호하게는 인터넷(180)과의 통신에 하이퍼링크의 대상 웹 페이지에 대한 요청을 복제한다.
양호하게는, 프록시 서버(150)는 이어서 하이퍼링크의 대상 웹 페이지에 액세스한다. 프록시 서버(150)는 이어서 대상 웹 페이지로부터의 이미지 데이터를 다중 해상도 이미지 데이터로 변환하고 이 다중 해상도 이미지 데이터를, 클라이언트 장치(230) 상에 디스플레이하기 위해, 클라이언트 장치(230)로 동적으로 스트리 밍할 수 있다. 다른 대안으로서 또는 그에 부가하여, 프록시 서버(150)는 대상 웹 페이지에 대한 다중 해상도 이미지 데이터의 전부 또는 그 일부를, 필요에 따라 클라이언트 장치(230)가 나중에 액세스하도록, 캐쉬(160)에 저장할 수 있다. 캐쉬(160) 또는 다른 적당한 저장 장치에의 이러한 저장은 유익할 수 있는데 그 이유는 클라이언트 장치(230)가 대상(하이퍼링크된) 웹 페이지에 대한 다중 해상도 이미지 데이터 전부를 한꺼번에 수신하여 디스플레이할 수 없을지도 모르기 때문이다. 클라이언트 장치(230)가 대상 웹 페이지의 하나 이상의 영역을 고해상도 레벨로 보기로 선택한 경우 이렇게 할 수 없을 가능성이 많다. 유의할 점은, 일반적으로, 클라이언트 장치가 다중 해상도 이미지 데이터를 디스플레이하는 (디스플레이된 영역의) 해상도가 높을수록, 그 디스플레이된 영역이 작게 된다.
하나 이상의 실시예들에서, 클라이언트 장치(230)는 웹 페이지의 복수의 영역 또는 복수의 각자의 웹 페이지로부터 가져온 복수의 영역을 디스플레이할 수 있을지 모른다. 이 경우에, 클라이언트 장치(230)는 양호하게는 각각의 이러한 디스플레이된 영역에 대한 디스플레이 해상도를 독립적으로 선택할 수 있다. 이 경우에, 클라이언트 장치(230) 내의 터치패드(238) 또는 기타 메카니즘은 양호하게는, 차례로, 각각의 이러한 이미지에 대한 원하는 해상도를 선택하기 위해 각각의 이미지 상으로 커서를 이동시킬 수 있다.
게다가, 어느 한 이미지(이 이미지가 웹 페이지의 단지 일부분만을 형성할 수 있음) 내에서, 해상도가 일정할 필요는 없다. 해상도는 관심의 영역을 고해상도로 보는 우선순위의 경합을 중재하기 위해 필요에 따라 변할 수 있으며, 그에 의 해 전체 이미지를 고해상도로 디스플레이하는 데 필요하게 되는 만큼의 다중 해상도 이미지 데이터를 수신해야 한다는 데이터 저장 및 데이터 통신 부담을 회피하게 된다.
본 명세서에 기술된 프록시에 의해 웹 브라우징을 하는 방식의 하나 이상의 실시예는 이하에 기술되는 특징들을 제공할 수 있다.
이상에서 기술한 바와 같이, 프록시에 의한 웹 브라우징에 줌잉 기능이 제공될 수 있다. 따라서, 클라이언트 장치(230)보다 폭이 넓은 디스플레이를 보도록 구성된 웹 페이지가 그럼에도 불구하고 디스플레이(234) 등의 소형 디스플레이 상에서 그의 전체 컬럼 폭으로 볼 수 있다. 텍스트가 컬럼 크기에 비해 작은 경우, 하나의 라인을 전체로서 읽기 위해 수평으로 패닝하는 것이 유익할 수 있다. 그렇지만, 연속적인 줌잉의 사용은 176 픽셀 폭(이 폭은 어떤 상용 이동 전화의 특징임)의 디스플레이 상에서도 많은 텍스트 컬럼이 전체로서 읽혀질 수 있게 해줄 수 있다.
하나 이상의 실시예들에서, 이것은 웹 페이지의 레이아웃을 변경하게 되는 어떤 형식 변경(reformatting)도 없이 가능하다. 도 4는 웹 페이지(원래는 800x200 픽셀 디스플레이 상에서 보도록 설계됨)의 컬럼을 이러한 방식으로 보는 것을 나타낸 것이다.
다중 해상도 이미지 데이터 형식으로의 변환이 상당히 빠르거나 캐싱된 다중 해상도 이미지 컨텐츠가 이미 캐쉬(160)에서 이용가능하기만 하다면, 관련 웹 페이지를 요청한 직후에 그 웹 페이지 전체의 초기 보기(initial view)가 클라이언트 장치(230)에서 볼 수 있게 렌더링될 수 있다. 임의의 길이의 웹 페이지에 대해서도 이 기능이 제공될 수 있다. 이는 웹 페이지의 초기 보기(initial view)가 전체 페이지의 줌아웃된 개요(zoomed-out overview)이거나 웹 페이지의 상부(또는 임의의 다른 부분)의 줌인된 보기(zoomed-in view)인지에 상관없이 적용된다.
도 5a 및 도 6a는 이들 상황을 나타낸 것으로서, 각각 20 킬로비트/초 연결을 통해 약 2초 로드한 후에 대형 웹 페이지의 전체적인 개요(general overview) 및 상부 보기(top view)를 제공한다. 도 5b 및 도 6b는 각각 약 10초의 데이터 로드 시간 후에 도 5a 및 도 6a의 보다 분명한 형태(version)를 나타낸 것이다.
신문 등의 다양한 컨텐츠를 갖는 복잡한 웹 페이지의 경우, 고객은 전체 문서가 다운로드되기를 기다리지 않고 즉각적으로 흥미있는 영역에 계속적으로 집중할 수 있다(도 7 참조).
클라이언트 장치(230)의 자원에 부담을 주지 않고, 초기 보기(initial view)까지의 시간을 지연시키지 않고 또 성능 열화를 야기하지 않고, 길이가 거의 무한인 웹 페이지를 볼 수 있다.
하나 이상의 실시예들에서, 웹 페이지는 초대형 이미지를 가질 수 있으며, 클라이언트 장치(230)의 자원에 부담을 주지 않고, 웹 페이지의 초기 보기(initial viewing)까지의 시간을 지연시키지 않고 및/또는 성능 열화를 가져오지 않고, 클라이언트 장치(230)는 이 이미지의 세밀한 상세를 보기 위해 줌인할 수 있다.
어떤 경우에, 소형 장치 디스플레이는 폭보다 높이가 길 수 있다(예를 들어, 삼성® SGH-D410 이동 전화의 경우, 176 픽셀 폭 x 220 픽셀 높이). 그렇지만, 웹 브라우징의 경우, 가장 제약하는 변수는 컬럼 폭일 수 있으며, 그에 의해 이동 전화 디스플레이가 "세로" 페이지 설정보다 "가로" 페이지 설정을 사용하는 것이 바람직하게 된다. 다중 해상도 이미지 데이터가 선택가능한 각도 거리만큼 비쥬얼 컨텐츠(visual content)의 회전을 가능하게 해주기 때문에, 컨텐츠 브라우징 동안에 최대 효과를 내기 위해 디스플레이의 보다 큰 크기가 사용될 수 있다(도 8a 및 도 8b 참조).
하나 이상의 실시예들에서, 다중 해상도 이미지 데이터에 액세스하는 클라이언트 장치(230)는 프록시 서버(150)에 의해 발생된 다중 해상도 이미지 데이터만이 아니라 다중 해상도 이미지 데이터에 액세스하는 임의의 서버에서 비롯된 이미지 컨텐츠를 볼 수 있다. 따라서, 이러한 클라이언트 장치(230)는 많은 수의 대형 이미지, 대형의 다중 해상도 벡터 지도(vectorial map), 및 종래의 HTML을 사용하여 서비스하는 것이 어렵거나 불가능할 수 있는 다른 종류의 이미지 컨텐츠를 연속적으로 내비게이션할 수 있다.
상기한 이점들은 프록시 서버(150)를 사용하여 다중 해상도 이미지 데이터를 브라우징하는 것이 셀룰러 전화 사용자에게 뿐만 아니라 PDA 또는 팜톱 무선 장치, 무선 인터넷을 갖춘 노트북 컴퓨터, 모뎀 등의 협대역 연결을 통해 인터넷에 접속된 홈 컴퓨터 사용자(home computer user), 및/또는 홈 광대역 사용자(home broadband user)(이에 한정되는 것은 아님)를 비롯한 보다 큰 장치의 사용자에게도 유익을 줄 정도로 매력적일 수 있다.
홈 광대역 사용자의 경우, 프록시 서버(150)를 사용하여 다중 해상도 이미지 데이터를 클라이언트 장치(230)로 전송하는 시스템의 하나 이상의 실시예는 이하의 것들을 포함하는 특징들을 제공할 수 있지만, 이에 한정되는 것은 아니다.
a) 작은 유형의 이미지의 가독성(legibility)을 향상시키거나 그 이미지의 세밀한 부분(detail)을 검사하기 위해 웹 페이지가 계속적으로 줌잉될 수 있음,
b) 소형 디스플레이용으로 설계된 웹 페이지가 고해상도 디스플레이 상에서 (텍스트 또는 벡터 컴포넌트에 대해) 세밀한 부분까지 선명하게 브라우징될 수 있음,
c) 다수의 웹 페이지가 풍성한 2D(2차원) 또는 3D(3차원) 다중 스케일 환경에서 재배열, 조작 및 크기 조정될 수 있으며, 종래의 다중창 또는 탭 브라우징에 대한 대안적인 사용자 경험을 제공함, 및/또는
d) 프록시 서버(150) 캐싱의 신중한 사용을 통해, 과도한 클라이언트 장치(230) 메모리 또는 다른 자원을 필요로 하지 않고, 잠재적으로 무한한 수의 웹 페이지가 웹의 대규모 라이브 "보기"(live large-scale view)에 통합될 수 있음.
마지막으로, 이미지를 다중 해상도 이미지 데이터 형식으로 디스플레이하는 것이 대형 디스플레이의 고대역폭 플랫폼 및 소형 디스플레이의 저대역폭 플랫폼에 대한 상보적인 이점을 제공할 수 있기 때문에, 이러한 방식으로 디스플레이하는 것은 사용자 경험을 단일화할 수 있고, 서로 다른 플랫폼에 대해 서로 다른 버전의 비쥬얼 컨텐츠 및/또는 브라우저가 제공되어야만 하기 보다는, 크로스-플랫폼(cross-platform) 엔지니어링 및 개발을 단순화시킬 수 있다.
도 9는 본 발명의 하나 이상의 실시예들에서 사용하는 데 적합한 컴퓨팅 시 스템(800)의 블록도이다. 하나 이상의 실시예들에서, 중앙 처리 장치(CPU)(802)는 버스(804)에 연결될 수 있다. 게다가, 버스(804)는 랜덤 액세스 메모리(RAM)(806), 판독 전용 메모리(ROM)(808), 입/출력(I/O) 어댑터(810), 통신 어댑터(822), 사용자 인터페이스 어댑터(806), 및 디스플레이 어댑터(818)에 연결될 수 있다.
하나 이상의 실시예들에서, RAM(806) 및/또는 ROM(808)은 사용자 데이터, 시스템 데이터 및/또는 프로그램을 보유하고 있을 수 있다. I/O 어댑터(810)는 하드 드라이브(812), CD-ROM(도시 생략), 또는 다른 대용량 저장 장치 등의 저장 장치를 컴퓨팅 시스템(800)에 연결시킬 수 있다. 통신 어댑터(822)는 컴퓨팅 시스템(800)을 근거리 통신망, 원거리 통신망 또는 인터넷 통신망(824)에 연결시킬 수 있다. 사용자 인터페이스 어댑터(816)는 키보드(826) 및/또는 포인팅 장치(814) 등의 사용자 입력 장치를 컴퓨팅 시스템(800)에 연결시킬 수 있다. 게다가, 디스플레이 어댑터(818)는 디스플레이 장치(820) 상에 디스플레이하는 것을 제어하기 위해 CPU(802)에 의해 구동될 수 있다. CPU(802)는 임의의 범용 CPU일 수 있다.
유의할 점은 지금까지 기술된 및/또는 본 문서에서 나중에 기술되는 방법 및 장치가 표준 디지털 회로, 아날로그 회로 등의 공지된 기술들 중 임의의 기술, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 공지의 프로세서들 중 임의의 프로세서, 프로그램가능 디지털 장치 또는 시스템, 프로그램가능 어레이 로직 장치(programmable array logic device), 또는 이들의 임의의 조합을 사용하여 달성될 수 있다는 것이다. 본 발명의 하나 이상의 실시예들은 또한, 적당한 저장 매체에 저장하고 처리 장치에 의해 실행하기 위해, 소프트웨어 프로그램으로 구현될 수 있다.
본 명세서에서의 본 발명이 특정의 실시예들을 참조하여 기술되어 있지만, 이들 실시예가 단지 본 발명의 원리 및 응용을 설명하는 것에 불과하다는 것을 잘 알 것이다. 따라서, 이들 예시적인 실시예에 여러가지 수정이 행해질 수 있으며 본 명세서의 끝부분에 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위를 벗어나지 않고 다른 구성들이 고안될 수 있다는 것을 잘 알 것이다.
본 출원서의 특허첨구범위 및 요약서 앞에 추가의 문헌들이 첨부되어 있다.
<발명의 명칭>
줌잉 사용자 인터페이스에서 정확하게 렌더링하는 시스템 및 방법{SYSTEM AND METHOD FOR EXACT RENDERING IN A ZOOMING USER INTERFACE}
<기술 분야>
본 발명은 일반적으로 컴퓨터용 그래픽 줌잉 사용자 인터페이스(ZUI, zooming user interface)에 관한 것이다. 보다 구체적으로는, 본 발명은 계산 효율적[그 결과, 양호한 사용자 응답성(good user responsiveness) 및 상호작용적 프레임 레이트(interactive frame rate)가 얻어짐]이면서도 정확한[벡터 드로잉(vector drawing), 텍스트, 및 기타 비사진 컨텐츠(non-photographic content)가 궁극적으로 재샘플링(통상적으로 이미지 품질의 열화를 가져옴)없이 또한 다른 이미지의 보간(역시 열화를 가져옴) 없이 드로잉된다는 의미에서] 방식으로 줌잉가능한 비쥬얼 컨텐츠(zoomable visual content)를 점진적으로 렌더링하는 시스템 및 방법이다.
<배경 기술>
대부분의 현재의 그래픽 컴퓨터 사용자 인터페이스(GUI)는 고정된 공간 스케일(spatial scale)의 비쥬얼 컴포넌트(visual component)를 사용하여 설계된다. 그렇지만, 컴퓨터 그래픽 분야의 태동기부터 비쥬얼 컴포넌트가 디스플레이 상에서 고정된 공간 스케일을 갖지 않고 줌인(zoom in) 또는 줌아웃(zoom out)될 수 있도록 표현되고 조작될 수 있다는 것을 인식하고 있었다. 줌잉가능 컴포넌트가 바람직하다는 것은 많은 응용 분야(몇가지만 열거하면, 지도 보기, 신문 등의 커다란 이질적인 텍스트 레이아웃들을 통한 브라우징, 디지털 사진 앨범 보기, 및 대규모 데이터 세트의 시각화에 대한 작업)에서 명백하다. 스프레드쉬트 및 보고서 등의 통상의 문서를 볼 때에도, 문서 개요를 대강 훑어보고 이어서 관심의 영역을 줌인할 수 있는 것이 유용한 경우가 많다. Microsoft
Figure 112007076898436-PCT00001
Word
Figure 112007076898436-PCT00002
및 기타 Office
Figure 112007076898436-PCT00003
제품(보기 메뉴 하의 줌잉), Adobe
Figure 112007076898436-PCT00004
Photoshop
Figure 112007076898436-PCT00005
, Adobe
Figure 112007076898436-PCT00006
Acrobat
Figure 112007076898436-PCT00007
, QuarkXPress
Figure 112007076898436-PCT00008
, 기타 등등의 많은 최신의 컴퓨터 응용 프로그램들은 줌잉가능한 컴포넌트들을 포함한다. 대부분의 경우에, 이들 응용 프로그램은 문서의 줌인 및 줌아웃을 가능하게 해주지만, 응용 프로그램의 비쥬얼 컴포넌트 자체의 줌인 및 줌아웃을 반드시 가능하게 해주는 것은 아니다. 게다가, 줌잉은 통상적으로 사용자의 소프트웨어와의 상호작용의 지엽적인 측면이며, 줌잉 설정은 단지 이따금씩 수정될 뿐이다. 문서 구석구석까지 연속적으로 패닝하는 것이 보통이지만(예를 들어, 스크롤바 또는 커서를 사용하여 보는 문서를 좌, 우, 상 또는 하로 이동시킴), 사용자에 친숙한 방식으로 연속적으로 줌잉 및 패닝하는 기능이 종래 기술의 시스템에는 없다.
먼저, 우리는 몇가지 정의를 기술한다. 디스플레이는 렌더링된 이미지를 사용자에게 출력하는 데 사용되는 장치 또는 장치들이다. 프레임 버퍼는 디스플레이의 적어도 일부분의 내용을 동적으로 표현하는 데 사용된다. 디스플레이 리프레쉬 레이트(refresh rate)는 물리적 디스플레이 또는 그의 일부분이 프레임 버퍼의 내용을 사용하여 리프레쉬되는 속도이다. 프레임 버퍼의 프레임 레이트는 프레임 버 퍼가 갱신되는 속도이다.
예를 들어, 일반적인 퍼스널 컴퓨터에서, 디스플레이 리프레쉬 레이트는 60 - 90 Hz이다. 대부분의 디지털 비디오는, 예를 들어, 24 - 30 Hz의 프레임 레이트를 갖는다. 따라서, 디스플레이가 리프레쉬될 때, 디지털 비디오의 각각의 프레임은 실제로 적어도 2번 디스플레이된다. 복수의 프레임 버퍼가 서로 다른 프레임 레이트로 이용될 수 있으며, 따라서 동일한 디스플레이 상에서 거의 동시에 디스플레이될 수 있다. 이것은, 예를 들어, 서로 다른 프레임 레이트를 갖는 2개의 디지털 비디오가 동일한 디스플레이 상에서 서로 다른 창에 재생되고 있을 때 일어난다.
줌잉 사용자 인터페이스(ZUI)에서의 한가지 문제점은 사용자가 줌잉할 때 비쥬얼 컨텐츠가 다른 해상도로 디스플레이되어야만 한다는 것이다. 이 문제점에 대한 이상적인 해결책은 기초가 되는 비쥬얼 컨텐츠를 바탕으로, 모든 연속적인 프레임에서, 정확하고 새로 계산된 이미지를 디스플레이하는 것이다. 이러한 방식에서의 문제점은 사용자가 줌잉할 때 비쥬얼 컨텐츠의 각각의 해상도를 실시간으로 정확하게 재계산하는 것이, 기초가 되는 비쥬얼 컨텐츠가 복잡한 경우, 계산적으로 실행불가능하다는 것이다.
상기한 바의 결과로서, 많은 종래 기술의 ZUI 시스템은 복수의 사전 계산된 이미지를 사용하며, 각각의 이미지는 동일한 비쥬얼 컨텐츠의 서로 다른 해상도에서의 표현이다. 우리는 이들 서로 다른 사전 계산된 이미지들 각각을 LOD(Level of Detail, 상세 수준)라고 부른다. 감소하는 해상도의 이미지들의 적층으로서 개 념적으로 구성되는 전체 LOD 세트를 LOD 피라미드(LOD pyramid)라고 한다(도 10 참조). 이러한 종래 시스템에서, 줌잉이 행해질 때, 이 시스템은 LOD들 간에 보간을 하여, 그 결과 이미지를 원하는 해상도로 디스플레이한다. 이 방식은 계산 문제를 해결하지만, 종종 흐릿하고 사실적이지 않은 최종적인 열화된 이미지를 디스플레이하고 또 서로 다른 LOD의 보간을 표현한다는 사실로 인해 종종 정보의 손실을 수반한다. 이러한 보간 에러는 사용자가 줌잉을 중지하고 LOD들 중 임의의 것의 해상도와 정확하게 일치하지 않는 선택된 해상도로 정지 영상(still image)을 볼 기회가 있을 때 특히 두드러진다.
사전 계산된 LOD들 간의 보간에서의 또하나의 문제점은 이 방식이 일반적으로 사진 또는 이미지 데이터와 동일한 방식으로 벡터 데이터(vector data)를 처리한다는 것이다. 설계도(blueprint) 또는 선 그리기(line drawing) 등의 벡터 데이터는 임의의 원하는 해상도로 선, 곡선 및 다른 기본 형상(primitive shape)을 렌더링할 수 있는 렌더링 알고리즘을 사용하여 일련의 추상 명령어(abstract instruction)를 처리함으로써 디스플레이된다. 스케일러블 글꼴(scalable font)을 사용하여 렌더링된 텍스트는 벡터 데이터의 중요하고 특수한 경우이다. 이미지 또는 사진 데이터(비트맵 글꼴(bitmapped font)을 사용하여 렌더링된 텍스트를 포함함)는 그렇게 발생되지 않지만, 사전 계산된 LOD들 간의 보간에 의해 또는 원래의 이미지를 재샘플링함으로써 디스플레이되어야만 한다. 우리는 본 명세서에서 후자의 경우를 비벡터 데이터(nonvector data)라고 한다.
렌더링 알고리즘을 사용하여 줌잉 시퀀스 동안에 각각의 프레임에 대해 새로 운 해상도로 벡터 데이터를 재디스플레이(redisplay)하는 종래 기술의 시스템은 상호작용적 프레임 레이트(interactive frame rate)를 달성하기 위해 그 자신을 간단한 벡터 드로잉만으로 제한해야만 한다. 다른 한편으로, 비벡터 데이터에 대해서와 같이, 벡터 데이터에 대해 LOD를 사전 계산하고 이들 간에 보간을 하는 종래 기술의 시스템은 현저히 열화된 시각 품질을 겪게 되는데, 그 이유는 대부분의 벡터 데이터 렌더링에 본질적인 뾰족한 모서리(sharp edge)가 특히 보간 에러에 민감하기 때문이다. 벡터 데이터의 특별한 경우인 텍스트 컨텐츠의 경우 이 열화가 용인될 수 없을 정도인 것이 보통이다.
본 발명의 목적은 사용자가 물리적 객체를 실제로 보고 그 객체를 그에게 더 가까이 이동시킨 경우 그 사용자가 보게 되는 줌잉 효과(zooming effect)를 복제하는 ZUI를 생성하는 것이다.
본 발명의 목적은 적절한 해상도로 이미지를 디스플레이하지만 최종적인 디스플레이된 이미지에서 보간 에러를 회피 또는 감소시키는 ZUI를 생성하는 것이다. 본 발명의 다른 목적은 벡터 컨텐츠의 생생하고 명확한 보기를 유지하고 또 상호작용적 프레임 레이트를 유지하면서 사용자로 하여금 그 컨텐츠를 마음대로 줌인할 수 있게 해주는 것이다.
본 발명의 다른 목적은, 컨텐츠의 전체적인 모습을 보존하고 상호작용적 프레임 레이트를 유지하면서, 사용자로 하여금 복잡한 벡터 컨텐츠의 개요를 얻기 위해 마음대로 줌아웃할 수 있게 해주는 것이다.
본 발명의 다른 목적은 상호작용 동안에 LOD 또는 렌더링 품질의 변화에 대 한 사용자의 인지를 감소시키는 것이다.
본 발명의 다른 목적은 이미지의 일부분을 렌더링하는 데 통상 필요로 하는 정보가 아직까지 불완전할 때 흐릿하게 함으로써 이미지의 기품있는 열화를 가능하게 해주는 것이다.
본 발명의 다른 목적은 이미지의 일부분을 렌더링하는 데 필요로 되는 보다 완전한 정보가 이용가능하게 될 때 이미지 품질을 더 선명하게 보이도록 함으로써 이미지 품질을 점차적으로 향상시키는 것이다.
본 발명의 목적은 벡터 데이터 및 비벡터 데이터 둘다를 최적으로 또 독립적으로 렌더링하는 것이다.
본 발명의 이들 및 다른 목적은 이하의 명세서를 검토해보면 당업자에게는 명백하게 될 것이다.
<발명의 상세한 설명>
사용자가 그의 이미지 뷰(view)를 줌인 또는 줌아웃, 회전, 패닝 또는 다른 방식으로 변경할 때 그 이미지가 동적으로 변하는 해상도로 디스플레이될 수 있게 해주는 ZUI를 구현하는 혼합 전략(hybrid strategy)에 관한 본 발명에 따르면, 종래 기술의 상기한 문제점 및 기타 문제점이 극복된다. 임의의 이러한 뷰 변경을 내비게이션(navigation)이라고 한다. 이미지를 사전 정의된 LOD 중 임의의 것의 해상도와 같지 않은 해상도로 줌잉하는 것은 그 이미지를 원하는 해상도 "주변의" 사전 정의된 LOD들로부터 보간된 새로운 해상도로 디스플레이함으로써 달성된다. "주변의 LOD"란 원하는 해상도보다 큰 최저 해상도의 LOD 및 원하는 해상도보다 작 은 최고 해상도의 LOD를 의미한다. 원하는 해상도가 이용가능한 최고 해상도를 갖는 LOD의 해상도보다 크거나 최저 해상도를 갖는 LOD의 해상도보다 작은 경우, 단 하나의 "주변 LOD"만이 있다. 일련의 사전 계산된 LOD에 기초하여 원하는 해상도로 이미지를 동적으로 보간하는 것은 문헌에서 밉매핑(mipmapping) 또는 삼선형 보간(trilinear interpolation)이라고 한다. 후자의 용어는 또한 주변의 LOD를 재샘플링하는 데 이중선형 샘플링(bilinear sampling)이 사용되고 뒤이어서 이들 재샘플링된 LOD 간의 선형 보간이 있다(따라서, 삼선형임)는 것을 나타낸다. 예를 들어, Lance Williams의 "Pyramidal Parametrics"(피라미드 매개변수)(Computer Graphics(Proc. SIGGRAPH '83) 17(3): 1-11(1983년))을 참조하기 바란다. 상기 문서는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다. Williams에 의해 소개된 밉매핑 기술의 명백한 수정 또는 그의 확장은 주변의 LOD의 비선형 재샘플링 및/또는 보간을 사용한다. 본 발명에서, 재샘플링 및 보간 동작이 0차(최근접 이웃(nearest-neighbor))인지, 선형인지, 고차(higher-order)인지, 또는 보다 일반적으로 비선형인지는 중요하지 않다.
본 명세서에 기술된 본 발명에 따르면, 사용자가 정확한 원하는 해상도(거의 사전 정의된 LOD 중 하나의 해상도가 결코 아님)를 정의할 때, 최종 이미지는 양호하게는 먼저 중간 최종 이미지(intermediate final image)를 디스플레이함으로써 디스플레이된다. 이 중간 최종 이미지는 이후에 기술되는 바와 같이 그 이미지가 선명하게 되기 이전에 원하는 해상도로 디스플레이되는 첫번째 이미지이다. 이 중간 최종 이미지는 종래 기술을 사용하여 원하는 해상도로 디스플레이되어지는 이미 지에 대응할 수 있다.
양호한 실시예에서, 이하에서 보다 상세히 설명하는 바와 같이, 중간 최종 이미지로부터 최종 이미지(final image)로의 전환은 점진적일 수 있다.
개량된 실시예에서, 이하에서 보다 상세히 기술하는 바와 같이, 본 발명은 LOD가 임의의 해상도 증분(무리수 증분을 포함함, 즉 2개의 정수의 비로 표현될 수 없는 연속적인 LOD 간의 확대 또는 축소 계수) 간격으로 떨어져 있도록 해줄 수 있다.
다른 개량된 실시예에서, 각각의 서로 다른 LOD에서의 이미지의 일부분은 타일(tile)이라고 하며, 이러한 타일은 보는 사람에게 인지된 어떤 결함도 최소화시키는 순서로 렌더링된다. 다른 실시예들에서, 디스플레이된 비쥬얼 컨텐츠는 복수의 LOD(아마도 상기한 주변의 LOD의 수퍼세트(superset)임)로 이루어져 있으며, 각각의 LOD는 디스플레이가 결함을 감추는 방식으로 점차적으로 희미해지면서 최종 이미지로 되도록 하기 위해 적당한 비율 및 위치에 디스플레이된다.
복수의 LOD에 여러가지 타일을 렌더링하는 것은 시스템이 대부분의 랩톱 및 데스크톱 퍼스널 컴퓨터에서 이용가능한 일반적인 클럭 속도를 갖는 표준의 컴퓨터 상에서 실행될 수 있도록 용인가능한 수준의 계산 복잡도 내에 있으면서 비쥬얼 컨텐츠의 모습을 최적화하는 순서로 달성된다.
본 발명은 신속한 줌잉 및 패닝 동안에는 사전 정의된 LOD를 사용하여 이미지가 디스플레이되지만 뷰(view)가 충분히 안정되어 있을 때는 정확한 LOD(exact LOD)가 렌더링되고 디스플레이되는 혼합 전략을 수반한다. 정확한 LOD는 사용자에 의해 선택된 정확한 해상도(통상 사전 정의된 LOD와 다름)로 렌더링되고 디스플레이된다. 사람의 시각 시스템이 비쥬얼 컨텐츠가 정지해 있는 동안 그 컨텐츠에서의 미세한 상세 부분에 대해서는 민감하지 않기 때문에, 이 혼합 전략은 훨씬 적은 계산으로 연속적인 "완벽한 렌더링"을 하고 있다고 착각하게 할 수 있다.
<도면의 간단한 설명>
도 10은 LOD 피라미드(이 경우에, 최고 해상도 표현을 나타내는 피라미드의 베이스는 512x512 샘플 이미지이고, 이 이미지를 2배씩 연속적으로 축소시킨 것들이 도시되어 있음)를 나타낸 도면.
도 11은 본 발명의 예시적인 실시예에서 사용하기 위한 플로우차트.
도 12는 줌잉 이후에 시스템이 최종 이미지를 어떻게 디스플레이하는지를 나타낸 다른 플로우차트.
도 13은 샘플에서 각각의 LOD를 동일한 크기의 직사각형 타일로 세분하는 것을 보여주는 격자선이 부가된 도 1의 LOD 피라미드를 나타낸 도면.
도 14는 본 발명과 관련하여 사용하기 위한 다른 플로우차트로서, 렌더링된 타일을 디스플레이 상에 디스플레이하는 프로세스를 나타냄.
도 15는 본 명세서에서 보다 상세히 설명하는 무리수 타일링(irrational tiling)이라고 하는 개념을 나타낸 도면.
도 16은 이하에서 보다 충분히 설명하게 되는 합성 타일(composite tile) 및 이 합성 타일을 구성하는 타일들을 나타낸 도면.
도 17은 본 발명의 하나 이상의 실시예들에 따른, 도 4의 LOD 피라미드의 제 2 층을 방사형 순서로(in foveated order) 렌더링하는 연속적인 단계들을 나타낸 도면으로서, 이 연속적인 단계들은 각각 도 17a, 도 17b, 도 17c 및 도 17d에 나타냄.
<실시예>
도 11은 본 발명을 구현하는 기본적인 기술의 플로우차트를 나타낸 것이다. 도 11의 플로우차트는 본 발명의 예시적인 실시예를 나타낸 것이며 이미지가 초기 해상도로 디스플레이될 때 실행되기 시작한다. 유의할 점은 본 발명이 클라이언트/서버 모델에서 사용될 수 있지만 클라이언트 및 서버가 동일한 또는 서로 다른 머신 상에 있을 수 있다는 것이다. 따라서, 예를 들어, 일련의 개별적인 LOD가 호스트 컴퓨터에 원격 저장되어 있을 수 있으며, 사용자는 로컬 PC를 통해 상기 호스트에 접속될 수 있다. 이용되는 실제의 하드웨어 플랫폼 및 시스템은 본 발명에 중요하지 않다.
이 플로우차트는 특정 해상도의 이미지의 초기 뷰(initial view)로 시작 블록(241)에 들어간다. 이 예에서, 이미지는 정적인 것으로 본다. 블록(242)에서 이 이미지가 디스플레이된다. 사용자는, 예를 들어, 컴퓨터 마우스를 움직임으로써 그 이미지를 내비게이션할 수 있다. 사용자가 이미지를 내비게이션할 때 블록(242)에서 디스플레이된 초기 뷰가 변할 수 있다. 유의할 점은 기초가 되는 이미지 자체가, 동영상 비디오(motion video)의 경우에서와 같이, 동적일 수 있지만, 이 예의 목적상, 이미지 자체가 정적인 것으로 취급된다는 것이다. 이상에서 설명한 바와 같이, 디스플레이될 임의의 이미지가 텍스트 또는 기타 벡터 데이터 및/또 는 사진 및 기타 이미지 등의 비벡터 데이터(nonvector data)도 가질 수 있다. 본 발명 및 이하의 설명 전부는 이미지가 벡터 또는 비벡터 데이터 또는 그 둘다를 포함하는지에 상관없이 적용가능하다.
블록(242)에서 디스플레이되는 비쥬얼 컨텐츠의 유형에 상관없이, 본 방법은 내비게이션 입력이 검출될 수 있는 결정 지점(243)으로 제어를 넘긴다. 이러한 입력이 검출되지 않는 경우, 본 방법은 블록(242)으로 루프백하고 계속하여 정적 비쥬얼 컨텐츠(stationary visual content)를 디스플레이한다. 내비게이션 입력이 검출되는 경우, 도시된 바와 같이, 제어가 블록(244)으로 넘어간다.
결정 지점(243)은 움직임을 검출하는 특정의 신호를 찾는 소프트웨어로 된 연속적인 루프, 하드웨어로 된 인터럽트 시스템, 또는 임의의 다른 원하는 방법으로 구현될 수 있다. 내비게이션 요청을 검출하고 분석하는 데 이용되는 특정의 기술이 본 발명에 중요하지 않다. 사용되는 방법에 상관없이, 본 시스템은 그 요청을 검출할 수 있으며, 따라서 이미지를 내비게이션하고자 한다는 것을 나타낼 수 있다. 본 명세서에서의 설명의 많은 부분이 줌잉에 관한 것이지만, 이들 기술이 줌잉, 패닝, 또는 다른 방식으로 내비게이션하는 것에 적용가능하다는 것에 주의한다. 실제로, 본 명세서에 기재된 기술들은 이미지에 대한 원근법에 따른 임의의 유형의 동적 변환 또는 변경에 적용가능하다. 이러한 변환은, 예를 들어, 3차원 이동 및 회전, 이미지 필터의 적용, 국소적 확장(local stretching), 이미지의 선택된 영역에 적용되는 동적 공간 왜곡(dynamic spatial distortion), 또는 더 많은 정보를 노출시킬 수 있는 임의의 다른 종류의 왜곡을 포함할 수 있다. 다른 예는 이미지 상에서 이동될 수 있고 또 가상 돋보기 아래의 이미지의 일부를 확대하는 가상 돋보기(virtual magnifying glass)이다. 결정 지점(243)이 사용자가 내비게이션을 시작하고 있음을 검출할 때, 블록(244)은 이미지의 새로운 뷰(예를 들어, 이전에 디스플레이된 뷰와 다른 해상도일 수 있음)를 렌더링 및 디스플레이한다.
새로운 뷰를 디스플레이하는 한가지 간단한 종래 기술은 사용자가 줌인 또는 줌아웃할 때 LOD를 보간하는 것에 기초한다. 선택된 LOD는 원하는 해상도, 즉 새로운 뷰의 해상도 "주변의" 그 2개의 LOC일 수 있다. 종래 시스템에서, 보간은 사용자가 줌잉할 때 항상 일어나며, 따라서 속도를 달성하기 위해 하드웨어로 직접 구현되는 경우가 많다. 결정 지점(245)에서 이동을 검출하는 것과 블록(244)에서 적절한 보간된 이미지를 거의 즉각적으로 디스플레이하는 것을 조합하면 그 결과 이미지는 사용자가 내비게이션함에 따라 연속적으로 줌잉되는 것처럼 보인다. 줌인 또는 줌아웃 동안에, 이미지가 이동하고 있기 때문에, 보간된 이미지는 충분히 실제적이고 선명하게 보인다. 보간 에러가 사람의 시각 시스템에 의해 단지 최소로 검출가능한데, 그 이유는 이미지의 뷰가 항상 변하는 것에 의해 이러한 에러가 드러나지 않기 때문이다.
결정 지점(245)에서, 시스템은 이동이 거의 멈추었는지 여부를 테스트한다. 이것은, 예를 들어, 뷰의 하나 이상의 파라미터의 변화율을 측정하는 것을 비롯한 다양한 기술에 의해 달성될 수 있다. 즉, 본 방법은 사용자가 줌잉을 종료할 지점에 도달했는지 여부를 확인한다. 결정 지점(245)에서의 이러한 안정화 시에, 제어는 블록(246)으로 넘어가서, 정확한 이미지가 렌더링되고, 그 후에 제어는 블 록(243)으로 되돌아간다. 따라서, 임의의 원하는 해상도로, 시스템은 궁극적으로 정확한 LOD를 디스플레이한다.
주목할 만한 것은, 디스플레이가 단순히 2개의 사전 정의된 LOD의 보간에 의해 렌더링 및 디스플레이되지 않고 블록(242)에서 초기 뷰가 디스플레이될 때 텍스트 또는 기타 벡터 데이터를 렌더링하는 데 사용된 원래의 알고리즘을 사용하여 벡터 데이터를 재렌더링함으로써 렌더링 및 디스플레이될 수 있다는 것이다. 비벡터 데이터도 역시 렌더링을 위해 재샘플링되고 정확한 요구된 LOD로 디스플레이될 수 있다. 요구된 재랜더링 또는 재샘플링은 원하는 해상도로 디스플레이하는 데 필요한 정확한 해상도에서 뿐만 아니라, 원하는 뷰에 기초하여 계산되는, 기초가 되는 컨텐츠에 대한 디스플레이 픽셀의 정확한 위치에 정확하게 대응하는 샘플링 그리드에 대해 수행될 수 있다. 예로서, 디스플레이 상의 이미지를 디스플레이 평면에서 1/2 픽셀만큼 이동시키는 것은 요구되는 해상도를 변경하지 않지만, 샘플링 그리드를 변경하며, 따라서 정확한 LOD의 재렌더링 또는 재샘플링을 필요로 한다.
도 11의 상기 시스템은 뷰가 변하는(예를 들어, 내비게이션이 행해지는) 동안에 사전 정의된 LOD에 기초한 보간이 이용되지만 뷰가 거의 정지되어 있을 때 정확한 뷰가 렌더링 및 디스플레이되는 혼합 방식을 나타낸 것이다.
본 명세서에서의 설명의 목적상, 용어 '렌더링'은 컴퓨터가 벡터 또는 비벡터 데이터에 기초하여 특정의 LOD로 타일을 생성하는 것을 말한다. 비벡터 데이터와 관련하여, 이들은 원래의 이미지를 더 높은 또는 더 낮은 해상도로 재샘플링함으로써 임의의 해상도로 재렌더링될 수 있다.
이제부터 도 11의 블록(246)으로 나타낸 정확한 최종 이미지를 획득하기 위해 필요한 비쥬얼 컨텐츠의 서로 다른 부분을 렌더링 및 디스플레이하는 방법을 살펴본다. 도 12를 참조하면, 내비게이션이 멈춘 것으로 판정될 때, 제어는 블록(333)으로 넘어가, 줌잉 동안에서와 같이 보간된 이미지가 즉각 디스플레이된다. 우리는 내비게이션이 멈춘 이후에 일시적으로 디스플레이될 수 있는 이 보간된 이미지를 중간 최종 이미지(intermediate final image ) 또는 간단히 중간 이미지(intermediate image) 라고 부른다. 이 이미지는 주변의 LOD의 보간으로부터 발생된다. 어떤 경우에, 이하에서 보다 상세히 설명하는 바와 같이, 중간 이미지는 3개 이상의 개별 LOD로부터 또는 원하는 해상도 주변의 것들을 제외한 2개의 개별 LOD로부터 보간될 수 있다.
중간 이미지가 디스플레이되면, 블록(334)에 들어가서 이미지가 이미지의 정확한 렌더링 쪽으로 점차적으로 페이딩되기 시작하며, 이를 우리는 최종 이미지(final image) 라고 부른다. 최종 이미지가 임의의 사전 정의된 LOD의 보간을 수반하지 않을 수 있다는 점에서 최종 이미지는 중간 이미지와 다르다. 그 대신에, 최종 이미지 또는 그의 일부분은 새로 렌더링된 타일을 포함할 수 있다. 사진 데이터의 경우에, 새로 렌더링된 타일은 원래의 데이터를 재샘플링하여 얻어질 수 있으며, 벡터 데이터의 경우에, 새로 렌더링된 타일은 원하는 해상도로 래스터화(rasterization)하여 얻어질 수 있다.
또한, 유의할 점은 블록(333)에서 블록(335)으로 직접 건너뛰어, 보간된 이미지를 최종적인 정확한 이미지로 직접 대체하는 것이 가능하다는 것이다. 그렇지 만, 양호한 실시예에서, 단계(334)가 실행되어, 중간 최종 이미지로부터 최종 이미지로의 변화가 점진적이고 완만하게 행해진다. 때로는 블렌딩(blending)이라고 하는 이 점차적인 페이딩으로 인해, 내비게이션이 멈춰질 때 이미지가 점차적으로 초점이 맞춰지고, 카메라 또는 기타 광학 기기에서의 자동 포커싱(automatic focusing)과 유사한 효과를 낸다. 이러한 효과에 의해 생성된 물리적 현실(physicality)의 착각이 본 발명의 중요한 측면이다.
이하에서는 지각된 불규칙성, 갑작스런 변화, 이음매, 및 이미지에서의 다른 결함을 최소화하기 위해 이러한 페이딩 또는 블렌딩이 행해질 수 있는 방식에 대해 설명한다. 그렇지만, 특정의 페이딩 기술이 본 발명에 필수적인 것은 아니며 많은 변형들이 당업자에게는 자명하다는 것을 잘 알 것이다.
서로 다른 LOD는 기초가 되는 비쥬얼 컨텐츠의 물리적 면적당 샘플 수에 있어서 다르다. 따라서, 제1 LOD는 가시 물체(viewable object)의 1인치 x 1인치 면적을 취하여 하나의 32x32 샘플 타일을 생성할 수 있다. 그렇지만, 이 정보는 또한 동일한 1인치 x 1인치 면적을 취하여 이를 64x64 샘플인 타일로, 따라서 더 높은 해상도로 표현함으로써 렌더링될 수 있다.
우리는 무리수 타일링(irrational tiling) 이라는 개념을 정의한다. 우리가 변수 g로 나타내는 타일링 입도(tiling granularity) 는 고해상도 LOD에서의 선형 타일링 그리드 크기의 그 다음으로 낮은 해상도 LOD에서의 선형 타일링 그리드 크기에 대한 비로서 정의된다. 삼선형 보간을 소개하는 William 논문에서, g=2이다. 이 동일한 값 g는 다른 종래 기술에서 사용되었다. LOD가 임의의 방식으로 타일로 세분될 수 있지만, 예시적인 실시예에서, 각각의 LOD는 일정 수의 샘플을 포함하는 정사각형 또는 직사각형 타일의 그리드로 세분된다(필요에 따라, 비쥬얼 컨텐츠의 엣지를 제외함). 개념적으로, g=2일 때, 어떤 LOD에서의 각각의 타일은, 도 13에 나타낸 바와 같이, 그 다음으로 높은 해상도의 LOD에서 2x2=4개의 타일로 "나누어진다(break up)"(다시 말하지만, 잠재적으로 엣지를 제외함).
입도 2의 타일링에서 기본적인 단점이 있다. 보통, 사용자가 타일 내의 랜덤한 점을 줌인하는 경우, g배 확대(g-fold increase in zoom) 때마다 사용자가 줌잉하게 되는 점 근방에 그 다음으로 높은 해상도의 LOD에 대응하는 하나의 부가 타일을 렌더링해야만 한다. 그렇지만, 사용자가 타일링 그리드에서 그리드 라인을 줌인하는 경우, 라인의 양측에 하나씩 2개의 새로운 타일이 렌더링될 필요가 있다. 마지막으로, 사용자가 2개의 그리드 라인의 교차점을 줌인하는 경우, 4개의 새로운 타일이 렌더링될 필요가 있다. 이들 이벤트 - 각각의 g배 줌잉에서의 1, 2 또는 4개의 새로운 타일의 요청 - 가 펼쳐진 줌잉 시퀀스 전체에 걸쳐 랜덤하게 산재되어 있는 경우, 전체적인 성능이 한결같다. 그렇지만, 임의의 정수-입도 타일링(integral-granularity tiling)(즉, g가 정수인 경우)에서의 그리드 라인은 모든 더 높은 해상도의 LOD에 대해 그리드 라인인 채로 있다.
예를 들어, 입도 2로 타일링된 아주 큰 이미지의 중심을 줌인하는 것을 생각해보자. 비쥬얼 컨텐츠가 모서리 (0,0), (0,1), (1,0) 및 (1,1)을 갖는 정사각형 내에 들어 있는 것으로 가정하여, 이 점의 (x,y) 좌표를 (1/2,1/2)로 나타낸다. 이 중심이 2개의 그리드 선의 교차점에 있기 때문에, 사용자가 각각의 더 높은 해 상도의 LOD에 도달할 때, 4개의 새로운 타일이 매번 생성될 필요가 있으며, 이로 인해 이 특정의 점에서의 줌잉에서 성능이 저하되고 효율성이 떨어진다. 반면에, 사용자가 무리수 점 - x 및 y가 2개의 정수의 비로 표현될 수 없는 그리드 점 (x,y)를 의미함 - 에서 줌인을 하는 것으로 가정하자. 이러한 숫자의 예는 π(=3.14159...) 및 2의 제곱근(=1.414213...)이다. 그러면, g-배 줌잉마다 렌더링될 필요가 있는 타일의 수에 의해 주어지는 1, 2, 및 4의 수열은 의사-랜덤하다(즉, 주기적인 패턴을 따르지 않는다)는 것을 용이하게 보여줄 수 있다. 이러한 종류의 의사-랜덤 시퀀스가 성능의 관점에서 볼 때 명백히 더 바람직하며, 따라서 성능 관점에서 볼 때 줌잉에 있어서 우수한 점이 없다.
무리수 타일링(irrational tiling)(g 자체가 무리수, 일반적으로 3, 5 또는 12의 제곱근인 것으로 봄)은 이 문제를 해결한다. 이것이 평균적으로 (그에 대응하여) 주어진 LOD에 있는 3, 5 또는 12개의 타일이 그 다음으로 낮은 해상도의 LOD에서 단일의 타일 내에 포함된다는 것을 의미하지만, 유의할 점은 이 방식에서는 연속적인 LOD에서의 타일링 그리드가 임의의 그리드 라인(아마도 비쥬얼 컨텐츠의 선두 엣지(x=0, y=0) 또는 각각의 축을 따라 어떤 다른 선택된 단일의 그리드 라인은 제외됨) 상에 더 이상 "일치"하지 않는다는 것이다. g가 임의의 정수의 n 제곱근이 아니도록 선택되면(π가 이러한 수임), 어떤 LOD도 그리드 라인을 공유하지 않는다(다시 말하지만, 아마도 x=0 및 y=0는 제외됨). 따라서, 각각의 타일이 그 다음으로 낮은 LOD에서 1, 2 또는 4개의 타일과 랜덤하게 중첩할 수 있는 반면, g=2인 경우 이 수는 항상 1임을 증명할 수 있다.
무리수 타일링 입도의 경우, 따라서 임의의 점에서의 줌인은 1, 2 또는 4개의 타일에 대한 의사-랜덤한 요청 스트림을 생성하며, 아무 곳에서나 줌인을 해도 성능이 평균적으로 균일하다. 아마도 무리수 타일링의 가장 큰 이점은 심한 줌잉(deep zoom) 이후에 패닝하는 것과 관련하여 드러난다. 사용자가 심하게 줌인한 후에 이미지를 패닝할 때, 어떤 점에서 그리드 라인이 디스플레이 상에서 이동된다. 이 그리드 라인의 다른 쪽에 있는 영역이 디스플레이의 나머지보다 낮은 해상도의 LOD에 대응하는 것이 보통이지만, 이들 해상도의 차이가 가능한 한 작은 것이 바람직하다. 그렇지만, g가 정수인 경우, 이 차이는 종종 극히 큰데, 그 이유는 그리드 라인이 많은 연속적인 LOD에 걸쳐 중첩될 수 있기 때문이다. 이것은, 도 15(a)에 나타낸 바와 같이, 노드(node) 영역에 걸쳐 "깊은 해상도 크랙(deep resolution crack)"을 생성한다.
반면에, 무리수 타일링에서의 그리드 라인이 인접한 LOD의 그리드 라인과 결코 중첩하지 않기 때문에(다시 말하지만, 아마도 이미지의 한 모서리(corner)에 있을 수 있는 각 방향에서의 하나의 그리드 라인은 제외함), 2개 이상의 LOD의 해상도 불연속이 일어나지 않는다. 상대 해상도(relative resolution)의 균일성(smoothness)이 이렇게 향상됨으로써 공간적 연속성의 착각이 훨씬 더 분명하게 될 수 있다.
도 15(b)는 무리수 타일링 입도에 의해 얻어지는 이점을 나타낸 것이다. 도 15는 비쥬얼 컨텐츠의 몇개의 LOD에 걸친 단면도를 나타낸 것으로서, 각각의 막대는 직사각형 타일의 단면을 나타낸다. 따라서, 상부로부터 2번째 레벨(2개의 막대 가 있음)은 2x2=4 타일 LOD일 수 있다. 상부로부터 하부까지 그려져 있는 곡선(631)은 줌잉 동작 동안에 관련 LOD에서의 비쥬얼 컨텐츠의 가시 영역의 경계를 나타내며, 해상도가 증가됨에 따라(더 많은 디테일을 보여주기 위해 줌인됨에 따라), 검사 중인 영역이 감소된다. 어두운 막대(예를 들어, 632)는 줌잉 과정 동안에 이미 렌더링된 타일을 나타낸다. 밝은 막대는 아직 렌더링되지 않았으며, 따라서 디스플레이될 수 없다. 유의할 점은 타일링이 도 15(a)에서와 같이 정수일 때, 공간에 걸쳐 해상도의 급격한 변화가 통상적이고, 사용자가 줌잉 후에 오른쪽으로 패닝하는 경우, 화살표로 나타낸 공간 경계에서, 4개의 LOD가 갑자기 "끝난다". 결과 이미지는 이 경계의 좌측으로는 선명하게 보이고 오른쪽으로는 극히 흐릿하게 보인다. 무리수 타일링 입도를 사용하여 표현된 동일한 비쥬얼 컨텐츠는 이러한 해상도 "크랙"이 없으며, 인접한 LOD는, 도시된 바와 같이 좌측 엣지를 제외하고는, 타일 경계를 공유하지 않는다. 수학적으로, 이 공유 경계는 대체로 x-축 상의 한 위치 및 y-축 상의 한 위치에서 있을 수 있다. 도시된 실시예에서, 이들 공유 경계는 y=0 및 x=0에 위치해 있지만, 있는 경우, 이들이 임의의 다른 위치에도 있을 수 있다.
무리수 타일링 입도의 다른 이점은 g를 더 미세하게 제어할 수 있다는 것인데, 그 이유는 g가 너무 크지 않은 유용한 범위에 걸쳐 무리수가 정수보다 훨씬 더 많기 때문이다. 이 부가적인 자유도는 어떤 애플리케이션의 줌잉 성능을 조정하는 데 유용할 수 있다. g가 정수의 무리수 제곱근(sqrt(2), sqrt(5) 또는 sqrt(8) 등)으로 설정되는 경우, 상기한 실시예에서, 하나 걸러 있는 LOD의 그리드 라인이 정확하게 정렬되고, g가 무리수 세제곱근(cube root)인 경우, 매 3번째 LOD가 정확하게 정렬되고, 이하 마찬가지이다. 이것은 합성 타일링(composite tiling)의 복잡도를 제한하는 것과 관련하여 부가적인 이점을 제공한다.
본 발명의 중요한 측면은 타일이 렌더링되는 순서이다. 보다 상세하게는, 모든 가시 타일(visible tile)이 먼저 렌더링되도록 여러가지 LOD의 여러가지 타일이 최적으로 렌더링된다. 비가시 타일(nonvisible tile)은 전혀 렌더링되지 않을 수 있다. 일련의 가시 타일 내에서, 렌더링은 해상도 증가순으로 진행되고, 따라서 저해상도 LOD 내의 타일이 먼저 렌더링된다. 임의의 특정 LOD 내에서, 타일은 디스플레이의 중심으로부터 거리 증가순으로 렌더링된다(방사형 렌더링(foveated rendering)이라고 함). 기술된 순서로 이러한 타일을 정렬하기 위해, 힙 정렬(heapsort), 퀵 정렬(quicksort) 기타 등등의 많은 정렬 알고리즘이 사용될 수 있다. 이러한 순서화(ordering)를 구현하기 위해, 타일을 렌더링하라는 "요청"을 정렬하기 위해 사전적 키(lexicographic key)가 사용될 수 있으며, 따라서 외부 서브키(outer subkey)가 가시성(visibility)이고, 중간 서브키(middle subkey)가 물리 단위당 샘플의 해상도이고, 내부 서브키(inner subkey)는 디스플레이의 중심까지의 거리이다. 타일 렌더링 요청를 순서화하는 다른 방법들도 역시 사용될 수 있다. 타일의 실제 렌더링은 최적으로는 본 명세서에 기술된 내비게이션 및 디스플레이와 병렬 프로세스로서 행해진다. 렌더링 및 내비게이션/디스플레이가 병렬 프로세스로서 진행될 때, 사용자 응답성(user responsiveness)은 타일이 렌더링하는 데 시간이 걸리는 때에도 높게 유지될 수 있다.
이제부터 예시적인 실시예에서 타일을 렌더링하는 프로세스에 대해 기술한다. 타일이 스트로크 기반 글꼴(stroke based font)의 알파벳 인쇄(alphabetic typography) 등의 벡터 데이터를 나타내는 경우, 타일을 렌더링하는 일은 알파벳 데이터를 래스터화하는 알고리즘을 실행하는 일 및 아마도 그 데이터를 서버로부터 클라이언트로 전송하는 일을 수반하게 된다. 다른 대안으로서, 래스터화 알고리즘에 입력된 데이터는 클라이언트로 전송될 수 있고, 클라이언트는 이 알고리즘을 실행하여 타일을 래스터화할 수 있다. 다른 예에서, 디지털적으로 샘플링된 사진 데이터를 필요로 하는 타일의 렌더링은 적절한 LOD에 타일을 생성하기 위해 그 데이터의 재샘플링을 수반할 수 있다. 사전 저장되어 있는 개별 LOD에 대해, 렌더링은 타일을 클라이언트 컴퓨터로 전송하는 것만을 수반할 수 있다. 최종 이미지에 있는 타일 등의 개별 LOD 사이에 있는 타일에 대해, 상기한 어떤 추가의 계산이 요구될 수 있다.
임의의 주어진 시간에, 타일이 렌더링되고 이미지가 페이딩되면서 정확한 이미지로 되기 시작할 때, 실제 디스플레이는 서로 다른 LOD로부터의 서로 다른 타일들의 서로 다른 혼합을 포함할 수 있다. 따라서, 디스플레이의 임의의 부분은, 예를 들어, LOD 1로부터 20%, LOD 2로부터 40% 및 LOD 3로부터 40%를 포함할 수 있다. 디스플레이된 타일에 상관없이, 이 알고리즘은 여러가지 LOD로부터의 타일을, 가장 필요로 할 때 디스플레이하기 위해 렌더링된 타일을 제공하기에 가장 적합한 우선순위 순서로 렌더링하려고 시도한다. 렌더링된 타일을 실제로 디스플레이하는 것에 대해서는 도 14를 참조하여 나중에 보다 상세히 설명할 것이다.
이하에서, 이미지 디테일의 공간적 및 시간적 연속성을 보장할 수 있는 알고리즘을 사용하여 복수의 LOD를 드로잉하는 방법에 대해 기술한다. 이 알고리즘은 모든 렌더링된 타일을 최대한 이용하도록 설계되어 있으며, 동일한 디스플레이 영역을 덮고 있는 저해상도 타일보다는 고해상도 타일을 사용하지만 LOD 간의 선명한 경계를 피하기 위해 공간 블렌딩을 사용하고 가능한 경우(즉, 고해상도 타일이 렌더링되어 있을 때) 더 높은 디테일로 블렌딩하기 위해 시간적으로 변하는 블렌딩 가중치(temporally graduated blending weight)를 사용한다. 종래 기술과 달리, 이 알고리즘 및 그의 변형에 의해 3개 이상의 LOD가 디스플레이 상의 주어진 지점에서 서로 블렌딩될 수 있으며, 또한 디스플레이 영역 상에서 완만하게 변하는 블렌딩 계수가 얻어질 수 있으며, 또한 사용자가 내비게이션을 중단한 후에도 시간에 따라 변화하는 블렌딩 계수가 얻어질 수 있다. 이 예시적인 실시예에서, 이는 그럼에도 불구하고 계산 효율적이며, 명백하게 되는 바와 같이, 이미지를 부분적으로 투명하게 또는 전체적인 투명도가 이미지 영역에 걸쳐 변하게 렌더링하는 데 사용될 수 있다.
우리는 본 명세서에서 합성 타일 영역(composite tile area) 또는 간단히 합성 타일(composite tile) 을 정의한다. 합성 타일을 정의하기 위해, 모든 LOD가 서로 적층되어 있는 것으로 가정한다. 각각의 LOD는 그 자신의 타일 그리드를 갖는다. 합성 그리드는 모든 LOD로부터의 그리드 전부를 단일 평면 상으로 투영함으로써 형성된다. 합성 그리드는 서로 다른 LOD 전부로부터의 타일의 경계에 의해 정의되는, 서로 다른 크기의 여러가지 합성 타일로 이루어져 있다. 이것이 도 16에 개념적으로 나타내어져 있다. 도 16은 3개의 서로 다른 LOD(701 내지 703)(모두 동일한 이미지를 나타냄)로부터의 타일을 나타낸 것이다. 서로 적층되어 있는 LOD(701 내지 703)를 생각해보자. 이러한 경우에, 이들 LOD 각각으로부터의 모서리(750)를 일렬로 정렬시켜 서로 적층시키면, 740으로 나타낸 영역이 730으로 나타낸 영역 내부에 있게 되고, 730 및 740으로 나타낸 영역은 720으로 나타낸 영역 내부에 있게 된다. 도 16의 영역(710)은 하나의 "합성 타일"(710)이 있게 됨을 보여준다. 각각의 합성 타일은 각각의 프레임 동안에 검사되고, 여기서 프레임 레이트(frame rate)는 일반적으로 초당 10 프레임보다 더 클 수 있다. 유의할 점은, 상기한 바와 같이, 이 프레임 레이트가 반드시 디스플레이 리프레쉬 레이트(display refresh rate)일 필요가 없다는 것이다.
도 14는 타일이 렌더링될 때 프레임 버퍼를 갱신하는 알고리즘의 플로우차트를 나타낸 것이다. 도 14의 구성은 프레임 버퍼가 갱신될 때마다 디스플레이된 이미지 내의 모든 합성 타일에 작용하도록 되어 있다. 따라서, 예를 들어, 프레임 기간이 1/20 초인 경우, 전체 화면 상의 합성 타일 각각은 양호하게는 매 1/20 초 마다 검사되고 갱신된다. 도 14의 프로세스가 합성 타일에 작용될 때, 합성 타일은 하나 이상의 LOD에서 관련 타일이 없을 수 있다. 도 14의 프로세스는 각각의 합성 타일 을, 합성 타일이 위치해 있는 이용가능한 중첩된 타일 전부의 가중 평균으로서 디스플레이하려고 시도한다. 유의할 점은 합성 타일이 임의의 주어진 LOD에서 정확히 하나의 타일 내에 들어가도록 정의되고, 따라서 가중 평균이 각각의 LOD의 상대적 비율(relative proportion)로 표현될 수 있다는 것이다. 이 프로세 스는 합성 타일 내의 각각의 LOD에 대한 적절한 가중치를 구하고 또 이들 가중치를 공간 및 시간에 걸쳐 점차적으로 변화시켜 그 이미지를 점차적으로 페이딩하여 상기한 최종 이미지가 되게 하려고 시도한다.
합성 그리드(composite grid)는 합성 그리드에서 그리드 라인의 임의의 교차점 또는 모서리로 정의되는 복수의 정점(vertex)을 포함한다. 이들은 합성 그리드 정점(composite grid vertex) 이라고 한다. 각각의 합성 그리드 정점에서 각각의 LOD에 대한 불투명도(opacity)를 정의한다. 이 불투명도는 0.0 내지 1.0 사이의 가중치로서 표현될 수 있으며, 원하는 결과가 이미지가 완전히 불투명하게 되는 것인 경우, 각각의 정점에서의 모든 LOD 가중치의 합은 따라서 1.0이어야만 한다. 각각의 정점에서 각각의 LOD에 대한 임의의 특정의 시간에서의 현재 가중치가 메모리에 유지된다.
정점 가중치를 갱신하는 알고리즘은 이하에 기술된 바와 같이 진행된다.
0.0과 1.0 사이의 숫자가 되도록 취해지는 이하의 변수들, 즉 각각의 모서리에 대한 centerOpacity, cornerOpacity(타일링이 직사각형 그리드인 경우 4임) 및 각각의 엣지에 대한 edgeOpacity(타일링이 직사각형 그리드인 경우 4임)은 각각의 타일에 대해 메모리에 유지된다. 타일이 처음으로 렌더링될 때, 방금 열거한 그의 투명도 전부는 통상적으로 1.0으로 설정된다.
드로잉 과정(drawing pass) 동안에, 이 알고리즘은 최고 해상도의 LOD부터 시작하여 각각의 관련 LOD마다 한번씩 합성 타일링을 검사한다. 타일 마다의 변수 이외에, 이 알고리즘은 이하의 변수, 즉 levelOpacityGrid 및 opacityGrid도 유지 한다. 이들 변수 둘다는 다시 말하지만 0.0과 1.0 사이의 숫자이고, 합성 타일링에서 각각의 정점에 대해 유지된다.
이 알고리즘은 최고 해상도로부터 최저 해상도까지 그 순서로 차례대로 각각의 LOD를 지나가며 이하의 동작을 수행한다. 먼저, 모든 정점에서 levelOpacityGrid에 0.0이 할당된다. 그 다음에, 그 LOD에서의 각각의 렌더링된 타일(몇몇이 아직 렌더링되지 않은 경우, 그 LOD에 있는 일련의 타일들의 서브셋일 수 있음)에 대해, 이 알고리즘은 타일의 centerOpacity, cornerOpacity 및 edgeOpacity 값들에 기초하여 그 타일과 접촉하는 levelOpacityGrid의 일부를 갱신한다.
정점이 완전히 타일의 내부에 있는 경우, 그 정점은 centerOpacity를 사용하여 갱신된다.
정점이, 예를 들어, 타일의 좌측 엣지 상에 있는 경우, 그 정점은 좌측 edgeOpacity를 사용하여 갱신된다.
정점이, 예를 들어, 우측 상부 모서리 상에 있는 경우, 그 정점은 우측 상부 cornerOpacity를 사용하여 갱신된다.
"갱신"이란 이하를 의미한다. 기존의 levelOpacityGrid 값이 0.0보다 큰 경우, 새로운 값을 현재 값의 최소값, 즉 그가 갱신되어질 값으로 설정한다. 결과는 각각의 정점 위치에서의 levelOpacityGrid가 그가 갱신되는 최소의 영이 아닌 값으로 설정된다는 것이다.
이 알고리즘은 이어서 levelOpacityGrid를 검사해보고 아직 렌더링되지 않은 타일과 접하는 정점( 구멍(hole) 이라고 함)을 0.0으로 설정한다. 이것은 블렌딩의 공간 연속성(spatial continuity)을 보장해주며, 합성 타일이 구멍 내에 들어가는 경우, 현재의 LOD에서, 드로잉 불투명도가 그 구멍에 인접하는 모든 정점에서 0으로 줄어들어야만 한다.
개량된 실시예에서, 이 알고리즘은 이어서 LOD 블렌딩의 공간 연속성을 추가적으로 향상시키기 위해 모든 levelOpacityGrid 값을 완화(relax) 시킬 수 있다. 지금까지 기술한 상황은 다음과 같이 시각화될 수 있다. 모든 정점은 텐트 기둥(tentpole)과 같으며, 여기서 그 지점에서의 levelOpacityGrid 값은 텐트 기둥의 높이이다. 지금까지 이 알고리즘은, 구멍에 인접하는 모든 점에서, 텐트 기둥이 0 높이를 가지며, 렌더링된 타일의 내부에서, 텐트 기둥이 어떤 (아마도) 영이 아닌 값으로 설정되도록 보장해주었다. 극단적인 경우에, 아마도 렌더링된 타일 내의 모든 값들이 1.0으로 설정되어 있다. 예시를 위해, 렌더링된 타일이 아직 렌더링된 이웃을 갖지 않으며 따라서 경계값(border value)이 0.0인 것으로 가정하자. 우리는 0.0 경계 텐트 기둥과 1.0 내부 텐트 기둥들 중 하나 사이에서 "여유(margin)"가 얼마나 좁은지를 지정하지 않았다. 이 여유가 너무 작은 경우, 블렌딩이 기술적으로 연속적이더라도, 공간에 따른 불투명도 도함수(opacity derivative)로서 측정될 때 변화가 너무 급격할 수 있다. 완화(relax) 동작이 텐트를 평탄하게 펴서, 항상 0.0의 값을 유지하지만, 아마도 다른 텐트 기둥을 하강시켜 텐트 표면에 의해 정의되는 함수가 더 평탄하게 되도록 한다, 즉 그의 최대 공간 도함수(maximum spatial derivative)를 제한한다. 다양한 방법 중 어느 것이 이 동작을 구현하는 데 사용되는지가 본 발명에 중요하지 않으며, 한가지 방법은, 예를 들어, 선택적인 저역-통과 필터링을 사용하여, 국부적으로 모든 영이 아닌 값을 그의 이웃들의 가중 평균으로 대체시키는 반면 영은 그대로 두는 것이다. 다른 방법들도 당업자에게는 명백할 것이다.
이 알고리즘은 이어서 모든 합성 그리드 정점에 대해서 검사하여, 각각의 정점에서의 levelOpacityGrid 및 opacityGrid의 대응하는 값을 고려하고, levelOpacityGrid가 1.0-opacityGrid보다 큰 경우, levelOpacityGrid는 1.0-opacityGrid로 설정된다. 그 다음에, 또다시 각각의 정점에 대해, levelOpacityGrid의 대응하는 값이 opacityGrid에 가산된다. 이전의 단계로 인해, 이렇게 하더라도 opacityGrid가 결코 1.0을 넘을 수 없다. 알고리즘에서의 이들 단계는, 고해상도 LOD가 이용가능한 경우, 가능한 한 많은 불투명도가 그 고해상도 LOD에 기인하도록 하여 구멍이 있는 경우에만 저해상도 LOD가 "드러날(show through)" 수 있게 보장해준다.
현재의 LOD의 순회(traversal)에서의 마지막 단계는, 정점별 불투명도 값(per-vertex opacity value)으로서 levelOpacityGrid을 사용하여, 현재의 LOD에 합성 타일을 실제로 드로잉하는 것이다. 개량된 실시예에서, levelOpacityGrid는 드로잉하기 직전에 0.0 내지 1.0 범위의 스칼라 overallOpacity 변수와 곱해질 수 있으며, 이로 인해 전체 이미지가 overallOpacity에 의해 주어지는 부분 투명도(partial transparency)로 드로잉될 수 있다. 유의할 점은 각각의 정점에서 서로 다른 불투명도를 갖는 직사각형 등의 이미지 포함 폴리곤(image-containing polygon)을 드로잉하는 것이 표준 절차라는 것이다. 이는, 예를 들어, OpenGL 또는 Direct3D 그래픽 라이브러리를 사용하는 산업-표준 텍스처 매핑 함수를 사용하여 달성될 수 있다. 실제로, 각각의 이러한 폴리곤의 내부에서의 드로잉된 불투명도는 공간적으로 보간되며, 그 결과 폴리곤에 걸쳐 불투명도의 변화가 완만하게 된다.
상기한 알고리즘의 다른 개량된 실시예에서, 타일은 centerOpacity, cornerOpacity 및 edgeOpacity( 현재값(current value) 이라고 함)의 그의 현재값 뿐만 아니라, targetCenterOpacity, targetCornerOpacity 및 targetEdgeOpacity( 목표값(target value) 이라고 함)라고 하는 대응하는 값 세트를 유지한다. 이 개량된 실시예에서, 타일이 처음으로 렌더링될 때 현재값은 모두 0.0으로 설정되지만, 목표값은 모두 1.0으로 설정된다. 그 다음에, 각각의 프레임 이후에, 현재값은 목표값에 더 가까운 새로운 값으로 조정된다. 이것은 다수의 수학 공식을 사용하여 구현될 수 있지만, 예로서, 이는 다음과 같이 행해질 수 있다. 즉, newValue = oldValue*(1-b) + targetValue*b(단, b는 0.0보다 크고 1.0보다 작은 비임). b의 값이 0.0에 가까우면 목표값으로 아주 느리게 변화하게 되고, b의 값이 1.0에 가까우면 목표값으로 아주 빠르게 변화한다. 불투명도를 갱신하는 이 방법에 의해 목표에 지수적으로 수렴하게 되고, 시각적으로 만족스러운 시간적 연속성 인상을 준다. 다른 공식이 동일한 결과를 달성할 수 있다.
도 17은 본 발명의 하나 이상의 실시예에 따른, 도 17의 LOD 피라미드의 제2 계층의 연속적인 렌더링 단계들을 방사형 순서로(in foveated order) 나타낸 것이 다.
이상에서 본 발명의 양호한 실시예들에 대해 기술하였다. 본 발명은 이러한 양호한 실시예에 한정되지 않으며, 첨부된 청구항들에 부합하는 여러가지 수정도 역시 본 발명에 포함된다.
<발명의 명칭>
다중 노드 디스플레이 시스템 및 방법{A SYSTEM AND METHOD FOR MULTIPLE NODE DISPLAY}
<기술 분야>
본 발명은 컴퓨터의 줌잉 사용자 인터페이스(ZUI)에 관한 것이다.
<배경 기술>
최근의 그래픽 컴퓨터 사용자 인터페이스는 일정한 공간 스케일의 비쥬얼 컴포넌트(visual component)를 사용하여 설계된다. 비쥬얼 컨텐츠(visual content)는 그를 줌인 또는 줌아웃하거나 다른 방식으로 내비게이션함으로써 조작될 수 있다. 그렇지만, 여러가지 물체의 좌표가 표현될 수 있는 정밀도는 이러한 좌표를 표현하기 위해 지정된 비트 수(보통 16 내지 64임)에 의해 많이 제한된다. 이들의 표현 크기(representational size)가 제한되어 있기 때문에, 정밀도가 제한된다.
줌잉 사용자 인터페이스와 관련하여, 사용자는 쉽게 줌인을 하여, 이전에는 하나의 픽셀만을 덮고 있던 영역이 전체 디스플레이를 채우게 할 수 있다. 역으로, 사용자는 줌아웃을 하여, 전체 디스플레이의 컨텐츠가 단일 픽셀의 크기로 축소되게 할 수 있다. 각각의 줌인 또는 줌아웃은 xy 좌표를 수많은 자릿수(numerous orders of magnitude)로 곱하거나 나눌 수 있기 때문에, 단지 몇개의 이러한 줌잉만이, 예를 들어, 64 비트 부동 소수점 수로 이용가능한 정밀도를 완전히 이용한다. 그 후에, 반올림은 이미지 품질의 현저한 열화를 야기한다.
본 발명의 목적은 더 큰 범위의 줌잉이 가능한 ZUI를 제공하는 데 있다.
본 발명의 다른 목적은 좌표가 표현되는 정밀도가 특정의 줌잉 LOD(zoom level of detail)에서 필요로 하는 요구된 정밀도와 관련되어 있는 ZUI를 제공하는 데 있다. 본 발명의 또다른 목적은 유한한 물리적 크기를 갖지만 임의의 높은 복잡도 또는 해상도를 갖는 패닝가능하고 줌잉가능한 2차원 공간이 더 큰 패닝가능하고 줌잉가능한 2차원 공간 내에 삽입될 수 있도록 해주는 데 있다.
본 발명의 다른 목적은 대폭의 줌인 이후의 줌아웃이 웹 브라우저의 "뒤로(back)" 버튼과 비슷하게 동작할 수 있게 해주어, 사용자가 시각적 내비게이션을 통해 그의 단계들을 역추적(retrace)하게 하는 데 있다.
본 발명의 다른 목적은 줌아웃 직후의 줌인이 웹 브라우저의 "앞으로(forward)" 버튼과 유사하게 동작할 수 있게 해주어, 사용자가 임의의 오랫동안의 줌아웃의 효과를 정확하게 실행 취소(undo)하게 하는 데 있다.
본 발명의 다른 목적은 이하에서 보다 정확하게 정의되는 시각적 객체(visual object)인 노드(node)가 아주 많은 수(예를 들어, 최대 10^28개)의 자식 노드를 가질 수 있게 해주는 데 있다.
본 발명의 다른 목적은 노드가 그 자신의 자식을 동작 중에 프로그램적으로 생성할 수 있게 해주어, 컨텐츠가 내비게이션 동안에 동적으로 정의, 생성 또는 수정될 수 있게 해주는 데 있다.
본 발명의 다른 목적은, 임의의 복잡한 비쥬얼 컨텐츠가 궁극적으로 아주 많은 양의 데이터를 사용하여 표현되더라도 또한 이 데이터가 원격 장소에 저장되어 저대역폭 네트워크를 통해 공유되더라도, 이 컨텐츠를 거의 즉각적으로 볼 수 있게(enable near-immediate viewing) 해주는 데 있다.
본 발명의 다른 목적은 사용자가 상호작용적인 프레임 레이트(interactive frame rate)를 유지하면서 비쥬얼 컨텐츠를 임의로 많이 줌인할 수 있게 해주는 데 있다.
본 발명의 다른 목적은, 컨텐츠의 전체적인 모습을 보존하기도 하고 또 상호작용적 프레임 레이트를 유지하기도 하는 프로세스에서, 사용자가 복잡한 비쥬얼 컨텐츠의 개요를 얻기 위해 임의로 많이 줌아웃할 수 있게 해주는 데 있다.
본 발명의 이들 및 다른 보다 광의의 목적은 이하의 명세서를 검토해보면 당업자에게는 명백하게 될 것이다.
<발명의 상세한 설명>
본 발명의 상기한 목적 및 기타 목적은 비쥬얼 컨텐츠를 복수의 "노드"로서 디스플레이함으로써 달성된다. 각각의 노드는 양호하게는 그 자신의 좌표계 및 렌더링 방법을 갖지만, 부모 노드 내에 포함될 수 있으며, 부모 노드의 좌표계 및 렌더링 방법으로 표현될 수 있다. 사용자가, 예를 들어, 줌인 또는 줌아웃함으로써 비쥬얼 컨텐츠를 내비게이션할 때, 노드는 줌잉의 결과 적절한 LOD가 얻어질 때만 "런칭(launch)"된다. 노드의 런칭에 의해 노드는, 다른 노드의 좌표계 및/또는 렌더링 방법으로보다는 오히려, 그 자신의 좌표계 및/또는 렌더링 방법으로 표현된다.
노드가 런칭되기 이전에, 노드는 부모 노드의 좌표계로 표현되거나 전혀 표 현되지 않는다. 노드가 필요하게 될 때에만 노드를 런칭함으로써, 좌표계의 정밀도는 디스플레이되고 있는 것의 줌잉 LOD(zoom level of detail)의 함수이다. 이것은 시스템이 동작하는 컴퓨터의 메모리에 의해 허용되는 최대값까지(이 최대값을 포함함)의 가변적인 정밀도 레벨을 가능하게 해준다.
<도면의 간단한 설명>
도 18은 디스플레이 상의 비쥬얼 컨텐츠를 나타낸 도면.
도 19는 다른 LOD에서의 도 18의 비쥬얼 컨텐츠의 이미지.
도 20은 본 발명의 일 실시예를 나타낸 도면.
도 21은 디스플레이 상에 복수의 노드를 나타낸 본 발명의 예시적인 실시예를 나타낸 도면.
도 22는 도 21에 나타낸 예시적인 실시예에 대응하는 트리 다이어그램.
도 23은 도 22의 트리 다이어그램의 일부분에 대응하는 블록도.
<실시예>
예시를 위해, 도면에 현재 양호한 여러 형태가 도시되어 있지만, 본 발명은 도시되어 있는 정확한 구성 및 수단에 한정되지 않는다.
우리는 디스플레이가 카메라인 사용자 인터페이스 메타포어(user interface metaphor)를 가정하며, 이 카메라를 통해 사용자는 2차원 표면 또는 2D 세계의 일부를 볼 수 있다. 편의상, 그렇게 할 필요는 없지만, 우리는 물리적 차원을 이 세계에 속하는 것으로 보며, 따라서 이는, 예를 들어, 1 제곱 미터일 수 있다. 본 발명은 N-차원 표현에 똑같이 적용될 수 있다.
예시적인 세계는 차례로 시각적 표현을 갖는 2D 객체 또는 노드를 포함하며, 또한 동적이거나 상호작용적(즉, 비디오 클립, 애플리케이션, 편집가능한 텍스트 문서, CAD 드로잉, 또는 정지 영상)일 수 있다. 노드가 보이도록 하기 위해, 노드는 그 노드를 디스플레이의 어떤 영역 상에 전체로서 또는 부분적으로 드로잉할 수 있는 렌더링 방법과 연관되어야만 한다. 각각의 노드는 또한 유한한 정밀도의 지역 좌표계(local coordinate system)를 부여받는다. 예시를 위해, 우리는 노드가 직사각형이고 지역 좌표계로 표현되는 것으로 가정한다.
이들 2개의 파라미터, 즉 렌더링 방법 및 좌표계는 노드를 어떻게 디스플레이할지 및 노드에서의 항목의 위치를 지정한다. 각각의 노드는 참조로 어드레싱되는(addressed by reference) 0개 이상의 자식 노드를 가질 수 있다. 이 노드는 각각의 자식 노드의 모든 정보가 아니라, 그 대신에 자식 노드를 획득하는 데 필요한 정보를 제공하는 어드레스만 포함하고 있으면 되며 또 일반적으로 포함하고 있다. 사용자가 내비게이션을 할 때, 예를 들어, 줌인 및 줌아웃을 할 때, 노드가, 예를 들어, 도 18에 나타낸 바와 같이, 화면 상에 디스플레이된다.
일반적으로, "노드"는 본 발명의 기본적인 기능 단위이다. 대부분의 노드는 내비게이션 동안에 사용자의 디스플레이 상에 시각적으로 나타나며, 어떤 노드는 또한 애니메이션 처리(animate)될 수 있고 및/또는 사용자 입력에 반응할 수 있다. 노드가 자식 노드를 포함할 수 있다는 점에서 노드는 계층적이다. 포함 노드(containing node)는 따라서 부모 노드라고 한다. 부모 노드가 자식 노드를 포함하는 경우, 자식의 시각적 표현(visual manifestation)도 역시 부모의 시각적 표 현 내에 포함된다. 각각의 노드는 논리 좌표계(logical coordinate system)를 가지며, 따라서 노드의 전체 범위(entire extent)가 이 논리 좌표계에 정의된 예시적인 직사각형 내에 포함되며, 예를 들어, 노드는 그가 직사각형 (0,0)-(100,100)에 포함되도록 하는 논리 좌표계를 정의할 수 있다.
각각의 노드는 그의 속성을 정의하는 이하의 데이터를 가질 수 있다.
o 노드의 논리적 크기(상기 예에서 100 x 100)를 포함하는 노드의 논리 좌표계
o (부모) 노드의 논리 좌표에 지정된 임의의 자식 노드의 ID, 위치 및 크기
o 선택에 따라서는, 임의의 필요한 사용자 데이터
- 이들 동작 또는 "메서드"를 정의하는 실행가능 코드
o "생성 인수(construction argument)"에 기초한 노드의 데이터의 초기화
o 노드의 시각적 외관의 전부 또는 일부분을 렌더링(이 메서드의 출력은 렌더링된 타일임)
o 선택에 따라서는, 키보드 또는 마우스 이벤트 등의 사용자 입력에 응답
실행가능 코드는 "노드 클래스(node class)"를 정의하고, 많은 "노드 인스턴스(node instance)" 간에 공유될 수 있다. 노드 인스턴스는 그의 데이터 내용이 다르다. 따라서, 노드 클래스는 JPEG 이미지를 렌더링하는 데 필요하게 되는 논리 를 정의할 수 있다. 그러면, 초기화 코드에 주어지는 "생성 인수"는 디스플레이할 JPEG 이미지의 URL을 포함하게 된다. 특정의 이미지를 디스플레이하는 노드는 JPEG 노드 클래스의 인스턴스일 수 있다. 소프트웨어 애플리케이션이 동시에 여러번 인스턴스화될 수 있는 방식과 유사하게, 노드의 복수의 인스턴스가 동일한 비쥬얼 컨텐츠에서 보이게 될 수 있다.
유의할 점은 복잡한 시각적 문서 또는 애플리케이션에서, 필요한 기능을 많은 서로 다른 방식으로 노드로 분할하는 것이 통상 가능하다는 것이다. 예를 들어, 다수의 이미지, 풀다운 메뉴 및 버튼을 포함하는 스크립트 웹페이지-유사 문서(scripted webpage-like document)는 복잡한 렌더링 및 사용자 입력 방법을 갖는 단일 노드로서 구현될 수 있다. 다른 대안으로서, 이는 페이지의 전체 레이아웃을 정의하기만 하는 부모 노드로서 구현될 수 있으며, 모든 구성 이미지 및 버튼은 자식 노드이다. 이것은 기능을 보다 효과적으로 재사용 또는 "분해(factor)"한다는 명백한 이점을 가지며, 버튼들은 모두 동일한 기능을 가질 수 있고, 따라서 모두 동일한 노드 클래스의 인스턴스일 수 있으며, 이미지들은 모두 동일한 형식(format)으로 되어 있을 수 있고 또한 공통의 노드 클래스의 인스턴스일 수 있으며, 이하 마찬가지일 수 있다. 이것은 또한 레이아웃을 재정렬하는 것을 단순화시키며, 부모 노드는 자식 노드를 쉽게 이동시키거나 크기 조정할 수 있다.
본 발명에 따르면, 비쥬얼 컨텐츠는 사용자에 의한 내비게이션 입력의 상태에 의존하는 방식으로 디스플레이될 수 있다. 예를 들어, 도 18은 도시의 일부의 이미지일 수 있는 노드(105)를 나타낸 것이다. 노드(105)는 자식 노드(101-103)를 포함할 수 있다. 노드(101)는 도시 내의 빌딩의 이미지일 수 있고, 노드(107)는 놀이터의 이미지일 수 있으며, 노드(103)는 운동 경기장일 수 있다. 도시된 줌잉 레벨에서, 노드(101-103)는 비교적 작으며, 따라서 이들은 노드(105)의 좌표계에서 정확한 위치에 있는, 디테일을 갖지 않는 작은 어두운 영역으로서 노드(105)에 표현될 수 있다. 노드(105)의 좌표계 및 렌더링 방법만이 필요하다.
사용자가 이제 도 19에 나타낸 것과 같은 다른 LOD(level of detail)가 얻어지도록 줌인을 하는 경우를 생각해보자. 도 19의 LOD에서, 비쥬얼 컨텐츠가 그처럼 훨씬 더 크게 디스플레이된다는 사실로 인해, 노드(101, 107)는 더 이상 화면 상에 보이지 않는다. 그에 부가하여, 유의할 점은 운동 경기장 노드(103)가 디스플레이되는 크기가 이제 훨씬 더 크기 때문에, 개개의 의자, 운동장, 기타 등등의 운동 경기장의 디테일이 이제 디스플레이되어야만 한다는 것이다.
상기한 바를 증진시키기 위해, 운동 경기장 노드(103)는 이제 노드(105)의 좌표계에서 디테일이 없는 어두운 영역으로 디스플레이되는 것이 아니라, 오히려 그 자신의 좌표계 및 렌더링 방법을 사용하여 디스플레이되도록 "런칭"된다. 그 자신의 좌표계 및 렌더링 방법을 사용하여 디스플레이될 때, 좌석, 운동장, 기타 등등의 디테일이 하나씩 나타나게 된다. 이상에서 논의하고 또 노드(103)와 연관된 다른 기능들은 또한 노드(103)가 런칭되는 순간에 실행되기 시작한다. 노드(103) 또는 그 문제에 관해서라면 임의의 노드의 런칭을 야기하는 특정의 내비게이션 조건은 설계 선택사항(design choice)의 함수이며, 본 발명에 중요하지 않다.
노드(103)가 디스플레이되는 정밀도는 노드(105)에 의해 이용되는 좌표계는 물론 노드(103)의 좌표계의 합성 정밀도(combined precision)이다. 따라서, 예를 들어, 상기 노드들 각각의 좌표계가 8 비트를 이용하는 경우, 합성 정밀도는 16비트가 되는데, 그 이유는 노드(103)의 좌표계가 노드(103) 내의 항목의 위치를 지정하는 데에만 이용되고 노드(105) 내에서의 노드(103)의 전체적인 위치는 노드(105)의 좌표계 내에 지정되기 때문이다. 유의할 점은, 운동 경기장(103) 자체가 그 내부에 부가적인 노드를 포함하는 경우, 이러한 내포(nesting)가 반복하여 계속될 수 있다는 것이다. 예를 들어, 하나의 이러한 노드(201)는 실제로 운동 경기장 내의 특정의 매점(concession stand)일 수 있다. 이는 노드(103)의 좌표계 및 렌더링 방법에서 많은 디테일 없이 표현된다. 사용자가 계속하여 운동 경기장(103)을 줌인할 때, 어떤 시점에서, 노드(201)가 런칭한다. 이 노드가 8 비트의 정밀도를 사용하여 디스플레이되는 경우, 그 8 비트는 특정의 항목이 노드(201) 좌표계 내에서 어디에 디스플레이되어야 하는지를 지정한다. 그렇지만, 노드(103) 내에서의 노드(201)의 위치는 노드(103)의 좌표계 내에서 8 비트의 정밀도로 유지되고, 노드(103)의 위치는 차례로 8 비트를 사용하여 노드(105)의 좌표계 내에 유지된다. 따라서, 노드(201) 내의 항목들은 궁극적으로 24 비트의 정밀도를 사용하여 디스플레이된다.
노드 내에 노드를 내포함으로써, 비쥬얼 컨텐츠가 궁극적으로 디스플레이될 수 있는 정밀도는 컴퓨터의 메모리 용량에 의해서만 제한된다. 노드 내의 비쥬얼 컨텐츠가 그 노드가 런칭된 후에 디스플레이되는 최종 정밀도(ultimate precision)는 사실상 모든 부모 노드와 런칭한 노드의 정밀도의 합성 정밀도이다. 따라서, 내포 수준(level of nesting)에 따라, 정밀도가 필요에 따라 증가될 수 있으며 거의 항상 충분한 것보다 훨씬 더 많은 컴퓨터의 저장 용량에 의해서만 제한된다. 그에 부가하여, 증가된 정밀도는 단지 필요한 때에 이용되는데, 그 이유는 이미지가 런칭을 필요로 하지 않는 LOD에 있는 경우, 상기 설명에 따르면, 그 이미지가 포함되어 있는 노드가 런칭된 경우에 그 이미지가 단지 그 노드의 정밀도로 디스플레이될 뿐이기 때문이다. 따라서, 다른 노드 내에 내포된 노드의 경우, 최외곽 노드로부터 내부로 이동할 때, 아직 런칭되지 않은 노드에 최종적으로 도달할 때까지 런칭된 노드들을 순회할 수 있다. 임의의 이러한 런칭되지 않은 노드 및 그 내부의 다른 노드들은 런칭된 마지막 순회된 노드의 정밀도로만 디스플레이된다.
이 결과 "아코디언" 유형 정밀도가 얻어지며, 여기서 비쥬얼 컨텐츠가 디스플레이되는 정밀도는, 필요에 따라 또 사용자의 내비게이션 입력에 의해 좌우되어, 확대(expand) 및 축소(contract)되고, 더 높은 정밀도를 위해 필요할 때에만 시스템 자원을 사용함으로써 시스템 자원의 효율성을 극대화시킨다.
또한, 유의할 점은, 노드가 런칭할 때, 그 노드의 디스플레이가 부모 노드의 좌표 및 렌더링 방법에 기초하는 것으로부터 자식 노드의 좌표 및 렌더링 방법에 기초하는 것으로 변화된다는 것이다. 이 변화는 최적으로는, 예를 들어, 동시 계류 중인 미국 특허 출원 제10/790,253호에 기술된 바와 같이, 블렌딩을 사용하여 점차적으로 행해진다. 그렇지만, 부모 노드의 좌표계 및 렌더링 방법으로 정보를 디스플레이하는 것으로부터 자식 노드의 좌표계 및 렌더링 방법으로 정보를 디스플레이하는 것으로 점차적으로 변화하는 다른 방법이 가능하다. 이 시스템은, 예를 들어, 특정의 범위에 걸쳐, 부모로부터 자식으로의 블렌딩이 행해지도록 프로그램될 수 있다. 이어서, 사용자가 줌잉 동안에 그 영역을 통과할 때, 그 영역 동안에 내비게이션이 중단되지 않는 한, 전환이 일어나며, 이 경우 적절한 좌표계로 완전히 디스플레이될 때까지 블렌딩이 계속될 수 있다.
본 발명에 의해 해결되는 부가의 문제점은 디스플레이 동안에 모든 노드들 간의 공간적 상호관계(spatial interrelationship)를 유지시키는 시스템에 관한 것이다. 보다 상세하게는, 줌잉 및 패닝 등의 동적 내비게이션(dynamic navigation) 동안에, 아마도 서로 다른 노드를 디스플레이하기 위해 많은 서로 다른 좌표계가 사용된다. 이상에서 설명한 바와 같이, 어떤 노드는 다른 노드의 좌표계로 이미지로서만 디스플레이되고, 어떤 노드는 그 자신의 좌표계로 디스플레이된다. 사실, 시각 디스플레이 전체는 서로 다른 좌표계로 서로 다른 위치에 디스플레이된 노드로 채워질 수 있으며, 여러가지 노드에 대해 사용된 좌표계 및 정밀도는 노드가 런칭될 때 내비게이션 동안에 변할 수 있다. 따라서, 노드가 서로에 대해 적절히 위치되는 것이 중요한데, 그 이유는 각각의 노드가 그 자신의 좌표계만을 알고 있기 때문이다. 본 발명은 각각의 노드가 그 자신을 렌더링해야만 하는 전체 뷰에서의 적당한 위치를 "알고" 있도록 모든 노드들 간의 상대 위치 정보를 전달하고 필요할 때에 그 정보를 갱신하는 기술을 제공한다.
상기한 바는 노드 구조 및 부가적인 어드레스 스택 데이터 구조에 필드를 추가함으로써 달성될 수 있다. 확장된 노드 정의는 우리가 "뷰" 필드(view field)라고 부르고 또 전체 디스플레이에 대해 그 자신의 위치를 알아내기 위해 노드에 의 해 사용되는 필드를 포함한다. 뷰 필드는 노드의 눈에 보이는 영역(visible region)을, 그 노드의 좌표로 표현한다, 즉 디스플레이 직사각형의 이미지를 그 노드의 좌표로 표현한다. 이 직사각형은, 노드가 부분적으로 화면에 나오지 않을(off-screen) 때처럼, 노드의 영역과 단지 부분적으로만 중첩할 수 있다. 분명하게도, 뷰 필드가 모든 노드에 대해 항상 갱신된 채로 있을 수 있는 것은 아닌데, 내비게이션이 행해질 때 반드시 노드의 유향 그래프(directed graph) 전체를 실시간으로 순회할 수 있는 것은 아니기 때문이다.
스택 구조(stack structure)는 이와 같이 정의된다.
Stack<Address> viewStack;
여기서, 이 스택은 클라이언트(디스플레이에 연결된 컴퓨터)의 전역 변수(global variable)이다. 예시를 위해, 내비게이션이 루트 노드에 의해 정의되는 컨텐츠 세계(a universe of content)의 개요로 시작하는 것으로 가정하자. 그러면 이 루트 노드는 viewStack로 푸시되고, 루트 노드의 뷰 필드가 루트 노드의 전체 영역으로 초기화될 수 있다. 즉,
rootNode.view = rootNode.coordSystem;
Push(viewStack, rootNode);
개략적으로 말하면, viewStack은 디스플레이(이 예시적인 구현에서 디스플레이의 중앙으로 간주함)에 대해 점으로 "관통된" 노드 시퀀스의 어드레스를 지정한다. 이 시퀀스는 루트 노드부터 시작해야 하지만, 무한일 수 있고, 따라서 절단되어야만 한다. 예시적인 실시예에서, "관통된" 노드가 minimumArea로 정의된 어떤 최소 크기보다 더 작게 될 때, 이 시퀀스는 절단된다. 그러면, 현재의 뷰는 viewStack 내의 모든 노드의 뷰 필드로 표현되며, 각각의 뷰 필드는 노드의 지역 좌표계로 현재의 뷰를 지정한다. 사용자가 아주 심하게 줌잉하여 세계로 된 경우, 디스플레이의 상세 위치는 스택 내의 마지막 노드의 뷰 필드에 의해 가장 정확하게 제공된다. 그렇지만, 마지막 요소의 뷰 필드는 전체 세계에 대해서가 아니라 그의 지역 좌표에 대해서만 사용자의 시점(viewpoint)을 지정한다. 반면에, 루트 노드의 뷰 필드는 이 세계에서 사용자가 어디에서 보고 있는지를 지정한다. 따라서, viewStack의 "미세한 단부(fine end)"에 더 가까운 노드가 증가된 정밀도로 그렇지만 세계 내의 점진적으로 더 작은 영역에 대해 뷰 위치를 지정한다. 이것은 도 20에 개념적으로 도시되어 있으며, 여기서 런칭된 3개의 노드(301, 302, 303) 중에서 노드(303)는 어디에서 사용자가 보고 있는지의 가장 정확한 표시를 제공하는데, 그 이유는 그의 좌표계가 "가장 미세"하기 때문이지만, 노드(301)는 비쥬얼 컨텐츠의 훨씬 더 큰 영역에 대한 정보(그렇지만, 미세하지는 않음)를 제공한다.
그러면, 이 문제는 다음과 같은 것으로 된다. 즉, 사용자가 세계를 내비게이션, 패닝 및 줌잉할 때, 눈에 보이는 노드 전부의 뷰(즉, 뷰 필드)가 동기화된 채로 유지되어야 한다. 이들을 동기화된 채로 유지하지 못하면 그 결과 노드의 모습이 결집된 및 물리적으로 일관된 2D 표면으로 거동하기보다는 오히려 서로 독립적으로 디스플레이 상을 이동하게 된다.
임의의 내비게이션 동작 동안에 뷰를 변경하는 것은 다음과 같이 진행된다. viewStack에서의 마지막 노드가 뷰의 가장 정확한 표현을 가지고 있기 때문에, 첫 번째 단계는 이 마지막 노드의 뷰 필드를 변경하는 것이고, 이 변경된 뷰가 정확한 새로운 뷰인 것으로 간주되며, 임의의 다른 눈에 보이는 노드가 계속 뒤따라와야 한다. 두번째 단계는 이 새로운 뷰를 루트 노드쪽으로 "위로(upward)" 전달하는 것이며, 이로 인해 스택에서 더 앞쪽에 있는 노드들의 뷰 필드에 대해 점진적으로 더 작은 변경을 해야만 한다. 사용자가 심하게 줌잉할 때, 위로의 전달에서의 어떤 지점에서, 뷰에 대한 변경은 그 변경이 정확하게 표현되지 못할 정도로, 즉 위로의 전달이 이 노드에서 중단될 정도로 아주 작을 수 있다. 위로의 전달의 각각의 단계에서, 이 변경은 또한 아래로 다른 눈에 보이는 노드로도 전달된다. 따라서, 먼저 마지막 노드의 부모의 뷰가 수정되고, 이어서 아래로의 전달에서, 마지막 노드의 "형제(sibling)"가 수정된다. 그 다음의 위로의 전달은 조부모의 뷰를 수정하고, 두번째 아래로의 전달은 첫번째 삼촌(uncle), 이어서 첫번째 조카(cousin)를 수정한다. 이 아래로의 전달은, 이전과 같이, "사촌 노드"의 영역이 minimumArea보다 작게 될 때 또는 노드가 완전히 화면에 나오지 않을 때 중지된다.
이상의 기술은 여러가지 노드의 레이아웃을 트리로 변환하는 것을 수반하며, 이는 도 21 및 도 22에 개념적으로 도시되어 있다. 도 21 및 도 22로부터 알 수 있는 바와 같이, 특정의 디스플레이된 일련의 노드에 대한 대응하는 트리가 있고, 이 트리 구조는 앞서 기술한 바와 같이 뷰 정보를 전달하는 데 사용될 수 있다. 노드(401 내지 408) 각각은 도 22에 도시된 유사한 번호를 갖는 트리 상의 점에 대응한다. 예를 들어, 다른 노드의 크기 및 위치를 나타내는 포인터 및 정보 등의 노드에 대해 저장되는 정보가 도 20에 개념적으로 도시되어 있다. 도 23은 도 22 의 트리 다이어그램의 일부분에 대응하는 블록도이며, 여기서 노드(403)의 속성을 정의하는 데 사용될 수 있는 데이터를 나타내기 위해 예시적인 값이 이용되고 있다. 이 예시적인 경우에서, 노드(403)는 자식 노드(406)에 대한 포인터, 자식 노드(406)의 논리적 크기(100x100)에 관한 정보, 및 노드(403)의 좌표로 자식 노드(406)의 위치를 지정하는 데이터(10, 20)를 포함한다.
패닝 동작은 viewStack에 더 이상 속하지 않도록 마지막 노드를 충분히 멀리 이동시킬 수 있다. 다른 대안으로서, 줌인(zooming in)은 viewStack의 연장(lengthening)이 필요한 만큼 자식을 확장시킬 수 있거나, 줌아웃(zooming out)은 마지막 노드의 면적을 viewStack의 절단(truncation)을 필요로 하는 최소 면적 이하로 되게 할 수 있다. 이들 경우 모두에서, 마지막 노드의 ID(identity)가 변한다. 이들 상황은 아래로의 전달에서 검출되며, 이는 그에 따라 viewStack을 변경시켜, 아마도 viewStack을 더 길게 또는 더 짧게 할 수 있다.
상기한 바의 한가지 간단한 경우는, 줌잉 동안에, 노드가 런칭됨으로써 이제 뷰 스택에 배치될 필요가 있는 것이다. 다른 예는 줌아웃에 의해 이전에 보였던 노드가 뷰 스택으로부터 제거되어야만 할 정도로 작아지는 것이다.
이 생각의 확장이 장기간의 줌아웃(long outward zoom)에 응답하여 즉각 viewStack을 절단하는 것을 회피하는 것이다. viewStack을 절단하는 것은 사용자가 그 다음에 패닝하는 경우에만 필요하다. 장기간의 줌아웃으로 인해 심하게 줌잉된 노드의 뷰 필드가 아주 크게 되더라도(따라서, 숫자적으로 부정확함), 뷰 직사각형의 중앙점을 표현하는 필드
Point2D viewCenter;
가 노드 구조에 추가될 수 있으며, 따라서 패닝 없이 줌잉하는 것은 어떤 노드의 viewCenter 필드도 변경하지 않는다. 이 구성에 의해 줌아웃하고 그 직후에 다시 줌인하는 것이 가능하게 된다. viewStack이 그대로 있기 때문에, 사용자는 그 다음에 정확하게 시작 뷰로 돌아갈 수 있다. 이 거동은 웹 브라우저의 "뒤로" 및 "앞으로" 버튼과 유사하며, "뒤로"는 줌아웃과 유사하고, "앞으로"는 다시 줌인하는 것과 유사하다. 웹 브라우저에서, 사용자가 "뒤로"를 사용하여 이전의 웹 페이지로 돌아가서, 대안의 링크를 따라가는 경우, 이 시점에서 "앞으로"는 동작을 중단한다. 대안의 링크를 따라가는 것은 따라서 줌아웃 이후의 패닝과 유사하다.
이상에서 비쥬얼 컨텐츠가 거의 무한인 정밀도(애플리케이션이 실행되고 있는 컴퓨터 시스템의 용량에 의해서만 제한됨)로 다양한 방식으로 디스플레이되고 내비게이션될 수 있다는 것을 보여주었다. 임의의 주어진 때에 디스플레이되는 비쥬얼 컨텐츠는 노드의 어셈블리로서 디스플레이되며, 특정의 뷰에 필요한 노드만이 런칭되고, 나머지 노드들 모두는 또하나의 노드의 일부로서 런칭되지 않고 디스플레이되거나 전혀 디스플레이되지 않는다. 여러가지 다른 실시예들이 당업자에게는 명백하게 될 것임을 잘 알 것이다.
<발명의 명칭>
이미지 내비게이션 방법 및 장치{METHODS AND APPARATUS FOR NAVIGATING AN IMAGE}
<기술 분야>
본 발명은 원만하고 연속적인 내비게이션 이동의 모습을 제공하도록 객체의 이미지 상에서 줌잉 및 패닝 등의 내비게이션하는 방법 및 장치에 관한 것이다.
<배경 기술>
종래의 그래픽 컴퓨터 사용자 인터페이스(GUI)는 대부분 일정한 공간 스케일의 비쥬얼 컴포넌트를 사용하여 설계되어 있지만, 비쥬얼 컴포넌트가 디스플레이 상에서 일정한 공간 스케일을 갖지 않도록 표현 및 조작될 수 있다는 것은 오래전부터 인식하고 있었으며, 실제로 비쥬얼 컴포넌트는 패닝 및/또는 줌인 또는 줌아웃될 수 있다. 이미지를 줌인 및 줌아웃할 수 있는 것은, 예를 들어, 지도를 보는 것, 신문 등의 텍스트 레이아웃을 브라우징하는 것, 디지털 사진을 보는 것, 설계도 및 도면을 보는 것, 및 다른 대규모 데이터 세트를 보는 것과 관련하여 바람직할 수 있다.
Microsoft Word, Adobe PhotoShop, Adobe Acrobat, 기타 등등의 많은 기존의 컴퓨터 애플리케이션은 줌잉가능 컴포넌트를 포함한다. 일반적으로, 이들 컴퓨터 애플리케이션에 의해 제공되는 줌잉 기능(zooming capability)은 사용자의 소프트웨어와의 상호작용의 지엽적인 측면이며, 줌잉 기능(zooming feature)은 가끔씩 이용될 뿐이다. 이들 컴퓨터 애플리케이션은 사용자가 (예를 들어, 스크롤바 또는 커서를 이용하여 보고 있는 이미지(viewed image)를 좌우상하로 이동시킴으로써) 이미지 상에서 원만하고 연속적으로 패닝할 수 있게 해준다. 그렇지만, 이러한 컴퓨터 애플리케이션에서의 중대한 문제는 사용자가 원만하고 연속적으로 줌잉을 할 수 없다는 것이다. 실제로, 이들 애플리케이션은 10%, 25%, 50%, 75%, 100%, 150%, 200%, 500%, 기타 등등의 이산적인 단계로(in discrete steps) 줌잉하는 것을 제공한다. 사용자는 커서를 사용하여 원하는 줌잉을 선택하고, 이에 응답하여, 이미지가 선택된 줌잉 레벨로 갑자기 변한다.
불연속적인 줌잉의 바람직하지 않은 특성은 인터넷-기반 컴퓨터 애플리케이션에도 존재한다. www.mapqeust.com 웹사이트의 기초를 이루는 컴퓨터 애플리케이션은 이 점을 보여주고 있다. MapQuest 웹사이트에서는 사용자가 하나 이상의 주소를 입력하고 이에 응답하여 도로 지도의 이미지를 수신할 수 있다. 도 24 내지 도 27은 미국 뉴욕주 롱 아일랜드의 지역 지도에 대한 쿼리에 응답하여 MapQuest 웹사이트로부터 구할 수 있는 이미지의 예이다. MapQuest 웹사이트에서는 사용자가 이산적인 레벨로(예를 들어, 10개 레벨로) 줌인 및 줌아웃할 수 있다. 도 24는 대략 100 미터/픽셀인 줌잉 레벨 5로 렌더링한 것이다. 도 26은 약 20 미터/픽셀인 줌잉 레벨 7에서의 이미지이다. 도 27은 약 10 미터/픽셀인 줌잉 레벨 9에서의 이미지이다.
도 24 내지 도 27을 비교하면 알 수 있는 바와 같이, 줌잉 레벨들 간의 갑작스런 변환에 의해 줌아웃될 때는 갑작스런 디테일 손실(loss of detail)이 있게 되고, 줌인될 때에는 갑작스런 디테일 추가(addition of detail)가 있게 된다. 예를 들어, 도 24(줌잉 레벨 5임)에서는 국지 도로(local road), 부도로(secondary road) 또는 연결 도로(connecting road)가 보이지 않지만, 바로 다음 줌잉 레벨인 도 25에서는 부도로 및 연결 도로가 갑자기 나타난다. 이러한 갑작스런 불연속은 MapQuest 웹사이트를 이용할 때 아주 거슬린다. 그렇지만, 유의할 점은 MapQuest 소프트웨어 애플리케이션이, 예를 들어, 줌잉 레벨 5(도 24)에서 국지 도로를 볼 수 있도록 수정되어 있더라도, 결과가 여전히 만족스럽지 않을 거라는 것이다. 어떤 줌잉 레벨에서 결과가 만족스러울 수 있도록 하는 줌잉 레벨로 지도의 시각적 밀도(visual density)가 변하더라도(예를 들어, 레벨 7(도 26)), 줌인했을 때, 도로는 두꺼워지지 않고 지도가 지나치게 휑댕그렁하니 보이게 된다. 줌아웃했을 때, 도로들이 마침내는 서로 합류되고, 급속히 개개의 도로가 분간되지 않는 한 덩어리(solid nest)를 형성하게 된다.
도로 지도의 이미지에 대한 원만하고 연속적인 줌잉을 제공할 수 있는 것이 어려운 이유는 도로 카테고리와 연관된 여러가지 조악성 레벨(level of coarseness) 때문이다. 미국에는, 약 5개의 도로 카테고리(미국 인구 조사국(Census Bureau)에 의해 배포된 Tiger/Line Data에 따라 분류됨)가 있다.
A1: 간선 고속도로(primary highway), A2: 간선 도로(primary road), A3: 주 고속도로(state highway), 부도로(secondary road) 및 연결 도로(connecting road), A4: 국지 도로(local street), 도심 도로(city street), 및 시외 도로(rural road), 그리고 A5: 이면 도로(dirty road).
이들 도로는 전체 객체(즉, 도로 지도)의 요소로 간주될 수 있다. 도로 요 소(road element)의 조악성(coarseness)이 나타나는 이유는 A3 도로보다 상당히 더 많은 A4 도로가 있고, A2 도로보다 상당히 더 많은 A3 도로가 있으며 또 A1 도로보다 상당히 더 많은 A2 도로가 있기 때문이다. 게다가, 도로들의 물리적 크기(예를 들어, 도로 폭)이 상당히 다르다. A1 도로는 폭이 약 16 미터일 수 있고, A2 도로는 폭이 약 12 미터일 수 있으며, A3 도로는 폭이 약 8 미터일 수 있고, A4 도로는 폭이 약 5 미터일 수 있으며, A5 도로는 폭이 약 2.5 미터일 수 있다.
MapQuest 컴퓨터 애플리케이션은 특정의 줌잉 레벨에서 적절한 것으로 생각되는 도로 카테고리만을 디스플레이함으로써 이들 다양한 조악성 레벨을 처리한다. 예를 들어, 전국적인 뷰(nation-wide view)는 A1 도로만을 보여주지만, 주 전체 뷰(state-wide view)는 A1 및 A2 도로를 보여주며, 지방 전체 뷰(country-wide view)는 A1, A2 및 A3 도로를 보여줄 수 있다. MapQuest가 도로 지도의 연속적인 줌잉을 가능하게 해주도록 수정되더라도, 이 방법에서는 줌잉 동안 도로 카테고리가 갑작스럽게 나타나고 사라지게 되어, 혼란스럽고 시각적으로 거슬린다.
이상의 내용을 살펴보면, 객체의 크기 또는 중요성에 기초하여 그 객체의 요소들 간의 시각적 구별(visual distinction)을 보존하면서 이미지의 원만하고 계속적인 줌잉을 가능하게 해주는, 복잡한 객체의 이미지를 내비게이션하는 새로운 방법 및 장치가 업계에 필요하다.
<발명의 상세한 설명>
본 발명의 하나 이상의 측면에 따르면, 적어도 하나의 객체를 갖는 이미지를 줌인 또는 줌아웃하는 것을 비롯한 여러가지 동작을 수행하는 방법 및 장치가 생각 되며, 여기서 적어도 하나의 객체의 적어도 어떤 요소는 줌잉과 연관된 하나 이상의 줌잉 레벨에 비물리적으로 비례(non-physically proportional)하도록 확대(scale up) 및/또는 축소(scale down)된다.
비물리적 비례 스케일링(non-physically proportional scaling)은 이하의 식으로 표현될 수 있다.
p = c·d·za
여기서, p는 줌잉 레벨에서 객체의 하나 이상의 요소의 픽셀 단위의 선형 크기이고, c는 상수이며, d는 객체의 하나 이상의 요소의 물리적 단위의 선형 크기이고, z는 물리적 선형 크기/픽셀 단위의 줌잉 레벨이며, a는 스케일 멱수(scale power)(단, a ≠ -1임)이다.
비물리적 스케일링(non-physical scaling) 하에서, 스케일 멱수 a는 줌잉 레벨 z0 내지 z1의 범위 내에서 -1이 아니며(일반적으로, -1 < a < 0임), z0는 z1보다 낮은 물리적 선형 크기/픽셀을 갖는다. 양호하게는, 객체의 하나 이상의 요소에 대해 z0 및 z1 중 적어도 하나가 다를 수 있다. 유의할 점은 a, c 및 d도 역시 요소마다 다를 수 있다는 것이다.
적어도 하나의 객체의 적어도 어떤 요소도 줌잉과 연관된 하나 이상의 줌잉 레벨에 물리적으로 비례하도록 확대 및/또는 축소될 수 있다. 물리적 비례 스케일링(physically proportional scaling)은 이하의 식으로 표현될 수 있다.
p = c·d/z
여기서, p는 줌잉 레벨에서 객체의 하나 이상의 요소의 픽셀 단위의 선형 크기이고, c는 상수이며, d는 객체의 하나 이상의 요소의 물리적 단위의 선형 크기이고, z는 물리적 선형 크기/픽셀 단위의 줌잉 레벨이다.
유의할 점은 본 문서에서 지금까지 기술된 및/또는 이후에 기술되는 방법 및 장치가 표준 디지털 회로, 아날로그 회로, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 임의의 기지의 프로세서, 프로그램가능 디지털 장치 또는 시스템, 프로그램가능 어레이 로직 장치, 또는 상기한 것들의 임의의 조합 등의 임의의 기지의 기술을 이용하여 달성될 수 있다. 본 발명은 또한 적합한 저장 매체에 저장하여 처리 장치에 의해 실행하기 위한 소프트웨어 프로그램으로 구현될 수 있다.
객체의 요소들은 다양한 정도의 조악성을 가질 수 있다. 예를 들어, 상기한 바와 같이, 도로 지도 객체의 요소들의 조악성이 나타나는 이유는 A3 도로보다 상당히 더 많은 A4 도로가 있고, A2 도로보다 상당히 더 많은 A3 도로가 있으며, A1 도로보다 상당히 더 많은 A2 도로가 있기 때문이다. 도로 카테고리에서의 조악성의 정도는 또한 평균 도로 길이, 교차 횟수(frequency of intersections), 및 최대 곡률 등의 특성에도 나타난다. 다른 이미지 객체의 요소들의 조악성이 그 전체를 열거할 수 없을 정도로 많은 다른 방식으로 나타날 수 있다. 따라서, 주어진 소정의 이미지에서의 요소들의 스케일링은, (i) 이러한 요소의 조악성 정도, 및 (ii) 주어진 소정의 이미지의 줌잉 레벨 중 적어도 하나에 기초하여 물리적으로 비례(physically proportional)이거나 비물리적으로 비례(non-physically proportional)일 수 있다. 예를 들어, 객체가 도로 지도일 수 있고, 객체의 요소는 도로일 수 있으며, 다양한 조악성 정도는 도로 계층구조일 수 있다. 따라서, 주어진 소정의 이미지에서의 주어진 도로의 스케일링은 (i) 주어진 도로의 도로 계층구조, 및 (ii) 주어진 소정의 이미지의 줌잉 레벨에 기초하여 물리적으로 비례이거나 비물리적으로 비례일 수 있다.
본 발명의 하나 이상의 다른 측면에 따르면, 클라이언트 단말기에서 도로 지도의 다양한 줌잉 레벨의 복수의 사전-렌더링된 이미지를 수신하는 단계, 클라이언트 단말기에서 줌잉 정보를 포함하는 하나 이상의 사용자 내비게이션 명령을 수신하는 단계, 및 클라이언트 단말기 상에 중간 이미지를 디스플레이하는 것이 원만한 내비게이션의 모습을 제공하도록 내비게이션 명령의 줌잉 정보에 대응하는 중간 줌잉 레벨의 중간 이미지를 획득하기 위해 사전-렌더링된 이미지 중 2개 이상을 블렌딩하는 단계를 비롯한 여러가지 동작을 수행하는 방법 및 장치가 생각된다.
본 발명의 하나 이상의 또다른 측면에 따르면, 클라이언트 단말기에서 적어도 하나의 객체의 다양한 줌잉 레벨의 복수의 사전-렌더링된 이미지를 수신하는 단계 - 적어도 하나의 객체의 적어도 몇몇 요소들은 복수의 소정의 이미지를 생성하기 위해 확대 및/또는 축소되고, 이 스케일링은 (i) 줌잉 레벨에 물리적으로 비례, 및 (ii) 줌잉 레벨에 비물리적으로 비례 중 적어도 하나임 -, 클라이언트 단말깅에서 줌잉 정보를 포함하는 하나 이상의 사용자 내비게이션 명령을 수신하는 단계, 내비게이션 명령의 줌잉 정보에 대응하는 중간 줌잉 레벨의 중간 이미지를 획득하기 위해 사전-렌더링된 이미지 중 2개 이상을 블렌딩하는 단계, 및 중간 이미지를 클라이언트 단말기 상에 디스플레이하는 단계를 비롯한 여러가지 동작을 수행하는 방법 및 장치가 생각된다.
본 발명의 하나 이상의 또다른 측면에 따르면, 도로 지도의 다양한 줌잉 레벨의 복수의 사전-렌더링된 이미지를 통신 채널을 통해 클라이언트 단말기로 전송하는 단계, 클라이언트 단말기에서 복수의 사전-렌더링된 이미지를 수신하는 단계, 클라이언트 단말기를 사용하여 줌잉 정보를 포함하는 하나 이상의 사용자 내비게이션 명령을 발행하는 단계, 및 클라이언트 단말기 상에 중간 이미지를 디스플레이하는 것이 원만한 내비게이션의 모습을 제공하도록 내비게이션 명령의 줌잉 정보에 대응하는 중간 줌잉 레벨의 중간 이미지를 획득하기 위해 사전-렌더링된 이미지 중 2개 이상을 블렌딩하는 단계를 비롯한 여러가지 동작을 수행하는 방법 및 장치가 생각된다.
본 발명의 하나 이상의 또다른 측면에 따르면,적어도 하나의 객체의 다양한 줌잉 레벨의 복수의 사전-렌더링된 이미지를 통신 채널을 통해 클라이언트 단말기로 전송하는 단계 - 적어도 하나의 객체의 적어도 몇몇 요소가 복수의 소정의 이미지를 생성하기 위해 확대 및/또는 축소되고, 이 스케일링은 (i) 줌잉 레벨에 물리적으로 비례, 및 (ii) 줌잉 레벨에 비물리적으로 비례 중 적어도 하나임 -, 클라이언트 단말기에서 복수의 사전-렌더링된 이미지를 수신하는 단계, 클라이언트 단말기를 사용하여 줌잉 정보를 포함하는 하나 이상의 사용자 내비게이션 명령을 발행하는 단계, 내비게이션 명령의 줌잉 정보에 대응하는 중간 줌잉 레벨의 중간 이미지를 획득하기 위해 사전-렌더링된 이미지 중 2개를 블렌딩하는 단계, 및 중간 이미지를 클라이언트 단말기 상에 디스플레이하는 단계를 비롯한 여러가지 동작을 수행하는 방법 및 장치가 생각된다.
첨부 도면과 관련하여 본 명세서의 설명을 살펴보면, 기타 측면, 특징 및 이점이 당업자에게 명백하게 될 것이다.
<도면의 간단한 설명>
도 24는 줌잉 레벨 5에 있는, MapQuest 웹사이트로부터 가져온 이미지.
도 25는 줌잉 레벨 6에 있는, MapQuest 웹사이트로부터 가져온 이미지.
도 26은 줌잉 레벨 7에 있는, MapQuest 웹사이트로부터 가져온 이미지.
도 27은 줌잉 레벨 9에 있는, MapQuest 웹사이트로부터 가져온 이미지.
도 28은 본 발명의 하나 이상의 측면에 따른, 약 334 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 29는 본 발명의 하나 이상의 다른 측면에 따른, 약 191 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 30은 본 발명의 하나 이상의 다른 측면에 따른, 약 109.2 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 31은 본 발명의 하나 이상의 다른 측면에 따른, 약 62.4 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 32는 본 발명의 하나 이상의 다른 측면에 따른, 약 35,7 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 33은 본 발명의 하나 이상의 다른 측면에 따른, 약 20.4 미터/픽셀의 줌 잉 레벨로 생성된 롱 아일랜드의 이미지.
도 34는 본 발명의 하나 이상의 다른 측면에 따른, 약 11.7 미터/픽셀의 줌잉 레벨로 생성된 롱 아일랜드의 이미지.
도 35는 본 발명의 하나 이상의 측면에 따른, 이미지의 원만하고 연속적인 내비게이션을 제공하기 위해 수행될 수 있는 프로세스 단계들을 나타낸 흐름도.
도 36은 본 발명의 여러가지 측면에 따른, 이미지를 원만하게 내비게이션하기 위해 수행될 수 있는 추가 프로세스 단계들을 나타낸 흐름도.
도 37은 본 발명의 하나 이상의 다른 측면에 따른, 물리적 및 비물리적 스케일링을 나타낸 픽셀 단위의 라인폭 대 미터/픽셀 단위의 줌잉 레벨의 로그-로그 그래프.
도 38은 도 37의 물리적 및 비물리적 스케일링의 변형을 나타낸 로그-로그 그래프.
도 39의 (A) 내지 도 39의 (D)는 각각 종단점의 중심이 정확하게 픽셀 좌표 상에 있는 안티엘리어싱된 수직선을 나타낸 도면.
도 40의 (A) 내지 도 40의 (C)는 각각 종단점이 정확한 픽셀 좌표에 위치해 있지 않은 경사진 안티앨리어싱된 선을 나타낸 도면.
도 41은 증분 라인 폭을 나타내는 수평선 및 2개의 인접한 수직선 사이의 간격에 대한 라인 폭이 단지 2 픽셀만큼 변하도록 떨어져 있는 수직선을 포함하는 도 37의 라인폭 대 줌잉 레벨의 로그-로그 그래프.
<실시예>
본 발명을 설명하기 위해, 여러 형태가 도면에 도시되어 있지만, 본 발명이 도시된 정확한 구성 및 수단에 한정되지 않는다는 것을 잘 알 것이다.
이제 유사한 참조 번호가 유사한 요소를 나타내고 있는 도면을 참조하면, 도 28 내지 도 34에는 미국 뉴욕주 롱 아일랜드의 도로 시스템을 나타내는 일련의 이미지가 도시되어 있으며, 각각의 이미지는 서로 다른 줌잉 레벨(또는 해상도)에 있다. 본 발명이 어떻게 구현되는지의 기술적 상세를 살펴보기 이전에, 본 발명을 사용하는 결과 얻어지는 바람직한 특징, 즉 적어도 정보 무결성을 유지하면서 원만하고 연속적인 내비게이션의 모습, 특히 줌잉과 관련하여 이들 이미지에 대해 설명한다.
유의할 점은 이하에서 설명하게 될 본 발명의 여러가지 측면이 도로 지도 이미지의 내비게이션 이외의 것과 관련하여 적용될 수 있다는 것이다. 실제로, 본 발명이 이용될 수 있는 구현 및 이미지의 범위는 그 전부를 열거하기에는 너무 광범위하다. 예를 들어, 본 발명의 특징들은 사람의 해부학적 구조, 복잡한 지형, 배선도(wiring diagram)나 설계도(blueprint) 등의 엔지니어링 다이어그램(engineering diagram), 유전자 온톨로지(gene ontology), 기타의 이미지를 내비게이션하는 데 사용될 수 있다. 그렇지만, 본 발명이 그 요소가 여러가지 LOD(level of detail) 또는 조악성 레벨을 갖는 이미지를 내비게이션하는 데 특별한 응용 가능성(applicability)을 갖는다는 것이 밝혀졌다. 따라서, 간결하고 명료하도록 하기 위해, 본 발명의 여러가지 측면들에 대해 구체적인 예, 즉 도로 지도의 이미지와 관련하여 설명할 것이다.
비록 특허 문서에 원만하고 연속적인 줌잉의 모습을 보여주는 것이 불가능하지만, 이 특징은 펜티엄-기반 컴퓨터 상에서 적당한 소프트웨어 프로그램을 실행하는 것에 의한 실험 및 프로토타입(prototype) 개발을 통해 입증될 수 있다. 도 28에 도시된 도로 지도의 이미지(100A)는 물리적 길이/픽셀(또는 물리적 선형 크기/픽셀)의 단위를 특징으로 할 수 있는 줌잉 레벨에 있다. 환언하면, 줌잉 레벨 z는 이미지(100A)의 단일 픽셀이 나타내는 실제 물리적 선형 크기를 말한다. 도 28에서, 줌잉 레벨은 약 334 미터/픽셀이다. 당업자라면 청구된 발명의 정신 및 범위를 벗어나지 않고 줌잉 레벨이 다른 단위로 표현될 수 있다는 것을 잘 알 것이다. 도 29는 도 28과 동일한 도로 지도의 이미지(100B)를 나타낸 것이지만, 줌잉 레벨 z는 약 191 미터/픽셀이다.
본 발명의 하나 이상의 측면에 따르면, 본 발명의 하나 이상의 측면을 구현하는 소프트웨어 프로그램의 사용자는 도 28과 도 29에 나타낸 레벨들 간에 줌인 또는 줌아웃할 수 있다. 유의할 중요한 점은 이러한 줌잉이 334 미터/픽셀 레벨(도 28)과 191 미터/픽셀 레벨(도 29) 및 이들 사이의 임의의 레벨 간의 원만하고 연속적인 전환의 모습을 갖는다는 것이다. 이와 마찬가지로, 사용자는 z = 109.2 미터/픽셀(도 30), z = 62.4 미터/픽셀(도 31), z = 35.7 미터/픽셀(도 32), z = 20.4 미터/픽셀(도 33), 및 z = 11.7 미터/픽셀(도 34) 등의 다른 레벨로 줌잉할 수 있다. 다시 말하지만, 이들 줌잉 레벨과 이들 사이의 임의의 레벨을 통한 전환은 유익하게도 원만하고 연속적인 이동의 모습을 갖는다.
도 28 내지 도 34에 나타낸 본 발명의 다른 중요한 특징은 한 레벨에서 다른 레벨로 줌잉할 때 갑자기 나타나거나 사라지는 디테일이 거의 없거나 전혀 없다는 것이다. 도 31(z = 62.4 미터/픽셀의 줌잉 레벨)에 나타낸 디테일은 도 28(z = 334 미터/픽셀의 줌잉 레벨)에서도 발견될 수 있다. 이미지 객체(이 경우에, 도로 지도)가 다양한 정도의 조악성을 갖는 요소(즉, 도로)를 포함하더라도 마찬가지이다. 실제로, 도 31의 도로 지도(100D)는 적어도 A1 고속도로(102 등), A2 부도로(104 등), 및 A3 국지 도로(106 등)를 포함한다. 그렇지만, 이들 디테일, 심지어 A4 국지 도로(106)는 여전히 도 31의 이미지(100D)와 비교하여 상당히 줌아웃되어 있는 도 28의 이미지(100A)에서 볼 수 있다.
게다가, A4 국지 도로(106)가 z = 334 미터/픽셀(도 28)의 줌잉 레벨로 보일 수 있음에도 불구하고, A1, A2, A3 및 A4 도로는 서로 구별될 수 있다. A1 간선 고속도로(102)와 A2 간선 도로(108) 사이의 차이도 렌더링된 이미지(100A)에서 이러한 도로에 주어진 상대 가중치와 비교하여 서로 구별될 수 있다.
도로 계층구조들을 구별할 수 있는 기능은 또한 유익하게도, 예를 들어, 사용자가 도 33의 이미지(100F)에 나타낸 z = 20.4 미터/픽셀의 줌잉 레벨까지 계속하여 줌인할 때 유지된다. A1 간선 고속도로(102)의 가중치가 도 31의 z = 62.4 미터/픽셀의 줌잉 레벨과 비교하여 상당히 증가되더라도, 이는 A4 국지 도로(106) 또는 심지어 A5 이면 도로 등의 다른 디테일을 제거할 정도까지 증가하지 않는다. 그럼에도 불구하고, A4 국지 도로(106) 등의 하위 계층 레벨에 있는 도로의 가중치는 도 31의 줌잉 레벨 z = 62.4 미터/픽셀에 있는 그의 대응물과 비교하여 가중치가 증가한다.
따라서, 도 28에 나타낸 것과 도 34에 나타낸 것 간의 줌잉 레벨의 동적 범위(dynamic range)가 상당하고 디테일이 거의 변함이 없는 채로 있더라도(즉, 도로가 원만하게 줌잉하는 동안 갑자기 나타나거나 사라지지 않더라도), 사용자가 주어진 줌잉 레벨에서 획득하고자 하는 정보가 바람직하지 않은 아티팩트에 의해 가려지지 않는다. 예를 들어, z = 334 미터/픽셀(도 28)의 줌잉 레벨에서, 사용자는 어떤 간선 고속도로가 있고 어떤 방향으로 뻗어 있는지를 전반적으로 이해하고자 할 수 있다. 이 정보는 A4 국지 도로(106)도 역시 나타내어져 있더라도 용이하게 획득될 수 있다. z = 62.4 미터/픽셀(도 31)의 줌잉 레벨에서, 사용자는 특정의 A1 간선 고속도로(102) 또는 A2 간선 도로(108)가 특정 도시 또는 이웃에 도움을 주는지를 판정하고자 할 수 있다. 다시 말하자면, 사용자는 A4 국지 도로(106) 또는 심지어 A5 이면 도로의 존재 및 길이(extent) 등의 다른 훨씬 더 많은 상세한 정보로부터 방해 없이 이 정보를 획득할 수 있다. 마지막으로, z = 11.7 미터/픽셀의 줌잉 레벨에서, 사용자는 112 등의 특정의 A4 국지 도로를 찾는 것에 관심이 있을 수 있고, A1 간선 고속도로(102) 등의 상당히 더 큰 도로에 의한 방해 없이 그렇게 할 수 있다.
이상에서 설명한 본 발명의 여러가지 측면 중 하나 이상을 달성하기 위해, 하나 이상의 컴퓨팅 장치가 이 컴퓨팅 장치로 하여금 적절한 동작들을 수행하게 하는 하나 이상의 소프트웨어 프로그램을 실행하는 것이 생각된다. 이 점에 있어서는, 양호하게는 하나 이상의 컴퓨팅 장치 및/또는 관련 장비에 의해 수행되는 프로세스 단계들을 나타내는 흐름도인 도 35 및 도 36을 이제부터 참조할 것이다.
이 프로세스 흐름이 상용 컴퓨팅 장비(펜티엄 기반 컴퓨터 등)에 의해 실행되는 것이 바람직하지만, 청구된 본 발명의 정신 및 범위를 벗어나지 않고 프로세스 단계들을 수행하기 위해 다수의 다른 기술들 중 임의의 기술이 이용될 수 있다. 실제로, 이용되는 하드웨어는 표준 디지털 회로, 아날로그 회로, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 공지된 프로세서 중 임의의 프로세서, 프로그램가능 판독 전용 메모리(PROM), 프로그램가능 어레이 로직 장치(PAL) 등의 하나 이상의 프로그램가능 디지털 장치 또는 시스템, 상기한 것들의 임의의 조합, 기타 등등의 임의의 다른 공지된 또는 이후에 개발되는 기술을 이용하여 구현될 수 있다. 게다가, 본 발명의 방법은 공지된 또는 이후에 개발되는 매체 중 임의의 매체에 저장될 수 있는 소프트웨어 프로그램으로 구현될 수 있다.
도 35는 복수의 이미지가 (각각 서로 다른 줌잉 레벨 또는 해상도로) 준비(동작 200)되고 줌잉 등의 원만한 내비게이션의 모습을 달성하기 위해 이 이미지들 중 2개 이상이 서로 블렌딩(동작 206)되는 본 발명의 일 실시예를 나타낸 것이다. 본 발명을 실시하는 데 필요하지는 않지만, 도 35에 나타낸 방법이 서비스 제공자-클라이언트 관계와 관련하여 이용되는 것이 생각된다. 예를 들어, 서비스 제공자는 복수의 사전-렌더링된 이미지를 준비하기 위해 자원을 소비하고(동작 200) 인터넷 등의 통신 채널을 통해 사용자의 클라이언트 단말기가 이용가능한 이미지를 제작한다(동작 202). 다른 대안으로서, 사전-렌더링된 이미지는 사용자가 그의 컴퓨터에 로드하여 실행하는 애플리케이션 프로그램의 필수 부분(integral part) 또는 관련 부분일 수 있다.
블렌딩 방법이 사용될 때, 이미지 객체가 도로 지도인 경우 이하의 줌잉 레벨, 즉 30 미터/픽셀, 50 미터/픽셀, 75 미터/픽셀, 100 미터/픽셀, 200 미터/픽셀, 300 미터/픽셀, 500 미터/픽셀, 1000 미터/픽셀, 및 3000 미터/픽셀에 있는 일련의 이미지가 효과가 좋다는 것을 실험을 통해 알아내었다. 그렇지만, 유의할 점은 본 발명의 범위를 벗어나지 않고 임의의 수의 이미지가 임의의 수의 해상도로 이용될 수 있다는 것이다. 실제로, 다른 상황에서의 다른 이미지 객체는 특정의 줌잉 레벨이 상기 예와 다른 더 많은 또는 더 적은 수의 이미지로 최상의 도움을 받을 수 있다.
클라이언트 단말기가 이미지를 어떻게 획득하는지에 상관없이, 줌잉 명령 등의 사용자-개시된 내비게이션 명령에 응답하여(동작 204), 클라이언트 단말기는 양호하게는 내비게이션 명령과 일치하는 중간 해상도 이미지를 생성하기 위해 2개 이상의 이미지를 블렌딩하는 동작을 한다(동작 206). 이 블렌딩은 Lance Williams의 Pyramidal Parametrics, Computer Graphics, Proc. SIGGRAPH '83, 17(3):1-11 (1983)(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에 기술되어 있는 공지의 삼선형 보간 기술(trilinear interpolation technique) 등의 다수의 방법에 의해 달성될 수 있다. 바이큐빅-선형 보간(bicubic-linear interpolation) 등의 기타 이미지 보간 방법도 역시 본 발명과 관련하여 유용하며, 또다른 것들이 장래에 개발될 수 있다. 유의할 점은 본 발명이 이들 블렌딩 방법 중 임의의 특정의 하나를 필요로 하거나 그에 의존하지 않는다는 것이다. 예를 들어, 도 31에 나타낸 바와 같이, 사용자는 62.4 미터/픽셀이 줌잉 레벨로 내비게이션하고자 할 수 있다. 이 줌잉 레벨이 사전-렌더링된 이미지 중 2개 사이에(예를 들어, 이 예에서, 줌잉 레벨 50 미터/픽셀과 줌잉 레벨 75 미터/픽셀 사이에) 있을 수 있기 때문에, 62.4 미터/픽셀의 원하는 줌잉 레벨은 삼선형 보간 기술을 사용하여 달성될 수 있다. 게다가, 50 미터/픽셀과 75 미터/픽셀 사이의 임의의 줌잉 레벨은, 수행되는 경우 원만하고 연속적인 내비게이션의 모습을 충분히 빠르게 제공하는 상기한 블렌딩 방법을 이용하여 달성될 수 있다. 이 블렌딩 기법은 도 32에 나타낸 35.7 미터/픽셀 레벨 등의 다른 줌잉 레벨들에 대해 수행될 수 있다. 이러한 경우, 블렌딩 기법은 지금까지 설명한 예의 30 미터/픽셀과 50 미터/픽셀의 사전-렌더링된 이미지들 사이에서와 같이 수행될 수 있다.
상기한 블렌딩 방법은 본 발명이 수행되는 처리 장치의 컴퓨팅 능력이 원만한 내비게이션을 위한 높은 이미지 프레임 레이트를 달성하기 위해 (i) 먼저 렌더링 동작을 수행하고 및/또는 (ii) "적시에(just-in-time)" 또는 "동작 중에(on the fly)"(예를 들어, 실시간으로) 이미지 렌더링을 수행할 정도로 충분히 높지 않을 때 사용될 수 있다. 그렇지만, 이하에서 설명하는 바와 같이, 본 발명의 다른 실시예들은 공지의 또는 이후에 개발되는 블렌딩 및/또는 높은 프레임 레이트 응용을 위해 클라이언트 단말기에서 렌더링할 수 있는 고성능 처리 장치의 사용을 생각하고 있다.
도 36의 프로세스 흐름은 양호하게는 본 발명에 따라 하나 이상의 이미지를 준비하기 위해 수행되는 상세한 단계 및/또는 동작을 나타낸 것이다. 동작(220)에서, 공지의 또는 이후에 개발되는 기술 중 임의의 것을 사용하여 이미지 객체 또는 객체들에 관한 정보가 획득된다. 보통, 이러한 이미지 객체는 폴리곤(polygon), 라인, 점, 기타 등등의 적절한 프리미티브를 사용하여 모델링된다. 예를 들어, 이미지 객체가 도로 지도일 때, 임의의 UTM(Universal Transverse Mercator) 지대(zone)에서의 도로의 모델이 용이하게 획득될 수 있다. 이 모델은 보통 그 지대 내의 도로를 포함하는 (임의의 좌표계에서의) 라인 세그먼트 리스트의 형태이다. 이 리스트는, 픽셀(공간) 도메인 내의 주어진 프리미티브의 가중치(예를 들어, 겉보기 또는 실제 두께)를 구하는 어떤 기법을 포함하는 한, 공지의 또는 이후에 개발되는 렌더링 프로세스 중 임의의 것을 사용하여 공간 영역 내의 이미지(픽셀 이미지)로 변환될 수 있다. 계속하여 상기한 도로 지도 예에서, 렌더링 프로세스는 공간 영역에서 도로 지도의 도로를 모델링하는 라인의 가중치를 결정하는 어떤 기술을 포함해야만 한다. 이들 기술에 대해 이하에서 설명한다.
동작(222)(도 36)에서, 객체의 요소들이 분류된다. 도로 지도 객체의 경우에, 이 분류(classification)는 이미 존재하는 카테고리, 즉 A1, A2, A3, A4 및 A5를 인식하는 형태를 취할 수 있다. 실제로, 이들 도로 요소는 다양한 정도의 조악성을 가지며, 이하에 기술하는 바와 같이, 이 분류에 기초하여 서로 다르게 렌더링될 수 있다. 동작(224)에서, 수학적 스케일링이 줌잉 레벨에 기초하여 서로 다른 도로 요소에 적용된다. 이하에서 더 상세히 기술하게 되는 바와 같이, 수학적 스케일링은 또한 요소 분류에 기초해서도 변할 수 있다.
배경 지식으로서, 지도의 도로 등의 이미지 요소를 렌더링하는 2가지 종래의 기법, 즉 실제 물리적 스케일링(actual physical scaling) 및 사전-설정된 픽셀 폭(pre-set pixel width)이 있다. 실제 물리적 스케일링 기법에서는 도로의 실제 물리적 이미지를 서로 다른 스케일로 보는 것처럼 도로 지도가 랜더링된다. 예를 들어, A1 고속도로는 폭이 16 미터일 수 있고, A2 도로는 폭이 12 미터일 수 있으며, A3 도로는 폭이 8 미터일 수 있고, A4 도로는 폭이 5 미터일 수 있으며, A5는 폭이 2.5 미터일 수 있다. 이것이 지도의 작은 영역을 줌인할 때 보는 사람에게는 알맞을 수 있지만, 줌아웃함에 따라, 크든 작든 간에 모든 도로가 너무 가늘어서 분간보지 못하게 된다. 어떤 줌잉 레벨에서, 말하자면 주 레벨(state level)(예를 들어, 200 미터/픽셀)에서, 어떤 길도 전혀 보이지 않는다.
사전-설정된 픽셀 폭 방법에서는 모든 도로가 디스플레이 상에서의 1 픽셀 폭 등의 어떤 픽셀 폭이다. 고속도로 등의 큰 도로는 2 픽셀 폭 등으로 함으로써 강조될 수 있다. 불행하게도, 이 방법에서는 줌인 및 줌아웃함에 따라 지도의 시각적 밀도가 변하게 된다. 어떤 줌잉 레벨에서는, 예를 들어, 작은-크기의 시골 레벨에서는 결과가 만족스러울 수 있다. 그렇지만, 줌인함에 따라, 도로가 두꺼워지지 않고, 지도가 지나치게 휑뎅그렁하게 보이게 된다. 게다가, 줌아웃함에 따라, 도로는 서로 합해지게 되고, 개개의 도로가 분간할 수 없게 되는 한 덩어리를 형성한다.
본 발명의 하나 이상의 측면에 따르면, 동작(224)에서, 이하에서 보다 상세히 기술되어지는 파라미터에 따라, (i) 줌잉 레벨에 물리적으로 비례하여 또는 (ii) 줌잉 레벨에 비물리적으로 비례하여 적어도 어떤 이미지 요소가 확대 및/또는 축소되도록 이미지가 생성된다.
유의할 점은 스케일링이 "줌잉 레벨에 물리적으로 비례"한다는 것이, 요소의 크기가 사람 눈으로부터의 거리에 따라 변하는 것처럼 보이기 때문에, 도로폭을 나타내는 픽셀의 수가 줌잉 레벨에 따라 증가 또는 감소한다는 것을 의미한다는 것이다. 물리적 크기 d인 객체의 겉보기 길이 y를 제공하는 투시식(perspective formula)는 다음과 같다.
y = c·d/x
여기서 c는 경사 투시도(angular perspective)를 결정하는 상수이고, x는 보는 사람으로부터의 물체의 거리이다.
본 발명에 있어서, 디스플레이 픽셀 단위로 물리적 선형 크기 d'인 물체의 선형 크기 p는 다음과 같이 주어진다.
p = d'·z a
여기서, z는 물리적 선형 크기/픽셀(예를 들어, 미터/픽셀) 단위의 줌잉 레벨이고, a는 거듭제곱(power law)이다. a = -1이고 d' = d(객체의 실제 물리적 선형 크기)일 때, 이 방정식은 차원적으로 정확하고 p = yz = x/c인 경우 투시식과 동등하게 된다. 이것은 물리적 줌잉(physical zooming)과 투시 변환(perspective transformation) 간의 등가성, 즉 줌인은 물체를 보는 사람에 더 가까이 이동시키는 것과 등가이고, 줌아웃은 물체를 더 멀리 이동시키는 것과 등가임을 표현한 것이다.
비물리적 스케일링(non-physical scaling)을 구현하기 위해, a는 -1 이외의 거듭제곱으로 설정될 수 있고, d'은 실제 물리적 선형 크기 d 이외의 물리적 선형 크기로 설정될 수 있다. p가 픽셀 단위의 도로의 디스플레이된 폭을 나타낼 수 있고 d'이 물리적 단위의 귀속 폭(imputed width)을 나타낼 수 있는 도로 지도와 관련하여, "줌잉 레벨에 비물리적으로 비례(non-physically proportional to the zoom level)"는 디스플레이 픽셀 단위의 도로 폭이, 줌잉 레벨에 물리적으로 비례하는 것 이외의 방식으로, 즉 a ≠ -1인 방식으로 줌잉 레벨에 따라 증가 또는 감소한다는 것을 의미한다. 스케일링은 어떤 바람직한 결과를 달성하는 방식으로 왜곡된다.
유의할 점은 "선형 크기"가 1차원 크기를 의미한다는 것이다. 예를 들어, 임의의 2차원 객체를 생각하고 그의 "선형 크기"를 2배로 하는 경우, 그 면적에 4 = 22를 곱한다. 2차원 경우에, 객체의 요소의 선형 크기는 유클리드 평면(Euclidean plane)에서 자(ruler)를 사용하여 읽을 수 있는 길이, 폭, 반경, 직경 및/또는 임의의 다른 측정치를 포함할 수 있다. 라인의 두께, 라인의 길이, 원 또는 디스크의 직경, 폴리곤의 한 변의 길이, 및 2 점 간의 거리는 모두 선형 크기의 예이다. 이러한 의미에서, 2차원에서의 "선형 크기"는 2D 유클리드 평면 상의 객체의 2개의 식별된 점 간의 거리이다. 예를 들어, 선형 크기는 (dx2 + dy2)의 제곱근을 구함으로써 계산될 수 있으며, 여기서 dx = x1 - x0, dy = y1 - y0이며, 2개의 식별된 점은 직교 좌표 (x0, y0) 및 (x1, y1)에 의해 주어진다.
"선형 크기"라는 개념은 자연히 3차원 이상으로 확장된다. 예를 들어, 입체 객체(volumetric object)를 생각하는 경우, 그의 선형 크기를 2배로 하는 것은 체적을 8 = 23배만큼 증가시키는 것을 수반한다. 선형 크기의 유사한 측정치는 또한 구 표면 등의 비유클리드 공간(non-Euclidean space)에 대해서도 정의될 수 있다.
임의의 거듭제곱 a < 0은 줌아웃할 때는 요소의 렌더링된 크기를 감소시키고 줌인할 때는 증가시킨다. a < -1일 때, 요소의 렌더링된 크기는 줌아웃할 때 비례 물리적 스케일링(proportional physical scaling)에서보다 더 빨리 감소한다. 역으로, -1 < a < 0일 때, 렌더링된 요소의 크기는 줌아웃할 때 비례 물리적 스케일링에서보다 더 느리게 감소한다.
본 발명의 적어도 한 측면에 따르면, 주어진 객체의 주어진 길이에 대해 p(z)는 내비게이션 동안에 사용자가 이미지의 요소의 크기에서 갑작스런 점프 또는 불연속을 경험하지 않도록 거의 연속적일 수 있다(아주 극심한 불연속 - 내비게이션 동안에 요소의 갑작스런 나타남 또는 사라짐 - 이 있을 수 있는 종래의 방법과 반대임). 게다가, 줌아웃이 객체의 요소를 더 작아지게 하도록(예를 들어, 도로가 더 가늘어지게 하도록) 또 줌인이 객체의 요소를 더 커지게 하도록 p(z)가 줌아웃함에 따라 단조 감소(monotonically decrease)하는 것이 바람직하다. 이것은 사용자에게 이미지의 객체(들)에 관한 물리적 의미(a sense of physicality)를 제공한다.
이상에서 설명한 스케일링 특징은, A1 고속도로에 대한 픽셀 단위의 렌더링된 라인 폭 대 미터/픽셀 단위의 줌잉 레벨의 로그-로그 그래프인 도 37을 참조하 면 더 충분히 이해될 수 있다. (x-축에 log(z)를 나타내고 y-축에 log(p)를 나타내는 것이 편리한데, 그 이유는 이 도표가 log(x a ) = a·log(x) 관계로 인해 직선이 되기 때문이다.) 이 라인(도로) 폭 대 줌잉 레벨 도표의 기본적인 특성은 다음과 같다.
(i) 줌인될 때 도로 폭의 스케일링이 줌잉 레벨에 물리적으로 비례할 수 있다(예를 들어, 최대 약 0.5 미터/픽셀).
(ii) 줌아웃될 때 도로 폭의 스케일링이 줌잉 레벨에 비물리적으로 비례할 수 있다(예를 들어, 약 0.5 미터/픽셀을 넘음).
(iii) 더 줌아웃될 때 도로 폭의 스케일링이 줌잉 레벨에 물리적으로 비례할 수 있다(예를 들어, 이하에서 보다 상세히 기술되는 파라미터에 따라 약 50 미터/픽셀 또는 그 이상을 넘음).
도로 폭의 스케일링이 줌잉 레벨에 물리적으로 비례하는 지대에 관하여, p = d'·z a 의 스케일링 식이 이용되며, 여기서 a = -1이다. 이 예에서, 실제 A1 고속도로의 물리적 폭에 대한 타당한 값은 약 d' = 16 미터이다. 따라서, A1 고속도로를 나타내는 라인의 렌더링된 폭은, 적어도 어떤 줌잉 레벨 z0(말하자면, z0 = 0.5 미터/폭임)까지 줌아웃할 때, 물리적 스케일링에 따라 단조 감소한다.
z0 = 0.5에 대한 줌잉 레벨이 내부 스케일(inner scale)(이 이하에서 물리적 스케일링이 적용됨)로 선택된다. 이것은 도로 지도가 실제 물리적 차원을 갖는 다른 미세-스케일(fine-scale) GIS 컨텐츠와 결합될 때 비물리적 모습을 방지한다. 이 예에서, z0 = 0.5 미터/픽셀, 즉 2 픽셀/미터이며, 이는 15 인치 디스플레이(1600x1200 픽셀 해상도를 가짐) 상에 지도 스케일로서 표현될 때 약 1:2600의 스케일에 대응한다. A1 도로에 대한 타당한 실제 물리적 폭인 d = 16 미터에서, 렌더링된 도로는 줌인할 때 그의 실제 크기(0.5 미터/픽셀 이하)인 것처럼 보인다. 0.1 미터/픽셀의 줌잉 레벨에서, 렌더링된 라인은 폭이 약 160 픽셀이다. 0.5 미터/픽셀의 줌잉 레벨에서, 렌더링된 라인은 폭이 약 32 픽셀이다.
도로 폭의 스케일링이 줌잉 레벨에 비물리적으로 비례하는 지대에 관하여, p = d·z a 의 스케일링 식이 이용되며, 여기서 -1 < a < 0이다(줌잉 레벨 z0z1의 범위 내임). 이 예에서, 약 z0=0.5 미터/픽셀과 z1=3300 미터/픽셀 사이에서 비물리적 스케일링이 수행된다. 다시 말하지만, -1 < a < 0일 때, 렌더링된 도로의 폭은 줌아웃할 때 비례 물리적 스케일링에서보다 더 느리게 감소한다. 유익하게도, 이것으로 인해 줌아웃할 때 A1 도로가 여전히 보일 수 있다(다른 더 작은 도로와 구분될 수 있다). 예를 들어, 도 28에 도시한 바와 같이, A1 도로(102)는 z = 334 미터/픽셀의 줌잉 레벨에서 보이며 다른 도로와 구분될 수 있다. A1 도로의 물리적 폭이 d' = d = 16 미터라고 가정하면, 물리적 스케일링을 사용하여 렌더링된 라인의 폭은 약 3300 미터/픽셀의 줌잉 레벨에서 약 0.005 픽셀일 것이며, 사실상 보이지 않게 된다. 그렇지만, -1 < a < 0(이 예에서, a는 약 -0.473임)인 비물리적 스케일링을 사용하면, 렌더링된 라인의 폭은 300 미터/픽셀의 줌잉 레벨에서 약 0.8 픽셀이며 분명히 보이게 된다.
유의할 점은 z1에 대한 값이 주어진 도로가 여전히 "물리적인 것 이상의(greater than physical)" 중요성을 갖는 가장 줌아웃된 스케일로 선택된다는 것이다. 예로서, 미국 전체가 1600x1200 픽셀 디스플레이 상에 렌더링되는 경우, 이 해상도는 대략 3300 미터/픽셀, 즉 3.3 킬로미터/픽셀이 된다. 세계 전체를 보는 경우, 미국 고속도로가 국가만의 뷰에 대해 높아진 중요성을 가질 아무런 이유가 없을 수 있다.
따라서, 상기 예에서 약 3300 미터/픽셀인 z1을 넘는 줌잉 레벨에서, 도로 폭의 스케일링은 또다시 줌잉 레벨에 물리적으로 비례하지만, 바람직하게는 p(z)의 연속성을 위해 d'이 크다(실제 폭 d보다 훨씬 더 큼). 이 지대에서, p = d'·z a 의 스케일링 식이 사용되며, 여기서 a = -1이다. 렌더링된 도로 폭이 z1 = 3300 미터/픽셀에서 연속적이기 위해, A1 고속도로의 새로운 귀속 물리 폭(imputed physical width)이, 예를 들어, d' = 1.65 킬로미터로 선택된다. z1 및 d'에 대한 새로운 값은 양호하게는, 외부 스케일 z1에서, 라인의 렌더링된 폭이 타당한 픽셀 수가 되도록 선택된다. 이 경우에, 디스플레이 상에 국가 전체가 보일 수 있는 줌잉 레벨에서(약 3300 미터/픽셀), A1 도로는 폭이 약 1/2 픽셀일 수 있으며, 이는 가늘기는 하지만 여전히 명백하게 보이고, 이것은 1650 미터, 즉 1.65 킬로미터의 귀속 물리 도로 폭에 대응한다.
상기한 바는 줌잉 레벨의 함수인 렌더링된 라인 폭에 대한 특정의 일련의 방정식을 암시한다.
Figure 112007076898436-PCT00009
인 경우,
Figure 112007076898436-PCT00010
Figure 112007076898436-PCT00011
인 경우,
Figure 112007076898436-PCT00012
Figure 112007076898436-PCT00013
인 경우,
Figure 112007076898436-PCT00014
상기 형태의 p(z)는 6개의 파라미터, z0, z1, d0, d1, d2a를 갖는다. z0z1p(z)의 거동이 변하는 스케일을 표시한다. 줌인된 지대(
Figure 112007076898436-PCT00015
)에서, 줌잉은 물리적이고(즉, z의 지수가 -1임), 물리적 폭 d0는 양호하게는 실제 물리적 폭 d에 대응한다. 줌아웃된 지대(
Figure 112007076898436-PCT00016
)에서, 줌잉은 다시 말하면 물리적이지만 물리적 폭 d1은 일반적으로 d에 대응하지 않는다. z0z1 사이에서, 렌더링된 라인 폭은 a의 거듭제곱(-1 이외의 값일 수 있음)에 따라 스케일링한다. p(z)가 우선적으로 연속적이어야만 하는 경우, d1a를 일의적으로 결정하는 데는 z0, z1, d0d2를 지정하는 것으로 충분하며, 이는 도 37에 분명하게 나타내어져 있다.
A1 도로와 관련하여 상기한 방법은 도로 지도 객체의 나머지 도로 요소에 적용될 수 있다. 이들 스케일링 기법을 A1, A2, A3, A4 및 A5 도로에 적용하는 예가 도 38의 로그-로그 그래프에 나타내어져 있다. 이 예에서, 모든 도로에 대해 z0 = 0.5 미터/픽셀이지만, 이는 상황에 따라 요소마다 다를 수 있다. A2 도로가 일반적으로 A1 도로보다 얼마간 더 작기 때문에, d0 = 12 미터이다. 게다가, A2 도로가, 예를 들어, 미국 주 레벨(state level)에서는 "중요"하고, 따라서 z1 = 312 미터/픽셀이며, 이는 대략적으로 단일의 주(state)에 대한 렌더링 해상도이다(선형 스케일에서 국가의 약 1/10임). 이 스케일에서, 한 픽셀의 라인 폭이 바람직하며, 따라서 d2 = 312 미터가 타당한 설정이라는 것을 알았다.
A1 및 A2 도로에 대해 상기한 일반적 방법을 사용하여, 도로 지도 객체의 나머지 요소들의 파라미터가 설정될 수 있다. A3 도로: d0 = 8 미터, z0 = 0.5 미터/픽셀, z1 = 50 미터/픽셀, 및 d2 = 100 미터. A4 도로: d0 = 5 미터, z0 = 0.5 미터/픽셀, z1 = 20 미터/픽셀, 및 d2 = 20 미터. A5 이면 도로: d0 = 2.5 미터, z0 = 0.5 미터/픽셀, 및 d2 = 20 미터. 유의할 점은, 이들 파라미터 설정을 사용하면, A5 이면 도로가 더더욱 줌아웃된 줌잉 레벨에서의 도로처럼 눈에 보이는 반면 줌인될 때 그의 물리적 스케일은 1/2 폭으로 된다는 것이다.
도 38의 로그-로그 플롯은 도로 유형에 대한 스케일링 거동을 요약한 것이다. 유의할 점은 모든 스케일에서 겉보기 폭(apparent width) A1>A2>A3>A4>=A5이라는 것이다. 또한, 유의할 점은, 이면 도로를 제외하고는, 거듭제곱 모두가 a = -0.41 근처에 나타난다는 것이다. 점선들 모두는 -1의 기울기를 가지며, 서로 다른 물리적 폭에서의 물리적 스케일링을 나타낸다. 상부에서 하부로, 이들 점선의 대응하는 물리적 폭은 1.65 킬로미터, 312 미터, 100 미터, 20 미터, 16 미터, 12 미터, 8 미터, 5 미터, 및 2.5 미터이다.
복수의 사전-렌더링된 이미지들 간의 보간이 사용될 때, 많은 경우에, 그 결과 얻어진 보간이 모든 라인 또는 다른 프리미티브 기하 요소를 물리적 및 비물리적 스케일링 방정식에 의해 구해진 그의 정확한 픽셀 폭으로 이상적으로 렌더링한 것과 인력으로(humanly) 분간할 수 없거나 거의 분간할 수 없도록 하는 것이 가능 하다. 본 발명의 이 대안적인 실시예를 이해하기 위해, 안티앨리어싱된 라인 드로잉(antialiased line drawing)에 대한 어떤 배경 지식이 이하에서 제공된다.
이상에서 상세히 설명된 도로 지도 예에 대해 계속하면서, 안티앨리어싱된 라인 드로잉에 대한 설명이 제공되며, 여기서 모든 프리미티브 요소는 라인이고 라인 폭은 앞서 설명한 스케일링 방정식을 따른다. 도 39의 (A)를 참조하면, 라인의 수평 위치가 정확히 픽셀 그리드에 맞춰 정렬되도록 백색 배경에 흑색으로 그려진 1 픽셀 폭의 수직 라인은 단순히 백색 배경 상의 1 픽셀 폭의 흑색 픽셀 열로 이루어져 있다. 본 발명의 여러가지 측면에 따르면, 라인 폭이 비정수개의 픽셀(a non-integral number of pixels)인 경우를 고려하여 대처하는 것이 바람직하다. 도 39의 (B)를 참조하면, 라인의 종단점이 고정된 채로 있지만 라인의 가중치가 1.5 픽셀 폭으로 증가되는 경우, 안티앨리어싱된 그래픽 디스플레이 상에서, 중앙 열의 좌측 및 우측의 픽셀 열들은 25% 회색으로 드로잉된다. 도 39의 (C)를 참조하면, 2 픽셀 폭에서, 이들 측면 열들은 50% 회색으로 드로잉된다. 도 39의 (D)를 참조하면, 3 픽셀 폭에서, 측면 열들은 100% 흑색으로 드로잉되고, 그 결과 예상한 대로 3개의 속이 채워진 흑색 열이 얻어진다.
픽셀화된 디스플레이 상에 비정수 폭의 라인을 드로잉하는 이 방법의 결과 라인 폭이 변할 때 시각적 연속성의 느낌(또는 착각)이 있게 되며, 라인의 폭이 픽셀의 수분의 1 정도만 다른 경우라도 서로 다른 폭의 라인이 명확하게 구별될 수 있다. 일반적으로, 안티엘리어싱된 라인 드로잉이라고 하는 이 방법은 드로잉된 라인의 수직선에 대한 세기 함수(intensity function)(또는 백색 배경에서의 흑색 라인에 대한 "1-세기" 함수)의 선적분(line integral)이 라인 폭과 같도록 설계되어 있다. 이 방법은 종단점이 정확히 픽셀의 중심에 있지 않는 라인으로, 수직이 아닌 다른 방향으로 있는 라인으로, 또한 곡선으로 용이하게 일반화된다.
유의할 점은 도 39의(A) 내지 도 39의(D)의 안티앨리어싱된 수직 라인을 드로잉하는 것이 2개의 이미지, 즉 라인이 1 픽셀 폭인 한 이미지(이미지 A) 및 라인이 3 픽셀 폭인 다른 이미지(이미지 B)를 알파-블렌딩(alpha-blending)하는 것으로도 달성될 수 있다는 것이다. 알파 블렌딩은 (1 - 알파) * (이미지 A 내의 대응하는 픽셀) + 알파 * (이미지 B 내의 대응하는 픽셀)을 디스플레이 상의 각각의 픽셀에 할당한다. 알파가 0과 1 사이에서 변하기 때문에, 렌더링된 라인의 유효 폭은 1개 픽셀과 3개 픽셀 사이에서 원만하게 변한다. 이 알파-블렌딩 방법은 단지 이미지 A 및 B 내의 2개의 렌더링된 라인 폭 간의 차이가 1 픽셀 이하인 가장 일반적인 경우에 양호한 시각적 결과를 생성할 뿐이며, 그렇지 않은 경우, 라인은 중간 폭에서 후광이 있는 것(haloed)처럼 보일 수 있다. 이 동일한 방법은 점, 폴리곤 및 많은 다른 프리미티브 그래픽 요소를 서로 다른 선형 크기로 렌더링하는 것에 적용될 수 있다.
다시 도 39의 (A) 내지 도 39의 (D)를 참조하면, 1.5 픽셀폭 라인(도 39의 (B)) 및 2 픽셀폭 라인(도 39의 (C))은 1 픽셀폭 라인(도 39의 (A))과 3 픽셀폭 라인(도 39의 (D)) 간에 알파-블렌딩함으로써 작성될 수 있다. 도 40의 (A) 내지 도 40의 (C)를 참조하면, 1 픽셀폭 라인(도 40의 (A)), 2 픽셀폭 라인(도 40의 (B)) 및 3 픽셀폭 라인(도 40의 (C))이 임의적인 방향으로 나타내어져 있다. 라인이 정 확하게 픽셀 그리드에 맞춰 정렬되어 있는 경우에 관하여 동일한 원리가 도 40의 (A) 내지 도 40의 (C)의 임의적인 방향에 적용되지만, 양호한 결과를 위해 알파-블렌딩을 할 라인폭의 간격이 2 픽셀보다 미세할 필요가 있을 수 있다.
이 지도 예와 관련하여, 도 37 및 도 38의 로그-로그 도표를 참조하여 서로 다른 해상도의 일련의 이미지가 사전-렌더링을 위해 선택될 수 있다. 예를 들어, 이제부터 도 41이 일련의 수평 라인 및 수직 라인을 포함하는 것을 제외하고는 도 37와 거의 유사한 도 41을 참조한다. 이 수평 라인은 1 픽셀씩 증분되는, 1 픽셀과 10 픽셀 사이의 라인 폭을 나타낸다. 수직 라인은 2개의 인접한 수직 라인 간의 구간에 걸쳐 라인 폭이 단지 2 픽셀만큼 변하도록 떨어져 있다. 따라서, 수직 라인은 사전-렌더링에 적합한 일련의 줌잉 값을 나타내며, 여기서 2개의 인접한 이러한 사전-렌더링된 이미지 간의 알파-블렌딩은 도로를 연속적으로 변하는 폭으로 나타내는 라인을 렌더링하는 것과 거의 동등한 특성을 생성한다.
약 9 미터/픽셀 이상으로 나타낸 스케일링 곡선을 사용하여 A1 고속도로를 정확하게 렌더링하는 데 도 41에 나타낸 수직 라인에 의해 표현된 6개의 해상도 간을 보간하는 것으로 충분하다. 약 9 미터/픽셀 미만의 렌더링은 사전-렌더링을 필요로 하지 않는데, 그 이유는 이러한 뷰는 아주 줌인되어 있고 따라서 도로를 거의 보여주지 않아 사전-렌더링된 이미지들 간을 보간하는 것보다 그 도로를 벡터적으로 렌더링하는 것이 계산상으로 더 효율적(데이터 저장 요건과 관련하여 더 효율적)으로 되기 때문이다. 약 1000 미터/픽셀 이상의 해상도에서는(이러한 뷰는 지구 표면의 많은 부분을 포함함), 최종의 사전-렌더링된 이미지만이 사용될 수 있는 데, 그 이유는 그것이 1 픽셀폭 라인을 사용하는 렌더링이기 때문이다. 하나의 픽셀보다 가는 라인은 동일한 픽셀을 보다 희미하게 렌더링한다. 따라서, A1 라인이 0.5 픽셀 폭인 이미지를 생성하기 위해, 1 픽셀폭 라인 이미지는 0.5의 알파와 곱해진다.
실제로, 얼마간 더 많은 일련의 해상도가 사전-렌더링되며, 따라서 해상도 간의 각각의 구간에 걸쳐, 도 38의 스케일링 곡선 중 어느 것도 2 픽셀 이상만큼 변하지 않는다. 허용된 변동을 1 픽셀로 감소시키면 그 결과 향상된 렌더링 품질이 얻어질 수 있다. 주목할 만한 것은, 이하의 동시 계류 중인 출원, 즉 2004년 3월 1일자로 출원된 발명의 명칭이 "줌잉 사용자 인터페이스에서의 정확한 렌더링 시스템 및 방법(SYSTEM AND METHOD FOR EXACT RENDERING IN A ZOOMING USER INTERFACE)"인 미국 특허 출원 제10/790,253호(대리인 문서 번호 489/2)(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에서 생각되고 설명된 타일링 기법이 본 발명과 관련하여 고려될 수 있다. 특정의 줌잉 레벨이 사전-렌더링된 이미지와 일치하지 않더라도 그 레벨에서 이미지를 분석하기 위해 타일링 기법이 이용될 수 있다. 약간 더 큰 해상도 세트에서의 각각의 이미지가 적절한 해상도로 사전-렌더링되어 타일링되는 경우, 그 결과는 임의적인 복잡도의 도로 지도를 줌잉 및 패닝 내비게이션하는 완벽한 시스템이며, 따라서 모든 라인은 본 명세서에 기술된 스케일링 방정식에 따라 폭이 연속적으로 변하는 것처럼 보인다.
본 발명의 구현과 관련하여 이용될 수 있는, 이미지를 블렌딩하는 기타 기법들에 관한 부가적인 상세는 2003년 6월 5일자로 출원된발명의 명칭이 "다중 해상도 비쥬얼 데이터를 효율적, 동적 및 연속적으로 디스플레이하는 시스템 및 방법(SYSTEM AND METHOD FOR THE EFICIENT, DYNAMIC AND CONTINUOUS DISPLAY OF MULTI RESOLUTIONAL VISUAL DATA)"인 미국 가특허 출원 제60/475,897호(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에서 찾아볼 수 있다. 본 발명의 구현과 관련하여 이용될 수 있는 블렌딩 기법에 관한 또다른 상세는 2003년 3월 12일자로 출원된 발명의 명칭이 "줌잉 사용자 인터페이스에서의 방사형의 매끄럽고 점진적인 렌더링 시스템 및 방법(SYSTEM AND METHOD FOR FOVEATED, SEAMLESS, PROGRESSIVE RENDERING IN A ZOOMING USER INTERFACE)"인 미국 가특허 출원 제60/453,897호(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에서 찾아볼 수 있다.
유익하게도, 본 발명의 상기 측면들을 이용하여, 사용자는 여러가지 줌잉 레벨의 원만하고 연속적인 내비게이션의 모습을 볼 수 있다. 게다가, 한 레벨에서 다른 레벨로 줌잉할 때 갑자기 나타나거나 사라지는 디테일이 거의 없거나 전혀 없다. 이것은 최신 기술보다 상당한 진전에 해당한다.
본 발명의 여러가지 측면이, 인터넷을 통한 대화형 소프트웨어 애플리케이션, 자동차-기반 소프트웨어 애플리케이션, 기타 등등의 수많은 제품에서 적용될 수 있는 것이 생각되고 있다. 예를 들어, 본 발명은 사용자 요청에 응답하여 클라이언트 단말기에 지도 및 주행 방향을 제공하는 인터넷 웹사이트에 의해 이용될 수 있다. 다른 대안으로서, 본 발명의 여러가지 측면들은 자동차에 있는 GPS 내비게이션 시스템에서 이용될 수 있다. 본 발명은 또한 의료 영상 장비(medical imaging equipment)에 포함될 수 있으며, 그에 의해, 이상에서 기술한 바와 같이, 예를 들어, 환자의 순환계(circulatory system), 신경계(nervous system), 기타 등등에 관한 상세 정보가 렌더링되어 내비게이션될 수 있다. 본 발명의 응용은 그 전체를 열거할 수 없을 정도로 너무 많지만, 당업자라면 이들이 본 명세서에서 생각되고 있으며 청구된 본 발명의 범위 내에 속한다는 것을 잘 알 것이다.
본 발명은 또한 렌더링된 이미지가 상업을 광고 및 다른 방식으로 선전하는 수단을 제공하는 다른 응용들과 관련하여 활용될 수 있다. 본 발명의 이들 측면 및 용도에 관한 부가적인 상세는 본 출원과 동일자로 출원된 발명의 명칭이 "상업을 선전하기 위해 매핑 기술을 이용하는 방법 및 장치(METHODS AND APPARATUS FOR EMPLOYING MAPPING TECHNIQUES TO ADVANCE COMMERCE)"인 미국 가특허출원 제60/553,803호(대리인 문서 번호 489/7)에서 찾아볼 수 있으며, 이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다.
본 발명이 본 명세서에서 특정의 실시예를 참조하여 기술되어 있지만, 이들 실시예가 본 발명의 원리 및 응용을 예시하는 것에 불과하다는 것을 잘 알 것이다. 따라서, 예시적인 실시예에 수많은 수정이 행해질 수 있으며 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위를 벗어나지 않고 다른 구성들이 안출될 수 있다는 것을 잘 알 것이다.
<발명의 명칭>
효율적인 데이터 캐쉬{EFFICIENT DATA CACHE}
<배경 기술>
"MRU 캐싱(cashing)"(여기서, MRU는 "most recently used(가장 최근에 사용된)"를 말함)은 클라이언트-서버 시스템에서 클라이언트측 메모리를 구현하기 위한 공지된 개념이다. 서버가 클라이언트에 액세스하여 많은 수의 데이터 객체(전체로서 많은 양의 메모리를 차지할 수 있음)를 클라이언트에 제공할 수 있는 것으로 가정된다. 그렇지만, 클라이언트와 서버 간의 가용 대역폭이 제한되어 있으며, 따라서 서버에 데이터 객체를 전송하라는 클라이언트 요청은 시간이 걸린다. 데이터 객체에 대한 액세스가 적절히 "코히런트(coherent)"한 경우(이는 클라이언트가 최근에 필요로 했던 객체가 가까운 장래에 다시 필요하게 될 가능성이 있음을 의미함), MRU 캐싱은 클라이언트-서버 시스템의 효율성을 향상시킬 수 있다. 이 방법을 이용하면, 클라이언트는 일반적으로 어떤 제한된 양의 메모리(일반적으로 서버 상의 객체 전부를 저장하는 데 필요하게 되는 것보다 훨씬 더 적음)를 따로 챙겨 놓고, 가장 최근에 요청된 객체들 중 적절한 만큼을 이 메모리(캐쉬)에 저장한다. 새로운 객체가 서버로부터 클라이언트로 전송되고 클라이언트의 캐쉬 공간이 바닥난 경우, 새로운 객체가 저장될 수 있는 데이터 저장 공간을 생성하기 위해 LRU(least recently used, 최근에 가장 적게 사용된) 객체가 캐쉬로부터 소거된다.
일반적으로, 클라이언트가 데이터 객체를 필요로 할 때, 먼저 그 객체가 캐 싱되어 있는지를 알아보기 위해 캐쉬가 검사된다. 그 객체가 캐싱되어 있는 경우, 캐싱된 표현(cached representation)이 사용되어, 느리거나 계산 비용이 높은(computationally expensive) 서버 요청을 필요없게 한다. 보통, 캐싱된 표현을 사용하는 것은 또한 그 객체를 캐쉬의 MRU 종단(MRU end)으로 "승격(promote)"시킨다. 이 방법은 일반적으로 액세스되는 모든 데이터 객체를 위해 서버에 데이터를 요청해야만 하는 것보다 상당한 성능 이점을 제공한다.
새로운 객체가 컴퓨팅 시스템에 의해 액세스되어 캐쉬에 저장될 때 캐쉬로부터 LRU(least recently used) 객체를 소거하는 것은 캐쉬 사용의 비효율성을 야기할 수 있다. 심지어 소거된, 캐쉬 내의 LRU 객체가 또다시 서버에 의해 요청될 수 있다. 이러한 일이 일어날 때, 서버는 메인 메모리 또는 대용량 저장 장치 등의 더 멀리 떨어진 데이터 저장 소스로부터 이 객체를 검색하는 비교적 느리거나 계산 비용이 높은 작업에 착수할 수 있다. 유한한 크기의 캐쉬 메모리가 주어진 경우, 객체 소거는 얼마간 빈번하게 일어날 수 있으며, 그에 의해 서버 또는 기타 컴퓨팅 시스템으로 하여금 캐쉬 메모리에 한때 편리하게도 저장되어 있던 데이터를 가져오기 위해 더 멀리 떨어진 메모리에 액세스하는 데 상당한 자원을 낭비하게 한다. 따라서, 보다 효율적이고 유연한 캐쉬 메모리 관리 방법이 업계에 필요하다.
<발명의 상세한 설명>
한 측면에 따르면, 본 발명은 컴퓨팅 시스템 내에 일군의 초기 캐쉬 객체들(an initial group of cache objects)을 갖는 캐쉬를 제공하는 단계 - 각각의 캐쉬 객체는 초기 압축비(initial compression ratio)를 가지며 저장된 데이터를 포 함함 -, 상기 캐쉬 객체들 중 주어진 캐쉬 객체 이외의 상기 캐쉬 객체들 중 적어도 하나의 캐쉬 객체가 차지하는 데이터 저장 공간의 양을 감소시키는 단계, 및 상기 주어진 캐쉬 객체가 차지하는 데이터 저장 공간의 양을 증가시키는 단계를 포함하는 방법을 제공할 수 있다. 양호하게는, 상기 감소시키는 단계는 상기 데이터 저장 공간의 양을 주어진 양만큼 감소시키는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 데이터가 차지하는 상기 데이터 저장 공간의 양을 상기 주어진 양만큼 증가시키는 단계를 포함한다. 양호하게는, 상기 감소시키는 단계는 상기 적어도 하나의 캐쉬 객체의 상기 초기 압축비를 증가시키는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 객체의 상기 초기 압축비를 감소시키는 단계를 포함한다. 양호하게는, 상기 주어진 캐쉬 객체는 상기 캐쉬 객체들 중 MRU 캐쉬 객체이다. 양호하게는, 상기 감소시키는 단계를 통과하는 상기 적어도 하나의 캐쉬 객체는 상기 캐쉬 객체들 중 LRU 캐쉬 객체를 포함한다.
양호하게는, 상기 감소시키는 단계는 상기 적어도 하나의 캐쉬 객체에 대한 상기 저장된 데이터의 일부분을 제거하는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 객체에 대한 상기 저장된 데이터를 보충(supplement)하는 단계를 포함한다. 양호하게는, 상기 캐쉬 객체들 각각에 이용가능한 데이터 저장 공간의 양은 유한한 수의 이산 값들 중 하나와 같을 수 있다. 양호하게는, 상기 감소시키는 단계는 상기 주어진 캐쉬 객체 이외의, 상기 캐쉬 객체들 중 적어도 하나의 랜덤하게 선택된 캐쉬 객체에 대한 데이터 저장 공간의 양 을 축소시키는 단계를 포함한다. 양호하게는, 상기 축소시키는 단계는 상기 적어도 하나의 랜덤하게 선택된 캐쉬 객체에 대한 상기 데이터 저장 공간의 양을 랜덤하게 결정된 정도(extent)로 축소시키는 단계를 포함한다. 양호하게는, 랜덤하게 선택된 캐쉬 객체는 랜덤 방법(random method) 및 의사랜덤 방법(pseudorandom method) 중 하나를 사용하여 선택된다. 양호하게는, 상기 랜덤하게 선택된 캐쉬 객체의 상기 선택은 발견적 학습법에 의해 안내된다.
양호하게는, 본 방법은 상기 증가하는 단계 이후에 상기 주어진 캐쉬 객체를 무손실 압축된 형태로(in a losslessly compressed form) 저장하는 단계를 더 포함한다. 양호하게는, 본 방법은 상기 증가시키는 단계 이후에 상기 주어진 캐쉬 객체를 무압축된 형태로(in uncompressed form) 저장하는 단계를 더 포함한다. 양호하게는, 상기 감소시키는 단계는 상기 주어진 캐쉬 객체 이외의 상기 캐쉬 객체들 중 적어도 하나를 제거하는 단계를 포함한다.
다른 측면에 따르면, 본 발명은 메인 메모리와 통신 동작을 할 수 있는 적어도 하나의 프로세서를 갖는 컴퓨팅 시스템, 및 일군의 초기 캐쉬 객체들을 갖는, 상기 컴퓨팅 시스템 내의 캐쉬를 포함하는 장치 - 각각의 캐쉬 객체는 초기 압축비를 가지며 저장된 데이터를 포함함 - 를 제공할 수 있으며, 여기서 상기 컴퓨팅 시스템은 상기 캐쉬 객체들 중 주어진 캐쉬 객체 이외의 상기 캐쉬 객체들 중 적어도 하나의 캐쉬 객체가 차지하는 데이터 저장 공간의 양을 감소시키고 또 상기 주어진 캐쉬 객체가 차지하는 데이터 저장 공간의 양을 증가시키는 동작을 한다. 양호하게는, 상기 감소시키는 단계는 상기 데이터 저장 공간의 양을 주어진 양만큼 감소 시키는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 객체가 차지하는 상기 데이터 저장 공간의 양을 상기 주어진 양만큼 증가시키는 단계를 포함한다. 양호하게는, 상기 감소시키는 단계는 상기 적어도 하나의 캐쉬 객체의 상기 초기 압축비를 증가시키는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 객체의 상기 초기 압축비를 감소시키는 단계를 포함한다.
양호하게는, 상기 주어진 캐쉬 객체는 상기 캐쉬 객체들 중 MRU 캐쉬 객체이다. 양호하게는, 상기 감소시키는 단계는 상기 적어도 하나의 캐쉬 객체에 대한 상기 저장된 데이터의 일부분을 제거하는 단계를 포함한다. 양호하게는, 상기 증가시키는 단계는 상기 주어진 캐쉬 객체에 대한 상기 저장된 데이터를 보충하는 단계를 포함한다. 양호하게는, 상기 캐쉬 객체들 각각에 이용가능한 데이터 저장 공간의 양은 유한한 수의 이산 값들 중 하나와 같을 수 있다. 양호하게는, 상기 감소시키는 단계는 상기 주어진 캐쉬 객체 이외의, 상기 캐쉬 객체들 중 적어도 하나의 랜덤하게 선택된 캐쉬 객체에 대한 상기 데이터 저장 공간의 양을 축소시키는 단계를 포함한다. 양호하게는, 상기 축소시키는 단계는 상기 적어도 하나의 랜덤하게 선택된 캐쉬 객체에 대한 상기 저장 데이터 공간의 양을 랜덤하게 결정된 정도로 축소시키는 단계를 포함한다.
다른 측면에 따르면, 본 발명은 컴퓨팅 시스템 내에 캐쉬를 제공하는 단계 - 상기 캐쉬는 초기 조건을 가짐 -, 상기 초기 조건 하에서 상기 캐쉬에 적어도 하나의 새로운 객체를 저장하기에 불충분한 데이터 저장 공간이 상기 캐쉬에 존재하는 경우, 상기 적어도 하나의 새로운 객체에 대한 데이터 저장 공간을 클리어(clear)시키기 위해 상기 캐쉬 내의 적어도 하나의 객체를 압축시키는 단계, 및 상기 적어도 하나의 새로운 객체를 상기 캐쉬에 저장하는 단계를 포함하는 방법을 제공한다. 양호하게는, 상기 초기 조건은 상기 캐쉬가 비어 있는 것에 대응한다. 양호하게는, 본 방법은 상기 캐쉬에 임의의 추가적인 새로운 객체를 저장하는 데 불충분한 데이터 저장 공간이 남을 때까지 상기 캐쉬에 저장된 상기 객체들을 압축하지 않고서 새로운 객체들을 상기 캐쉬에 계속하여 저장하는 단계를 더 포함한다. 양호하게는, 본 방법은, 상기 초기 조건 하에서 상기 캐쉬에 상기 적어도 하나의 새로운 객체를 저장하는 데 충분한 공간이 존재하는 경우, 상기의 압축을 하지 않고서 상기 캐쉬에 상기 적어도 하나의 새로운 객체를 저장하는 단계를 더 포함한다.
첨부 도면과 관련하여 본 명세서에서 본 발명의 양호한 실시예에 대해 설명하면, 기타의 측면, 특징, 이점 등이 당업자에게는 명백하게 될 것이다.
<도면의 간단한 설명>
도 42는 본 발명의 하나 이상의 실시예들에 따른, 캐쉬 내의 개개의 캐쉬 객체의 데이터 저장 크기를 캐쉬 내에서의 캐쉬 객체의 사용 최근성(recency of use)의 함수로서 나타낸 그래프.
도 43은 본 발명의 하나 이상의 실시예에 따른, 캐쉬 내의 캐쉬 객체가 차지하는 데이터 저장 공간의 누적합을 합산된 캐쉬 객체의 수 "N"와 대비하여 나타낸 그래프.
도 44는 본 발명의 하나 이상의 실시예에 따른, 복수의 캐쉬 객체를 포함하 는 데이터 캐쉬의 블록도.
도 45는 본 발명의 하나 이상의 실시예에 따른, 캐쉬 객체가 크기 조정된 도44의 데이터 캐쉬의 블록도.
도 46은 본 발명의 하나 이상의 실시예에 따른, 액세스된 캐쉬 객체가 크기 조정되어 캐쉬로 반환(restore)된 도 45의 데이터 캐쉬의 블록도.
도 47은 본 발명의 하나 이상의 실시예에 따른, 데이터 캐쉬 내의 캐쉬 객체에 액세스하여 데이터 캐쉬를 갱신하는 방법의 흐름도.
도 48은 본 발명의 하나 이상의 실시예에서 사용하기에 적합한 컴퓨팅 시스템의 블록도.
<실시예>
본 발명의 여러가지 측면들을 설명하기 위해, 도면에 현재 양호한 형태들이 도시되어 있지만, 본 발명이 도시된 정확한 구성 및 수단에 한정되지 않는다는 것을 잘 알 것이다.
본 설명에서 캐쉬의 LRU 및 MRU 종단에 대해 언급한다. 객체들은 일반적으로 MRU 종단에 추가되며, 일반적으로 LRU 종단으로부터 소거된다. 그렇지만, 본 발명은 이러한 방식에 한정되지 않는다. 유의할 점은 캐쉬에서의 캐쉬 객체의 물리적 레이아웃이 LRU-MRU 레이아웃에 대응할 필요가 없다는 것이다. 이 캐쉬 레이아웃은 단지 양호하게는 컴퓨팅 시스템이 본 명세서에 기술된 방식으로 객체를 탐색, 삽입 및/또는 소거할 수 있게 해준다. 선형 LRU-MRU 구성은 캐쉬의 동작을 기술하는 편리한 메카니즘이지만, 캐쉬 메모리의 많은 가능한 구현 중 하나를 나타낸 다. 본 명세서에서, 용어 "캐쉬" 및 "캐쉬 메모리"는 상호 교환가능하게 사용된다.
유의할 점은 본 명세서에 기술된 MRU 캐싱 및 그의 확장이 클라이언트/서버 아키텍처와 관련하여 기술되어 있지만, 유사한 원리가 단일의 컴퓨터 상에서의 효율적인 하드 디스크 액세스(여기서 하드 디스크에의 액세스는 RAM에의 액세스보다 느리며 따라서 RAM이 하드 디스크 상의 MRU(가장 최근에 사용된) 컨텐츠를 캐싱하는 데 사용됨) 등의 많은 다른 시나리오에 적용된다는 것이다. 하나 이상의 다른 실시예에서, 데이터가 디스크로부터 로드되거나 네트워크를 통해 전송되는 것이 아니라 환경으로부터 수집되거나 계산적으로 발생된다. 각각의 경우에, 클라이언트는 작지만 빠른 임시 캐쉬 메모리, 및 크지만 느린 데이터 소스에 액세스하며, 이 데이터 소스에 정보를 반복적으로 요청한다. 이 느린 데이터 소스는 일반적으로 본 명세서에서 "서버"라고 한다.
수렴 수열(convergent series)에 대한 이하의 설명은 본 명세서에 기술된 캐쉬 메모리 장치 및 방법의 서론으로서 제공된다.
수열 y(n)=n^-p(단, n은 1부터 무한대까지이고, p>1임)의 무한합(infinite sum)은 유한이다. 이와 유사하게, b>1인 경우 y=1/b^n의 합은 유한이다. 예를 들어, 후자의 경우에, b=2인 경우, 합은 정확히 2이다. 이러한 수렴 수열의 기초를 이루는 원리는 본 명세서에 기술된 효율적인 데이터 캐싱 방법 및 장치의 하나 이상의 실시예를 구현하는 데 사용될 수 있다.
본 명세서에 기술된 방법 및 장치의 하나 이상의 실시예는 이하에서 기술되 는 "제논 역설(Zeno paradox)"에 관련된 개념을 이용할 수 있다. 이 설명이 본 명세서에 기술된 하나 이상의 실시예에 적용가능한 개념적인 토대(conceptual underpinning)를 제공하지만, 본 발명은 이하에 기술되는 개념적 측면에 의해 제한되지 않는다.
제논 캐싱 개념(Zeno Cashing Concept)
제논은 한 걸음에(설명의 목적상, 매초마다 한걸음씩 나아가는 것으로 가정함) 현 위치에서 경주 트랙의 끝까지의 거리의 절반을 주파(cover)할 정도로 아주 빨리 달리는 사람(runner)이다. 이 역설은 그가 매 걸음마다 앞으로 이동하지만 그가 결코 그 코스를 끝마치지 못한다는 것이다. 이 역설은 b=2인 상기 1/b^n 수열 및 n=2부터 무한대까지 합산하는 것과 쉽게 연관된다. 이 개념은 사용 또는 액세스의 최근성(recency)이 감소됨에 따라 캐쉬 객체가 점차적으로 더 큰 정도까지 압축될 수 있게 해줌으로써 캐쉬 객체의 저장(캐쉬 자체는 "경주 트랙"와 유사함)으로 확장될 수 있다. 따라서, 캐쉬의 MRU 종단으로부터 캐쉬의 LRU 종단으로 나아감에 있어서, 공간이 결코 바닥나지 않으면서 이론상 무한한 수의 계속 크기가 감소하는 부가적인 캐쉬 객체가 제자리에 배치될 수 있다. 이 원리를 본 명세서에서 제논 캐쉬 개념(Zeno cache concept)이라고 한다.
양호하게는, 본 명세서에서의 관련 캐쉬 객체는 압축가능하며, 이는 본 설명에서 손실 데이터 압축 기법을 따르는 것에 대응한다. 손실 데이터 압축(lossy data compression)은 데이터 객체의 완전한 표현(full representation)보다 더 적은 바이트로 데이터 객체를 표현할 수 있는 것에 특징이 있을 수 있다. 높은 압축 비는 일반적으로 데이터 객체의 높은 왜곡 및 압축된 데이터를 사용하여 렌더링된 이미지의 품질 저하를 가져온다(여기서 객체는 하나 이상의 이미지 파일을 포함함). 제한 없이, 손실 압축 기법은 또한 소리, 비디오, 및 많은 다른 데이터 유형에도 적용가능할 수 있다.
하나 이상의 실시예들에서, 데이터의 압축된 버전은 미압축된 데이터(uncompressed data)의 대체물로서 적합할 수 있다. 주어진 왜곡 레벨 이하에서, 데이터의 압축된 표현은 충분히 적당할 수 있으며, 주어진 왜곡 레벨 이상에서, 압축된 표현은 클라이언트가 고품질 버전의 데이터를 기다리는 동안 임시 대책(temporary measure)으로서 적절할 수 있다. 고품질 버전은 단지 임시적으로 사용되는 버전보다 덜 압축될 수 있거나 무손실 압축 또는 미압축될 수 있다.
하나 이상의 실시예들에서, 저품질 표현은 고품질 표현의 서브셋일 수 있으며, 이는 클라이언트측에서 표현 품질을 향상시키는 것이 저품질 표현을 보충하기 위해 데이터를 전송하고 그에 의해 고품질 표현을 제공하는 것을 수반할 수 있다는 것을 의미한다. 양호하게는, 이 방법에서, 고품질 표현과 연관된 완전히 새로운 일련의 데이터를 전송하는 부담을 질 필요가 없다. 이 방법은 양호하게는 중복성을 회피하고 따라서 양호하게는 효율성을 상당히 증가시킨다.
상기한 방법과 일관되게, 객체의 표현 품질을 떨어뜨리는 역프로세스(reverse process)는, 고품질 표현에 사용되는 데이터의 압축 또는 재압축을 필요로 하기 보다는, 단지 이미지의 고품질 표현에 이용되는 데이터의 일부분을 단지 제거하는 것을 수반할 수 있다. 이 특성은 양호하게는 본 명세서에 기술된 캐싱 장치 및 방법의 효율성도 향상시킨다.
하나 이상의 실시예에서, 이 압축 기법은 손실부터 무손실까지 있는 압축 레벨을 객체에 제공할 수 있다. 이 특징은, 처음에 무손실 버전을 전송하는 것에 비해 총 부가 비용이 거의 없거나 전혀 없이, 데이터 객체의 무손실 표현이 단계적으로(in steps), 고도 손실(highly lossy)부터 무손실(lossless)까지 작성될 수 있게 해준다. 상기 특징들을 가능하게 해주는 데이터 유형 및 압축 기법의 예는 이미지의 웨이블렛 압축(wavelet compression)이며, JPEG2000 표준이 그 좋은 예이다. 그렇지만, 본 발명은 JPEG2000 표준의 사용에 제한되지 않는다.
상기 특성들이 주어지면, 메모리가 "연속적"인 경우(바이트로 이산화(discretize)되지 않음), 단지 객체의 압축된 크기가 본 명세서에서 앞서 논의된 수렴 수열의 규칙을 따라야만 한다는 제약 조건을 시행하는 것만으로, 무한한 수의 데이터 객체를 유한한 양의 메모리에 캐싱하는 것이 이론상 가능하게 된다. 상기한 이론에 따라 기능할 수 있는 캐쉬의 동작은 도 42 및 도 43와 관련하여 이하에서 기술한다.
도 42의 그래프에서, 변수 "N"은 양호하게는 각각의 캐쉬 객체의 번호에 대응하며, 각각의 캐쉬 객체의 번호의 값은 각각의 이러한 캐쉬 객체의 사용의 최근성을 나타내고, N의 값이 증가하는 것은 그 번호와 연관된 캐쉬 객체의 사용의 최근성이 감소하는 것에 대응한다. 변수 "Y"는 양호하게는 각각의 캐쉬 객체의 크기에 대응한다. "Y" 변수에 있어서, "1"의 값은 캐쉬 객체의 최고 품질 조건(즉, 전혀 압축되지 않았을 때)에서의 캐쉬 객체의 크기에 대응할 수 있다. MRU(most- recently-used) 객체는 낮은 왜곡으로 표현될 수 있고, 최근에 덜 사용된(less recently used) 객체는 그의 마지막 사용의 최근성과 부합하는 정도로 압축될 수 있다. 도 42에서 압축된 캐쉬 객체 크기의 값 Y가 관련 캐쉬 객체의 사용의 최근성의 감소에 따라 감소함을 알 수 있다. 유의할 점은 "Y" 변수가 캐쉬 내의 각각의 객체(압축되었는지 여부와 상관없음)의 절대 크기(absolute size)(임의의 단위로 표현됨)에 대응할 수 있다는 것이다. 다른 대안으로서, 하나 이상의 다른 실시예들에서, "Y"는 압축비에 대응할 수 있으며, 예를 들어 값 "1"은 전체-크기 객체에 대응하고, 값 "0.5"는 그의 미압축된 크기의 1/2을 차지하는 객체에 대응한다.
도 43을 참조하면, N의 각각의 값에 대해, 1부터 N까지 번호가 매겨진 객체의 크기 Y의 누적합은, 도 43에 나타낸 바와 같이, 여전히 유한한 수일 수 있다. 변수 "Y"의 단위는 하나의 대표적인 완전히 신장된(압축 해제된) 캐쉬 객체의 크기에 대응하는 데이터 저장 공간(또는 그 캐쉬 객체가 필요로 하는 데이터 저장 공간)의 단위일 수 있다. 도 42 및 도 43이 본 발명의 하나 이상의 실시예의 이론을 이해하는 데 도움을 주기 때문에, 데이터의 비트 및/또는 바이트로 캐쉬 객체의 크기를 기술하는 정보가 본 명세서에 제공되지 않는다.
하나 이상의 실시예들에서, 상기한 이론적 구현은 양호하게는 2가지 이유로 수정된다. 첫째, 실제로, 메모리 저장 장치는 양호하게는 개별 저장 장치로 이루어져 있다. 따라서, 예를 들어, 1 비트보다 더 작은 양의 저장 공간을 차지하도록 캐쉬 객체를 압축하는 것이 실제로는 보통 의미가 없다. 둘째, 캐쉬에 대해 수행되는 동작의 총수가 양호하게는 유한하다. 이와 반대로, 상기 수렴식들 중 하나로 기술되는 연속 곡선의 압축비를 실시하는 것은 부가적인 캐쉬 저장 공간이 필요하게 될 때마다 캐쉬 내의 모든 캐쉬 객체의 크기를 축소시키는 것을 수반할 수 있다. 이것은 실행불가능할 정도로 많은 수의 동작을 필요로 한다.
하나 이상의 실시예들에서, 캐쉬 내의 객체의 수는 실제로 유한하다. 그렇지만, 제논 캐쉬 개념이 이용되는 경우, 이 수는 종래의 MRU 캐싱에서 가능한 것보다 훨씬 더 클 수 있다. 게다가, 캐싱된 객체는, 최근에 사용된 경우, 높은 품질 레벨에(저 레벨의 왜곡 또는 압축 손실(compression lossyness)과 무손실 압축(lossless compression) 사이의, 미압축된 데이터 사이의 아무데나) 저장될 수 있다는 특성을 가질 수 있다. 캐쉬 객체의 품질 레벨은 이들 캐쉬 객체가 액세스되지 않는 각각의 연속적인 캐쉬 메모리 액세스로 점진적으로 더 나빠질 수 있다(즉, 점진적으로 더 높은 레벨의 왜곡 또는 압축 손실을 겪게 될 수 있다).
컴퓨터 메모리가 개별적이고 캐쉬 객체의 최소 압축된 크기(이 이하에서는 캐쉬 객체가 사용자에 대한 값을 가질 수 없음)가 있을 수 있기 때문에, 캐싱된 표현은 이 최소 압축된 크기를 가져오는 최대 압축비를 겪을 수 있다. 따라서, 하나 이상의 실시예들에서, 캐쉬에 저장될 수 있는 캐쉬 객체의 최대 수는, 객체들이 모두 동일한 크기를 갖는 경우, 캐쉬 내의 총 데이터 저장 공간을 상기한 최소 압축된 크기를 갖는 캐쉬 객체가 차지하는 데이터 저장 공간의 양으로 나눈 것과 같을 수 있다. 그렇지만, 캐쉬 객체 모두가 동일한 크기를 가질 필요가 없다.
상기한 방정식 중 하나(또는 임의의 다른 수렴 합)에 의해 제한되고 따라서 유한한 합을 갖는 수열을 설계하는 많은 방법이 있다. 구체적으로는 이용되는 Y의 서로 다른 값의 수가 타당한 수로 제한될 수 있도록 N의 높은 값에서 임의의 주어진 값이 수열의 연속적인 값에서 반복될 가능성이 증가한다는 부가적인 제약 조건도 역시 도입될 수 있다.
이러한 수열의 일례는 1, 1/4, 1/4, 1/16, 1/16, 1/16, 1/16, 1/64, 1/64, 1/64, 1/64, 1/64, 1/64, 1/64, 1/64, 1/256,...이다.
명백하게도, 수열 1, 2/4, 4/16, 8/64,...의 합은, 바로 본 명세서에서 앞서 기술한 y=1/2^n에서와 같이, 2이다. 그렇지만, 이 수열을 n=16000까지 가져가면, 단지 약 log2(16000), 즉 약 14개의 y(객체 데이터 저장 공간 크기)의 값이 사용될 수 있다.
하나 이상의 실시예들에서, 상기한 log 함수는 Y(캐쉬 객체의 가능한 크기)의 이용가능한 값의 수가 N의 값보다 훨씬 더 느리게 증가하게 하는 한 방법을 제공한다. 그렇지만, 본 발명은 이 log 함수의 사용에 한정되지 않으며, Y의 값의 수가 N의 값보다 더 느리게 증가하게 하는 다른 수학적 연산이 본 발명과 관련하여 이용될 수 있다.
하나 이상의 실시예들에서, N = 1,000,000인 경우, 겨우 20개의 Y 값이 사용될 수 있다(상기한 로그-기반 식을 사용하여 구해짐). 이것은, 캐쉬 객체의 대부분이 양호하게는 변경될 필요가 없는 데이터 저장 공간의 양을 차지하기 때문에, 캐쉬에서 공간이 해제(free)될 때, 캐쉬 객체들 간에 데이터 저장 공간을 적당히 할당하는 데 단지 적은 수의 동작이 필요할 수 있음을 암시한다.
다른 수학적 수열도 역시 캐쉬 메모리 관리 시스템 및 방법에서 사용하기 위한 원하는 기준을 만족시킬 수 있다. 그에 부가하여, 이론적으로 수렴하지 않는(즉, 합이 무한인) 수열을 사용하는 것도 가능한데, 그 이유는 어쨋든 실제로는 유한한 수의 항이 합산되기 때문이다.
하나 이상의 실시예들에서, 기본적인 알고리즘을 다수의 방식으로 개량하기 위해 랜덤 알고리즘(random algorithm)이 사용될 수 있다. 하나 이상의 실시예들에서, 상기한 2*1/4, 4*1/16,... 수열은 단지 적은 수의 이용가능한 캐쉬 객체 크기를 포함할 수 있으며, 아마도 캐쉬 내의 서로 다른 객체들 간의 압축비의 현저한 차이를 가져올 수 있다. 어떤 목표량의 공간이 새로운 캐쉬 객체에 이용가능하게 될 때까지 가중 방식으로 캐쉬 객체의 랜덤하게 선택된 서브셋을 "감축(squeeze)"(그에 의해 사용되는 데이터 저장 공간을 축소)시키는 데 랜덤한 선택이 사용될 수 있다. 이 방법은 유익한 결과를 제공할 수 있는데, 그 이유는 캐쉬 객체의 캐쉬 내에서의 정확한 위치가 캐쉬 내에서의 객체의 수가 증가함에 따라 중요성이 감소할 수 있기 때문이다. 각각의 객체가 "감소"되는 양도 역시 적어도 부분적으로 랜덤화될 수 있다. 본 명세서에 기술된 것과 같은 랜덤화 알고리즘을 사용하면 캐쉬에 저장된 캐쉬 객체를 사용하여 렌더링된 이미지에서 인지될 수 있는 캐쉬-객체 품질에서의 명백한 불연속성 또는 임계값을 축소시킬 수 있다.
이하에서, 본 발명의 하나 이상의 측면에 따른, 데이터 캐쉬에서 캐쉬 객체를 관리하는 예시적인 예가 제공된다.
도 44는 본 발명의 하나 이상의 실시예들에 따른, 복수의 캐쉬 객체(302- 310)를 포함하는 데이터 캐쉬(300)의 블록도이다. 도 45는 본 발명의 하나 이상의 실시예들에 따른, 캐쉬 객체(302, 304, 308, 310)가 크기 조정되어 있는 도 44의 데이터 캐쉬(300)의 블록도이다. 도 46은 본 발명의 하나 이상의 실시예들에 따른, 액세스된 캐쉬 객체(306)가 크기 조정되어 캐쉬(300)에 반환되어 있는 도 45의 데이터 캐쉬의 블록도이다.
도 44에 나타낸 것을 비롯한 하나 이상의 실시예들에서, 캐쉬(300)는 5개의 캐쉬 객체(간략함을 위해 도 44 내지 도 47에서 "CO"로 약칭함) C0 1(302), CO 2(304), CO 3(306), CO 4(308) 및 CO 5(310)를 포함할 수 있다. 도 44에 도시된 캐쉬 객체의 수(5)는 본 명세서에 기술된 여러가지 개념을 설명하는 데 편의상 선택된 것이다. 그렇지만, 캐쉬(300) 내에 5개보다 더 적은 또는 더 많은 캐쉬 객체가 포함될 수 있다. 원칙적으로 캐쉬(300) 내에 포함될 수 있는 캐쉬 객체의 수에 대한 하한(lower limit)은 없다. 원칙적으로, 캐쉬(300) 내에 포함될 수 있는 캐쉬 객체의 수의 상한(upper limit)은 캐쉬의 총 크기를 가능한 가장 작은 타당한 캐쉬 객체 크기로 나눈 것에 대응할 수 있으며, 이에 대해서는 본 명세서의 다른 곳에서 설명한다.
도 44 내지 도 46에서, 본 명세서에 기술되는 여러가지 개념들을 설명하기 위해, 각각의 도시된 캐쉬 객체의 폭은 그 캐쉬 객체에 의해 사용되는 데이터 저장 공간에 비례하는 것으로 한다. 또한, 도 44 내지 도 46에서, 최좌측 캐쉬 객체로부터 최우측 캐쉬 객체로 진행하는 것은 디스플레이된 캐쉬 객체의 액세스 최근성(recency of access)을 증가시키는 것에 대응하며, 캐쉬 객체의 LRU(least recently used)는 좌측 맨끝(extreme left)에 나타내어져 있고, 캐쉬 객체의 MRU(most recently used)는 우측 맨끝(extreme right)에 나타내어져 있다.
도 45는 캐쉬(300)를 이용하는, 컴퓨팅 시스템(700) 등의 컴퓨팅 시스템에 의해 CO 3(306)가 액세스된 이후의 캐쉬(300)를 나타낸 것이다. 이 예에서, CO 3(306)는 캐쉬(300) 내에서 그의 원래의 위치에 나타내어져 있지 않은데, 그 이유는 이 위치가 도 45에 도시된 캐쉬(300)의 조건에서 덮어쓰기(overwrite)되었기 때문이다. 게다가, 캐쉬(300) 내에서 도 44의 CO 3의 원래의 버전이 차지했던 것보다 더 많은 데이터 저장 공간을 차지할 수 있는 CO 3(306)의 신장된 버전을 위한 자리를 만들기 위해 빈 공간(free space)(402)이 생성되었다. 도 46에서, CO(306)의 신장된 버전은 도 45에 도시된 캐쉬(300) 조건에서 빈 공간(402)이 차지하고 있었던 캐쉬(300)의 일부분에 기입되어 있다.
도 47은 본 발명의 하나 이상의 실시예들에 따른, 데이터 캐쉬(300) 내의 캐쉬 객체에 액세스하여 데이터 캐쉬(300)를 갱신하는 방법(600)의 흐름도이다. 이하에서 도 44 내지 도 47을 참조한다.
단계(602)에서, 캐쉬 객체(302, 304, 306, 308, 310)가 캐쉬(300)에 액세스하는 프로그램에 제공된다. 캐쉬(300)에 처음에 존재하는 일군의 캐쉬 객체가 도 44에 나타내어져 있다. 캐쉬(300)의 이 초기 조건은 하나 이상의 프로그램의 기본 설정(default setting) 또는 하나 이상의 프로그램 내에서 이전에 실행된 프로그램 단계로 인한 것일 수 있다. 어쨋든, 도 44에 나타낸 초기 조건의 설정 이후에 캐쉬(300)에 행해진 변경이 이하의 설명에서의 관심의 대상이다. 여러가지 컴퓨팅 시스템 중 임의의 컴퓨터 시스템 상에서 동작하는 많은 프로그램들 중 임의의 프로그램이 캐쉬(300)와 통신을 하고 있을 수 있지만, 편의상, 캐쉬(300)에 액세스할 수 있는 소프트웨어를 이하에서 단지 "프로그램"이라고만 한다.
단계(604)에서, 어느 캐쉬 객체가 프로그램에 의해 사용될 그 다음 캐쉬 객체인지에 관한 표시가 제공될 수 있다. 단계(606)에서, 표시된 캐쉬 객체(이 예에서, CO 3(306)임)가 프로그램에 의해 액세스될 수 있다.
단계(608)에서, 액세스된 캐쉬 객체가 신장가능(expandable)한지 여부에 관한 판정이 행해질 수 있다. 본 명세서에서, 캐쉬 객체가 더 낮은 압축비를 겪음으로써 더 많은 데이터 저장 공간을 차지할 수 있을 때 캐쉬 객체는 신장가능하다. 이러한 신장은, 새로운 압축비에 대응하는(또는 압축이 없는 것에 대응하는) 완전히 새로운 일련의 데이터를 제공하는 것에 의하기보다는, 캐쉬 객체에 이미 존재하는 데이터를 보충함으로써 달성될 수 있다.
액세스된 캐쉬 객체가 신장가능하지 않은 경우, 단계(610)에서 그 캐쉬 객체는 양호하게는 캐쉬(300)에 반환된다. 양호하게는, 단계(610)에서, 반환된 캐쉬 객체는 액세스된 이후에 이러한 액세스 이전에 차지했던 것과 동일한 양의 데이터 저장 공간을 차지한다. LRU-MRU 캐싱의 원리에 따라, 캐쉬(300)로 반환될 때, 액세스된 캐쉬 객체는 캐쉬(300)의 최우측, 즉 MRU 종단에 기록될 수 있다. 그렇지만, 다른 대안으로서, 액세스된 캐쉬 객체는 캐쉬(300)의 임의의 부분에 기록될 수 있다. 방법(600)의 이 분기를 계속하여, 방법(600)은 양호하게는 단계(612)에서 종료된다.
단계(608)를 참조하면, 캐쉬 객체(306) 등의 액세스된 캐쉬 객체가 신장가능한 경우, 그 캐쉬 객체는 양호하게는 본 발명의 하나 이상의 실시예들에 따라 신장된다(단계 614). 본 명세서에서 이전에 언급한 바와 같이, 상기한 바와 같이 캐쉬 객체를 신장시키는 것은 양호하게는 가장 최근에 및/또는 가장 빈번하게 액세스된 캐쉬 객체가 최고 품질 레벨로 캐쉬(300)에 저장되는 구성을 제공하는 데 도움이 된다.
하나 이상의 실시예들에서, 캐쉬에 "N"개의 캐쉬 객체가 있는 경우, 이러한 캐쉬 객체의 (데이터 저장 공간에서 측정된) 가능한 크기의 수는 log2(N)과 같은 양으로 제한될 수 있다. 상기한 바와 같이, 제한된 유한한 수의 가능한 캐쉬 객체 크기를 설정하는 일은 양호하게는 단계(614)에서 신장될 CO(306) 등의 캐쉬 객체에 대한 새로운 신장된 크기를 구하는 계산 비용(computational expense)을 제한한다.
하나 이상의 실시예들에서, CO(306)의 신장된(또는 달리 말하면, 덜 압축된) 버전에 필요한 데이터 저장 공간의 양은 캐쉬(300)에 액세스하는 컴퓨팅 시스템(도시 생략)에 의해 산출될 수 있다. 캐쉬(300)가 아직 CO(306)의 신장된 버전을 수신할 준비가 되어 있지 않은 경우, CO(306)의 신장된 버전은 임시 저장(temporary storage)을 위해 다른 메모리 저장 장소(도시 생략)에 기록될 수 있다.
단계(616)에서, CO(306)의 신장된 버전을 저장하는 데 필요한 데이터 저장 공간(402)은 양호하게는 캐쉬(300) 내에서 이용가능하게 된다. 캐쉬(300) 내의 어떤 캐쉬 객체도 변경하지 않고서 CO(306)의 신장된 버전을 저장하기에 충분한 공간 이 캐쉬(300) 내에 존재하는 경우, 캐쉬(300) 내의 캐쉬 객체들 중 하나 이상의 크기 감소가 생략될 수 있다. 그렇지만, 캐쉬(300) 내의 저장 공간 전부 또는 거의 전부가 CO(306)가 액세스되기 이전에 점유되어 있는 경우, CO(306) 이외의 캐쉬 객체들 중 하나 이상이 CO(306)의 신장된 버전의 저장을 위한 캐쉬(300) 내의 공간을 해제(free up)하기 위해 크기 감소될 수 있다.
하나 이상의 실시예들에서, 제한된 수의 가능한 캐쉬 객체 크기들이 있는 경우, 캐쉬 객체 크기 감소 동작의 수가 감소될 수 있다. 캐쉬 객체 크기 감소 동작의 수를 제한하는 것은 양호하게는 컴퓨팅 시스템 캐쉬(300)에 대한 계산 부담을 감소시키는 동작을 하고 양호하게는 전체적인 컴퓨팅 시스템 효율성을 제공한다.
하나 이상의 실시예들에서, 원하는 양의 데이터 저장 공간을 클리어시키는 것을 달성하는 여러가지 방법이 있을 수 있다. 본 명세서에서, 용어 "클리어"는 캐쉬(300) 내의 하나 이상의 캐쉬 객체에 할당된 데이터 저장 공간을 감소시킴으로써 캐쉬(300)에 이용가능한 데이터 저장 공간을 만드는 것에 대응할 수 있다.
하나 이상의 실시예들에서, 클리어될 데이터 저장 공간의 양은 컴퓨팅 시스템에 의한 가장 최근의 액세스 이전에 신장된 캐쉬 객체가 차지했던 공간에 더하여 그 캐쉬 객체가 필요로 하는 부가적인 저장의 양에 대응할 수 있다. 그렇지만, 다른 실시예들에서, 클리어될 공간의 양은 가장 최근에 액세스된 캐쉬 객체가 크기를 증가시킨 만큼의 공간보다 더 적거나 더 많을 수 있다.
하나 이상의 실시예들에서, 가장 최근에 사용된, 신장된 캐쉬 객체에 대해 클리어된 공간은, 도 46에 나타낸 바와 같이, 캐쉬(300)의 한쪽 종단에 있을 수 있 다. 그렇지만, 다른 실시예들에서, 클리어된 공간은 캐쉬(300) 내에서 다른 장소에 있을 수 있다.
하나 이상의 실시예들에서, 이용가능하게 될 데이터 저장 공간은 CO 3(306)(가장 최근에 사용된 캐쉬 객체) 이외의 도 44의 캐쉬 객체들 중 하나 이상을 희생시켜 제공될 수 있다. 구체적으로는, 단지 하나의 나머지 캐쉬 객체의 크기를 감소시킴으로써 또는 가장 최근에 사용된 캐쉬 객체를 제외한 모든 것의 크기를 감소시킴으로써 필요한 부가의 공간을 제공하는 것이 가능할 수 있다. 게다가, 이들 2개의 극단 사이의 임의의 수의 캐쉬 객체가 신장된, 가장 최근에 사용된 캐쉬 객체를 위해 저장 공간을 내놓도록 할 수 있다. 이하에서, 가장 최근에 액세스된 캐쉬 객체 이외의 캐쉬 객체들 모두는 "크기 감소에 적격(eligible for size reduction)"인 것으로 생각된다.
하나 이상의 실시예들에서, 크기 감소에 적격인 하나 이상의 캐쉬 객체의 크기 감소의 정도는 하나 이상의 고려사항에 따라 선택될 수 있다. 일 실시예에서, 크기 감소에 적격인 캐쉬 객체는 동일한 또는 거의 동일한 양의 저장 공간을 내놓을 수 있다. 다른 실시예에서, 적격인 캐쉬 객체는 신장된, 가장 최근에 사용된 캐쉬 객체를 위한 공간을 클리어하기 위해 그의 사전-감소 크기(pre-reduction size)와 동일한 또는 거의 동일한 비율을 내놓을 수 있다.
하나 이상의 다른 실시예들에서, 각각의 캐쉬 객체의 크기 감소의 정도는 얼마나 최근에 캐쉬 객체가 마지막으로 액세스되었는지에 기초할 수 있다. 구체적으로는, 크기 감소에 적격인 캐쉬 객체는 마지막 액세스의 최근성이 감소함에 따라 점진적으로 더 많은 저장 공간을 내놓을 수 있다. 따라서, 이 방법에서는, 크기 감소에 적격인 캐쉬 객체 중 MRU(가장 최근에 사용된 것)이 비교적 적은 양의 저장 공간을 내놓을 수 있고, LRU 캐쉬 객체가 비교적 많은 양의 데이터 저장 공간을 내놓을 수 있으며, 이들 2가지 극단 사이에 있는 그 캐쉬 객체는 중간 정도의 저장 공간을 내놓을 수 있다.
본 명세서에서의 저장 공간 감소에 대한 설명이 주로 가장 최근에 액세스되지 않은 캐쉬 객체의 크기를 감소시키는 것에만 관한 것이지만, 하나 이상의 실시예들에서, 데이터 저장 공간을 클리어하기 위해 하나 이상의 캐쉬 객체가 캐쉬(300)로부터 제거될 수 있다. 게다가, 이러한 캐쉬 객체 제거는 단독으로 또는 캐쉬(300) 내에 남아 있는 캐쉬 객체의 캐쉬 객체 데이터 저장 공간 감소와 함께 실시될 수 있다.
도 46의 실시예에서, 캐쉬(300)에 남아 있는 4개의 캐쉬 객체(302, 304, 308, 310) 전부는 캐쉬(300)의 최우측 종단에 나타낸 위치에 CO(306)을 기록하기 위한 데이터 저장 공간을 클리어하기 위해 크기가 감소되어 있다. 그렇지만, 대안의 실시예들에서, 크기 감소에 적격인 4개의 캐쉬 객체(302, 304, 308, 310) 중 3개 이하는 크기 감소를 겪을 수 있다. 양호하게는, 이 방법은 단계(620)에서 종료된다.
하나 이상의 실시예들에서, 캐쉬 객체 크기를 결정하는 데 변수로서 각각의 캐쉬 객체의 사용의 최근성만을 이용하여 캐쉬 내의 객체들을 관리하기 보다는, 캐쉬 객체 관리는 또한 어느 객체가 그 다음에 필요하게 될 수 있는지에 관한 지능적 추측을 포함할 수 있다. 따라서, 필요하게 될 가능성이 더 적은 객체가 장래에 필요하게 될 가능성이 더 높은 객체보다 이전에 "감축(squeeze)"될 수 있다. 하나 이상의 실시예들에서, 이러한 추측 방법은 감축하기 위한 캐쉬 내의 객체들을 랜덤하게 선택할 수 있고 또 그에 부가하여 선택된 객체들에 대한 랜덤하게 변하는 감축량(amount of squeezing)을 발생할 수 있는 알고리즘과 결합될 수 있다.
도 48은 본 발명의 하나 이상의 실시예들에서 사용하기에 적합한 컴퓨팅 시스템(900)의 블록도이다. 하나 이상의 실시예들에서, 중앙 처리 장치(CPU)(902)는 버스(904)와 연결될 수 있다. 그에 부가하여, 버스(904)는 본 발명의 캐쉬(300), 랜덤 액세스 메모리(RAM)(906), 판독 전용 메모리(ROM)(908), 입/출력(I/O) 어댑터(910), 통신 어댑터(922), 사용자 인터페이스 어댑터(906), 및 디스플레이 어댑터(918)에도 연결될 수 있다.
하나 이상의 실시예들에서, RAM(906) 및/또는 ROM(908)은 사용자 데이터, 시스템 데이터 및/또는 프로그램을 보유할 수 있다. I/O 어댑터(910)는 하드 드라이브(912), CD-ROM(도시 생략), 또는 기타 대용량 저장 장치 등의 저장 장치를 컴퓨팅 시스템(900)에 연결시킬 수 있다. 통신 어댑터(922)는 컴퓨팅 시스템(900)을 근거리 통신망, 원거리 통신망 또는 인터넷망(924)에 연결시킬 수 있다. 사용자 인터페이스 어댑터(916)는 키보드(926) 및/또는 포인팅 장치(914) 등의 사용자 입력 장치를 컴퓨팅 시스템(900)에 연결시킬 수 있다. 게다가, 디스플레이 장치(920) 상에 디스플레이하는 것을 제어하기 위해 디스플레이 어댑터(918)가 CPU(902)에 의해 구동될 수 있다. CPU(902)는 임의의 범용 CPU일 수 있다.
유의할 점은 이 문서에서 지금까지 기술된 및/또는 나중에 기술되는 방법 및 장치가 표준 디지털 회로, 아날로그 회로, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 공지의 프로세서들 중 임의의 프로세서, 프로그램가능 디지털 장치 또는 시스템, 프로그램가능 어레이 로직(PAL) 장치, 또는 상기한 것들의 임의의 조합 등의 공지의 기술들 중 임의의 기술을 이용하여 달성될 수 있다는 것이다. 본 발명의 하나 이상의 실시예들은 또한 적합한 저장 매체에 저장하여 처리 장치에 의해 실행하기 위한 소프트웨어 프로그램으로 구현될 수 있다.
본 발명이 본 명세서에서 특정의 실시예들을 참조하여 기술되어 있지만, 이들 실시예가 본 발명의 원리 및 응용을 예시하는 것에 불과하다는 것을 잘 알 것이다. 따라서, 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위를 벗어나지 않고서 예시적인 실시예들에 수많은 수정이 행해질 수 있고 또 다른 구성들이 안출될 수 있다는 것을 잘 알 것이다.
<발명의 명칭>
데이터를 효율적으로 인코딩하는 시스템 및 방법{SYSTEM AND METHOD FOR EFFICIENTLY ENCODING DATA}
<배경 기술>
최근에, 많은 것을 요구하는 엔지니어링 목표를 만족시키기 위해, 즉 아주 큰 이미지(즉, 크기가 기가픽셀임)가 저대역폭 통신 채널을 통해 서버로부터 클라이언트로 점증적으로(incrementally) 또는 선택적으로(selectively) 전달될 수 있도록 해주기 위해 JPEG2000/JPIP(JPEG2000 Interactive Protocol) 등의 이미지 압축 표준이 소개되었다. (www.kakadusoftware.com에 있는 David Taubman의 Kakadu 구현을 참조할 것). 이러한 이미지를 전해상도(full resolution)로 보고 있을 때, 임의의 주어진 시간에 각각의 이미지의 제한된 영역만이 클라이언트의 그래픽 디스플레이에 들어맞을 수 있다. 이 새로운 표준들은 이러한 영역에 선택적으로 액세스하여 통신 채널을 통해 그 영역에 관한 데이터만을 전송하는 것에 맞춰져 있다. 이 "관심 영역(region of interest)", 즉 ROI가 연속적으로 변하는 경우, 저대역폭 채널을 통한 클라이언트와 서버 간의 연속적인 대화가 있어야 클라이언트의 ROI 내부의 영역의 표현을 계속하여 정확하게 유지할 수 있다.
그렇지만, 기존의 방식에서는 일반적으로 관심 영역의 장소를 상당히 이동시키기 위해서 상당한 양의 데이터를 전송해야 하며, 따라서 이러한 이동이 구현될 수 있는 속도를 제한하게 된다. 게다가, 기존의 방식은 일반적으로 선형 텍스트 문자열(a linear string of text)에의 순차적 액세스에 의존하며, 그에 의해 클라이언트가 관심 영역의 장소를 상당히 변경하려고 할 때 텍스트 내비게이션(text navigation)에 상당한 부담을 준다. 따라서, 서버로부터 클라이언트로 데이터를 전송하는 개선된 방법이 필요하다.
<발명의 상세한 설명>
하나 이상의 실시예들에 따르면, 본 발명은 복수의 시각적 특징(visual feature)을 식별해주는 데이터를 복수의 픽셀 특성 데이터 값(pixel characteristic data value)으로 변환하는 단계, 및 각자의 픽셀 특성 데이터 값을 갖는 픽셀들로 이미지 파일을 형성하는 단계를 포함하는 방법을 제공한다. 양호하게는, 상기 복수의 시각적 특징은 적어도 하나의 그래픽 심볼을 포함한다. 양호하게는, 상기 시각적 특징 식별 데이터는 ASCII 코드를 포함한다. 양호하게는, 상기 시각적 특징 식별 데이터는 상기 시각적 특징의 빈도수-순서 위치(frequency-order position)를 포함한다. 양호하게는, 상기 시각적 특징 식별 데이터는 a) 시각적 특징의 사용 빈도수 및 b) 상기 시각적 특징의 연속적인 특징들 간의 전이 확률(transition probability)의 조합에 기초하여 결정된다. 양호하게는, 픽셀 특성 데이터 값은 픽셀 세기(pixel intensity) 데이터 값, 픽셀 컬러 데이터 값, 및 이미지 콘트라스트(image contrast) 데이터 값으로 이루어지는 그룹으로부터 선택된 적어도 하나의 데이터 유형을 포함한다.
양호하게는, 픽셀 특성 데이터 값은 픽셀 컬러 데이터 값을 포함한다. 양호하게는, 픽셀 컬러 데이터 값은 RBG[적색(red), 청색(blue), 녹색(green)] 픽셀 컬 러 데이터 값, HSV[색조(hue), 채도(saturation), 명암(value)] 픽셀 컬러 데이터 값, 및 CMYK[시안(cyan), 마젠타(magenta), 황색(yellow), 흑색(black)] 픽셀 컬러 데이터 값으로 이루어지는 그룹으로부터 선택된 적어도 하나의 컬러-데이터 값 유형을 포함한다.
양호하게는, 본 방법은 상기 이미지 파일을 무손실 압축하는 단계를 더 포함한다. 양호하게는, 상기 시각적 특징 식별 데이터는 상기 시각적 특징의 연속적인 특징들에 대한 식별 데이터 값들의 차이를 포함한다. 양호하게는, 상기 시각적 특징은 영숫자 문자를 포함한다. 양호하게는, 본 방법은 원본 문서 내에서 상기 영숫자 문자가 입수되는 것과 동일한 순서로 상기 이미지 파일에 픽셀들을 위치시키는 단계를 더 포함한다. 양호하게는, 본 방법은 상기 이미지 파일을 클라이언트로 전송하는 단계를 더 포함한다. 양호하게는, 본 방법은 클라이언트에서 보기 위해 상기 이미지 파일의 적어도 한 영역을 영숫자 문자로 디코딩하는 단계를 더 포함한다. 양호하게는, 본 방법은 클라이언트가 상기 디코딩된 이미지 파일 영역을 재1 차원으로 브라우징할 수 있게 해주는 단계를 더 포함한다.
양호하게는, 본 방법은 클라이언트가 상기 디코딩된 이미지 파일 영역을 제1 및 제2 차원으로 브라우징할 수 있게 해주는 단계를 더 포함한다. 양호하게는, 상기 제1 차원으로 브라우징하는 단계는 상기 영숫자 문자의 행(line)을 따라 전진하는 단계를 포함하고, 상기 제2 차원으로 브라우징하는 단계는 양호하게는 상기 영숫자 문자의 복수의 행에 걸쳐 스크롤링하는 단계를 포함한다. 양호하게는, 상기 브라우징하는 단계는 원본 문서 내에서 브라우징하는 것을 에뮬레이트(emulate)하 는 방식으로 상기 디코딩된 이미지 파일을 브라우징하는 단계를 포함한다. 양호하게는, 본 방법은 상기 이미지 파일에서의 픽셀들의 위치를, 영숫자 문자를 포함하는 원본 문서에서의 상기 픽셀들에 대응하는 영숫자 문자의 위치와 상관시키는 단계를 더 포함한다.
양호하게는, 상기 이미지 파일 내에서의 상기 픽셀들의 위치는 상기 원본 문서에서의 대응하는 영숫자 문자의 위치에 적어도 거의 대응한다. 양호하게는, 상기 이미지 파일 내에서의 상기 픽셀들의 위치는 상기 원본 문서에서의 대응하는 영숫자 문자의 위치와 거의 동일하다. 양호하게는, 본 방법은 상기 이미지 파일의 적어도 한 영역을 서버로부터 클라이언트로 전송하는 단계를 더 포함한다. 양호하게는, 본 방법은 클라이언트가 상기 이미지 파일의 한 영역을 서버에 요청하는 단계를 더 포함한다.
양호하게는, 본 방법은 서버가 상기 이미지 파일의 상기 요청된 영역을 전송하는 단계를 더 포함한다. 양호하게는, 상기 전송하는 단계는 클라이언트에서 디코딩하기에 적합한 압축된 데이터를 전송하는 단계를 포함한다.
다른 측면에 따르면, 본 발명의 하나 이상의 실시예들은 소프트웨어 프로그램의 명령어에 따라서 동작을 하는 프로세서를 포함할 수 있는 장치를 제공하며, 상기 소프트웨어 프로그램은 상기 장치로 하여금 복수의 시각적 특징을 식별해주는 데이터를 복수의 픽셀 특성 데이터 값으로 변환하는 동작 및 각자의 픽셀 특성 데이터 값을 갖는 픽셀로 이미지 파일을 형성하는 동작을 포함한 동작들을 수행하게 한다.
다른 측면에 따르면, 본 발명의 하나 이상의 실시예들은 프로세서를 포함하는 장치로 하여금 소프트웨어 프로그램에 따라서 복수의 시각적 특징을 식별해주는 데이터를 복수의 픽셀 특성 데이터 값으로 변환하는 동작 및 각자의 픽셀 특성 데이터 값을 갖는 픽셀로 이미지 파일을 형성하는 동작을 포함한 동작들을 수행하게 하는 동작을 하는 소프트웨어 프로그램을 담고 있는 저장 매체를 제공할 수 있다.
첨부 도면과 관련하여 본 명세서에서 본 발명의 양호한 실시예의 설명을 보면 기타 측면, 특징, 이점 등이 당업자에게는 명백하게 될 것이다.
<도면의 간단한 설명>
도 49는 본 발명의 하나 이상의 실시예에 따른, 원시 ASCII 인코딩을 사용한 "율리시스"의 전문(full text)의 텍스트 이미지로서, 백색 컬러는 0의 숫자값을 가지며 흑색 컬러는 255의 숫자값을 가짐.
도 50은 본 발명의 하나 이상의 실시예에 따른, 원시 ASCII(raw ASCII)를 사용하여 인코딩된 율리시스의 처음 5개 장(章)(chapter)의 텍스트 이미지.
도 51은 본 발명의 하나 이상의 실시예에 따른, 빈도수-순서 인코딩(frequency-order encoding)을 사용하여 인코딩된 율리시스의 처음 5개 장의 텍스트 이미지.
도 52는 본 발명의 하나 이상의 실시예들에서 사용하기에 적합할 수 있는 컴퓨팅 시스템의 블록도.
<실시예>
본 발명의 여러가지 측면을 설명하기 위해, 현재 양호한 형태가 도면에 도시 되어 있지만, 본 발명이 도시된 정확한 구성 및 수단에 한정되지 않는다는 것을 잘 알 것이다.
본 발명의 하나 이상의 실시예들은 선택적으로 압축 해제가능한(selectively decompressable) 이미지 압축 및 전송 기술을 이진 표현을 사용하여 식별될 수 있는 텍스트 또는 기타 데이터로 확장하는 것을 포함할 수 있다.
본 명세서에서, 시각적 특징을 식별 및/또는 기술하는 이진 데이터(binary data)는 ASCII(American Standard Code for Information Interchange) 또는 기타 형식 등의 초기 형식(initial format)으로부터 변환될 수 있거나 픽셀 세기 데이터(이에 한정되지 않음) 등의 이미지 데이터에 포함시키기에 적합한 형식(format)으로 변환될 수 있다.
이상에서 언급한 시각적 특징은 그래픽 심볼 및/또는 영숫자 문자를 포함할 수 있지만, 이에 한정되는 것은 아니다. 그렇지만, 본 명세서에서, 시각적 특징은 이진 데이터를 사용하여 기술 및/또는 식별될 수 있는 임의의 눈에 보이는 이미지 특징을 포함할 수 있다. 게다가, 이러한 데이터가 픽셀 세기 데이터로 인코딩될 수 있지만, 본 발명은 이 형식(format)으로 인코딩하는 것에 한정되지 않는다.
하나 이상의 실시예들에서, 초기 데이터(시각적 특징 식별 데이터)는 픽셀 세기 데이터, 픽셀 컬러 데이터, 이미지 콘트라스트 데이터, 및/또는 기타 형태의 이미지 데이터(이에 한정되는 것은 아님)를 비롯한 몇가지 가능한 유형의 픽셀 특성 데이터로 변환될 수 있다. 상기한 픽셀 컬러 데이터는 적색, 청색, 녹색(RGB) 픽셀 컬러 데이터, 색조, 채도, 명암(HSV) 픽셀 컬러 데이터, 시안, 마젠타, 황색, 흑색(CMYK) 픽셀 컬러 데이터, 및/또는 기타 형태의 픽셀 컬러 데이터를 포함할 수 있지만, 이에 한정되는 것은 아니다.
이하의 설명에서, 다량의 텍스트, 구체적으로는 James Joyce의 저서 "율리시즈"를 생각해보자. 하나 이상의 실시예들에서, 이 텍스트는 각각의 장(章)을 그 자신의 컬럼(column)에 넣는 형식(format)으로 되어 있을 수 있으며, 연속적인 장(章)에 대한 컬럼은 좌측에서 우측으로 배열되어 있다. 그렇지만, 장(章)의 다른 구성이 구현될 수 있다는 것을 잘 알 것이다. 컬럼은 100 등의 최대폭(maximum width in characters)(단위: 문자수)을 갖는 것으로 가정된다. 도 49는 이러한 방식으로 이미지로서 인코딩된 율리시즈의 전체 텍스트를 나타낸 것이며, 도 49 내의 각각의 픽셀은 원본 텍스트 문서에서의 하나의 텍스트 문자(또는 빈 공백 등의 텍스트를 포함하지 않는 문자 위치)에 대응한다. 도 50은 도 49에서와 동일한 인코딩 방법을 사용하여 율리시즈의 처음 5개 장(章)의 텍스트 이미지를 나타낸 것이다.
하나 이상의 실시예들에서, 각각의 픽셀의 세기값은 픽셀에 인코딩되어 있는 문자의 ASCII 코드와 같게 설정될 수 있다. 그레이스케일 픽셀 및 ASCII 문자 둘다가 8-비트 시퀀스로 표현될 수 있기 때문에(이들 둘다 0-255 범위의 값을 가질 수 있음), 픽셀값과 문자 간의 대응관계(correspondence)가 용이하게 구현될 수 있다. 이 설명에서, 텍스트 및 기타 문자가 ASCII 코드를 픽셀 세기의 값으로 사용하여 픽셀로 표현될 수 있지만, 텍스트 또는 기타 문자에 대한 다른 코드가 이를 위해 이용될 수 있다는 것을 잘 알 것이다.
일반적으로, 보통의 ASCII 표현으로 된(즉, 표준 텍스트 파일로서의) 율리시즈의 전문(full text)은 1.5 MB의 저장 공간을 차지하며, 이는 협대역 통신 채널을 통해 그 전체를 전송하기에는 너무 클 수 있다. 무손실 JPEG2000 이미지로 인코딩되어 있는, 도 49의 문자 데이터의 픽셀-특성-데이터 표현(본 명세서에서 "문자-픽셀 이미지" 또는 "텍스트-이미지"라고 함)은 약 2.2 MB(메가바이트)의 데이터 저장 공간을 필요로 한다. 책의 장(章)들이 길이가 더 균등하여 그 결과 문자-픽셀 이미지(텍스트-이미지)에 빈 공백(0으로 인코딩됨)이 더 적은 경우, 이 저장 공간 요건은 상당히 감소될 수 있다.
그렇지만, 전체 파일 크기(entire file size)보다 더 중요한 것은 통상의 JPIP 서버가 이 파일을 클라이언트에 선택적으로 또 점증적으로 서비스할 수 있다는 것이다. 구체적으로는, 여기서 관심있는 것은 서버가 파일의 선택된 부분을 제어가능한 해상도 증분으로(at controllable increments of resolution) 서비스할 수 있다는 것이다.
하나 이상의 실시예들에서, 문자를 읽기에 충분한 줌잉 레벨(클라이언트측 디스플레이에서 1 픽셀/문자를 훨씬 넘어야 할 필요가 있을 수 있음)로 텍스트를 보고 있는 클라이언트는 JPIP(또는 다른 적당한 프로토콜)를 사용하여 텍스트의 관련 부분만을 요청할 수 있다. 이 동작은 효율적이며, 이러한 다운로드에 관여된 데이터의 크기로 인해 전체 텍스트를 다운로드하는 것을 엄두도 못낼 정도가 되게 하는 조건 하에서 서버와의 아주 낮은 대역폭 연결로도 텍스트를 읽는 사람에 대해 적절한 성과가 달성될 수 있다.
하나 이상의 실시예들에서, 다량의 텍스트에 선택적으로 액세스하도록 구체적으로 설계된 클라이언트/서버 기술을 사용하여 유사한 효과가 달성될 수 있지만, 상기한 문자-픽셀 이미지 방식은 종래의 구현들보다 다수의 이점을 가지며, 이들 이점이 이하에 열거되어 있다.
1) 문자-픽셀 이미지 방식은 아주 큰 데이터 볼륨(data volume)용으로 설계된 기존의 기술 및 프로토콜을 사용할 수 있다.
2) 문자-픽셀 이미지 방식은 성능 열화 없이 크기가 수 기가바이트이거나 훨씬 더 큰 텍스트로 용이하게 확장될 수 있다.
3) 본 발명의 하나 이상의 실시예들에서, 관심 영역 내의 텍스트 또는 다른 시각적 특징에 대한 액세스는 양호하게는 2차원적이다. 따라서, 많은 상황에서(예를 들어, 율리시즈 경우에서와 같이 텍스트를 컬럼으로 볼 때), 본 명세서에 기술된 문자-픽셀 이미지는 양호하게는 텍스트를 1차원 문자열로 취급하는 기존의 방법을 사용하여 이용가능한 것보다 더 효율적인 브라우징을 가능하게 해준다.
4) 웨이블렛이 JPEG2000에서 사용되기 때문에, 문자-픽셀 이미지는 양호하게는 다중-해상도 표현으로 된다. 시각적 특징 식별 데이터를 사용하여 식별되는 텍스트 또는 기타 시각적 특징이 일반적으로 최종 (가장 상세한) 해상도 이외의 해상도에서 읽을 수 없을 지라도, 하위 해상도 웨이블렛에 대한 보다 광범위한 공간적 지원이 양호하게는 관심 영역 근처의 텍스트 및/또는 기타 시각적 특징에 대한 지능적인 클라이언트측 캐쉬를 제공한다. 원본 텍스트의 여러가지 영역에 걸쳐 ROI를 이동시키는 것(이는 종래의 방식으로 텍스트를 스크롤링할 때 행해질 수 있음) 은 따라서 본 발명의 하나 이상의 실시예들을 사용하여 효율적으로 수행될 수 있다.
하나 이상의 실시예들에서, 상기 개념들은 형식있는 텍스트, 유니코드, 또는 기타 메타데이터를 취급하도록 용이하게 확장될 수 있는데, 그 이유는 이러한 데이터 모두가 아마도 기본 제공된 이스케이프 시퀀스(embedded escape sequence)를 갖는 ASCII 텍스트 문자열을 사용하여 표현될 수 있기 때문이다.
선택된 응용에서, JPEG2000은 손실 압축 형식(lossy compression format)으로서 사용될 수 있으며, 이는 디코딩된 이미지 바이트가 반드시 원본 바이트와 동일할 필요가 있는 것은 아님을 의미한다. 본 명세서에서, "디코딩"이라는 용어는 텍스트 이미지 내의 픽셀 데이터를 다시 원본 텍스트 데이터 또는 기타 시각적 특징 데이터로 변환하는 것을 말한다. 이미지 바이트가 텍스트를 나타내는 경우, 손실 압축은 일반적으로 타당하지 않다. 그렇지만, JPEG2000의 설계 목적 중 하나는 무손실 압축을 효율적으로 지원하는 것이었는데, 그 이유는 이것이 어떤 이미징 함수(imaging function)에(의료 및 과학 응용 등에) 중요하기 때문이다. 사진 이미지의 무손실 압축비는, 보통 24:1로 용이하게 압축될 수 있는 시각적으로 무난한 손실 이미지(lossy image)와 비교하여, 일반적으로 약 2:1에 불과하다.
이미지 압축은, 손실 및 무손실 둘다, 일반적으로 양호한 공간 연속성을 갖는 이미지에 가장 효과가 있으며, 이는 인접 픽셀들의 세기값의 차이가 낮다는 것을 의미한다. 이러한 측면에서 볼 때 원시 ASCII 인코딩은 최적이 아닌데, 그 이유는 ASCII로 인코딩된 연속적인 텍스트 문자가 광범위하게 변하는 값을 가질 수 있기 때문이다. 따라서, 이하에서 몇몇 대안이 고려된다.
도 51은 본 발명의 하나 이상의 실시예들에 따른, 빈도수-순서 인코딩을 사용하여 인코딩된 율리시즈의 처음 5개 장(章)의 텍스트 이미지이다.
빈도수 인코딩(Frequency Encoding)
본 발명의 하나 이상의 실시예들에서, 인코딩 효율성은 관련 텍스트에서, 영어 전체에서, 또는 다른 언어 전체에서 그의 출현 빈도수(frequency of occurrence)에 따라 문자들을, 최고 빈도수부터 최저 빈도수까지, 재정렬(reorder)함으로써 향상될 수 있다. 따라서, 하나 이상의 실시예들에서, 빈 공백은 코드 0을 가지게 되고, 문자-픽셀 이미지에서 픽셀값 0를 갖는다. "공백" 문자는 코드 "1"(문자-픽셀 이미지에서의 그의 대응하는 값도 역시 "1"임)을 받을 수 있다. e, t, a, o, i, n, s, r, h, l,... 등의 문자 시퀀스는 "2"로 시작하여 그로부터 위쪽으로 값 255까지 나아가는 연속적인 픽셀값으로 변환되게 할 수 있다.
이 방식을 사용하여 다량의 텍스트 내의 문자들 전부를 픽셀값으로 변환할 시에, 255개 픽셀값 모두가 결국은 사용될 수 있게 되는 것이 가능하다. 그렇지만, 본 명세서에서 고려되는 텍스트 문자(또는 기타 시각적 특징) - 픽셀값 변환의 바로 그 특성으로 인해, 픽셀값의 수치값이 증가함에 따라 픽셀값 출현은 양호하게는 점차적으로 드물어지게 된다.
도 51의 이미지는 이 시점을 나타낸 것이다. 픽셀값이 0 근방에 밀집하는 경향이 있다. 적어도 그 만큼 중요한 것은, 도 51의 실시예에서 연속적인 문자-픽셀 값 간의 픽셀값 차이가 양호하게도 도 50의 실시예에서보다 더 낮다는 것이다.
0-255 범위 내의 모든 픽셀값이 똑같은 확률을 갖는 경우, 각각의 픽셀값을 표현하는 데 일반적으로 8 비트가 필요하게 된다. 그렇지만, 어떤 픽셀값이 다른 픽셀값보다 훨씬 더 빈번하게 출현하는 실시예들에서, 픽셀값은 양호하게는 어떤 정보도 손실하지 않고서 더 적은 비트로 표현될 수 있다.
이 점을 설명하기 위해 한 예를 살펴보자. 이 극단적인 경우에, 픽셀값은 99%가 0이고, 나머지가 0과 255 사이의 어떤 다른 값을 갖는다. 이 경우에, 인코딩 알고리즘은 0 값을 단일의 "0" 비트로 인코딩할 수 있고, 영이 아닌 값을 선두 "1" 비트(leading 1 bit)(영이 아닌 값의 존재를 신호하기 위함)와 그 다음에 오는 영이 아닌 값의 8-비트 표현으로 인코딩할 수 있다. 따라서, 이 방식은 100개 중 99개의 픽셀에 대해 픽셀당 7 비트를 절감하지만, 단지 1%만 나타나는 영이 아닌 픽셀을 나타내기 위해 하나의 추가 픽셀을 사용한다. 상기한 인코딩 알고리즘에 대응하는 디코딩 알고리즘은 따라서 양호하게는 "0" 비트를 0 비트 값을 나타내는 것으로 해석하고 "1" 비트 값으로 시작하는 비트 시퀀스를 선두 "1" 비트 다음에 오는 비트로 표현되는 값을 갖는 것으로 해석한다.
그렇지만, 덜 극단적인 상황에서도, 다른 것들보다 훨씬 더 빈번하게 나타나는 픽셀값이 존재한다는 것은 픽셀 데이터의 손실을 입지 않고서 또 픽셀 데이터로 표현되는 시각적 특징 데이터의 손실을 입지 않고서 저장 공간의 상당한 절감을 가능하게 해줄 수 있다. 일반적으로, 2개 이상의 값 출현 빈도수 카테고리는, 일반적으로 감소하는 빈도수로 나타나는 값을 표현하는 데 점진적으로 증가하는 수의 비트를 사용하여 설정될 수 있다. 이와 같이, 더 작은 비트 시퀀스가 대부분 사용 될 수 있고, 그에 의해 데이터 저장 공간 및 데이터 통신 대역폭 요건을 절감할 수 있다.
중간 예에서, 가장 빈번하게 나타나는 픽셀값을 표현하는 데 5 비트가 사용될 수 있고, 덜 빈번하게 나타나는 값에 대해 9 비트가 사용될 수 있다. 가장 빈번하게 나타나는 시각적 특징에 대해, "0"일 수 있는 선두 비트가 제공될 수 있고, 그 다음에 픽셀의 실제값을 나타내는 4 비트가 올 수 있다. 덜 빈번하게 나타나는 픽셀값에 대해, "1"일 수 있는 선두 비트가 제공될 수 있고, 그 다음에 픽셀의 실제값을 나타내는 8 비트가 올 수 있다.
하나 이상의 다른 실시예들에서, 빈도수 인코딩은 감소된 수의 비트를 사용하여 텍스트 이미지를 표현하는 데 공간적 코히런스(spatial coherence)로부터 이익을 볼 수 있다. 구체적으로는, 이 이미지는 8x8 픽셀 블록으로 분할될 수 있고, 따라서 각각의 블록에 64 픽셀을 제공하며, 각각의 픽셀은 빈도수 인코딩된 시각적 특징(텍스트 문자일 수 있음)을 나타낸다. 이 인코딩 방법은 이어서 각각의 블록을 검토하고 그 블록에서 최고값을 갖는 픽셀값을 표현하는 데 필요한 비트 수를 결정할 수 있다. 이 결정된 비트 수는 이어서 그 블록 내의 모든 픽셀값들을 표현하는 데 사용될 수 있다.
임의의 주어진 이미지 내의 블록들 대부분에 대해, 최고값 픽셀은 4 비트 이하로 표현될 수 있다. 따라서, 이러한 블록별 방식을 이용할 때, 데이터 저장 요건의 상당한 절감이 달성될 수 있다.
하나 이상의 실시예들에서, 율리시즈의 빈도수-인코딩된 텍스트 이미지가 JPEG2000 이미지로 무손실 압축되는 경우, 파일 크기는 1.6 MB이며, 이는 원시 ASCII 텍스트 파일(1.5 MB)보다 거의 크지 않으며, ASCII-인코딩된 텍스트 이미지보다 37% 더 작다. 문자 인코딩(letter encoding)의 추가적인 최적화에 따라, 압축 파일 크기는 ASCII 텍스트 파일 크기보다 훨씬 아래로 떨어질 수 있다. 이 추가적인 최적화는 단지 빈도수만(Markov-0)이 아니라 인코딩을 발전시키기 위해 문자 전이 확률(Markov-1)을 사용하는 것, 및/또는 문자 자체만이 아니라 한 문자와 그 다음 문자 사이의 델타, 즉 차이를 픽셀로서 인코딩하는 것을 포함할 수 있지만, 이에 한정되는 것은 아니다.
이들 추가된 최적화에 따라, 이러한 방식으로 서비스될 준비가 된 텍스트는 실제로 원시 ASCII보다 더 적은 데이터 저장 공간을 차지할 수 있다.
본 명세서에 기술된 본 발명의 하나 이상의 실시예들은 선택적 이미지 압축 기법으로서 JPEG2000/JPIP를 사용하는 것을 포함하지만, 본 발명은 이 이미지 압축 기법을 사용하는 것에 한정되지 않는다. 예를 들어, 유사한 특성을 갖는 LizardTech의 MrSID 형식 및 프로토콜(이에 한정되지 않음)을 비롯한 다른 이미지 압축 형식 및 프로토콜이 본 발명과 관련하여 이용될 수 있다.
도 52는 본 발명의 하나 이상의 실시예들에서 사용하기에 적합한 컴퓨팅 시스템(1400)의 블록도이다. 하나 이상의 실시예들에서, 중앙 처리 장치(CPU)(1402)는 버스(1404)와 연결될 수 있다. 그에 부가하여, 버스(1404)는 랜덤 액세스 메모리(RAM)(1406), 판독 전용 메모리(ROM)(1408), 입/출력(I/O) 어댑터(1410), 통신 어댑터(1422), 사용자 인터페이스 어댑터(1406), 및 디스플레이 어댑터(1418)에도 연결될 수 있다.
하나 이상의 실시예들에서, RAM(1406) 및/또는 ROM(1408)은 사용자 데이터, 시스템 데이터 및/또는 프로그램을 보유할 수 있다. I/O 어댑터(1410)는 하드 드라이브(1412), CD-ROM(도시 생략), 또는 기타 대용량 저장 장치 등의 저장 장치를 컴퓨팅 시스템(1400)에 연결시킬 수 있다. 통신 어댑터(1422)는 컴퓨팅 시스템(1400)을 근거리 통신망, 원거리 통신망 또는 인터넷망(1424)에 연결시킬 수 있다. 사용자 인터페이스 어댑터(1416)는 키보드(1426) 및/또는 포인팅 장치(1414) 등의 사용자 입력 장치를 컴퓨팅 시스템(1400)에 연결시킬 수 있다. 게다가, 디스플레이 장치(1420) 상에 디스플레이하는 것을 제어하기 위해 디스플레이 어댑터(1418)가 CPU(1402)에 의해 구동될 수 있다. CPU(1402)는 임의의 범용 CPU일 수 있다.
유의할 점은 이 문서에서 지금까지 기술된 및/또는 나중에 기술되는 방법 및 장치가 표준 디지털 회로, 아날로그 회로, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 공지의 프로세서들 중 임의의 프로세서, 프로그램가능 디지털 장치 또는 시스템, 프로그램가능 어레이 로직(PAL) 장치, 또는 상기한 것들의 임의의 조합 등의 공지의 기술들 중 임의의 기술을 이용하여 달성될 수 있다는 것이다. 본 발명의 하나 이상의 실시예들은 또한 적합한 저장 매체에 저장하여 처리 장치에 의해 실행하기 위한 소프트웨어 프로그램으로 구현될 수 있다.
본 발명이 본 명세서에서 특정의 실시예들을 참조하여 기술되어 있지만, 이들 실시예가 본 발명의 원리 및 응용을 예시하는 것에 불과하다는 것을 잘 알 것이 다. 따라서, 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위를 벗어나지 않고서 예시적인 실시예들에 수많은 수정이 행해질 수 있고 또 다른 구성들이 안출될 수 있다는 것을 잘 알 것이다.
<발명의 명칭>
이미지 데이터의 전달 및/또는 저장을 관리하는 시스템 및 방법{SYSTEM AND METHOD FOR MANAGING COMMUNICATION AND/OR STORAGE OF IMAGE DATA}
<배경 기술>
JPEG2000/JPIP 등의 최근에 개발된 이미지 압축 및 전송 표준은 협대역폭 통신 채널을 통한 큰 이미지(즉, 크기가 기가픽셀임)의 대화형 디스플레이를 가능하게 해주었다. 그렇지만, 이들 새로 등장하는 표준 및 기술은 많은 수의 이미지(이들 각각도 역시 아마도 아주 클 수 있음)와 동시에 유연한 시각적 상호작용을 하는 것을 가능하게 해주는 더 야심찬 목표를 달성하는 수단을 제공하지 않는다. 따라서, 이미지 데이터를 전송 및/또는 저장하는 개선된 시스템 및 방법이 업계에 필요하다.
<발명의 상세한 설명>
한 측면에 따르면, 본 발명은 통신 링크를 통해 제1 컴퓨터와 제2 컴퓨터 사이에 통신을 설정하는 단계 - 상기 제2 컴퓨터는 압축 이미지 데이터 형태로 이미지 컬렉션(image collection)을 저장하고 있음 -, 상기 제1 컴퓨터로 전달(communicate)하기 위해 상기 컬렉션에서 복수의 이미지를 선택하는 단계, 및 상기 선택된 이미지들 중 임의의 이미지에 대한 전해상도(full-resolution) 이미지 데이터를 전송하기 이전에 상기 선택된 이미지들 전부에 대한 저해상도(low-resolution) 이미지 데이터를 상기 제2 컴퓨터로부터 상기 제1 컴퓨터로 전송하는 단계를 포함할 수 있는 방법을 제공한다.
첨부 도면과 관련하여 본 명세서에서 본 발명의 양호한 실시예에 대해 설명하면, 기타의 측면, 특징, 이점 등이 당업자에게는 명백하게 될 것이다.
<도면의 간단한 설명>
도 53은 본 발명의 하나 이상의 실시예에 따른, 이미지 데이터를 복수의 컴퓨터로의 전달할 수 있게 해주기 위해 연결될 수 있는 시스템의 블록도.
도 54는 본 발명의 하나 이상의 실시예에 따른, 적어도 2개의 관심 영역을 갖는 이미지의 블록도.
도 55는 본 발명의 하나 이상의 실시예에 따른, 본 명세서에 기술된 기술의 측면들을 이용하는 "가상 책(virtual book)"의 블록도.
도 56은 본 발명의 하나 이상의 실시예에 따른, 도 55의 가상 책의 3차원 버전을 나타낸 도면.
도 57은 본 발명의 하나 이상의 실시예에 따른, 하나 이상의 휴대용 장치와 하나 이상의 다른 장치 사이의 이미지 데이터 통신(image data communication)을 관리하는 시스템의 블록도.
도 58a는 기존의 방법을 이용하는 불완전한 이미지 데이터 다운로드의 결과를 나타낸 도면.
도 58b는 본 발명의 하나 이상의 실시예에 따른, 불완전한 이미지 데이터 다운로드의 결과를 나타낸 도면.
도 59는 본 발명의 하나 이상의 실시예에 따른, 물리적 디스플레이(화면)와 2개의 가상 디스플레이를 포함할 수 있는 "공용 공간(common space)"의 블록도.
도 60은 본 발명의 하나 이상의 실시예에 따른, 몽타쥬(montage)로 패킹된 1천개 이상의 이미지의 컬렉션(여러가지 크기의 디지털화된 지도의 컬렉션)을 나타낸 도면.
도 61은 본 발명의 하나 이상의 실시예에 따른, 랜덤한 구성으로 동적으로 재배열된 약 3천개 이미지의 스냅샷을 나타낸 도면.
도 62는 본 발명의 하나 이상의 실시예에서 사용하기에 적합할 수 있는 컴퓨터 시스템의 블록도.
<실시예>
본 발명의 여러가지 측면들을 설명하기 위해, 도면에 현재 양호한 형태들이 도시되어 있지만, 본 발명이 도시된 정확한 구성 및 수단에 한정되지 않는다는 것을 잘 알 것이다.
도 53은 본 발명의 하나 이상의 실시예에 따른, 복수의 컴퓨터 간에 이미지 데이터를 전달할 수 있게 해주기 위해 연결될 수 있는 시스템(170)의 블록도이다. 시스템(170)은 양호하게는 디스플레이(184) 및 데이터 저장 장치(186)에 연결되어 있는 클라이언트 컴퓨터(182)를 포함한다. 시스템(170)은 양호하게는 데이터 저장 장치(190)에 연결될 수 있는 서버 컴퓨터(188)도 포함한다. 서버 컴퓨터(188)는 인터넷(180)에도 연결될 수 있다.
하나 이상의 실시예들에서, 이미지 데이터는 복수의 컴퓨터(182, 188) 간의 비교적 저대역폭 연결을 사용하여 아마도 큰 이미지의 대규모 컬렉션을 볼 수 있게 해주기 위해 이들 컴퓨터 간에 전달될 수 있다. 예를 들어, 서버 컴퓨터(188)에 저장된 이미지의 바람직한 뷰잉(viewing) 및 내비게이션(navigation)은 제어가능한 해상도 레벨로 서버 컴퓨터(188)에 저장되어 있는 이미지 데이터의 선택된 부분을 전송함으로써 달성될 수 있다. 이미지 데이터(114)의 선택성(selectivity)은 고해상도의 특정 이미지 또는 심지어 고해상도의 특정 이미지의 선택된 부분을 선택하도록 되어 있을 수 있다.
본 명세서에, 클라이언트 컴퓨터(182) 및 서버(188)로서 사용되는 장치들의 유형, 이들 간에 전송되는 이미지 데이터(114)의 유형, 및 지정된 해상도 레벨로 선택된 이미지 데이터를 전송할 수 있는 여러가지 애플리케이션을 변화시키는 것을 포함하는 여러가지 실시예들에 대해 기술되어 있다.
도 54는 본 발명의 하나 이상의 실시예에 따른, 적어도 2개의 관심 영역(252, 254)을 갖는 이미지(250)의 블록도이다. 이미지(250)는 이미지 데이터(114)의 서브셋일 수 있다. 다른 대안으로서, 이미지 데이터(114)는, 클라이언트 컴퓨터(182)에 의해 어떤 이미지 데이터가 요청되느냐에 따라, 이미지(250)의 서브셋을 나타낼 수 있다.
하나 이상의 실시예들에서, 이미지(250)는 서버 컴퓨터(188) 상에 또는 저장 장치(190) 내에 압축된 형태로 저장될 수 있다. 양호하게는, 이와 같이 저장되어 있을 때, 이미지(250)의 여러가지 영역에 대한 복수의 해상도 레벨의 데이터는 저장될 수 있고 클라이언트 컴퓨터(182)에 의한 다운로드를 위해 요청될 수 있다.
하나 이상의 실시예들에서, 특정의 이미지 또는 이미지의 특정 영역이 클라 이언트 컴퓨터(182) 상에 저장되는 해상도 레벨이 용이하게 증가되거나 감소될 수 있다. 이전의 다운로드에 의해 제1 해상도 레벨(전해상도보다 낮은 해상도일 수 있음)의 영역 또는 이미지가 저장되는 경우, 양호하게는 제1 해상도를 나타내는 데이터를 폐기할 필요없이, 그 다음 상위 레벨의 해상도를 나타내는 데이터를 추가함으로써 이 제1 해상도 레벨이 증가될 수 있으며, 그에 의해 중복성(redundancy)을 방지하고 본 명세서에서 생각되는 이미지 데이터 통신의 효율성을 증가시킨다. 역으로, 클라이언트(182)에 저장되어 있는 영역 또는 이미지의 해상도 레벨은, 동일한 영역 또는 이미지에 대한 하위 해상도 레벨에 대응하는 데이터를 손실하지 않고, 클라이언트에 저장되어 있는 최고 해상도 레벨을 폐기함으로써 감소될 수 있다. 이러한 해상도 감소는 데이터가 폐기되어질 영역 또는 이미지 이외의 하나 이상의 영역 또는 이미지를 위해 필요한 데이터 저장 공간을 클리어시키기 위해 클라이언트(182)에서 실시될 수 있다.
예를 들어, JPEG2000 또는 다른 이산 웨이블렛 변환(discrete wavelet transform)-기반 이미지 압축 방식을 사용하여 관련 이미지 압축이 제공될 수 있다. 그렇지만, 본 발명은 임의의 특정의 압축 형식(compression format) 또는 이미지 데이터 표현의 사용에 한정되지 않는다. 바이트 단위의 크기가 미압축된 이미지 데이터보다 그다지 작지 않는 이미지 형식을 비롯한 기타 형식들도 이용될 수 있다. 선택된 이미지 형식이 이미지 데이터를 다중 스케일로 표현 및 저장할 수 있기만 하면 된다.
하나 이상의 실시예들에서, 클라이언트 컴퓨터(182)는 이미지(250)의 하나 이상의 영역을 다운로드하려고 할 수 있으며, 여기서 이러한 영역은 이미지(250)의 일부분일 수 있다. 하나 이상의 관심 영역(252, 254)은 클라이언트 컴퓨터(182)가 다운로드하려고 하는 유일한 것일 수 있다. 다른 대안으로서, 클라이언트 컴퓨터(클라이언트)(182)는 하나 이상의 선택된 영역을, 이미지(250)의 나머지가 다운로드되는 해상도보다 더 높은 해상도로 다운로드하려고만 할 수 있다. 어쨋든, 클라이언트(182)는 다운로드하기 위한 이미지(250)의 지정된 영역 및 이 지정된 영역이 서버 컴퓨터(서버)(188)에 의해 제공되는 해상도 레벨 둘다를 알려줌으로써 다운로드를 요청할 수 있다.
도 54의 예에서, 클라이언트(182)는 양호하게는 이미지(250) 전부를 저해상도로 다운로드할 것을 요청한다. (이미지(250) 대부분이 다운로드되는 정확한 해상도 레벨은 본 설명과 관련이 없다). 그렇지만, 클라이언트(182)는 관심 영역 1(152)을 고해상도로 또는 심지어 전해상도로 다운로드하려고 한다. 그에 따라, 클라이언트(182)는 양호하게는 관심 영역 1(252)의 좌표 및 원하는 해상도 레벨을 서버(188)에 지정해준다. 따라서, 이미지(250)의 대부분(관심 영역 1(252) 외부의 부분을 포함함)을 저해상도로 다운로드하는 것에 부가하여, 클라이언트(182)는 양호하게는 관심 영역 1(252)을 지정된 해상도 레벨로 다운로드한다. 다른 상황에서, 클라이언트(182)는 관심 영역(들)만을 다운로드하고 이미지(250)의 나머지의 다운로드를 생략하려고 할 수 있다.
이와 같이, 클라이언트 컴퓨터(182)의 사용자는 이미지(250) 전체를 이러한 고해상도로 다운로드할 필요없이 관심 영역 1(252)을 고해상도로 볼 수 있다. 따 라서, 클라이언트(182)와 서버(188) 간의 비교적 낮은 대역폭의 데이터 통신 링크가 그럼에도 불구하고 특정의 관심 영역(이 경우, 관심 영역 1(252))을 고해상도로 제공하는 동안 이미지(250) 전체를 전송할 수 있으며, 그에 의해 클라이언트(182)가 이미지(250) 전체를 고해상도로 다운로드했을 경우에 있게 될 관심 영역에 대한 동일한 보는 경험을 보는 사람에게 제공하지만, 이 후자의 경우는 클라이언트 컴퓨터(182) 또는 데이터 저장 장치(186)에서 상당히 더 많은 다운로드 시간 및 데이터 저장 공간을 요구한다.
관심 영역을 이동
하나 이상의 실시예들에서, 클라이언트 컴퓨터(182)의 사용자는 이미지(250)를 패닝하고자 할 수 있다. 통상적으로, 한 관심 영역(252)으로부터 다른 관심 영역(254)으로 패닝하는 것은 이들 영역을 보게 될 해상도 레벨로 양 영역을 클라이언트(182)에 다운로드할 것을 필요로 한다. 게다가, 일반적으로, 관심 영역 1(252)과 관심 영역 2(254) 사이의 모든 이미지 영역(image territory)은 기술된 패닝이 행해질 수 있게 해주기 위해 클라이언트 컴퓨터(182)에 저장된다. 이하에서 기술하는 바와 같이, 본 발명의 하나 이상의 실시예에서, 이러한 관심 영역(252, 254)을 보는 것은 클라이언트 컴퓨터(182)에서 상기한 방식에서보다 훨씬 더 적은 데이터를 다운로드하고 더 적은 저장 공간을 사용함으로써 달성될 수 있다.
하나 이상의 실시예들에서, 클라이언트(182)는 관심 영역 1(252)의 고해상도 뷰로부터 관심 영역 2(254)로 이동할 수 있다. 양호하게는, 관심 영역 2(254)의 저해상도 표현에 대응하는 이미지 데이터는 이상에서 기술한 이미지(250)의 다운로드로부터 클라이언트 컴퓨터(182)에 이미 존재한다. 이 경우에, 클라이언트 컴퓨터(182)에서 관심 영역 2(254)의 고해상도 렌더링에 도달하기 위해서는, 관심 영역 2(254)에 대한 기존의 이미지 데이터를 관련된 고해상도 레벨을 기술하는 부가의 이미지 데이터로 보충하기만 하면 된다. 필요한 경우, 관심 영역 2(254)를 위해 다운로드될 부가의 이미지 데이터를 위한 데이터 저장 장치(186) 내의 공간 또는 다른 데이터 저장 공간을 만들기 위해 관심 영역 1(252)의 고해상도 레벨을 나타내는 이미지 데이터가 폐기 또는 덮어쓰기될 수 있다.
하나 이상의 실시예들에서, 이미지(250) 전체가 고해상도로 다운로드된 컴퓨터 상에서 맛볼 수 있는 뷰잉 경험(viewing experience)을 아주 비슷하게 시뮬레이트할 수 있는 뷰잉 경험을 디스플레이(184)를 보는 사람에게 제공하기 위해, 관심 영역 1(252)로부터 관심 영역 2(254)로의 뷰의 이동은 점진적으로 달성될 수 있다. 구체적으로는, 관심 영역 1(252)이 디스플레이되는 해상도 레벨이 이미지(250)의 대부분이 표현되는 해상도 레벨로 점진적으로 감소될 수 있다. 그 후에, 디스플레이(184) 상의 뷰는 관심 영역 1(252)과 관심 영역 2(254) 사이에서 저해상도 영역에 걸친 점진적인 패닝을 제공할 수 있다. 마지막으로, 관심 영역 2(254)에 도달하면, 디스플레이(184) 상의 뷰는 이미지(250)에 걸친 패닝을 완료한 후에 또는 이 패닝 동작의 후반부와 동시에 관심 영역 2(254)의 고해상도 렌더링으로 증가될 수 있다. 양호하게는, 상기한 프로세스의 끝에서, 관심 영역 2(254)는 클라이언트 컴퓨터(182)에 고해상도로 저장될 수 있고 이 고해상도로 디스플레이(184) 상에 디스 플레이될 수 있다.
도 55는 본 발명의 하나 이상의 실시예에 따른, 본 명세서에 기재된 기술의 측면들을 이용하는 "가상 책(virtual book)"(350)의 블록도이다. 가상 책(350)은 디스플레이(352), 역방향 캐쉬(backward cache)(354) 및 전방향 캐쉬(forward cache)(356)를 포함할 수 있다. 캐쉬(354, 356) 각각이 2개의 페이지를 저장하고 있는 것으로 도시되어 있지만, 임의의 수의 페이지가 캐쉬(354, 356) 중 어느 하나에 저장되어 있을 수 있다.
하나 이상의 실시예들에서, 가상 책(350)은 가상 책(350)의 특별한 경우를 위해 선택된 이미지 데이터를 제어가능한 해상도 레벨로 제공할 수 있는 기능을 이용한다. 가상 책(350)에서, 각각의 이미지는 가상 책(350)의 디스플레이(352) 내의 페이지일 수 있다. 디스플레이(352)는 도 53의 디스플레이(184)에 대응할 수 있거나 가상 책(350)의 특정의 특징에 대응(accommodate)하는 특수 목적의 디스플레이일 수 있다. 가상 책(350)은 도 53의 클라이언트 컴퓨터(182)에 대응할 수 있거나 책의 페이지들을 전달, 저장 및 디스플레이하는 것으로 거의 한정되어 있는 특수 목적의 컴퓨터일 수 있다.
하나 이상의 실시예들에서, 가상 책(350)은 전해상도로 저장 및/또는 디스플레이되는 단지 하나의 페이지만을 포함할 수 있으며, 디스플레이되는 페이지의 시퀀스에서 그보다 이전에 또 나중에 있는 다른 페이지들은 다양한 다른 해상도로 되어 있다.
하나 이상의 실시예들에서, 디스플레이(184) 상에 현재 디스플레이되는 페이 지, 즉 활성 페이지(active page)는 전해상도로 디스플레이되며, 이는 도 55의 "페이지 10"이다. 이러한 실시예들에서, 다른 페이지들은 페이지들의 활성 페이지로부터의 거리가 증가함에 따라 점진적으로 더 낮은 해상도로 디스플레이될 수 있다. 보다 구체적으로는, 각각의 페이지가 저장되는 해상도는 디스플레이(356)에 디스플레이되어 있는 활성 페이지의 해상도를, 2의 '각각의 저장된 페이지와 활성 페이지 간의 페이지 수와 같은 멱수' 제곱으로 나눈 것과 같을 수 있다. 따라서, 이 방식을 적용하면, 페이지 11(전방향 캐쉬(356) 내에 있음) 및 페이지 9(역방향 캐쉬(354) 내에 있음) 각각은 디스플레이(356)에서 활성 페이지가 차지하는 데이터 저장 공간의 양의 1/2을 차지할 수 있다. 이 방식을 계속하면, 페이지 12(전방향 캐쉬(356) 내에 있음) 및 페이지 8(역방향 캐쉬(354) 내에 있음) 각각은 디스플레이(356)에서 활성 페이지가 차지하는 데이터 저장 공간의 양의 1/3을 차지할 수 있다.
이상의 설명에서, 각각의 페이지에 할당된 데이터 저장 공간의 양이 그의 바로 이웃하는 페이지에 대해 2배 차이가 있지만, 당업자라면 2보다 크거나 그보다 작은 값이 나눗셈 인수(division factor)로서 이용될 수 있다는 것을 잘 알 것이다. 게다가, 활성 페이지의 데이터 저장 공간을 상수로 나누는 것 이외의 산술식이 캐쉬(354, 356)에 저장된 일련의 페이지에 데이터 저장 공간을 할당하는 것을 결정하는 데 이용될 수 있다.
하나 이상의 실시예들에서, 새로운 활성 페이지가 도 55에 디스플레이된 것으로 도시되어 있는 페이지 10 대신에 선택될 수 있다. 새로 선택된 페이지는 페 이지 10에 바로 인접한 페이지(페이지 9 또는 페이지 11 중 어느 하나)일 수 있지만, 꼭 그럴 필요는 없다. 즉, 관련 책(또는 개별 페이지를 갖는 임의의 다른 유형의 출판물)에서 1 페이지에서 마지막 페이지까지의 임의의 페이지가 새로운 활성 페이지일 수 있다.
하나 이상의 실시예들에서, 새로운 활성 페이지의 선택 시에, 양호하게는 현재의 활성 페이지와 새로운 활성 페이지 간의 전환(transition)이 수행된다. 새로운 활성 페이지로의 이 전환은 새로운 활성 페이지가 전해상도로 저장 및/또는 디스플레이될 수 있게 해주기 위해 새로운 활성 페이지에 대한 부가의 이미지 데이터를 획득하는 것을 포함할 수 있다. 새로운 활성 페이지가 "페이지 11"이고 이상에서 기술한 "인수가 2인(factor-of-two)" 실시예가 이용되는 경우, 페이지 11에 할당되는 데이터 저장 공간의 양은 양호하게는 2배가 된다. "인수가 2인" 실시예의 응용에 대해 계속하면, 페이지 10에 할당된 데이터 저장 공간은 양호하게는 페이지 10으로부터 활성 페이지인 페이지 11로의 전환의 일부로서 절반으로 된다. 전환후 페이지(post-transition page)(10)에 포함되어 있지 않은 페이지(10)의 활성 버전에 대한 데이터가 폐기(그 데이터를 덮어쓰기하는 것을 포함할 수 있음)될 수 있다. 그렇지만, 다른 대안으로서, 페이지 10에 대한 이러한 "잉여" 데이터(surplus data)는 다른 캐쉬에 저장될 수 있다. 페이지-10 잉여 데이터의 이러한 캐싱은, 페이지 10으로의 전환이 페이지 10으로부터의 전환 이후에 곧(즉, 타당한 수의 페이지 전환 이내에) 일어나는 경우, 효율성을 제공할 수 있다.
하나 이상의 실시예들에서, 페이지 10으로부터 페이지 11(또는 다른 새로운 활성 페이지)로의 전환은, 시각적으로 만족스럽고 및/또는 가상 책(350)의 사용자에게 물리적 페이지 전환을 연상시키는 경험을 제공하기 위해, 페이지 10으로부터의 점진적인 페이드-아웃(fade-out) 및 페이지 11의 점진적인 페이드-인(fade-in)을 포함할 수 있다. 선택에 따라서는, 가상 페이지 전환이 페이지의 물리적 넘김을 훨씬 더 연상시키는 것처럼 보이게 하기 위해, 이전의 활성 페이지를 접고 넘기는 것(folding and turning)을 보여주는 일련의 이미지가 제공될 수 있다.
도 56은 본 발명의 하나 이상의 실시예에 따른, 도 55의 가상 책의 3차원 버전을 나타낸 것이다. 도 56의 실시예는 부분 투명성(partial transparency)(거친 모서리(rough edge))을 위해 알파 채널(alpha channel)이 적색, 녹색 및 청색 컬러 성분에 부가하여 이미지 정보로서 저장될 수 있는 방법을 나타낸 것이다. 이상에서 컬러 성분들에 대해 기술되어 있지만, 편의상, 본 명세서에서는 도 56의 이미지의 흑색 및 백색 렌더링만이 제공된다.
하나 이상의 실시예들에서, 알파 채널을 지원하기 위해 하드웨어-가속 텍스처 매핑(hardware-accelerated texture mapping)이 이용될 수 있다. 가상 책의 2차원 또는 3차원 중 어느 하나와 관련하여 실시될 수 있는 다른 특징은 이미지의 동적 변형(dynamic deformation)(예를 들어, 도 56에 나타낸 바와 같이, 페이지가 넘어갈 때 이 책의 페이지를 구부리는 것)이다.
하나 이상의 휴대용 장치에서의 이미지 데이터 관리
이 섹션에서는, 점진적이고 상호작용적인 비쥬얼 컬렉션 전송(progressive and interactive visual collection transmission)에 기초한, 디지털 이미지를 저 장하고 그와 상호작용하는 다수의 메카니즘에 대해 기술한다. 본 발명의 하나 이상의 실시예들에서, 본 명세서에 기술된 방법들에 대한 변형은, 데스크 톱 컴퓨터, 모바일 장치 또는 기타 장치 상에서, 제2 모바일 장치 상에 저장된 대규모 이미지 컬렉션을 거의 순간적으로 보는 것, 이미지를 뷰잉하기 위해 모바일 장치의 로컬 메모리를 증대시키는 데 원격 저장 장치를 사용하는 것, 및 모바일 장치로부터 대규모 이미지 컬렉션을 브라우징하는 것을 가능하게 해준다. 본 발명의 하나 이상의 실시예들에 의해 가능하게 되는 여러가지 치환(permutation)은 통상적인 클라이언트/서버 이미징 및 컬렉션 표현 아키텍처에 의존할 수 있다.
본 발명의 하나 이상의 실시예들은 서버 상의 디지털 이미지 또는 다른 시각적 객체의 컬렉션을 제공하는 단계, 클라이언트와 상기 서버 간에 통신을 설정하는 단계, 및 상기 서버 상에 존재하는 시각적 객체의 컬렉션을 클라이언트가 효율적으로 다중-스케일 내비게이션(multi-scale navigation)하는 것을 가능하게 해주는 단계를 포함할 수 있는 방법을 제공할 수 있다.
본 명세서에서, 용어 "디지털 이미지 데이터"는 디지털 사진, 디지털 이미지, 시각적 문서(visual document) 또는 다른 형태의 비쥬얼 컨텐츠를 포함할 수 있다. 본 명세서에서, 용어 "이미지"는 일반적으로 용어 "디지털 이미지"에 대응하며, 이들 용어 중 어느 하나는 "디지털 사진"에 대응할 수 있다. 본 명세서에서, 용어 "클라이언트"는 일반적으로 용어 "클라이언트측" 및 용어 "클라이언트 장치"에 대응한다. 본 명세서에서, 용어 "휴대용 장치", "휴대용 카메라 장치", 및 "카메라 장치"는 일반적으로 디지털 이미지 캡처 장치(digital image capturing device) 및/또는 디지털 이미지 저장 장치를 말한다. 본 명세서에서, "디지털 이미지 캡처 장치"는 디지털 카메라, 카메라-지원 이동 전화(camera-enabled mobile phone)(카메라-지원 셀 전화라고 할 수 있음), 개인 휴대 단말기(PDA), 및/또는 디지털 정지 영상을 레코딩할 수 있는 디지털 비디오 레코더를 포함할 수 있지만, 이에 한정되는 것은 아니다. "디지털 이미지 캡처 장치"는 이미지 데이터를 직접 광학적으로 수신하여 레코딩함으로써 이러한 데이터를 수신할 수 있는 장치를 포함할 수 있으며, 또한 유선 또는 무선 인터넷이나 다른 네트워크 접속을 통해 이미지 데이터를 수신할 수 있는 장치도 포함할 수 있다.
본 명세서에 기술된 방법의 하나 이상의 실시예들은 시각적 문서일 수 있는 디지털 이미지 데이터의 컬렉션을 저장, 동기화, 브라우징 및 정리(organize)하는 문제를 해결하기 위해 다중-해상도 방식을 사용할 수 있다. 어떤 해상도(예를 들어, 1024x768 픽셀 = 0.75 메가픽셀, 2592x1944 픽셀 = 약 5 메가픽셀, 기타)로 컬러 픽셀의 어레이로서 표현될 수 있는 디지털 사진은 최종 사용자가, 그 중에서도 특히, 디지털 카메라, 카메라-지원 이동 전화, 및 디지털 비디오 레코더를 사용하여 다수 생성할 수 있는 통상적인 시각적 문서 유형이다.
본 명세서에 기술된 방법들 중 하나 이상은 도로 지도 또는 출원인 참조 문헌(미국 특허 출원 제11/082,556호)의 기타 벡터 데이터 또는 출원인 참조 문헌(미국 가특허출원 제60/617,485호)의 텍스트 데이터 등의 이미지 이외의 시각적 데이터 객체에도 적용될 수 있다. (상기 문헌 둘다는 본 문서의 처음에서 보다 상세히 언급되었으며, 양 문서는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된 다).
기존의 시스템의 사용자가 직면한 문제는 카메라 장치가 많은 수의 아마도 큰 시각적 문서를 신속하게 생성할 수 있다는 것이다. 그렇지만, 이들 장치는 일반적으로 이들 문서의 충분한 보관(archiving), 뷰잉(viewing) 또는 정리(organization)를 가능하게 해주기에 충분한 메모리 또는 시각적 브라우징 기능을 가지고 있지 않다.
카메라 또는 다른 휴대용 장치에 저장된 디지털 사진 또는 다른 디지털 이미지 데이터는 일반적으로 주기적으로 데스크톱 또는 노트북 컴퓨터로 다운로드되고, 더 많은 사진을 찍을 수 있도록 카메라의 메모리로부터 클리어되고, 데스크톱 또는 노트북 컴퓨터 상에서 정리 및/또는 뷰잉된다. 그 후에, 디지털 사진은 선택된 디지털 사진들을 하나 이상의 인터넷 사이트에 게시함으로써 친구들과 공유될 수 있다.
휴대용 장치에서 이미지 데이터를 관리하는 종래의 방법
종래의 방법을 사용하여 휴대용 장치에서 이미지 데이터를 관리할 때 이하의 단계들을 따를 수 있다. 첫째, 디지털 카메라 또는 다른 디지털 이미지 캡처 장치일 수 있는 모바일 장치는 사진을 찍는다. 이어서, 아마도 사진의 어떤 컬링(culling) 이후에, 그 사진은 카메라 사용자의 PC(퍼스널 컴퓨터)로 다운로드되고 카메라 장치로부터 삭제된다. 카메라 장치의 로컬 저장장치는 제한될 수 있고, 이 종래의 방법에서, PC에 안전하게 저장될 때까지 이미지를 일시적으로 보유할 뿐이다.
PC는 디지털 사진의 임의의 서브셋을 그의 메모리(예를 들어, 하드 디스크 드라이브 또는 다른 비휘발성 저장장치)에 영구적으로 보유할 수 있다. 사용자는 차례로 이들 이미지의 얼마간 더 컬링된 서브셋을 웹 사진 게시 서비스(web photo publishing service)가 소유하고 있을 수 있는 웹 서버로, 일반적으로 감소된 해상도로 업로드할 수 있다. 업로드된 이미지는 PC 또는 기타 장치 상에서 웹 브라우저를 사용하는 임의의 제3자가 또는 제한된 접근권을 갖는 그 사용자의 어떤 서브셋이 공개적으로 볼 수 있게 되어 있을 수 있다.
기존의 방법의 한계는 카메라 장치로부터 PC로의 긴 다운로드 시간을 포함할 수 있다. 또한, 보통 카메라 장치 상의 영구적 저장장치(persisten storage)의 관리가 좋지 않다. 카메라 장치는 일반적으로 소형 컬러 디스플레이를 가지며, 이 디스플레이 상에서 보는 사람은 이론적으로는 사람들이 자기 지갑에 넣어다니는 것과 동일한 유형의 영구적으로 저장된 이미지(가족 및 애완동물의 이미지 등) 및 호출자 또는 PDA(Personal Digital Assistant) 상의 다른 연락처와 연관된 사진을 볼 수 있다. 그렇지만, 기존의 카메라 장치에 있는 영구적 저장장치의 한계로 인해 상기한 작업을 달성하기가 어렵다.
게다가, 기존의 카메라 장치는 다른 한계가 있다. 기존의 카메라 장치에서, 카메라 장치에 저장된 이미지의 내비게이션은 일반적으로 조잡하고 어렵다. 기존의 카메라 장치에는, 카메라 장치에서 또는 PC에서 사용자에게 일관된 경험을 제공하는 이미지 컬렉션에 대한 단일화된 시각적 인터페이스가 없다. 기존의 카메라 장치는 다운로드가 필요하게 되기 이전에 그 장치 상에 저장될 수 있는 사진의 수 에 아주 제한적인 한계가 있는 경향이 있다. 따라서, 기존의 방법을 이용할 때, 제3자가 이미지를 이용가능하게 되는데 일반적으로 긴 일련의 단계들이 관여된다.
본 발명의 하나 이상의 실시예들에 따른 이미지 데이터 관리
도 57은 본 발명의 하나 이상의 실시예들에 따른, 하나 이상의 휴대용 장치(562, 572)와 하나 이상의 다른 컴퓨터 사이의 이미지 데이터 통신을 관리하는 시스템(550)의 블록도이다. 시스템(550)은 클라이언트측(560) 및 서버측(570)을 포함할 수 있다. 그렇지만, 대안의 실시예에서, 도 57에 도시된 장치 그룹들의 클라이언트 및 서버 상태가 역전될 수 있다.
하나 이상의 실시예들에서, 시스템(550)은 휴대용 장치 1(562), 휴대용 장치 2(572), 퍼스널 컴퓨터(182)(도 53의 클라이언트 컴퓨터(182)와 거의 동일할 수 있음), 서버(188)(도 53의 서버 컴퓨터(188)와 거의 동일할 수 있음) 및/또는 부가의 컴퓨터(574)를 포함할 수 있다. 양호하게는, 장치들(562, 572) 및 컴퓨터들(182, 188, 574) 각각은 메모리 및 하나 이상의 디스플레이를 포함하고 있다. 다른 대안으로서 또는 그에 부가하여, 도 57의 장치들 및 컴퓨터들은 메모리 및/또는 디스플레이와 통신을 하고 있을 수 있다.
도 57은 본 발명의 하나 이상의 실시예들에 따른, 사용가능한 여러가지 가능한 데이터 경로를 나타내고 있다. 하나 이상의 실시예들은 도 57에 도시된 데이터 경로 전부보다 적은 데이터 경로를 사용할 수 있다. 도 57에 도시된 이용가능한 데이터 경로는 공통적으로 이하의 특징들, 즉 1) 데이터 경로가 서버측(570)(이미지 데이터의 발신자) 및 클라이언트측(560)(이미지 데이터의 수신자)를 포함할 수 있음, 2) 양방향 데이터 경로(양단에 화살표를 갖는 라인으로 나타내어져 있음)는 이들 화살표가 가리키는 장치가 클라이언트 또는 서버 자격으로 서비스를 할 수 있음을 나타냄, 3) 이들 연결은 유선(hard-wired) 네트워크(예를 들어, USB(Universal Serial Bus), Firewire 또는 이더넷) 또는 무선(wireless) 네트워크(예를 들어, 근방의 장치의 경우, 블루투스 및 보다 원거리 접속의 경우, WiFi 또는 무선 원거리 네트워킹 프로토콜)를 이용할 수 있음, 및/또는 4) 도시된 접속이 애드-혹(ad-hoc)이거나 아닐 수 있음 중 하나 이상을 가질 수 있다.
하나 이상의 실시예들에서, 클라이언트측(560) 및 서버측(570) 둘다는 카메라 장치, 퍼스널 컴퓨터, 및 PDA(이에 한정되는 것은 아님)를 비롯한 하나 이상의 디지털 컴퓨팅 및/또는 저장 장치를 포함할 수 있다.
하나 이상의 실시예들에서, 클라이언트 장치(클라이언트)는 하나 이상의 디스플레이를 포함할 수 있다. 클라이언트는 출원인 참조 문헌 489/15P(발명의 명칭이 "많은 수의 아마도 큰 이미지를 갖는 동적의 원격 사진 앨범과 효율적으로 상호작용하는 방법(Method for Efficiently Interacting with Dynamic, Remote Photo Albums with large Numbers of Potentially Large Images)"인 미국 가특허출원 제60/619,118호, 이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에 기술된 효율적인 다중-해상도 브라우징 방법들 중 하나 이상을 사용하여 서버 상에 존재하는 문서들의 컬렉션을 브라우징할 수 있다. 이들 방법은 큰 이미지 또는 다른 시각적 문서의 대규모 컬렉션이 저대역폭 연결을 통해 효율적으로 내비게이션될 수 있게 해준다. 이러한 이미지 컬렉션의 줌잉, 패닝 및 동적 재배열이 인용된 문 헌에 기술되어 있다.
하나 이상의 실시예들에서, 이 내비게이션 방법의 특성들 중 하나는, 서버로부터 클라이언트로 정보가 전송됨에 따라 디스플레이 컨텐츠가 점진적으로 또렷하게(come into focus) 된다는 것이다. 이 정보가 또렷하게 되는 속도는 디스플레이 픽셀에 대한 연결 대역폭의 비에 의해 좌우될 수 있다. 새로운 컨텐츠가 눈에 보이게 되도록 사용자가 클라이언트측(560)에서 문서를 줌잉, 패닝 또는 재배열할 때, 이 컨텐츠는 다시 흐릿하게(blurred) 보이다가 또렷하게 된다.
가상 디스플레이
하나 이상의 실시예들에서, 클라이언트의 "디스플레이"는 반드시 물리적인 것이거나 최종-사용자에게 보이는 것일 필요는 없다. 하나 이상의 실시예들에서, 이 디스플레이는 "가상 디스플레이", 즉 지정된 해상도를 갖는 디스플레이의 추상적 모델(abstract model)일 수 있다. 이러한 "가상 디스플레이"는, 그 픽셀값이 화면에 렌더링되는지 여부에 상관없이, 클라이언트의 메모리에 픽셀값의 어레이로 표현될 수 있다. 가상 디스플레이는 적어도 부분적으로 하나 이상의 이미지를 기술하는 웨이블렛 데이터를 포함할 수 있다. 이 웨이블렛 데이터는 양호하게는 가능한 해상도의 범위에서 이미지를 표현할 수 있다. 하나 이상의 실시예들에서, 이 웨이블렛 데이터는 JPEG2000을 사용하여 이용되는 것에 대응할 수 있다. 하나 이상의 실시예들에서, 가상 디스플레이는 하나 이상의 이미지를 완전히 기술하기에 충분한 웨이블렛 데이터를 포함할 수 있다.
예를 들어, 장치가 지정된 해상도로 컬렉션 내의 이미지들 전부의 썸네일을 획득하는 것이 바람직한 경우, 이 장치는 적절한 크기의 "가상 디스플레이"를 생성하고, 서버와의 연결을 설정하며, 전체 컬렉션의 뷰를 요청할 수 있다. 이어서, 전체 썸네일 세트가 이 "가상 디스플레이"로 전송되어 렌더링된다. 관련 데이터 전부가 서버로부터 클라이언트로 전송되기 이전에 전송이 중단된 경우, 클라이언트의 가상 디스플레이는 아직 완전히 초점이 맞는 조건에 있는 썸네일 이미지 전부를 가지고 있지 않다. 그렇지만, 요청된 썸네일 이미지 전부는 양호하게는 이들 이미지의 눈에 보이는 버전을 화면 상에 렌더링하는 것을 가능하게 해주기에 충분한 해상도로 클라이언트의 가상 디스플레이 내에 저장된다. 상기한 방식으로 렌더링된 이미지는 일반적으로 이미지의 전송이 중단없이 종료된 경우보다 더 낮은 시각적 품질을 갖게 된다. 따라서, 불완전한 중단된 전송으로부터의 데이터를 사용하여 렌더링된 이미지에는 얼마간의 이미지 열화가 존재할 수 있다.
그럼에도 불구하고, 상기한 열화는 네트워크를 통해 일련의 썸네일을 전송하는 종래의 방법보다 나으며, 이 경우 각각의 썸네일의 완전한 이미지가 차례로 전송된다. 이러한 종래 방법에서는, 너무 조기에 연결이 중단됨으로써, 어떤 썸네일이 그 전체가(즉, 전해상도로) 이용가능하고, 다른 썸네일은 전체가 이용가능하게 되는 것은 아니다. 도 58은 이 차이를 나타낸 것이다. 도 58a는 기존의 방법을 이용하는 불완전한 이미지 데이터 다운로드의 결과를 나타낸 것이고, 도 58b는 본 발명의 하나 이상의 실시예들에 따른 불완전한 이미지 데이터 다운로드의 결과를 나타낸 것이다.
도 58a는 3개의 썸네일에 대한 데이터 전부가 수신되었고(정사각형으로 나타 냄), 나머지 9개의 썸네일이 전혀 수신되지 않은(X로 나타냄) 종래 기술의 시나리오를 나타낸 것이다. 도 58b는 본 발명의 하나 이상의 실시예를 이용하여 일어날 수 있는 상황을 나타낸 것으로서, 이 경우 12개 썸네일 전부가 양호하게는 보기에는 적합하지만, 완전한 중단되지 않은 데이터 전송의 종료 이후에 획득되는 해상도 이하일 가능성이 있는 어떤 해상도 레벨로 수신되었다.
하나 이상의 실시예들에서, 클라이언트는 최근에 본 비쥬얼 컨텐츠를 캐싱하는 클라이언트측 캐쉬를 가지고 있을 수 있다. 본 발명의 하나 이상의 실시예에서의 캐싱 필요성에 대해 표준 MRU(most-recently-used) 캐쉬가 이용될 수 있다. 그렇지만, 발명의 명칭이 "효율적인 데이터 캐쉬(Efficient Data Cache)"인 미국 특허 출원 제11/141,958호(고객 참조 문헌 489/10NP)(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에 기술된 캐쉬는 유익하게도 더욱 복잡한 클라이언트측 캐싱을 가능하게 해주는 데 이용될 수 있다. 어쨋든, 주어진 양의 클라이언트측 메모리가 캐쉬에 전용될 수 있다. 따라서, 다시 최근에 본 이미지로 내비게이션하는 것에 의해, 이 이미지 데이터가 서버로부터 재전송되어야만 하는 것보다는, 캐쉬에 저장된 이미지 데이터를 사용할 수 있게 된다.
클라이언트는 다수의 디스플레이를 가질 수 있다. 주어진 디스플레이는 물리적이거나 가상적인 것일 수 있다. 주어진 디스플레이는 사용자 입력에 직접 구동될 수 있거나, 컴퓨터(182) 등의 클라이언트 컴퓨터 내의 소프트웨어에 의해 프로그램적으로 구동될 수 있다. 디스플레이 전부의 픽셀 단위의 총 크기는 어떤 한계로 고정 또는 제한되어 있을 수 있으며, 이 한계는 비쥬얼 컨텐츠에 필요한 클라 이언트측 메모리의 최소량을 정의할 수 있다. 이 클라이언트측 메모리는 양호하게는 캐쉬 메모리에 할당된 저장 공간과 별개의 것이다.
물리적 디스플레이 및 가상 디스플레이 둘다를 포함하는 실시예에 대해 이하에 기술되어 있다. 양호하게는, 클라이언트 장치 내의 물리적 디스플레이는 사용자에게 보일 수 있으며, 디지털적으로 저장된 이미지의 컬렉션의 줌잉, 패닝, 내비게이션 및 재배열을 가능하게 해준다. 사용자는 또한 이 컬렉션으로부터 하나 이상의 이미지를 선택하여 이들을 사용자-선택 이미지를 저장하는 곳으로서 역할할 수 있는 "홀딩 펜(holding pen)"으로 전송할 수 있다. 이 홀딩 펜은 물리적 디스플레이 상에 어떻게든 해서 시각화될 수 있다. 이미지를 홀딩 펜에 추가하면 양호하게는 그 이미지가 사용자에게 보이지 않을 수 있는 가상 디스플레이 상에 배치된다. 이미지가 홀딩 펜에 추가될 때, 홀딩 펜을 나타내는 가상 디스플레이가 점진적으로 채워진다.
이 가상 디스플레이는 어떤 한계까지 크기(픽셀수로 측정됨)가 증가할 수 있으며, 그 이후에 그의 크기는 이 한계에서 고정된 채로 있을 수 있다. 가상 디스플레이는 이미지들 전부를 전해상도로 홀딩 펜에 디스플레이하기에는 너무 작을 수 있다. 이 경우에, 가상 디스플레이에 존재하는 이미지들에 필요한 데이터 저장 공간은 양호하게는 그 이미지들을 가상 디스플레이에 들어맞도록 하기 위해 필요에 따라 감소된다. 따라서, 화면에 나오지 않는 뷰(off-screen view)는 양호하게는 사용자가 눈에 보이는 이미지를 홀딩 펜에 넣을 때 이미지로 보충된다. 화면에 보이지 않는 뷰의 이러한 보충은 사용자에게 보이지 않게 일어날 수 있다.
브라우징하는 방법은 발명의 명칭이 "줌잉 사용자 인터페이스에서 정확하게 렌더링하는 시스템 및 방법(System and Method for Exact Rendering in a Zooming User Interface)"인 미국 특허 출원 제10/790,253호(출원인 참조 문서 489/2NP)에 기술되어 있으며, 이 문헌은 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다. 그 문서에 기술되어 있는, 정보가 클라이언트의 뷰에 기초하여 서버로부터 클라이언트로 전송되는 순서를 결정하는 방법은 다중 디스플레이 시나리오를 위해 수정될 수 있다. 489/2NP 문서는 시각적 정보가 타일로 분해될 수 있고 각각의 타일이 주어진 해상도의 공간 영역을 덮고 있음을 기술하고 있다. 그러면, 저해상도 타일은 큰 물리적 영역을 차지할 수 있는 반면, 고해상도 타일은 더 작은 물리적 영역을 차지할 수 있으며, 따라서 각각의 타일 내의 정보량은 거의 동일할 수 있다.
489/2NP 문서는 이하에서 기술되는 기준을 사용하여 타일을 정렬(order)하는 방법을 기술하고 있다. 한가지 기준은 타일 해상도 및 디스플레이 상에서의 타일 위치일 수 있다. 타일의 정렬(sort)은 사전 편찬식일 수 있으며, 따라서 저해상도 타일은 항상 고해상도 타일보다 이전에 오고, 공간상의 위치는 한 해상도 내에서의 순서를 해결하는 역할을 할 뿐이다. (사전 편찬식 정렬은 여기서 일반화된 튜플 의미로 언급되며, 예를 들어, 일련의 3원소쌍 {(1,2,3), (0,3,1), (4,0,0), (0,0,1), (0,3,2)}의 사전 편찬식 정렬은 (0,0,1), (0,3,1), (0,3,2), (1,2,3), (4,0,0)이다.)
다른 대안으로서, 사전 편찬식이 아닌 정렬 기준이 이용될 수 있다. 예를 들어, 복수의 특성의 선형 조합이 타일을 정렬하는 데 사용될 수 있다. 이러한 특성들은 해상도(로그 단위로 표현될 수 있음) 및 디스플레이의 중심으로부터의 타일의 거리를 포함할 수 있지만, 이에 한정되는 것은 아니다. 본 명세서에서, 용어 "정렬 키(sort key)"는 용어 "정렬 기준(sorting criterion)"에 대응한다.
이 실시예에서, 저해상도 타일은 고해상도 타일보다 우선하여 전송될 수 있고, 디스플레이 중심(center) 근방의 타일이 주변(periphery) 근방의 타일보다 우선하여 전송될 수 있지만, 이들 특성은 서로 트레이드오프될 수 있다.
양호하게는, 다중 디스플레이 시나리오에 대해 상기 방식을 적응시키기 위해 사소한 변경이 실시될 수 있다. 일 실시예에서, 디스플레이 수가 추가의 사전 편찬식 정렬 키로서 추가될 수 있다. 따라서, 임의의 타일이 제2 디스플레이와 관련하여 전송되기 이전에 제1 디스플레이가 (다른 정렬 키에 따라) 완전히 선명하게 될 수 있다.
다른 실시예에서, 디스플레이 수는 선형 조합에 포함시키기 위한 부가적인 변수일 수 있으며, 이에 의해 디스플레이 수가 해상도 및 디스플레이 중앙에의 근접성과 어떤 방식으로 트레이드오프될 수 있게 된다. 또다른 실시예에서, 디스플레이는 가상의 "공용 공간"에 공존할 수 있으며, 해상도 및 중앙에의 근접성 정렬 키가 이전과 같이 사용될 수 있다. "공용 공간"은, 다수의 디스플레이가 단일의 더 큰 디스플레이의 영역들인 것처럼, 다수의 디스플레이 간에 가상의 공간 관계를 설정하는 관념적인 공간이다. 이러한 가상의 공간 관계를 정의하는 것은 다중 디스플레이에서 타일에 우선순위를 부여하는 데 필요한 모든 파라미터를 결정한다.
도 59는 본 발명의 하나 이상의 실시예들에 따른, 물리적 디스플레이(화면)(742) 및 2개의 가상 디스플레이(744, 746)를 포함할 수 있는 "공용 공간"(740)의 블록도이다. 물리적 디스플레이(742)는 양호하게는 "공용 공간"(740)의 중앙에 통상의 크기로 있다. 가상 디스플레이 V1(744) 및 V2(746)는 양호하게는 측면으로 벗어나 있으며, V2는 양호하게는 축소되어 있고, 따라서 그의 픽셀들은 양호하게는 물리적 디스플레이의 픽셀의 선형 크기의 절반이다. 이것은, 순전히 사전 편찬식 타일 정렬 순서를 가정하면, V1(744)에서의 각각의 해상도 레벨의 컨텐츠가 양호하게는 물리적 디스플레이의 대응하는 해상도 이후에 서버로부터 클라이언트로 전송된다는 것을 의미한다(왜냐하면 V1이 물리적 디스플레이 상의 어떤 점보다 공간의 중앙으로부터 더 멀리 떨어져 있기 때문이다). V2(746)에서의 해상도는 물리적 디스플레이(742) 및 V1(744) 둘다에 대해 2배 세밀한 해상도의 타일 전부가 전송된 이후에 전송될 수 있다. 유의할 점은 "공용 공간"(740)이 임의의 실제의 더 큰 디스플레이 또는 메모리 주소 공간에 대응할 필요가 없다는 것이다. "공용 공간"(740)은 서로 다른 디스플레이들에 걸쳐 타일 우선순위 간의 관계를 설정하는 개념상의 편의 수단일 뿐이다.
분명하게도 많은 트레이드오프가 가능하다. 이들 트레이드오프는, 상기 사전 편찬식 예에서와 같이, 물리적 디스플레이를 선명하게 하는 것(refinement)에 최고 우선순위를 부여하는 결과를 갖는 반면, 가상 디스플레이(들)(744, 746)를 계속하여 선명하게 하기 위해 물리적 디스플레이를 또렷하게 하는 데 임의의 여분의 시간 및 대역폭의 사용이 필요하지 않다. 이들 트레이드오프는, 다른 대안으로서, 물리적 디스플레이가 완전히 또렷하지는 않지만 대체로 또렷하게 된 후에, 가상 디스플레이(들)를 선명하게 하기 시작할 수 있다. 물리적 디스플레이(742)가 대체로 또렷하게 된 후에, 물리적 디스플레이 및 가상 디스플레이(744, 746)는 동시에 선명하게 되기 위해 대역폭 자원을 공유할 수 있다.
컬렉션 내의 이미지가 JPEG2000 이미지인 경우, 주어진 이미지에 대한 데이터의 임의의 서브셋 자체가 JPEG2000 이미지 파일을 포함할 수 있다. 이미지의 내비게이션 동안에, 클라이언트는 이미지 데이터를 서버로부터 점진적으로 다운로드할 수 있으며, 그에 의해 클라이언트의 이미지 서브셋의 품질을 보완하여 클라이언트가 전체 이미지의 점점 더 정확한 근사치인 JPEG2000 파일을 생성할 수 있게 해준다.
클라이언트가 이미지 내의 어디든지 내비게이션한 경우, 또는 이미지 데이터 전부가 전송되었을 만큼 오랫동안 전체 이미지를 전해상도로 뷰잉한 경우, 클라이언트는 그 이미지에 대한 원래의 JPEG2000 이미지 전체를 재생성할 수 있다. 클라이언트가 큰 이미지의 단지 일부만을 가까이 줌인한 경우, 클라이언트는 여전히 JPEG2000 파일을 생성할 수 있지만, 클라이언트가 줌인한 곳을 제외한 모든 곳에서 디테일이 부족하다. JPEG2000의 이 특성은 다른 다중-해상도 문서 유형에도 확장될 수 있다. 클라이언트가 주어진 해상도를 넘어 결코 줌인하지 않는 경우, 그 주어진 해상도를 넘는 이미지 컨텐츠에 관하여 이용가능한 정보가 없게 된다. 이 경우에, 클라이언트에 의해 생성 및/또는 저장될 수 있는 JPEG2000 이미지의 버전은 그 이미지의 원래의 버전보다 낮은 전체 해상도를 가질 수 있다.
상기한 가상 디스플레이 시나리오의 한 응용은 카메라로부터의 이미지에 대한 긴 다운로드 시간의 문제를 개선시키는 것이다. 하나 이상의 실시예들에서, 카메라 또는 카메라-지원 모바일 장치는 서버로서 동작할 수 있으며, PC는 클라이언트로서 동작할 수 있다.
하나 이상의 실시예들에서, 시간이 오래 걸리는 모든 이미지를 PC로 일괄 다운로드하는 일을 시작하기 보다는, 카메라 및 PC가 연결될 때, PC가 신속하게 카메라 상의 이용가능한 일련의 이미지 전체를 브라우징할 수 있다. 내비게이션 동안에, 일군의 이미지가 선택되어 홀딩 펜에 배치될 수 있다. 유의할 점은 카메라 상의 모든 이미지가 PC로 전체적으로 다운로드되는 경우, 그 전송을 달성하는 데 필요한 총 시간이 종래 기술에서와 동일하다는 것이다. 그렇지만, 밀접하게 관련된 썸네일 전송 문제에서와 같이, 이 방법은 이하에 열거되고 기술되는 종래의 순차적인 이미지 다운로드보다 다수의 이점을 제공할 수 있다. 본 발명은 이하에 열거되는 특징들에 한정되지 않는다.
카메라 또는 기타 모바일 장치 상에서의 전체 이미지 세트의 이미지 다운로드 및 사용자 내비게이션은 대역폭 사용에 있어서 동시적이고 협력적일 수 있다(사실상, 내비게이션은 타일이 서버로부터 클라이언트로 전송되는 순서에 영향을 줄 뿐이다).
PC의 디스플레이가 모바일 장치의 디스플레이보다 큰 경우, 결정하기 이전에 전체 세트를 다운로드하는 지연을 야기하지 않고서, 어느 이미지를 다운로드할지, 어느 것을 모바일 장치 상에 남겨놓을지, 및 어느 것을 폐기할지에 관하여 더 나은 선택을 할 수 있다.
PC 상에서 또 모바일 장치(이도 역시 디스플레이를 갖는 것으로 가정함) 상에서 각각 브라우징을 하는 경험은 양호하게는 단순하고 경험적으로 유사하며, 그에 의해 사용성(usability)을 향상시킨다.
홀딩 펜에서 이미지의 저해상도 버전이 요망되는 경우, 양호하게는 가상 디스플레이 상에서의 항목의 크기를 감소시킴으로써 다운로드 데이터의 디테일을 적절히 제한하는 것이 간단하다. 유의할 점은 이와 같이 이미지 크기를 감소시키는 것이 다운로드 속도를 더 많이(즉, 폐기된 해상도 레벨마다 4배 만큼) 높이기도 하고 PC 상에 더 적은 공간을 필요로 하기도 한다는 것이다.
원하는 바에 따라 가상 디스플레이의 크기를 제한하여 그에 있는 이미지의 수를 감소시킴으로써, PC 상의 사진에 할당된 메모리 분량이 제한될 수 있다. 또한, 서로 다른 사진에 서로 다른 제약조건이 주어질 수 있고, 따라서 최근성 또는 하나 이상의 다른 기준에 기초하여 공간이 할당될 수 있다.
하나 이상의 실시예들에서, 연결이 너무 일찍 단절되면, 다운로드 동작으로부터 몇몇 이미지들을 완전히 제거하는 것이 아니라, 다운로드될 이미지들 중 일부 또는 그 전부의 품질을 저하시킨다. (유의할 점은, 이미지에 대한 데이터 분량의 대부분이 아주 고해상도 디테일이고, 그의 일부가 카메라 노이즈이며, 그 전부가 보다 조악한 이미지 구조보다 통상적인 뷰잉에 덜 중요하다는 것이다. 따라서, 모든 이미지에 대한 저해상도 이미지 데이터가 완전히 전송된 이후에 모든 이미지에 대한 고해상도 이미지 데이터의 전송을 수행하는 것이 바람직하다.) 또한, 이미지 데이터의 복합 우선순위 부여(hybrid prioritization)도 가능하며, 예를 들어, 제2 세트를 썸네일 디테일을 넘어 계속 선명하게 하는 것보다 먼저 사진들의 서브셋을 완전히 다운로드하는 것이 낫다.
하나 이상의 실시예들에서, 본 명세서에 기술된 하나 이상의 방법들은 간헐적인 접속에 탄력적인데, 그 이유는 이미 수신된 비쥬얼 데이터가 있다면 그것으로라도 브라우징 및 상호작용을 가능하게 해주면서 임의의 JPEG2000 객체가 언제라도 계속하여 부가 정보로 보강될 수 있기 때문이다.
a) 물리적 디스플레이 상에서 항목의 크기를 감소시키는 것, 및 b) PC 상에서 사진에 할당된 메모리량을 제한하는 것에 대한 상기 언급과 관련하여, 유의할 점은 일반적인 홈 사용자는 그의 이미지 중 어느 것도 (이러한 이미지의 최초 컬링 이후에) 폐기하고자 하지 않을 수 있다는 것이다. 이러한 사용자가 그의 PC에 계속하여 충분한 저장 장치를 추가하는 경우, 물론 어떤 컨텐츠도 폐기할 필요가 없게 된다. 저장 장치의 추가는 그 자체로 가상 디스플레이 최대 크기를 증가시킬 수 있다. 따라서, 충분히 큰 가상 디스플레이 크기가 생성될 수 있는 경우(즉, 이용가능한 클라이언트측 저장장치가 충분히 있는 경우), 상기 (a) 및 (b)의 특징은 빠질 수 있다.
"홀딩 펜" 이미지의 다운로드가 언제 완료되는지가 클라이언트측의 사용자에게 불분명할 수 있기 때문에, 완료에 대한 어떤 형태의 시각적 표시가 요망된다. 예로서, 이미지의 다운로드가 완료될 때 체크 표시 또는 녹색 점이 이미지 옆에 나타날 수 있다. "홀딩 펜" 내의 모든 이미지가 녹색 점을 포함할 때, 손실 없이 연 결이 단절될 수 있다.
클라이언트 컴퓨터(PC일 수 있음)를 사용하여 카메라가 그의 이미지 중 일부를 폐기하도록 요청하는 등의 동작은 출원인 참조 문서 489/15P에서 생각되는 것을 넘어 클라이언트로부터 서버로의 어떤 부가적인 통신으로부터 이득을 볼 수 있다. 하나 이상의 다른 실시예들에서, 클라이언트측은 또한 서버측(디지털 카메라 또는 이동 전화 등의 모바일 장치일 수 있음)에 그 자신의 클라이언트측을 기동시키도록 지시하고 PC로부터 컨텐츠를 수신하기 위해 그 자신의 뷰를 생성할 수 있다.
이것은 월드 와이드 웹과 관련하여 개발된 "푸시(push)" 방법과 유사하다. PC는 컨텐츠의 카메라/이동 전화의 "뷰"를 PC 상에 렌더링할 수 있으며, 따라서 (예를 들어) PC로부터 카메라로 업로드된 이미지에 대해 상기한 녹색 완료점을 디스플레이한다. 도 57의 상호 화살표(reciprocal arrow) 각각은 "푸시" 또는 "풀(pull)" 구성(arrangement) 중 어느 하나를 사용하여 구현될 수 있다. 구체적으로는, 뷰포트 설정(viewport setting), 구성, 및 다른 내비게이션 설정(navigation setting)이 클라이언트측(560)으로부터("풀") 또는 서버측(570)으로부터("푸시") 제어될 수 있다. 하나의 장치와 상호작용하는 사용자는 다른 장치에 상호 연결될 수 있으며, 그에 의해 "풀" 및 "푸시" 둘다를 동시에 행할 수 있다.
이제부터 도 57에 나타낸 잠재적인 클라이언트-서버 연결을 열거하고 이들이 어떻게 사용될 수 있는지 및 이들이 왜 유용한지에 대해 간략히 기술한다.
카메라 또는 카메라-지원 이동 전화일 수 있는 모바일 장치(562)는 사용자의 PC(퍼스널 컴퓨터)(182)에 컨텐츠를 서비스할 수 있다. 이 연결은 일반적으로 USB 케이블 또는 블루투스 애드-혹 무선 네트워크를 통해 행해질 수 있다. 이점들은 앞서 기술하였다.
PC(182)는 컨텐츠를 다시 모바일 장치(562)로 서비스할 수 있다. 이것은, 그 중에서도 특히, 이하의 응용에 유용할 수 있다.
"지갑 사진"은, 이들 사진이 모바일 장치에 의해 찍힌 것이 아닐지라도, PC로부터 카메라 또는 이동 전화로 전송될 수 있다.
PC는 디스플레이를 갖지 않는 가전 기기일 수 있으며, 그러면 모바일 장치는 보관된 비쥬얼 자료에 대한 1차 시각 인터페이스(primary visual interface)로서 사용될 수 있다. 이와 관련하여, 모바일 장치는 디지털 카메라, 카메라-지원 셀 전화, PDA, 또는 디스플레이를 갖는 모바일 태블릿 PC일 수 있다.
제1 모바일 장치가 다른 모바일 장치("게스트")에 직접 연결될 수 있거나 그와 애드-혹 네트워크를 형성할 수 있다. 그리고 나서, 이 2개의 모바일 장치는 서로의 사진을 보고 공유할 수 있다.
PC는 이미지를 (푸시를 통해) 원격 서버로 업로드할 수 있다. 이 서버는 사진 공유 서비스일 수 있으며, 따라서 물리적 디스플레이 상에서의 항목의 크기를 감소시키고 PC 상에서 사진에 할당된 메모리량을 제한하는 상기 프로세스에서 생각되는 종류의 공간 제약을 구현할 수 있다. 그 다음에, 원격 서버는 그의 컬렉션을 하나 이상의 부가의 PC에 서비스할 수 있다. 일반적으로, 이것은 광대역 연결이다. 그렇지만, 다른 연결 유형이 이용될 수 있다.
원격 서버는 또한 모바일 장치 사용자에게 컬렉션을 서비스할 수 있다. 일 반적으로, 이것은 모바일 무선 원거리 통신망이다.
모바일 장치는 "푸시"를 통해(즉, 모바일 장치의 제어 하에서) 원격 서버로 그의 이미지를 업로드할 수 있다. 하나 이상의 실시예들에서, 업로드는 자동적일 수 있으며, 그에 의해 모바일 장치가 컨텐츠를 서버로 자유롭게 전송하고 전송이 완료될 때 그를 로컬적으로 삭제함으로써 그의 겉보기 저장 공간(apparent storage space)을 투명하게 확장할 수 있게 해준다.
상기 마지막 2개의 항목과 관련하여, 유의할 점은 모바일 장치(562) 상에 로컬 캐싱하는 것에 의해, 로컬 저장장치가 제한되어 있더라도, 모바일 장치(562)가 로컬 저장장치만을 사용하여 아주 큰 썸네일 컬렉션을 브라우징하는 것을 지원할 수 있다는 것이다. 관련 정보가 여전히 모바일 장치의 로컬 캐쉬에 있는 경우, 최근에 본 이미지의 디테일을 줌인하는 것도 가능할 수 있다.
디테일이 원격 서버에만 있는 이미지를 줌인하면 흐릿하고 디테일 없는(un-detailed) 이미지가 얻어질 수 있다. 그렇지만, 모바일 장치가 원격 서버(188)를 포함하는 네트워크 상에 있는 경우, 점점 더 많은 디테일 있는(detailed) 이미지 데이터가 모바일 장치(562)로 다운로드됨에 따라, 흐릿한 이미지가 점진적으로 더 선명하게 될 수 있다. 모바일 장치가 부가의 이미지 데이터를 공급할 수 있는 네트워크에 연결되어 있지 않은 경우, 그 이미지는 초기 썸네일 이미지에서 이용가능한 것보다 더 많은 디테일을 제공받을 수 없다.
저해상도 이미지의 몽타쥬
본 발명의 하나 이상의 실시예들은 다양한 응용에 대해 제어가능한 해상도 레벨로 선택된 이미지 및/또는 이미지 영역의 다운로드를 구현하기 위해 다양한 구성에서 사용될 수 있는 사전 계산된 단계들 및 상호작용적 렌더링 알고리즘을 정의할 수 있다. 이들 응용(관심의 영역에 초점을 맞추는 것, 가상 책, 기타 등등) 중 다수는 이미지들 "전체(universe)"와의 사용자 상호작용을 수반할 수 있다.
하나 이상의 실시예들에서, 사전 계산을 위한 시작점은 따라서 개개의 이미지를 참조하는 파일 이름, URL, 또는 기타 문자열의 리스트일 수 있다. 사용자가 이들 이미지 전부를 한꺼번에 보기에 충분하게 멀리 줌아웃한 경우, 클라이언트 또는 서버 중 어느 하나가 이미지 파일들 전부를 순회하는 것은 불가능한데, 그 이유는 아주 많은 수의 이미지가 있을 수 있기 때문이다. 예를 들어, 개개의 이미지가 화면 상에서 2x2=4개 픽셀을 차지하는 상황에서, 수만개 또는 수십만개의 이미지가 눈에 보일 수 있다. 이들 이미지가 효율적인 저해상도 액세스를 지원하더라도, 단지 100,000개 파일을 열고 닫는 일은 많은 오버헤드를 수반하며, 상호작용적 타임스케일로 달성한다는 것은 불가능할 수 있다. 따라서, 본 명세서에서 "몽타쥬"라고 하는 이들 이미지의 저해상도 버전의 캐싱된 표현을 사용하는 것이 바람직할 수 있다.
하나 이상의 실시예들에서, 몽타쥬는, 도 60에 나타낸 바와 같이, 저해상도로 렌더링되고 직사각형 영역 내에 효율적으로 패킹된, 이미지들 전부의 모자이크(mosaic) 또는 콜라주(collage)일 수 있다. 몽타쥬 이미지 파일에 내장되거나 개별적으로 저장될 수 있는 보조적인 메타데이터는 몽타쥬 이미지 상의 직사각형 영역을 특정의 이미지 파일과 동일시할 수 있다.
일 실시예에서, 몽타쥬 이미지 자체는 줌잉 및 패닝 인터페이스를 사용하여 내비게이션될 수 있다. 사용자가 몽타쥬 내의 하나 이상의 이미지의 몽타쥬 버전에서 이용가능한 해상도를 다 써버릴 정도로 너무 줌인하는 경우, 그 이미지에 대한 메타데이터는 클라이언트에게 하나 이상의 개별 이미지 파일을 참조하게 할 수 있고, 클라이언트는 더 높은 해상도로 이미지를 렌더링하기 위해 이들 이미지 파일로부터의 이미지를 사용할 수 있다.
하나 이상의 실시예들에서, 본 명세서에서 이미지의 "세트"라고 할 수 있는 단지 적은 수의 이미지만이 동시에 보이도록 픽셀 단위의 몽타쥬의 전체 크기가 선택될 수 있다. 따라서, 임의의 주어진 때에 이 적은 수의 이미지보다 더 많은 이미지에 고해상도로 액세스하는 일이 양호하게는 필요하지 않다. 그 다음의 줌잉 및 패닝 동안에, 임의의 주어진 때에 열려 있는 고해상도 이미지의 수를 제한하기 위해 필요에 따라 이미지 스트림이 열리고 닫힐 수 있다.
고해상도의 많은 이미지를 내비게이션하는 상기 방법은 이하의 한계에 부딪힌다. 즉, 몽타쥬 레이아웃이 양호하게는 패킹 효율성을 위해 설계되어 있지만 사용자가 화면 상에 이미지들의 다른 배열을 원할 수 있다. 게다가, 사용자는 화면 상에서 이미지의 레이아웃을 동적으로 재배열할 수 있기를 원할 수 있다.
하나 이상의 실시예들에서, 이러한 재배열을 가능하게 해주기 위해, 우리는, 소프트웨어로 구현될 수 있지만 일반적으로 최신 퍼스널 컴퓨터 상에서 하드웨어-가속되는, "텍스처 매핑(texture mapping)"이라고 하는 그래픽 렌더링 기술을 사용할 수 있다. 텍스처 매핑은 "텍스처", 즉 소스 이미지의 일부분이 디스플레이 상 에 드로잉될 수 있게 해주며, 선택에 따라서는, 이미지를 크기 변경(rescale)하고, 회전시키며 및/또는 3차원 투시 변환(perspective transform)을 수행하는 것을 가능하게 해준다. 컬러 보정 또는 변경, 전체적 또는 부분적 투명도, 조명, 폐색(occlusion) 또는 좌표 재매핑을 비롯한 다른 하드웨어-가속 변환이 종종 지원된다. 몽타쥬의 저해상도 버전은 "텍스처"로 사용될 수 있으며, 따라서, 도 61에 나타낸 바와 같이, 사용자가 줌아웃할 때, 몽타쥬 내의 개별 이미지는 어쨋든 동적으로 재매핑될 수 있다. 2개 이상의 텍스처 맵이 사용될 수 있으며, 이 경우에 각각의 텍스처 맵은 이미지들의 서브셋을 포함하는 몽타쥬일 수 있다. 배열들 간의 전환은 애니메이션 처리될 수 있거나 되지 않을 수 있다. 유의할 점은 사용자가 줌인하는 동안에 재배열이 행해질 수 있지만, 재배열로 인해 이전에 화면에 나오지 않았던 이미지의 새로운 줌인된 뷰가 생길 수 있기 때문에, 이 새로운 이미지가 처음에는 아주 흐릿할 수 있다는 것이다.
다른 실시예에서, 텍스처 매핑 기술은 이미지들의 동적 재배열 동안에만 사용될 수 있다. 이미지 재배열이 정적일 때, 화면 상에서 고선명 재배열된 몽타쥬의 전부 또는 일부를 조립하는 데 소프트웨어 합성(software compositing)이 사용될 수 있다. 이 소프트웨어 합성 방법은 미국 특허 출원 제10/790,253호(출원인 참조 문서 489/2NP, 본 명세서에서 이전에 상세히 언급함)에 기술된 다중 해상도 렌더링 기술과 함께 특히 중요하다. 이 방법은 원래의 몽타쥬의 이미지를 재배열함으로써 사실상 새로운 "디스플레이 몽타쥬"를 생성할 수 있다.
텍스처 매핑은 또한 고해상도 이미지를 디스플레이하는 데도 사용될 수 있지 만, 이 경우에, 다수의 이미지의 몽타쥬를 포함하는 텍스처를 사용하기 보다는, 개개의 이미지의 타일을 포함하는 텍스처가 사용된다. 이 기술은 또한 미국 특허 출원 제10/790,253호(출원인 참조 문서 489/2NP)에도 기술되어 있다.
하나 이상의 실시예들에서, 몽타쥬 재배열은 텍스처 매핑에 의지하지 않고 이미지들의 재구성을 지원하는 데 사용될 수 있다.
하나 이상의 다른 실시예들에서, 텍스처 매핑, 소프트웨어 렌더링 또는 이 둘의 임의의 조합이 1차원 평면 상에서가 아니라 3차원으로 이미지를 렌더링하는 데 사용될 수 있다. 3차원에서의 동적 재배열도 가능하다. 3차원 응용은 가상 갤러리 또는 다른 탐색(walk-through) 환경은 물론 가상 책도 포함할 수 있다. 가상 책은 본 명세서에 기술되어 있고 또 미국 가특허출원 제60/619,053호(여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에 더 한층 기술되어 있다.
도 62는 본 발명의 하나 이상의 실시예에서 사용하기에 적합한 컴퓨팅 시스템(1000)의 블록도이다. 하나 이상의 실시예들에서, 중앙 처리 장치(CPU)(1002)는 버스(1004)와 연결될 수 있다. 그에 부가하여, 버스(1004)는 랜덤 액세스 메모리(RAM)(1006), 판독 전용 메모리(ROM)(1008), 입/출력(I/O) 어댑터(1010), 통신 어댑터(1022), 사용자 인터페이스 어댑터(1006), 및 디스플레이 어댑터(1018)에도 연결될 수 있다.
하나 이상의 실시예들에서, RAM(1006) 및/또는 ROM(1008)은 사용자 데이터, 시스템 데이터 및/또는 프로그램을 보유할 수 있다. I/O 어댑터(1010)는 하드 드라이브(1012), CD-ROM(도시 생략), 또는 기타 대용량 저장 장치 등의 저장 장치를 컴퓨팅 시스템(1000)에 연결시킬 수 있다. 통신 어댑터(1022)는 컴퓨팅 시스템(1000)을 근거리 통신망, 원거리 통신망 또는 인터넷망(1024)에 연결시킬 수 있다. 사용자 인터페이스 어댑터(1016)는 키보드(1026) 및/또는 포인팅 장치(1014) 등의 사용자 입력 장치를 컴퓨팅 시스템(1000)에 연결시킬 수 있다. 게다가, 디스플레이 장치(1020) 상에 디스플레이하는 것을 제어하기 위해 디스플레이 어댑터(1018)가 CPU(1002)에 의해 구동될 수 있다. CPU(1002)는 임의의 범용 CPU일 수 있다. 유의할 점은 이 문서에서 지금까지 기술된 및/또는 나중에 기술되는 방법 및 장치가 표준 디지털 회로, 아날로그 회로, 소프트웨어 및/또는 펌웨어 프로그램을 실행하는 동작을 하는 공지의 프로세서들 중 임의의 프로세서, 프로그램가능 디지털 장치 또는 시스템, 프로그램가능 어레이 로직(PAL) 장치, 또는 상기한 것들의 임의의 조합 등의 공지의 기술들 중 임의의 기술을 이용하여 달성될 수 있다는 것이다. 본 발명의 하나 이상의 실시예들은 또한 적합한 저장 매체에 저장하여 처리 장치에 의해 실행하기 위한 소프트웨어 프로그램으로 구현될 수 있다.
본 발명이 본 명세서에서 특정의 실시예들을 참조하여 기술되어 있지만, 이들 실시예가 본 발명의 원리 및 응용을 예시하는 것에 불과하다는 것을 잘 알 것이다. 따라서, 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위를 벗어나지 않고서 예시적인 실시예들에 수많은 수정이 행해질 수 있고 또 다른 구성들이 안출될 수 있다는 것을 잘 알 것이다.
<발명의 명칭>
상거래를 개선하기 위해 이미지 내비게이션 기술을 이용하는 방법 및 장치{METHOD AND APPARATUS FOR EMPLOYING IMAGE NAVIGATION TECHNIQUES TO ADVANCE COMMERCE}
<기술 분야>
본 발명은, 예를 들어, 제품 및/또는 서비스를 광고 및 구매하기 위한 새로운 환경을 제공함으로써, 상거래를 개선하기 위해 이미지 내비게이션 기술을 적용하는 방법 및 장치에 관한 것이다.
<배경 기술>
디지털 지도 제작 및 지구 공간 응용은 급속히 발전하고 있는 산업이다. 이들은 많은 다른 시장의 업체로부터, 즉 Federal Express, 의류점 및 패스트 푸드 체인과 같은 지원자들로부터 급속히 증가하는 투자를 유치하고 있다. 과거 수년 동안, 지도 제작은, 검색 엔진, 웹-기반 이메일 및 결혼 중매(matchmaking)와 함께, 상당한 관심을 유발하는 웹 상의 아주 적은 소프트웨어 애플리케이션(소위 "킬러 애플리케이션") 중 하나가 되었다.
지도 제작이 원칙적으로 고도로 시각적이어야만 하지만, 현재 최종 사용자에 대한 그의 효용성은 거의 완전히 주행 방향을 발생하는 데 있다. 언제나 주행 방향을 수반하는 지도 이미지는 보통 저급하게 렌더링되고, 정보를 거의 전달하지 않으며, 편리하게 내비게이션될 수 없어, 분식 회계(window dressing)와 별반 다를 게 없다. 패닝 또는 줌잉 컨트롤을 클릭하면 긴 지연이 있고, 그 지연 동안에 웹 브라우저는 응답하지 않게 되며, 그 다음에 이전의 이미지와 시각적 관계를 거의 갖지 않는 새로운 지도 이미지가 나타난다. 원칙적으로 컴퓨터는 우리가 종이 지도를 내비게이션하는 것보다 더 효과적으로 디지털 지도를 내비게이션할 수 있어야만 하지만, 실제로는 컴퓨터에 의한 지도의 시각적 내비게이션은 여전히 형편없다.
<발명의 상세한 설명>
본 발명은, 저대역폭 연결을 통해서도, 지도(또는 임의의 다른 이미지)의 연속적이고 신속한 시각적 내비게이션을 가능하게 해주는 새로운 기술과 관련하여 이용될 수 있게 해주기 위한 것이다. 이 기술은 패닝 및 줌잉 환경에서 지도를 연속적으로 렌더링하는 새로운 기법에 관한 것이다. 이는 선 및 점 렌더링에 프랙탈 기하학(fractal geometry)를 적용하며, 도로(1차원 곡선) 및 위치를 표시하는 점(0차원 점)의 네트워크가 모든 스케일로 드로잉될 수 있게 해주어, 지도의 "시각적 밀도(visual density)"를 여전히 제한된 채로 유지하면서, 연속적인 물리적 줌잉의 착각을 유발한다. 관련 기법들이 텍스트 라벨 및 아이콘 컨텐츠에 적용된다. 이 새로운 렌더링 방식은 디지털 도로 드로잉을 대표하는 부정적 효과(adverse effect)인, 줌잉 동안에 작은 도로의 갑작스런 나타남 또는 사라짐 등의 효과를 방지한다. 이 내비게이션 기술의 상세는, 본 출원과 동일자로 출원된 발명의 명칭이 "이미지를 내비게이션하는 방법 및 장치(METHODS AND APPARATUS FOR NAVIGATING AN IMAGE)"인 미국 특허 출원 제10/803,010호(대리인 문서 번호 489/9, 이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에서 찾아볼 수 있다. 이 내비게이션 기술은 본 명세서에서 "Voss"라고 지칭될 수 있다.
Voss 기술의 사용은 인터넷 지도 제작을 위한 다수의 새롭고 상업적으로 귀중한 비지니스 모델을 가능하게 해준다. 이들 모델은 Yahoo! Maps 및 MapQuest와 같은 업체의 증명된 성공을 그의 출발점으로 삼으며, 이 둘 모두는 지리적 광고(geographical advertising)로부터 수익을 발생한다. 그렇지만, 우리의 방식은 광고를 훨씬 뛰어 넘어, 업체 및 최종 사용자 둘다에 상당한 가치를 부가하기 위해 새로운 기술을 이용한다. 기본적인 생각은 업체 및 사람들이 줌잉가능한 컨텐츠를 내장할 수 있는, 통상적으로는 그의 물리적 주소에 있는, 지도 상의 "부동산"을 임대할 수 있게 해주는 것이다. 이 컨텐츠는 대축척 지도 상에서 볼 때 아이콘 형태(즉, 맥도날드의 금색 아치)로 나타날 수 있지만, 가까이 볼 때는 임의의 종류의 웹-유사 컨텐츠로 원만하고 연속적으로 분해된다. 우리의 지도 제작 애플리케이션을 동적 사용자 컨텐츠 및 업체/거주지 주소 데이터와 통합함으로써, 우리는 일종의 "지리적 월드 와이드 웹"을 가능하게 해줄 수 있다.
소비자와 소매자 둘다에 대한 대규모 수평적 시장(horizontal market)에 부가하여, 내비게이션 시스템, 셀 절화 및 PDA, 부동산 임대 또는 판매, 분류 광고(classified advertising), 및 기타 등등의 기존의 지리 정보 서비스(geographical information service, GIS) 제공자 및 관련 산업과의 상승 작용이 일어나게 된다. 이들 영역에서의 가능한 사업 관계는 기술 라이센싱, 전략적 파트너쉽, 및 직접 수직 판매(direct vertical sales)를 포함한다.
본 발명의 새로운 내비게이션 기술의 기능들은 상기한 미국 특허 출원에 상세히 기재되어 있다. 이 출원에서, 기본 기술의 가장 관련있는 측면은 다음과 같 다.
- 지각적 연속성 및 개선된 대역폭 관리를 갖는 2D 세계의 원만한 줌잉 및 패닝
- 비쥬얼 컨텐츠가 무제한으로 내포될 수 있게 해주는 무한-정밀도 좌표계
- 많은 서로 다른 서버 상에 저장된 컨텐츠를 내포할 수 있으며, 따라서 공간적 제한(spatial containment)이 하이퍼링크와 동등함.
후자의 2개 요소와 관련하여, 부가적인 상세는 2003년 5월 30일자로 출원된 발명의 명칭이 "줌잉 사용자 인터페이스에서의 무한 정밀도 좌표의 시스템 및 방법(SYSTEM AND METHOD FOR INFINITE PRECISION COORDINATES IN A ZOOMING USER INTERFACE)"인 미국 가특허출원 제60/474,313호(이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함됨)에서 찾아볼 수 있다.
지도는 다수의 정보 계층으로 이루어져 있으며, 궁극적으로 Voss 지도 애플리케이션은 사용자가 이들 계층 대부분을 온/오프할 수 있게 해주어, 지도가 더욱 커스터마이즈가능하게 된다. 계층들은 이하의 것들을 포함한다.
1. 도로
2. 수로
3. 행정 경계
4. 항공 사진-기반의 (지도를 완전히 타일화하도록 디지털적으로 "워핑 해제된(unwarped)" 항공 사진)
5. 지형,
6. 공공 기반 시설 위치, 예를 들어, 학교, 교회, 공중 전화, 화장실
7. 상기한 것들 각각에 대한 라벨
8. 운량(cloud cover), 강수량 및 기타 기상 조건
9. 교통 상황
10. 광고, 및
11. 개인 및 상업 사용자 컨텐츠, 기타
일반적인 사용자의 관점에서 볼 때 가장 두드러진 계층은 1-4 및 7이다. 이 특허 출원에서 특별히 관심을 갖는 광고/사용자 컨텐츠 계층(10, 11)도 역시 상당히 관심을 끈다. 지도 계층들 중 다수(1-7을 포함함)는 미국 연방 정부로부터 고품질 저가격으로 이미 이용가능하다. 8 및 9(기타)와 같은 부가가치 계층은 개발 중에 또는 배포 후에도 언제나 이용가능하게 될 수 있다.
몇몇 회사가 일방 통행 도로, 고속 도로 상의 진입 및 진출 램프, 주행 방향을 발생하는 데는 중요하지만 시각적 지형에는 중요하지 않는 다른 특징을 나타내는 주석을 갖는 향상된 도로 데이터를 제공한다. 우리의 응용을 위해 제공하는 가장 관련있는 상업적 지리 정보 서비스(GIS)는 도로 주소를 정확한 위도/경도 좌표로 변환하는 것을 가능하게 해주는 지오코딩(geocoding)이다. 지오코딩 서비스를 받는 것이 터무니없지 않은 것으로 판정되었다.
지도 데이터에 부가하여, 국가 옐로우 페이지(Yellow Page)/화이트 페이지(White Page) 데이터도 역시 본 발명을 구현하는 데 귀중할 수 있다. 이 정보는 또한 사용 허가(license)될 수 있다. 국가 옐로우 페이지/화이트 페이지 데이터는 업체에 대한 지리적 사용자 검색 또는 필터링(예를 들어, 맨하탄에 있는 모든 레스토랑을 하이라이트함)을 가능하게 해주기 위해 지오코딩과 함께 사용될 수 있다. 아마도 가장 중요한 것은, 지오코딩과 결합된 디렉토리 리스팅은 업체 및 개인 사용자를 지리적 위치와 연관시키는 것을 크게 단순화시키며, 온라인 거래를 통해 "부동산"이 임대 또는 할당될 수 있게 해주어 큰 영업 조직(large sales force)이 필요하지 않게 된다.
텔레마케팅용으로 설계된 전국적 전화 및 주소 데이터베이스가 CD로 저렴하게 획득될 수 있지만, 이들이 반드시 고품질인 것은 아니며, 그의 적용범위는 통상 단지 부분적이며, 이들은 종종 오래된 것이다. 다수의 회사가 안정된 디렉토리 서버에 우리와 같은 소프트웨어-지향 비지니스용으로 설계된 API를 제공한다. 그 중에서도 W3Data(www.w3data.com)이 최상이며, 이는 최저 $500/월의 비용으로($0.10/히트로 시작하여 250,000/월의 볼륨에 대해 $0.05 또는 1,000,000/월을 넘는 볼륨에 대해 $0.03/히트까지 떨어짐) XML-기반 API를 사용하여 소위 "니어타임(neartime)" 전국적 전화 목록을 제공한다. 미국 및 캐나다 전체가 들어가 있다. 역쿼리(reverse query)도 가능하다, 즉 전화 번호가 주어지면 이름을 탐색한다. "니어타임" 데이터는 적어도 매 90일마다 갱신된다. 우리측에 있는 이미 획득한 엔트리의 90일 캐싱과 함께, 이것은 고품질의 전국적 목록을 획득하는 아주 경제적인 방법이다. 야간에 갱신되는 "리얼타임" 데이터도 역시 이용가능하지만, 더 비싸다($0.20/히트). 리얼타임 데이터는 411 교환원이 사용하는 것과 동일하다.
비슷한 비지니스 및 가격 모델을 갖는, 전국적 업체 목록을 카테고리별로 생성할 수 있는 W3Data와 유사한 서비스 제공자도 존재한다.
고전적인 광고-기반 비지니스 모델은 물론 독점적 데이터 형식 및 다운로드가능 플러그-인(플래쉬, 아도브 아크로뱃, 및 리얼 플레이어 등)을 수반하는 "미디어 플레이어" 모델은 통상적으로 닭과 계란 문제에 직면한다. 광고 장소(advertising venue)는 사람이 이미 보고 있을 때 광고할만한 가치가 있게 될 뿐이고, 플러그-인(무료인 경우에도)은 이미 보기에 유용한 컨텐츠가 있는 경우 다운로드할 가치가 있게 될 뿐이며, 컨텐츠는 이미 그 컨텐츠를 볼 준비가 되어 있는 설치된 사용자 베이스가 있는 경우에 제작에 투자할 마음이 생기게 되는 것 뿐이다.
Voss 지도 제작 애플리케이션이 다운로드가능한 클라이언트 소프트웨어도 필요로 하고 광고를 통해 수익을 발생시키기도 하지만, 고전적인 광고-기반 비지니스 모델의 단점을 겪지 않는다. 임의의 상당한 상업적 공간이 "임대"되기 이전에도, 본 발명은 지도를 보고 주소를 검색하는 유용하고 시각적으로 매력적인 방법, 즉 기존의 지도 제작 애플리케이션과 유사한 기능을 제공하지만, 크게 향상된 시각적 인터페이스를 갖는다. 게다가, 본 발명의 방법은 사용자 베이스(user base)를 유치하기 위해 비상업적 사용자에게 제한되지만 귀중한 서비스를 무료로 제공한다. 이 제한된 서비스는 사용자의 지리적 위치에, 즉 일반적으로 주택에 사용자마다 적은 양(5-15 MB) 서버 공간을 호스팅하는 것으로 이루어져 있다. 클라이언트 소프트웨어는, 사용자가 이미지 및 텍스트(나중에 클라이언트 소프트웨어를 사용하여 임의의 다른 허가된 사용자가 볼 수 있음)를 그의 "물리적 주소"로 드래그/드롭할 수 있게 해주는 간단한 저작 기능을 포함할 수 있다. (비밀 번호 보호(password protection)가 이용가능할 수 있다.) 줌잉 사용자 인터페이스 방법이 디지털 사진 컬렉션을 (특히, 제한된 대역폭을 통해) 내비게이션하는 데 분명히 유익하기 때문에, 사진 앨범 공유 기능만으로 상당한 수의 사용자를 끌어들일 수 있다. 부가적인 서버 공간이 적절한 연간 요금으로 이용가능할 수 있다. 이러한 아주 수평적인 시장이 주요 수익원이 될 가능성이 있다.
통상의 닭과 계란 문제는 따라서 처음부터 가치있는 서비스를 제공함으로써 회피되며, 검색 엔진 및 다른 유용한(이제는 수익성이 있는) 웹 서비스에 효과가 좋은 방법이다. 이것은, 예를 들어, 사용자 베이스가 구축될 때까지는 유용하지 않은 온라인 데이트 서비스와 극명한 대조를 이룬다.
본 발명의 측면들에 따르면, 수익원은 이하의 것들을 포함할 수 있다.
1. 물리적 주소에 대응하는 지도 상의 공간의 "상업적" 임대
2. 상업적 사용자에게 맞게 되어 있는 (이하에 기술되는) "부가 서비스(plus service)"에 대한 요금
3. 비상업적 사용자에게 맞게 되어 있는 "부가 서비스(plus service)"에 대한 요금
4. 전문적 줌잉가능 컨텐츠 저작 소프트웨어
5. PDA, 셀 전화, 차량 내비게이션 시스템, 기타의 판매자 및 서비스 제공자와의 라이센싱 또는 파트너쉽
6. 정보
지도 상의 공간의 기본적인 상업적 임대는 이하의 변수의 조합을 사용하여 가격이 매겨질 수 있다.
1. 지도 상의 용지(site)의 수
2. 용지별 지도 영역("풋프린트")(단위: 제곱미터)
3. 전체적 뷰잉 통계에 기초한 부동산의 소망성(desirability)
4. 컨텐츠를 호스팅하는 데 필요한 서버 공간(단위: MB)
상업적 사용자에 대한 부가 서비스는 프랜차이즈, 전자 상거래를 수행하거나 웹을 다르게 더 복잡하게 사용하고자 하는 사업, 및 그의 광고 가시성을 증가시키고자 하는 사업에 맞게 되어 있다.
1. 더 큰 가시 높이 - 몇개의 레벨이 제공될 수 있어, 눈에 보이지만 방해가 되지는 않는 아이콘 또는 "플래그"가 다른 방식으로 보이는 것보다 더 멀리 떨어져서(더 줌아웃됨) 사업 용지의 위치를 나타낼 수 있게 해줌.
2. 포커싱 우선순위 - Voss는 데이터가 이용가능하게 될 때 내비게이션 동안에 이미지의 영역을 또렷하게 한다. 기본적으로, 모든 비쥬얼 컨텐츠는 똑같이 취급되며, 포커싱은 화면의 중앙으로부터 외측으로 나간다. 포커싱 우선순위에 의해 상업적 컨텐츠가 그렇지 않은 경우보다 더 빠르게 또렷하게 될 수 있게 해주어, 사용자의 "주변시(peripheral vision)"에서의 그의 현저성(prominence)을 향상시킨다. 이 특징은 사용자의 내비게이션 경험을 훼손시키지 않고 상업적 가치를 전달하기 위해 조정된다.
3. 줌잉가능 컨텐츠에 종래의 웹 하이퍼링크를 포함시키는 것 - 이들은 (종래의 밑줄이 그어진 청색 텍스트로) 뚜렷하게 표시될 수 있고, 사용자의 클릭 시에 웹 브라우저를 열 수 있다. 우리는 이러한 하이퍼링크를 포함시키는 것에 대해 과금할 수 있거나 구글처럼 클릭마다 과금할 수 있다.
4. 지리적 영역을 임대한다는 것은 외부의 상업적 서버를 말하며, 이 서버 자체가 임의의 유형 및 크기의 줌잉가능 컨텐츠를 호스팅한다. 이것은 3번의 고급 버전이며, 임의의 종류의 e-비지니스가 지도를 통해 수행될 수 있게 해준다. 우리는 한번 더 균일한 요금을 부과하거나 외부 서버에 연결하는 사용자마다 부과할 수 있다(그렇지만, 이것은 더 이상 클릭을 필요로 하지 않으며 줌인에 불과함).
5. 광고 게시판 - 실생활에서와 같이, 지도의 많은 고가시성 영역(high-visibility area)은 상당한 빈 공간을 갖는다. 회사들은 이 공간을 구입하고 하이퍼링크 및 "하이퍼점프(hyperjump)"(클릭되면, 사용자를 공간을 통해 지도 상의 다른 곳에 있는 상업 용지로 이동시킴)를 비롯한 컨텐츠를 삽입한다. 통상의 상업적 공간과는 달리, 광고 게시판 공간은 일정한 위치에 임대될 필요가 없으며, 그의 위치는 사용자 내비게이션 동안 동작 중에 발생될 수 있다.
이 마지막 서비스는 지도의 "생태학(ecology)" 또는 시각 미학 및 사용성의 문제를 일으킨다. 지도가 매력적이고 사용자에 대한 진정한 서비스로 남아 있는 것이 바람직하며, 이는 광고 및 세련된 "지역지구제(zoning regulation)"에 대한 제한을 암시한다. 지도가 실세계 지리를 반영하지 않는 광고 게시판 또는 다른 컨텐츠로 너무 뒤죽박죽되는 경우, 사용자가 지겨워할 것이며, 광고 및 전자상거래 장소로서의 지도의 가치가 떨어질 것이다.
사용 통계가 수집됨에 따라, 이들 상업적 "부가 서비스" 중 다수의 가치가 정량적으로 설명가능할 수 있다. 경쟁력있는 이점의 정량적인 증거가 이들 특상품의 판매를 증가시킬 것이다.
미상업적 사용자에 맞게 되어 있는 부가 서비스는 동일하지만 다른 크기, 가격 및 마케팅 제품 중 몇몇으로 이루어져 있다.
줌잉가능한 Voss 컨텐츠의 제한된 저작이 무료 클라이언트로부터 가능하다. 이것은 텍스트를 삽입하는 것, 디지털 사진을 드래그/드롭하는 것, 비밀번호를 설정하는 것을 포함한다. 전문적인 저작 소프트웨어는 더 유연한 줌잉가능 컨텐츠 생성은 물론 하이퍼링크 및 하이퍼점프를 만들고 커스텀 애플릿을 삽입하는 기능을 가능하게 해주도록 설계된 클라이언트의 수정된 버전일 수 있다.
본 발명을 사용하면 공간적 주의 밀도(spatial attention density), 내비게이션 경로 및 다른 패턴에 관한 많은 전체적인 또 개별적인 정보를 생성할 수 있다. 이들 데이터는 상업적 가치가 있다.

Claims (28)

  1. 프록시 서버로 인터넷 사이트에 액세스하는 단계,
    상기 인터넷 사이트로부터의 이미지 데이터를 다중 해상도 표현(multiresolution representation)으로 변환하는 단계, 및
    상기 다중 해상도 표현의 상기 이미지 데이터를 클라이언트 장치로 전송하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 클라이언트 장치로 웹 페이지를 내비게이션하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 내비게이션하는 단계는,
    (a) 상기 프록시 서버로 상기 인터넷 사이트 이미지 데이터를 내비게이션하는 단계, 및
    (b) 상기 클라이언트 장치로 상기 다중 해상도 이미지 데이터를 내비게이션하는 단계를 포함하며,
    상기 단계 (a)의 내비게이션하는 단계 및 상기 단계 (b)의 내비게이션하는 단계는 거의 동시에 행해지는 것인 방법.
  4. 제2항에 있어서, 상기 내비게이션하는 단계는,
    상기 웹 페이지의 적어도 거의 전부에 대한 다중 해상도 이미지 데이터를 상기 프록시 서버에 저장하는 단계, 및
    상기 클라이언트 장치로 상기 저장된 다중 해상도 이미지 데이터를 내비게이션하는 단계를 포함하는 것인 방법.
  5. 제2항에 있어서, 상기 변환하는 단계는 상기 클라이언트 장치로 상기 내비게이션하는 단계에서 필요하게 될 때 상기 인터넷 사이트 이미지 데이터를 연속적으로 변환하는 단계를 포함하는 것인 방법.
  6. 제2항에 있어서, 상기 변환하는 단계는,
    상기 프록시 서버로 상기 인터넷 사이트로부터의 선택된 이미지 데이터를, 상기 선택된 이미지 데이터가 상기 클라이언트 장치 내비게이션을 위해 필요하게 되기 이전에, 사전 변환하는 단계, 및
    상기 사전 변환된 이미지 데이터를 상기 프록시 서버에 저장하는 단계를 포함하는 것인 방법.
  7. 제6항에 있어서, 상기 클라이언트 장치 내비게이션에서 필요하게 될 때 상기 저장된 이미지 데이터를 상기 클라이언트 장치로 전송하는 단계를 더 포함하는 방법.
  8. 제6항에 있어서, 상기 저장된 사전 변환된 이미지 데이터가 이 데이터의 상기 클라이언트 장치로의 전송 이전에 오래된 것(stale)이 되지 않도록 보장해주는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 보장해주는 단계는 상기 사전 변환된 이미지 데이터의 타임스탬프 및 체크섬 중 하나를 상기 인터넷 사이트로부터 나온 대응하는 이미지 데이터의 타임스탬프 및 체크섬 중 하나와 각각 비교하는 단계를 포함하는 것인 방법.
  10. 제6항에 있어서, 상기 사전 변환하는 단계는,
    상기 프록시 서버로 적어도 하나의 웹 페이지에 대한 이미지 데이터를 변환하는 단계, 및
    상기 적어도 하나의 웹 페이지에 대한 상기 변환된 이미지 데이터를 상기 프록시 서버에 저장하는 단계를 포함하는 것인 방법.
  11. 제2항에 있어서, 상기 클라이언트 장치와 상기 인터넷 사이트 간의 양방향 대화형 통신(bi-directional interactive communication)을 가능하게 해주는 단계를 더 포함하는 방법.
  12. 제11항에 있어서, 상기 대화형 통신은 상기 클라이언트 장치로부터의 내비게 이션 명령을 상기 프록시 서버로 전송하는 단계를 포함하는 것인 방법.
  13. 제2항에 있어서, 상기 프록시 서버로 상기 클라이언트 장치에 대한 동적 인터넷 그래픽(dynamic Internet graphics)을 에뮬레이트하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서, 상기 에뮬레이트하는 단계는,
    동적 HTML(Hypertext Markup Language, 하이퍼텍스트 마크업 언어), 및
    애플릿(applet) 중 적어도 하나를 에뮬레이트하는 단계를 포함하는 것인 방법.
  15. 제2항에 있어서, 상기 내비게이션하는 단계는 상기 클라이언트 장치에서 상기 웹 페이지의 적어도 일부분을 보게 될 해상도 레벨을 선택하는 단계를 포함하는 것인 방법.
  16. 제2항에 있어서, 상기 내비게이션하는 단계는 상기 클라이언트 장치 상에 디스플레이하기 위한 상기 웹 페이지의 영역을 선택하는 단계를 포함하는 것인 방법.
  17. 제16항에 있어서, 상기 내비게이션하는 단계는 상기 웹 페이지의 상기 영역을 보게 될 해상도를 선택하는 단계를 더 포함하는 것인 방법.
  18. 제2항에 있어서, 상기 내비게이션하는 단계는 상기 클라이언트 장치에서 보기 위한 상기 웹 페이지의 복수의 부분을 선택하는 단계를 포함하는 것인 방법.
  19. 제18항에 있어서, 상기 내비게이션하는 단계는 상기 복수의 웹 페이지 부분을 보게 될 복수의 각자의 해상도를 선택하는 단계를 더 포함하는 것인 방법.
  20. 제2항에 있어서, 상기 다중 해상도 이미지 데이터를 내비게이션하는 상기 단계는 상기 다중 해상도 이미지 데이터를 패닝(panning)하는 단계를 포함하는 것인 방법.
  21. 제2항에 있어서, 상기 다중 해상도 이미지 데이터를 내비게이션하는 상기 단계는 상기 다중 해상도 이미지 데이터를 줌인(zoom in)하는 단계를 포함하는 것인 방법.
  22. 클라이언트 장치, 및
    상기 클라이언트 및 인터넷 사이트와 통신하고 이들 사이의 중개자(intermediary)로서 역할하는 프록시 서버를 포함하며,
    상기 프록시 서버가 상기 인터넷 사이트로부터의 이미지 데이터를 다중 해상도 비쥬얼 데이터 형식(multiresolution visual data format)으로 변환하는 동작을 하는 것인 장치.
  23. 제22항에 있어서, 상기 다중 해상도 비쥬얼 데이터 형식은 JPEG2000인 것인 장치.
  24. 제2항에 있어서, 상기 클라이언트 장치는 셀 전화(cell phone)이고,
    상기 셀 전화는 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 내비게이션하는 적어도 하나의 메카니즘을 포함하는 것인 장치.
  25. 제24항에 있어서, 상기 메카니즘은 터치패드이고,
    상기 터치패드는 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 패닝하는 것을 가능하게 해주는 것인 장치.
  26. 제22항에 있어서, 상기 메카니즘은 상기 다중 해상도 비쥬얼 데이터 형식의 이미지 데이터를 줌인(zoom in)하는 것을 가능하게 해주는 것인 장치.
  27. 제26항에 있어서, 상기 줌잉(zooming)하는 메카니즘은 상기 클라이언트 장치의 사용자에 의해 회전가능한 롤러(roller)를 포함하는 것인 장치.
  28. 제22항에 있어서, 상기 클라이언트 장치는, 셀 전화, PDA(Personal Digital Assistant, 개인 휴대 단말기), 노트북 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 및 텔레비전 세트로 이루어진 그룹 중 하나인 것인 장치.
KR1020077024755A 2005-03-29 2006-03-29 웹 페이지 데이터 전송 시스템 및 방법 KR20070116925A (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US66614205P 2005-03-29 2005-03-29
US60/666,142 2005-03-29
US67051005P 2005-04-12 2005-04-12
US60/670,510 2005-04-12
US11/141,958 US7546419B2 (en) 2004-06-01 2005-06-01 Efficient data cache
US11/141,958 2005-06-01
US11/247,513 US7912299B2 (en) 2004-10-08 2005-10-11 System and method for efficiently encoding data
US11/247,513 2005-10-11
US11/252,181 US7930434B2 (en) 2003-03-05 2005-10-17 System and method for managing communication and/or storage of image data
US11/252,181 2005-10-17

Publications (1)

Publication Number Publication Date
KR20070116925A true KR20070116925A (ko) 2007-12-11

Family

ID=37054059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077024755A KR20070116925A (ko) 2005-03-29 2006-03-29 웹 페이지 데이터 전송 시스템 및 방법

Country Status (5)

Country Link
EP (1) EP1864222A4 (ko)
KR (1) KR20070116925A (ko)
AU (1) AU2006230233B2 (ko)
CA (1) CA2599357A1 (ko)
WO (1) WO2006105158A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101009159B1 (ko) * 2008-08-29 2011-01-18 주식회사 엘지유플러스 동영상 파일 제공 방법 및 시스템
WO2013059700A1 (en) * 2011-10-19 2013-04-25 Microsoft Corporation Bridge pages for mobile advertising
KR101527991B1 (ko) * 2008-02-01 2015-06-10 마이크로소프트 코포레이션 그래픽 원격 아키텍처

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080144076A1 (en) * 2006-10-27 2008-06-19 Martin Boliek Systems and methods for serving documents from a multifunction peripheral
US7693953B2 (en) 2007-01-12 2010-04-06 Microsoft Corporation Providing Web services for wireless communication devices
KR101481512B1 (ko) 2007-10-24 2015-01-20 엘지전자 주식회사 휴대 단말기 및 그 제어 방법
KR101632309B1 (ko) * 2009-07-07 2016-06-21 삼성전자주식회사 건강 정보를 나타내는 웹 페이지를 공유하는 시스템 및 방법
KR101777347B1 (ko) 2009-11-13 2017-09-11 삼성전자주식회사 부분화에 기초한 적응적인 스트리밍 방법 및 장치
KR101750048B1 (ko) 2009-11-13 2017-07-03 삼성전자주식회사 변속 재생 서비스 제공 방법 및 장치
KR101750049B1 (ko) 2009-11-13 2017-06-22 삼성전자주식회사 적응적인 스트리밍 방법 및 장치
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
KR101737084B1 (ko) 2009-12-07 2017-05-17 삼성전자주식회사 메인 콘텐트에 다른 콘텐트를 삽입하여 스트리밍하는 방법 및 장치
CA2788926C (en) 2010-02-22 2015-04-07 Streetmeet Inc. System, apparatus and method for generation of content for distributed heterogenous computers
KR101777348B1 (ko) 2010-02-23 2017-09-11 삼성전자주식회사 데이터 전송 방법 및 장치와 데이터 수신 방법 및 장치
KR20110105710A (ko) 2010-03-19 2011-09-27 삼성전자주식회사 복수의 챕터를 포함하는 콘텐트를 적응적으로 스트리밍하는 방법 및 장치
KR101837687B1 (ko) 2010-06-04 2018-03-12 삼성전자주식회사 콘텐트의 품질을 결정하는 복수의 인자에 기초한 적응적인 스트리밍 방법 및 장치
US9454607B1 (en) * 2010-12-10 2016-09-27 A9.Com, Inc. Image as database
EP2731017B1 (en) 2011-07-05 2018-02-14 Rakuten, Inc. Content distribution system, cache server and content distribution method
GB2497951A (en) * 2011-12-22 2013-07-03 Nokia Corp Method and System For Managing Images And Geographic Location Data
CA2763276C (en) * 2012-01-06 2013-03-19 Microsoft Corporation Input pointer delay and zoom logic
CN103152573A (zh) 2013-03-15 2013-06-12 惠州Tcl移动通信有限公司 一种移动终端与智能电视间图像帧传输的方法及系统
US10349304B2 (en) 2015-09-23 2019-07-09 Cloudflare, Inc. Software defined dynamic filtering
CN106156407A (zh) * 2016-06-24 2016-11-23 国家电网公司交流建设分公司 多分辨率三维cad模型生成方法
CN110168611A (zh) 2017-03-22 2019-08-23 惠普发展公司,有限责任合伙企业 基于数据关系的图像数据的压缩版本
US20230140051A1 (en) * 2021-10-29 2023-05-04 Shopify Inc. Methods and devices for generating a blurred image

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826593B1 (en) * 1998-09-01 2004-11-30 Lucent Technologies Inc. Computer implemented method and apparatus for fulfilling a request for information content with a user-selectable version of a file containing that information content
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6449639B1 (en) * 1998-12-23 2002-09-10 Doxio, Inc. Method and system for client-less viewing of scalable documents displayed using internet imaging protocol commands
US6509892B1 (en) * 1999-12-17 2003-01-21 International Business Machines Corporation Method, system and program for topographical interfacing
US7284069B2 (en) * 2002-01-11 2007-10-16 Xerox Corporation Method for document viewing
US20050041858A1 (en) * 2003-08-21 2005-02-24 International Business Machines Corporation Apparatus and method for distributing portions of large web pages to fit smaller constrained viewing areas

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101527991B1 (ko) * 2008-02-01 2015-06-10 마이크로소프트 코포레이션 그래픽 원격 아키텍처
KR101009159B1 (ko) * 2008-08-29 2011-01-18 주식회사 엘지유플러스 동영상 파일 제공 방법 및 시스템
WO2013059700A1 (en) * 2011-10-19 2013-04-25 Microsoft Corporation Bridge pages for mobile advertising
US8983861B2 (en) 2011-10-19 2015-03-17 Microsoft Technology Licensing, Llc Bridge pages for mobile advertising

Also Published As

Publication number Publication date
EP1864222A2 (en) 2007-12-12
CA2599357A1 (en) 2006-10-05
WO2006105158A2 (en) 2006-10-05
WO2006105158A3 (en) 2009-04-16
EP1864222A4 (en) 2012-03-21
AU2006230233A1 (en) 2006-10-05
AU2006230233B2 (en) 2011-01-20

Similar Documents

Publication Publication Date Title
AU2006230233B2 (en) System and method for transferring web page data
JP4831071B2 (ja) イメージ・データの通信および/または格納を管理するシステムおよび方法
CA2812008C (en) Methods and apparatus for navigating an image
US7023456B2 (en) Method of handling context during scaling with a display
JP2007529786A (ja) 地理情報または他のベクトルデータをイメージとして符号化および処理するための方法
US8196062B2 (en) Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device
US7453479B2 (en) Image data displaying system and method
US7222306B2 (en) Methods, systems, and programming for computer display of images, text, and/or digital content
EP2498218B1 (en) Generating, storing, and displaying graphics using sub-pixel bitmaps
US8497883B2 (en) Information display device
CA2518654C (en) Method for requesting and viewing a zoomed area of detail from an image attachment on a mobile communication device
CN101501664A (zh) 用于传送网页数据的系统和方法
US20060235941A1 (en) System and method for transferring web page data
US20110148886A1 (en) Method and system for receiving an indexed look-up table and viewing a vector animation sequence
JP4861978B2 (ja) イメージをナビゲートするための方法および装置
JP2008535098A (ja) ウェブページデータを転送するシステムおよび方法
WO2001080098A2 (en) Web browser plug-in providing 3d visualization
Feringa Appendix B Design, colour, images, fonts, file size

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application