Systems and methods for processing images based on criteria

A computer-implemented method for processing images may include obtaining at least one image for analyzing; inputting the at least one image to at least one of a plurality of image plugins; analyzing the at least one image via the at least one of the plurality of image plugins; determining metadata related to the at least one image based on the at least one of the plurality of image plugins; filtering the at least one image based on one or more rule sets to generate at least one filtered image; sorting the at least one filtered image to generate at least one sorted image; displaying the at least one sorted image based on an organizational sequence of a webpage; displaying navigation controls via the webpage; and displaying the at least one sorted image according to a user interaction with the navigation controls on the webpage.

TECHNICAL FIELD

Various embodiments of the present disclosure relate generally to processing images to determine metadata, and more specifically, to processing images of vehicles for vehicle related metadata.

BACKGROUND

Purchasers of relatively expensive items, such as cars, real estate, mattresses, boats, computers, etc. may conduct part or all of their shopping for such items online, via the Internet. In researching and completing such a purchase, a consumer may visit multiple websites in search of appropriate information. For example, consumers may view inventory information or perform other research regarding a purchase on multiple websites. However, different websites may vary both in the manner in which they present information and in the scope of the information presented. Thus, a user may be unable to find certain information on a particular website and/or may be unsure of where such information is located.

Furthermore, in areas of commerce such as those described above, purchasers may view inventory information via pictures merchants provide online. The disorganization of images presented online may be prohibitive for an individual consumer to obtain, analyze, and/or synthesize the information accurately. Thus, consumers may make sub-optimal purchase decisions due to a lack of accessible and/or digestible information.

SUMMARY

According to certain aspects of the disclosure, non-transitory computer readable media, systems, and methods are disclosed for processing images for metadata. Each of the examples disclosed herein may include one or more of the features described in connection with any of the other disclosed examples.

In one example, a computer-implemented method for processing images may include obtaining, by one or more processors, at least one image for analyzing; inputting, by the one or more processors, the at least one image to at least one of a plurality of image plugins; analyzing, by the one or more processors, the at least one image via the at least one of the plurality of image plugins; determining, by the one or more processors, metadata related to the at least one image based on the at least one of the plurality of image plugins; filtering, by the one or more processors, the at least one image based on one or more rule sets to generate at least one filtered image; sorting, by the one or more processors, the at least one filtered image to generate at least one sorted image; displaying, by the one or more processors, the at least one sorted image based on an organizational sequence of a webpage; displaying, by the one or more processors, navigation controls via the webpage; and displaying, by the one or more processors, the at least one sorted image according to a user interaction with the navigation controls on the webpage.

According to another aspect of the disclosure, a computer system for processing images may include a memory having processor-readable instructions stored therein; and at least one processor configured to access the memory and execute the processor-readable instructions to perform a plurality of functions. The functions may include obtaining at least one image; analyzing the at least one image via at least one of a plurality of image plugins; determining metadata related to the at least one image based on the analyzing the at least one image; filtering the at least one image based on a predetermined metadata to generate at least one filtered image; sorting the at least one filtered image to generate at least one sorted image; displaying the at least one sorted image based on an organizational sequence of a webpage; displaying navigation controls on the webpage; and displaying the at least one sorted image according to a user interaction with the navigation controls on the webpage.

In another aspect of the disclosure, a computer-implemented method for processing images may include training, by one or more processors, at least one of a plurality of image plugins by analyzing pre-labeled images to determine metadata related to the pre-labeled images; comparing, by the one or more processors, the metadata determined by the at least one of the plurality of image plugins to the pre-labeled images; obtaining, by the one or more processors, at least one image; analyzing, by the one or more processors, the at least one image via the at least one of the plurality of image plugins; determining, by the one or more processors, metadata related to the at least one image via the at least one of the plurality of image plugins; filtering, by the one or more processors, the at least one image based on one or more predetermined metadata to generate at least one filtered image; sorting, by the one or more processors, the at least one filtered image to generate at least one sorted image; displaying, by the one or more processors, the at least one sorted image based on an organizational sequence of a webpage; displaying, by the one or more processors, navigation controls on the webpage; and displaying, by the one or more processors, the at least one sorted image according to a user interaction with the navigation controls on the webpage.

