Digital cameras and mobile phone cameras have become increasingly ubiquitous and the cost for people to take and store the photos has decreased rapidly over time. As a result, the sizes of personal digital photo collections are growing exponentially. Many commercial applications and services try to better support users in searching and organizing photo collections. The main challenge for image search and organization is how to make related user tasks easy and intuitive and the experience enjoyable and intriguing.
In one aspect, the invention features a method in accordance with which at least two circular graphic objects selected from a set of circular graphic objects are arranged at respective locations in a coordinate plane where the circular graphic objects are mutually tangent. The coordinate plane has a reference location. Another one of the circular graphic objects is chosen from the set as a current circular graphic object. A current target one of the circular graphic objects in the coordinate plane is selected based on application of a selection metric to distances respectively separating the circular graphic objects in the coordinate plane from the reference location. The current circular graphic object is positioned at a respective location in the coordinate plane where the current circular graphic object is tangent to the current target circular graphic object and tangent to another one of the circular graphic objects in the coordinate plane. The choosing, the selecting, and the positioning are repeated. A specification of the locations of the circular graphic objects in the coordinate plane is generated.
Other features and advantages of the invention will become apparent from the following description, including the drawings and the claims.
In the following description, like reference numbers are used to identify like elements. Furthermore, the drawings are intended to illustrate major features of exemplary embodiments in a diagrammatic manner. The drawings are not intended to depict every feature of actual embodiments nor relative dimensions of the depicted elements, and are not drawn to scale.
The embodiments that are described in detail herein provide ways to arrange circular graphic objects on a page. These embodiments not only provide visually appealing results that make efficient use of the available display area, but also achieve these results quickly and efficiently. Some embodiments additionally provide ways to utilize these arrangements of circular graphic objects in visualizing clustered data.
As used herein, the term “page” refers to any type of discrete area in which graphic objects may be laid out, including a physical page that is embodied by a discrete physical medium (e.g., a piece of paper) on which a layout of graphic objects may be printed, and a virtual, digital or electronic page that contains a layout of graphic objects that may be presented to a user by, for example, an electronic display device.
The term “graphic object” refers broadly to any type of visually perceptible content (including, but not limited to, images and text) that may be rendered in an area on a physical or virtual page. Image-based graphic objects (or simply “images”) may be complete or partial versions of any type of digital or electronic image, including: an image that was captured by an image sensor (e.g., a video camera, a still image camera, or an optical scanner) or a processed (e.g., filtered, reformatted, enhanced or otherwise modified) version of such an image; a computer-generated bitmap or vector graphic image; a textual image (e.g., a bitmap image containing text); and an iconographic image. The term “graphic object” encompasses both a single-element graphic object and a multi-element graphic object formed from a cohesive group or collection of one or more graphic objects. In general, the type of single-element graphic objects in a multi-element graphic object may be the same or different. The graphic objects that are described herein typically are stored in one or more databases on one or more computer-readable media.
A. Overview
In operation, the layout generator module 16 receives metadata 20 that characterizes the circular graphic objects 14. The metadata typically is stored in one or more data structures that are arranged in, for example, an XML (eXtensible Markup Language) format. In some embodiments, the metadata 20 for each of the circular graphic objects 14 includes a respective size value (e.g., a radius value, a diameter value, an area value, a circumference value, or other value indicative of size) that indicates the size of the circular graphic object.
Based on the received metadata 20, the layout generator module 16 determines a layout of the circular graphic objects in a coordinate plane 24. As used herein, the term “coordinate plane” refers to a plane that contains points whose positions in the plane are uniquely determined by respective coordinates that are defined with respect to a coordinate system (e.g., a rectangular coordinate system, such as the Cartesian coordinate system). In some embodiments, the points in the coordinate plane correspond to pixel locations on a page.
In some implementations, the layout generator module 16 outputs a layout specification 22 that describes the positions of the graphic objects 14 in the coordinate plane 24. The layout specification 22 typically specifies the positions of the graphic objects 14 in terms of the coordinates of the centers of the circular graphic objects in a coordinate system that is defined with reference to a particular location (e.g., a corner point, an edge point, or center point) in the coordinate plane. In some embodiments, the layout generator module 16 outputs the circular graphic object layout 22 in the form of a layout specification that is arranged in a particular file format (e.g., PDF or XML) and is stored on a computer-readable storage medium 28.
The layout generator module 16 outputs the layout specification 22 to the user interface module 18. The user interface module 18 maps the circular graphic objects 14 onto a page 30 based on the layout specification 22 and presents (or renders) the page 30 on a display 32. In implementations in which the circular graphic objects 14 are linked to respective graphic object clusters (e.g., clusters of digital photographs), the user interface module 18 allows a user to browse the clusters by inputting commands that select one or more of the graphic objects on the display 32. The commands typically are input using, for example, an input device (e.g., a computer mouse, keyboard, touch pad, and the like). The user interface module 18 transmits the interpreted user commands to the layout generator module 16. The layout generator module 16 may determine a new layout of a different set of graphic objects in accordance with the interpreted commands received from the user interface module 18. The user interface module 18 presents another page to the user in accordance with the new page layout. The user may continue to browse the graphic objects, specify edits to the graphic objects or to the graphic object clusters, or command the system 10 to render some or all of the page layouts.
B. Generating a Space-Filling Layout of Circular Graphic Objects
Initially, the layout generator module 16 arranges at least two circular graphic objects selected from the set 12 at respective locations in the coordinate plane 24 where the circular graphic objects are mutually tangent (
During the execution of the process of block 40, the layout generator module 16 sequentially processes the metadata 20 for the circular graphic objects 14. In some embodiments, the layout generator module 16 processes the metadata 20 in the order in which they are listed in an input file. In some implementations, the input file lists the metadata 20 in an arbitrary order. In other implementations, the input file lists the metadata 20 an order that is sorted in accordance with one or more of the metadata values. For example, in some embodiments, the metadata includes a respective size value for each of the graphic objects 14 and the metadata in the input file are listed in order of decreasing size.
Referring back to
The layout generator module 16 selects a current target one of the circular graphic objects in the coordinate plane based on application of a selection metric to the distances respectively separating the circular graphic objects in the coordinate plane from the reference location 42 (
The layout generator module 16 positions the current circular graphic object at a respective location in the coordinate plane 24 where the current circular graphic object is tangent to the current target circular graphic object and tangent to another one of the circular graphic objects in the coordinate plane (
The layout generator module 16 repeats the choosing process (
If there are no more circular graphic objects left in the set 12 to position in the coordinate plane 24, the layout generator module 16 generates a specification of the locations of the circular graphic objects 14 in the coordinate plane 24 (
In some embodiments, the layout generator module 16 maintains a boundary list of peripheral (or boundary) ones of the circular graphic objects with respect to which the current circular graphic object is tangentially positionable. In this process, the layout generator module 16 updates a linked list of the peripheral circular graphic objects after each current circular graphic object has been positioned in the coordinate plane 24. The boundary list includes for each of the peripheral circular objects a respective link pointing to another one of the peripheral circular graphic objects that is tangent to the peripheral circular object in the coordinate plane. The links are ordered in accordance with an ordering of the locations of the peripheral circular objects that defines a closed boundary path that surrounds all of the non-peripheral ones of the circular graphic objects. The links may be ordered in a clockwise direction or a counterclockwise direction.
In one example, the boundary list begins with the circular graphic object whose placement on the coordinate plane precedes other boundary graphic objects. For example,
In the embodiments in which the boundary list is maintained, the layout generator module 16 selects the current target circular graphic object from the boundary list. The layout generator module 16 attempts to position the current circular graphic object at a location in the coordinate plane that is tangent to both the current target circular graphic object and the successive circular graphic object in the boundary list. In the process of positioning the current circular object in the coordinate plane 24 (
As shown in
C. Modifying a Space-Filling Layout of Circular Graphic Objects
In accordance with this embodiment, the layout generator module 16 determines a bounding perimeter that surrounds the locations of the circular graphic objects in the coordinate plane (
In accordance with some embodiments of the process of block 70, the layout generator module 16 initially determines the smallest circular bounding perimeter that is centered on the reference location in the coordinate plane and encircles all of the circular graphic objects in the layout. The layout generator module 16 then transforms (e.g., by translating and scaling) the initial circular bounding perimeter 76 into the smallest circular bounding perimeter that surrounds all of the circular graphic objects in the layout.
After the bounding perimeter has been determined (
In some embodiments, the layout generator module 16 moves one or more of the circular graphic objects in the space-filling layout in accordance with the following process:
The circular graphic object visualization systems and methods described above may be applied to any type of graphic objects that may be displayed or rendered with circular shapes. In some embodiments, these systems and method are used to visualize clustered data objects.
A. Clustering Data Objects
Clustering is the process of partitioning data objects into clusters, where the members of each cluster are selected based on one or more shared characteristics. Automated clustering typically is performed by a classifier that partitions the data objects based on one or more rules (or predicates), which define cluster classes in terms of at least one condition on metadata that is associated with the data objects. As used herein, the term “predicate” refers to an operator or a function that returns a Boolean value (e.g., true or false). A “metadata predicate” is an operator or a function that returns a Boolean value based on the values of one or more metadata.
In general, the data objects may correspond to any type of data that is associated with one or more types of metadata. In some exemplary embodiments, the data objects correspond to image objects. An image object typically is in the form of a digital image file that includes image data and associated metadata. The metadata may be embedded in a header (e.g., an EXIF header) of the digital image file or otherwise linked to the digital image file (e.g., stored in a separate data structure that is linked to the digital image file). In general, the metadata may have been recorded during the capture of the corresponding image data, later derived from such metadata or from an analysis of the image data, or specified by a user. Exemplary types of metadata that may be associated with the image file include collateral metadata and content-based metadata that is extracted automatically from the image data. Among the exemplary types of collateral metadata are capture date, capture time, shutter speed, aperture size, lens focal length, flash operation information, white balance information, automatic gain setting information, resolution/image size, degree of compression, file format (e.g., JPEG vs. GIF vs. TIFF vs. RAW formats), shooting mode (e.g., aperture-priority vs. shutter-priority vs. manual control), light metering mode (e.g., center spot vs. weighted vs. evaluative), and special effects (e.g., black & white vs. vivid vs. neutral vs. sepia). Among the exemplary types of metadata that can be derived from the corresponding image data are maximum, minimum, and/or average intensities of the pixels recorded in the image, intensity histogram information, whether the image is overexposed or underexposed, whether the image was taken under natural or artificial lighting (e.g., via estimation of color balance), reduced-resolution or “thumbnail” versions of the image data 18, keyframes, and face recognition information.
After the data objects have been partitioned into clusters, the hierarchical structure of the clusters may be represented by a tree structure.
B. Visualizing Face Clusters
Each of the input images 104 may correspond to any type of image, including an original image (e.g., a video keyframe, a still image, or a scanned image) that was captured by an image sensor (e.g., a digital video camera, a digital still image camera, or an optical scanner) or a processed (e.g., sub-sampled, cropped, rotated, filtered, reformatted, enhanced or otherwise modified) version of such an original image.
Each cluster specification 106 corresponds to a different respective face that is detected in the associated input image 104. In some embodiments, each duster specification 106 includes a description of the locations (e.g., universal resource locators (URLs)) of the associated ones of input images 104 containing the constituent faces, along with the locations of the constituent faces (e.g., the coordinates of the bounding boxes containing the face regions) within each of these input images. In some embodiments, the face clustering module 102 stores the cluster specifications 106 in respective data structures (e.g., tables or lists) that are linked to the associated ones of the input images 104. In some embodiments, each input image 104 is associated with a respective cluster specification 106 for each face that is detected in the input image 104. Thus, in these embodiments, input images 104 that contain multiple detected faces are associated with multiple cluster specifications 106. In some embodiments, each cluster specification 106 additionally includes a designation of one of the faces appearing in one of the constituent images as a face image that is representative of the cluster.
Additional details regarding the construction and operation of the face clustering module 102 can be obtained from U.S. patent application Ser. No. 11/545,898, filed Oct. 6, 2006, and Gu, L., Zhang, T. and Ding, X, “Clustering Consumer Photos Based on Face Recognition,” Proc. ICME07, IEEE (2007), pp. 1998-2001, both of which are incorporated herein by reference.
In some embodiments, the layout generator module 112 receives the cluster specifications 106 from the face clustering module 102. For each of the clusters, the layout generator module 112 clips a circular portion of the image containing the representative face image. The circular face image is clipped using a respective mask that is generated based on the location of the representative face that is specified in the cluster specification 106. The layout generator module 112 scales the clipped face images in size in accordance with the numbers of images in the respective clusters. In some embodiments, the areas of the scaled images are proportional to the square of the number of images in the respective clusters. The layout generator module 112 determines a layout 114 of the scaled face images in the coordinate plane 24 in accordance with one or more of the methods described above.
In some embodiments, in addition to the one-glance view of the face images shown in
Embodiments of the visualization system 10 (including the embodiment 100) may be implemented by one or more discrete modules (or data processing components) that are not limited to any particular hardware, firmware, or software configuration. In the illustrated embodiments, the modules may be implemented in any computing or data processing environment, including in digital electronic circuitry (e.g., an application-specific integrated circuit, such as a digital signal processor (DSP)) or in computer hardware, firmware, device driver, or software. In some embodiments, the functionalities of the modules are combined into a single data processing component. In some embodiments, the respective functionalities of each of one or more of the modules are performed by a respective set of multiple data processing components.
In some implementations, process instructions (e.g., machine-readable code, such as computer software) for implementing the methods that are executed by the embodiments of the visualization system 10, as well as the data it generates, are stored in one or more machine-readable media. Storage devices suitable for tangibly embodying these instructions and data include all forms of non-volatile computer-readable memory, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal hard disks and removable hard disks, magneto-optical disks, DVD-ROM/RAM, and CD-ROM/RAM.
In general, embodiments of the visualization system 10 may be implemented in any one of a wide variety of electronic devices, including desktop and workstation computers, video recording devices (e.g., VCRs and DVRs), cable or satellite set-top boxes capable of decoding and playing paid video programming, and digital camera devices. Due to its efficient use of processing and memory resources, some embodiments of the visualization system 10 may be implemented with relatively small and inexpensive components that have modest processing power and modest memory capacity. As a result, these embodiments are highly suitable for incorporation in compact camera environments that have significant size, processing, and memory constraints, including but not limited to handheld electronic devices (e.g., a mobile telephone, a cordless telephone, a portable memory device such as a smart card, a personal digital assistant (PDA), a solid state digital audio player, a CD player, an MCD player, a game controller, a pager, and a miniature still image or video camera), pc cameras, and other embedded environments.
A user may interact (e.g., enter commands or data) with the computer 160 using one or more input devices 170 (e.g., a keyboard, a computer mouse, a microphone, joystick, and touch pad). Information may be presented through a graphical user interface (GUI) that is displayed to the user on a display monitor 172, which is controlled by a display controller 174. The computer system 160 also typically includes peripheral output devices, such as speakers and a printer. One or more remote computers may be connected to the computer system 160 through a network interface card (NIC) 176.
As shown in
The embodiments that are described in detail herein provide ways to arrange circular graphic objects on a page. These embodiments not only provide visually appealing results that make efficient use of the available display area, but also achieve these results quickly and efficiently. Some embodiments additionally provide ways to utilize these arrangements of circular graphic objects in visualizing clustered data.
Other embodiments are within the scope of the claims.