Additional objects and advantages of the disclosed embodiments will be set forth in part in the description that follows, and in part will be apparent from the description, or may be learned by practice of the disclosed embodiments.

DETAILED DESCRIPTION

The subject matter of the present description will now be described more fully hereinafter with reference to the accompanying drawings, which form a part thereof, and which show, by way of illustration, specific exemplary embodiments. An embodiment or implementation described herein as “exemplary” is not to be construed as preferred or advantageous, for example, over other embodiments or implementations; rather, it is intended to reflect or indicate that the embodiment(s) is/are “example” embodiment(s). Subject matter can be embodied in a variety of different forms and, therefore, covered or claimed subject matter is intended to be construed as not being limited to any exemplary embodiments set forth herein; exemplary embodiments are provided merely to be illustrative. Likewise, a reasonably broad scope for claimed or covered subject matter is intended. Among other things, for example, subject matter may be embodied as methods, devices, components, or systems. Accordingly, embodiments may, for example, take the form of hardware, software, firmware, or any combination thereof (other than software per se). The following detailed description is, therefore, not intended to be taken in a limiting sense.

In the following description, embodiments will be described with reference to the accompany drawings. Various embodiments of the present disclosure relate generally to methods and systems for processing images of vehicles for metadata. For example, various embodiments of the present disclosure relate to determining the metadata of each of a plurality of images of vehicles. In some arrangements, the plurality of images of vehicles may be presented online at a vehicle aggregator service provider for purchasers to browse and research for potential purchases.

In order for a vehicle aggregator service provider to display images of vehicles, the service provider may need to know information pertaining to the subject of each image. Vehicle aggregator service providers receive large quantities of images from independent vehicle dealers, each of whom may transmit images without any detectable or attempted uniformity. For example, vehicle dealers may transmit images of place holder vehicles (e.g., dealership logo images, etc.), generic stock images, or images without any identifiable information pertinent to a specified product. If the vehicle aggregator service provider does not know what is being presented within each of the images, then the service provider may provide incorrect information, may provide insufficient information, and/or may cause a negative experience for a user researching for vehicles. Furthermore, it may be desirable for the service provider to know what is being presented within each of the images (e.g., image of an interior of the vehicle, image of an exterior of the vehicle, image of a vehicle's insignia) so that the images may be presented by the vehicle aggregator service provider in a uniform manner for branding purposes, site organization/planning purposes, efficiency purposes, and/or to induce positive user interaction with the vehicle aggregator service provider.

Therefore, a need exists to process images supplied by independent vehicle dealers so that the vehicle aggregator service provider may present the images in an orderly and consistent manner, remove unnecessary or useless images, or identify key features within an image for labeling.

Referring now to the appended drawings,FIG. 1shows an exemplary environment100in which the processing of merchant-supplied vehicle images may be implemented. Environment100may include a user device101associated with, or operated by, a user, one or more merchants102, vehicle aggregator service provider103, image database104and metadata database105. Various components of environment100may be in communication with each other via network110(e.g., the Internet). For example, the user device101may communicate with the vehicle aggregator103via network110, and the merchants102may communicate with the vehicle aggregator103via network110. The network110may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data between various components in the system environment100. The network may include a public network (e.g., the Internet), a private network (e.g., a network within an organization or intranet), or a combination of public and/or private networks.

The user device101may be operated by one or more users to perform browsing, research, purchases, and/or transactions at an online environment. Examples of user device101may include smartphones, wearable computing devices, tablet computers, laptops, desktop computers, and on-board vehicle computer systems.

Each merchant102may be an entity that provides products. In this disclosure, the term “product,” in the context of products offered by a merchant, encompasses both goods and services, as well as products that are a combination of goods and services. A merchant may be, for example, vehicle dealer, vehicle reseller, vehicle manufacture, and/or other type of entity that provides products that a user may purchase.

The vehicle aggregator service provider103may be an entity that receives images of vehicles for sale from the merchant102and hosts the images on a website for users to browse and research for available vehicles. In some examples, vehicle aggregator service provider103may include one or more merchant service providers that provide merchants102with the ability to process financial loans, such as vehicle loans.

Image database104may include images of vehicles supplied by merchants102. The images of vehicles may be for vehicles that are available for sale by the merchant102. Each available vehicle may have a plurality of pictures documenting the features of the vehicle. For example, images may include the outside of the vehicle, the interior of the vehicle, special features and options, etc. Each image may also have an associated identification number stored in the database. Metadata database105may include metadata associated with each of the images of vehicles stored in the image database104. Metadata stored in metadata database105may include features or information identified from each image by the image processing process. For example metadata may include the make, model, color, features/options, and various other information identifiable from, or embedded within, the images. The image processing process and metadata will be explained in further detail, below. It is understood that each of image database104and metadata database105may include a plurality of databases in communication with one another, and/or image database104and metadata database105may be combined into a single (e.g., only one) database.

Environment100may include one or more computer systems configured to gather, process, transmit, and/or receive data. In general, whenever environment100is described as performing an operation of gathering, processing, transmitting, or receiving data, it is understood that such operation may be performed by a computer system thereof. In general, a computer system may include one or more computing devices, as described in connection withFIG. 7below.

FIG. 2depicts an exemplary block diagram200of an image metadata determining process, according to one aspect of the present disclosure. Diagram200may include images201, image labeler205, and labeled metadata210. Image labeler205may include a plurality of image plugins. One plugin may be created to identify a singular object in the images, or one plugin may be created to identify a plurality of objects in the images. For example, as illustrated inFIG. 2, labeler205may include plugin206that may identify if a vehicle is present in the picture, plugin207that may identify if the image is of the exterior of the vehicle or interior of the vehicle, and plugin208may identify the color of the vehicle in the image. Other plugins, while not illustrated in diagram200, may also be included. For example a plugin may be created to identify the make of the vehicle in the image, one plugin may be created to identify the model of the vehicle in the image, one plugin may be created to identify the angle of the vehicle in the image (for example, front of the vehicle, side profile of the vehicle, quarter profile of the vehicle, rear of the vehicle), one plugin may be created to identify the year of the vehicle in the image, and one plugin may be created to identify the quality of the image (for example, low or high resolution image). Other plugins may also be created to identify any features that may be available in a vehicle.

The plugins may be created using machine learning processes that takes an image as an input and process the image to identify objects that may be present in the image. Plugins may use any object detection model or image recognition model or any appropriate computer vision approach to process the images. Each of the plugins may be trained using pre-labeled images either already present in image database104or metadata database105, or supplied by third parties. Training of the plugins may be performed as follows: (1) the plugin may retrieve a pre-labeled image, for example an image of a black vehicle labeled “black vehicle”, and (2) via machine learning, the plugin may process the pre-labeled image so as to learn to identify black vehicles in an image. Each plugin may be trained using a specific pre-labeled image (or a specific plurality of pre-labeled images). The plugins, once generated, may be continuously trained via images supplied by the merchants102.

As illustrated inFIG. 2, image labeler205may be made up of a plurality of plugins, each plugin may be removed from labeler205, or new plugins may be added to labeler205at any point convenient to the vehicle aggregator103. As such, labeler205may be deployed to process images as soon as plugins are introduced and created without delaying to wait for all plugins to be created. As new plugins are introduced and created they may be added to the labeler205without affecting the operation of the labeler205. In the example depicted inFIG. 2, the labeler205may process each image sequentially through each of the plurality of plugins. For example, image201may be retrieved and fed into labeler205for metadata processing. The image201may proceed to the plugin206to identify if a vehicle is present in the image. After processing at plugin206, the image201may be transmitted to plugin207to identify whether the image201illustrates an exterior or an interior of a vehicle. After processing at plugin207, the image201may be transmitted to plugin208to identify a color of the vehicle present in the image201. After the image is processed by all the plugins of labeler205, labeled metadata210may be generated for the image. The labeled metadata210may include information (e.g., labels) determined from the image201by the plugins (e.g., plugins206-208). For example, labeled metadata210generated for image201may indicate that the exterior of a black vehicle is present in the image201. Labeled metadata210may also indicate the image ID for image201for associating image201with labeled metadata210. Labeled metadata210, once determined, may be stored in the metadata database105.

In another embodiment, each of the plugins within the labeler205may be located in a distributed fashion and each of the plugins may process the same image in parallel. For example, image201may be retrieved and fed into plugin206, plugin207, and plugin208at the same time or substantially similar time for processing. Each plugin may then perform processing and identify the object of the image201. Once the image201has been processed by the plugins (e.g., plugins206-208), the determined information may be used to generate labeled metadata210. Labeled metadata210may then be stored in the metadata database105.

FIG. 3depicts an exemplary block diagram300of an image metadata filtering process, according to one aspect of the present disclosure. Diagram300may include metadata filter305for filtering labeled metadata210into filtered metadata310. Metadata filter305may include a plurality of components. One such component may be generated to filter a singular data element of labeled metadata210, or one component may be created to filter a plurality of data elements of metadata210. For example, as illustrated inFIG. 3, filter305may include component306that may filter labeled metadata210by identifying whether the image is labeled as having a vehicle present in the image. Additionally, filter305may include component307that may filter labeled metadata210by identifying whether the image is labeled as showing the interior of the vehicle. Other components, while not illustrated in diagram300, may also be included. By way of non-limiting example, a component may be generated to filter labeled metadata210based on (1) the identification of the make of the vehicle in the image, (2) the identification of the model of the vehicle in the image, (3) the identification of the angle of the vehicle in the image (for example, front of the vehicle, side profile of the vehicle, quarter profile of the vehicle, rear of the vehicle, etc.), (4) the identification of the year of the vehicle in the image, and/or (5) the identification of the quality of the image (for example, low or high resolution image). Other components may also be created to filter labeled metadata210based on the identification of any other labeled feature of the vehicle without departing from the scope of the present application.

As illustrated in exemplaryFIG. 3, metadata filter305may include a plurality of components. Each such component may be updated or removed from filter305, or a new component may be added to filter305at any point convenient to the vehicle aggregator103. As such, the filter305may be deployed to process metadata as soon as components are introduced without delaying to wait for all components to be created. As new components are introduced and created they may be added to the filter305without affecting the operation of the filter305. In the example depicted inFIG. 3, the filter305may filter each labeled metadata210sequentially through each of the plurality of components. For example, labeled metadata210may be retrieved and fed into filter305for metadata filtering. The labeled metadata210may proceed to the component306to identify if the labeled metadata210indicates a vehicle is present in the image. After processing at component306, the labeled metadata210may be transmitted to component307to identify if the labeled metadata210indicates that the interior of the vehicle is present in the image. In some arrangements, labeled metadata210need not be filtered by all components of filter305. For example, if component306determined that the image does not contain a vehicle, then there may be no need to further process the labeled metadata210via component307. Accordingly, in some arrangements, labeled metadata210may be processed sequentially by each applicable component of labeler, which may be less than all of the components of filter305. After the labeled metadata210is filtered by all the components of filter305(or all of the applicable components of filter305), the filtered metadata310may be output by filter305. Filtered metadata310may be stored in the metadata database105. Metadata database105may be configured to store filtered metadata310based on the results of the filtering process. For example, the metadata database105may store all of the filtered metadata310of images with no vehicles present together, and store all of the filtered metadata310of images with vehicles present together. Likewise the metadata database105may store all of the filtered metadata310of images with no vehicle interiors shown together, and store all of the filtered metadata310of images with vehicle interiors shown together. In another embodiment, all of the filtered metadata310may include a data field that indicates the results of the different filtering components of filter305and may be stored together in the database105.

In another embodiment, each of the components of filter305may be located in a distributed fashion and each of the components may filter the labeled metadata210in parallel. For example, labeled metadata210may be retrieved and fed into component306and component307at the same time or substantially similar time for filtering via filter305. Each component may then filter the labeled metadata210into filtered metadata310Filtered metadata310may then be stored in the metadata database105, as noted above.

FIG. 4depicts an exemplary block diagram400of an image metadata sorting process, according to one aspect of the present disclosure. Diagram400may include a metadata sorter405for sorting filtered metadata310into sorted metadata410. Metadata sorter405may include a plurality of sorter components, for example, components406,407, and408configured to sort the filtered metadata310based on whether the image of the vehicle is a side-view of the vehicle, a front-view of the vehicle, or a back-view of the vehicle, respectively. Other sorter components, while not illustrated in diagram400, may also be included. For example, a component may be generated to sort filtered metadata310based on (1) the identification of the make of the vehicle in the image, (2) the identification of the model of the vehicle in the image, and/or (3) the identification of other angles of the vehicle in the image (for example, quarter profile of the vehicle, top-view of the vehicle, etc.). Other components may also be created to sort filtered metadata310based on the identification of any other labeled feature of the vehicle without departing from the scope of the present application.

Metadata sorter405may be configured to sort the filtered metadata310based on the order (e.g., the “sorting sequence”) of the sorter components in sorter405(e.g., components406,407, and408discussed above). As such, filtered metadata310may be retrieved from metadata database105, and processed by the sorter405. After processing, the images of the vehicle may be sorted such that images of the side of the vehicle will appear first, followed by images of the front of the vehicle, and then followed by images of the back of the vehicle. The sorted images may then be stored in the image database104in the order of sorting sequence and/or may be output on a user interface of the user device101in the order of the sorting sequence. The user interface may be an internet browser or may be an application executed on the user device101.

As illustrated in exemplaryFIG. 4, metadata sorter405may be made up of a plurality of components. Each component may be removed from sorter405, or new component may be added to sorter405at any point convenient to the vehicle aggregator103. As such, sorter405may be deployed to sort metadata as soon as components are introduced without delaying to wait for all components to be created. As new components are introduced and created they may be added to the sorter405without affecting the operations of the sorter405.

FIG. 5depicts an exemplary user interface500of the user device101, according to one aspect of the present disclosure. The user interface500may be an internet browser or may be an application executed on the user device101. User interface500may be configured to display the sorted images of vehicles to a user and may include the browser/application510, service provider identification area515, main image display area520, secondary image display area525, and navigation controls505. As depicted in user interface500, the images of the vehicle are sorted in the order represented byFIG. 4(e.g., the sorting sequence). For example, the images of the vehicle are arranged in the following order: a side-view image521of the vehicle is displayed first, followed by a front-view image522of the vehicle, and then followed by a back-view image of the vehicle523. The user may use the navigation controls505(e.g., forward and backward arrows) to navigate between the images displayed in the secondary image display area525, or the user may directly interact with a specific image within the secondary image display area525(e.g., via a mouse or touch interaction). Once an image is selected by the user using either the navigation controls505or direct interaction, then the image may be displayed in the main image display area520. The main image display area520may display the image at a larger size compared to the images in the secondary image display area525. The images in the secondary image display area525may be, for example, thumbnail images of the respective vehicle.

FIG. 6depicts an exemplary flow diagram of a method600for image processing, according to aspects of the present disclosure. Method600may begin at step601where the vehicle aggregator service provider103may train image plugins to analyze pre-labeled images. The pre-labeled images, as discussed above, may contain previously determined (e.g., known) metadata. At step602, a comparison may be performed of the metadata determined by the image plugins to the known metadata of the pre-labeled images to fix any errors and complete the training process. Upon the completion of plugin training at step602, at step603new images of vehicles may be obtained to analyze for metadata. The images of vehicles may be retrieved from the image database104. Upon obtaining vehicle images at step603, the images may be input into the trained image plugins at step604. Upon receiving the vehicle images, the image plugins may analyze the vehicle images at step605to identify metadata associated with the images. At step606the metadata associated with each of the vehicle images may be determined. The metadata may be related to the subject vehicle, for example, vehicle make, vehicle model, vehicle year, vehicle color, vehicle picture angle, vehicle options, etc. The metadata may also be related to the image file, such as image file size, image resolution, image location, image file type, etc. It is understood, that step606may be performed in a manner similar to that as described above in connection withFIG. 2. For example, determining the metadata associated with the vehicle images may include inputting the images into an image labeler205, and analyzing the images via components206,207,208, etc., to generate labeled metadata210.

Upon the determination of metadata related to the vehicle images at step606, the images may then be filtered at step607based on a rule set. The rule set may be determined by the vehicle aggregator service provider103, or any other appropriate party. The rule set may comprise metadata determined from the vehicle images. For example, images without any vehicles may be filtered out, or images below a certain size or resolution may be filtered out. Images that are filtered out may be deleted from the image database104, or may be stored in the image database104with an indication of the result of the filtering process. It is understood, that images may be filtered in a manner similar to that as described above in connection withFIG. 3. For example, the labeled metadata210of the images may be input into filter305, and filtered via one or more components306,307, etc., of filter305to generate filtered metadata310associated with the images. In such a way, the one or more components306,307, etc. of filter305may define at least a portion of the rule set. Upon the completion of the filtering step607, the filtered images may then be sorted at step608. For example, the filtered images may be sorted in a manner similar to that as described above in connection withFIG. 4. That is, the filtered metadata310of the images may be input into a sorter405, and sorted via one or more components406,407,408, etc. of sorter405to generate sorted metadata410associated with the images. The sorting sequence may be based on the same rule set (e.g. the order of the components) as the filter rule set in step607, or the sorting sequence may be based on a different rule set. The sorting step608may sort the images based on the same order as the components406,407,408, etc. For example, the sorting rule set may sort the images in the following order: image of the side of the vehicle first, then image of the front of the vehicle, followed by image of the rear of the vehicle. Upon the completion of the sorting step608, the sorted images may be displayed on a webpage at step609. At step610, navigation controls to navigate through the sorted images may be displayed on the webpage. The navigation controls (e.g., navigation controls505ofFIG. 5) may be displayed next to the images on the webpage (e.g., next to secondary image display area ofFIG. 5), or the navigation controls may be displayed as an overlay on top of the images. At step611, a user operating the user device101may use the navigation controls to view the sorted image displayed on the webpage.

FIG. 7depicts a high-level functional block diagram of an exemplary computer device or system, in which embodiments of the present disclosure, or portions thereof, may be implemented, e.g., as computer-readable code. In some implementations, the user device101may correspond to device700. Additionally, each of the exemplary computer servers, databases, user interfaces, modules, and methods described above with respect toFIGS. 1-6can be implemented via device700using hardware, software, firmware, tangible computer readable media having instructions stored thereon, or a combination thereof and may be implemented in one or more computer systems or other processing systems. Hardware, software, or any combination of such may implement each of the exemplary systems, user interfaces, and methods described above with respect toFIGS. 1-6.

If programmable logic is used, such logic may be executed on a commercially available processing platform or a special purpose device. One of ordinary skill in the art may appreciate that embodiments of the disclosed subject matter can be practiced with various computer system configurations, including multi-core multiprocessor systems, minicomputers, mainframe computers, computers linked or clustered with distributed functions, as well as pervasive or miniature computers that may be embedded into virtually any device.

For instance, at least one processor device and a memory may be used to implement the above-described embodiments. A processor device may be a single processor or a plurality of processors, or combinations thereof. Processor devices may have one or more processor “cores.”

As shown inFIG. 7, device700may include a central processing unit (CPU)720. CPU720may be any type of processor device including, for example, any type of special purpose or a general-purpose microprocessor device. As will be appreciated by persons skilled in the relevant art, CPU720also may be a single processor in a multi-core/multiprocessor system, such system operating alone, or in a cluster of computing devices operating in a cluster or server farm. CPU720may be connected to a data communication infrastructure710, for example, a bus, message queue, network, or multi-core message-passing scheme.

Device700also may include a main memory740, for example, random access memory (RAM), and also may include a secondary memory730. Secondary memory730, e.g., a read-only memory (ROM), may be, for example, a hard disk drive or a removable storage drive. Such a removable storage drive may comprise, for example, a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. The removable storage drive in this example reads from and/or writes to a removable storage unit in a well-known manner. The removable storage unit may comprise a floppy disk, magnetic tape, optical disk, etc., which is read by and written to by the removable storage drive. As will be appreciated by persons skilled in the relevant art, such a removable storage unit generally includes a computer usable storage medium having stored therein computer software and/or data.

In alternative implementations, secondary memory730may include other similar means for allowing computer programs or other instructions to be loaded into device700. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units and interfaces, which allow software and data to be transferred from a removable storage unit to device700.

Device700also may include a communications interface (“COM”)760. Communications interface760allows software and data to be transferred between device700and external devices. Communications interface760may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communications interface760may be in the form of signals, which may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface760. These signals may be provided to communications interface760via a communications path of device700, which may be implemented using, for example, wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels.

The hardware elements, operating systems and programming languages of such equipment are conventional in nature, and it is presumed that those skilled in the art are adequately familiar therewith. Device700also may include input and output ports750to connect with input and output devices such as keyboards, mice, touchscreens, monitors, displays, etc. Of course, the various server functions may be implemented in a distributed fashion on a number of similar platforms, to distribute the processing load. Alternatively, the servers may be implemented by appropriate programming of one computer hardware platform.