CAMERA NETWORK MANAGEMENT SYSTEM
FIELD OF THE INVENTION The present invention relates to camera and image acquisition systems connected to computer networks and, more particularly, relates to systems, apparatuses, and methods for providing a central point of administration and/or access to a distributed network of cameras.
BACKGROUND OF THE INVENTION One of the least anticipated and most powerful aspects of the Internet is the degree to which it has become a medium for visual communication. Although the Internet originated as a way to share data and text, networking and display technology breakthroughs have resulted in an on-line world where you do not just read information but take it in via multi-sensory perception (such as by viewing images and hearing sounds). This has created demand for communication that satisfies the innate human desire to look at something and accounts for the increasing popularity of "webcams," that is, cameras connected to the Internet (or other Wide Area Network or "WAN"), accessible to myriad users, that communicate still or video images of a physical location.
Cameras such as these, or other image acquisition devices, operably connected to the Internet allow users to view live images of various physical locations, such as amusement parks, beaches, parks, retail stores, and sports stadiums. The use of such webcams ranges, for example, from a single camera connected to a lone computer providing a view of a dorm room to an array of image acquisition devices networked with multiple computers (or industrial appliances) showing various views of an airfield. In addition, by extending this technology current "telepresence" systems offer users the ability to navigate through remote physical locations by remotely controlling a camera or image acquisition system. By these means, an average network user can connect to views from anywhere in the world by simply clicking on a Uniform Resource Locator ("URL") that contains a link
to remote webcams available over the Internet. Furthermore, portal Web sites that provide extensive lists of URLs, such as EarthCam (www.earthcam.com), now exist to help users locate a wide range of webcams. However, current camera portal Web sites do not ensure that each link provided to users points to a currently active camera. Inevitably, a camera or a server supporting the camera becomes inactive for a period of time. Camera network management systems and administration capabilities thus become a central concern in trying to provide robust and current visual communication.
A vast number of tools and schemes exist for managing communication on networks. For instance, distributed computing systems, in which client computers communicate with servers, use a name service for identifying and interacting with a network's member computers. Popular Cisco Systems™ router networks coordinate and manage basic "packet" distribution, upon which Internet communication is based. The widely used networking protocol DHCP (dynamic host configuration protocol) dynamically assigns IP addresses to computers joining a network. And the most recent Internet Protocol version 6 (IPv6) provides for network autoconfiguration and address servicing for mobile devices.
Recent innovations in network-related software have also advanced the ability to manage and customize the use of services on networks. The JINI™architecture by Sun Microsystems, Inc. creates an infrastructure for providing network services in which programs can spontaneously interact and "discover" each other so as to form a robust network making all available services immediately accessible to network members. By managing and publishing services available on the network in a dynamic and distributed fashion, such JINI technology allows clients to rely upon the available network services. At this time, no such reliable camera network system management exists. Although service companies like InterSTAR Systems, Inc., (www.interstarsystems.com) provide remote monitoring of real-time closed circuit video and audio transmissions for security applications, currently no software exists for monitoring camera status, centrally administering networked camera systems, and controlling the availability of links to networked cameras. Commercial and industrial entities employ and depend on distributed camera networks for such purposes as video security and surveillance systems, manufacturing line monitoring systems, and e-commerce systems. With any such system,
camera and system failures can cause a number of problems. In light of the foregoing, a need exists for a system that monitors the status of cameras connected to a computer network and provides a central point of administration for a distributed network of cameras. The present invention, in certain embodiments, achieves these objectives and others.
SUMMARY OF THE INVENTION The present invention provides methods, apparatuses and systems involving a central point of administration and access to a distributed network of cameras. According to one embodiment, cameras connected to a computer network are monitored to detect the status of each camera. In one embodiment, the present invention manages a camera database (including the status and other information related to at least one camera). In one embodiment, the present invention provides functionality and a corresponding set of application programming interfaces ("APIs") upon which applications can be created that allow access to and/or administration of a distributed network of cameras. In one embodiment, these APIs can be used to construct an interface allowing an administrator to monitor and manage a distributed network of cameras. In another embodiment, a user interface can be created to provide a central point of access, such as a webcam portal, to currently active cameras.
In one embodiment, the present invention provides a system for managing cameras connected to a computer network. The system comprises at least one camera and a camera management engine, both operably coupled to a computer network. In one embodiment, the camera management engine monitors the status of the camera over the computer network. In one embodiment, this monitoring activity is recorded in a camera database. According to one form of this embodiment, the system includes functionality and corresponding APIs allowing applications using such APIs to, for example, search and extract information from the camera database. In another form of this embodiment, for example, such APIs can be used to construct an administrator interface that allows for configuration of the system.
In another embodiment, the present invention provides an apparatus for managing cameras connected to a computer network. According to this aspect, the apparatus comprises a camera database and a processor operably connected to the
camera database. The camera database includes camera identifiers and camera addresses associated cameras connected to a computer network. The processor is communicably coupled to the computer network to monitor the status of said cameras and record the status in the camera database. In one embodiment, the processor accesses the camera database to retrieve a camera address and transmit a status request to the corresponding camera. In one embodiment, the apparatus further includes functionality and corresponding APIs allowing access to the camera database.
In yet another embodiment, the present invention provides a method for monitoring cameras connected to a computer network. In this embodiment, the method comprises (a) monitoring the status of at least one camera connected to a computer network; (b) recording the status of a desired number of cameras; and, (c) generating a list of active cameras. In one embodiment, the method comprises (a) transmitting a status request to a camera; (b) recording a response to the status request; (c) repeating steps (a)-(b) for a desired number of cameras; and, (d) generating a list of active cameras. In one embodiment, the method further comprises (e) receiving a request for a list of cameras; and (f) transmitting the list of active cameras. In an alternative embodiment, the method further comprises (e) receiving a request for a list of cameras; (f) generating a list of available cameras; and (g) transmitting the list of available cameras.
In another embodiment, the present invention provides a method for providing a list of currently available cameras connected to a computer network. This method comprises (a) receiving a request for a list of cameras; (b) transmitting a status request to one of the cameras; (c) recording a response to the status request; (d) repeating steps (b)- (c) for a desired number of cameras; and, (e) transmitting a list of cameras in response to the request received in step (a). In still another embodiment, the present invention provides a method for providing a currently available camera connected to a computer network. This embodiment of the invention comprises the steps of (a) receiving an image request, the image request identifying a camera connected to the computer network; (b) transmitting a status request to the camera; (c) transmitting the image request to the camera, if the camera is active. In one embodiment, the method further comprises (d) transmitting the image request to an alternate camera, if the camera is inactive.
In yet another embodiment, the present invention is an apparatus for managing cameras connected to a computer network, comprising a camera database including camera identifiers, camera addresses, and access parameters associated with each of the cameras, wherein the cameras are operably connected to the computer network; and, a camera management engine operably connected to the camera database. According to the embodiment, the camera management engine is communicably coupled to the computer network to provide access the cameras. In addition, the camera management engine allows an administrator to configure the access parameters that are operable to condition a user's ability to receive images from the camera. DESCRIPTION OF THE DRAWINGS
Figure 1 is a functional block diagram illustrating one embodiment of the system and apparatus of the present invention.
Figure 2 is a functional block diagram illustrating a second embodiment of the system and apparatus of the present invention. Figure 3 is a functional block diagram illustrating a third embodiment of the system of and apparatus of the present invention.
Figure 4 is a flow chart setting forth a method according to the present invention. Figure 5 is a flow chart illustrating a second method according to the present invention. Figure 6 is a flow chart providing a third method according to the present invention.
Figure 7 is a flow chart diagram showing a fourth method according to the present invention.
Figure 8 is a flow chart diagram illustrating a fifth method according to the present invention.
DESCRIPTION OF PREFERRED EMBODIMENT(S) Figure 1 shows an embodiment of the system of the present invention. One embodiment of the present invention involves at least one client computer 50, at least one camera 22, and at least one camera management system 30, all of which are communicably connected to a computer network 40 (such as the Internet). The embodiment of Figure 1 further includes image acquisition system 20 including cameras
22 located remotely from client computer 50 and communicably connected to camera management system 30 via server 28 and computer network 40. The present invention can be applied across any computer network, such as a Local Area Network or Wide Area Network. Suitable types of computer networks include, but are not limited to, a wireless computer network, an electronic network, and an optical network.
As Figures 2 and 3 demonstrate, the present invention can be implemented in a variety of network configurations. Figure 2, for example, shows cameras 24 directly connected to computer network 40. Figure 3 illustrates a system where cameras 24 and image acquisition system 20 are communicably connected to camera management system 30 via computer network 42 (such as a Local Area Network (LAN) or a Wide Area
Network (WAN)). Client computers 50, however, are communicably connected to camera management system 30 via another computer network 40 (such as a second LAN or the Internet). In addition, communication between client computer 50 and camera management system 30 can occur via a dedicated line. A. Image Acquisition Systems and Cameras
According to the invention, the camera and image acquisition systems used in the present invention are image sources capable of capturing live still or video images and transmitting these images over a computer network. The present invention works in connection with a variety of camera and image acquisition systems. The exact configuration of the camera or image acquisition systems employed are not critical to the invention. Rather, the present invention provides a central point of administration and/or access for a network of different camera and image acquisition systems.
Figure 1 illustrates a telepresence system wherein users at client computers 50 access image servers 28 to request and receive images captured by image acquisition systems 20. In one embodiment, users can navigate through the location in which cameras 22 are mounted by switching between cameras in the same location and remotely controlling the angular and zoom settings of each camera. In Figure 1 , image acquisition system 20 captures images and transmits image data to image server 28. In one embodiment, image acquisition system 20 comprises cameras 22 operably coupled to and controlled by camera controller 26. Of course, any number and combination of cameras and device controllers may be used. In another embodiment, the image
capture, control and compression functionality of camera controller 26 may be embedded in cameras 22.
According to the invention, cameras 22 can either be movable or fixed cameras. In one embodiment, cameras 22 capture images of selected regions in a remote physical location. In the embodiment shown in Figure 1 , cameras 22 are computer-controlled pan/tilt/zoom cameras. According to this embodiment, camera controller 26 receives control signals from server 28 designating selected regions of a remote physical location. Camera controller 26, in response to such control signals, selects a camera, changes the position (pan and tilt, for example) and magnification (zoom) of the selected camera such that it captures the desired image of the selected region. In other embodiments, the image acquisition system comprises a single fixed camera returning a live still or video image of a remote physical location.
A variety of communication paths between camera controller 26 and image server 28 are possible. As Figure 1 illustrates, camera controller 26 can be directly connected to server 28. Such a connection could also occur via a local area network (LAN) or a wireless communication system. Alternatively, communication between camera controller 26 and image server 28 can occur via the Internet or other wide-area network. Moreover, the functionality of image server 28 can be incorporated into camera controller 26. In one embodiment, cameras 22 are computer-controlled cameras, whose pan, tilt (angular positions) and zoom settings are controlled and adjusted electro-mechanically by servo motors, as is conventional. In addition, cameras 22 can be movably mounted on tracks located at the remote physical location. Their position on the track can be similarly controlled by servo motors. Cameras 22 can be video cameras or still cameras. In addition, cameras 22 can be analog cameras, whose signal is digitized by a conventional frame-grabber. Cameras 22 can also be digital cameras, or any other suitable camera system. In one embodiment, cameras 22 are analog cameras that take still images. According to one form of this embodiment, camera controller 26 includes a frame-grabber board or other suitable device for digitizing the camera signal. According to one embodiment, camera controller 26 converts the resulting image into a JPEG or GIF
(or any other suitable format) image data file before it is transmitted to image server 28.
In other embodiments, the camera signal is transmitted to image server 28, which converts the signal into a suitable format.
A wide variety of camera and image acquisition systems can be used in the present invention. As Figures 2 and 3 show, the network communication and control functionality of image server 28 can be embedded into individual cameras 24.
Moreover, as Figure 3 demonstrates, a combination of different camera and image acquisition systems may be employed.
Furthermore, currently available telepresence systems of widely varying configurations may be employed in the present invention. For example, other embodiments of the present invention may employ cameras having a fixed angular position with wide-angle view systems (including parabolic or "fish eye" lenses) such that displacement of the camera in the pan and tilt directions is unnecessary to capture images of the entire remote physical location. U.S. 5,877,801 provides an example of such a telepresence system. According to the '801 patent, the camera system transmits a distorted image of the entire field of view to a local site that processes the image data to display that portion of the image selected by the user. In one embodiment employing such a camera system, image server 28, or a device controller connected thereto, processes the distorted image to derive the image of the selected region designated by the control signals from the user interface. Still further, the image acquisition system may include an array of cameras extending radially from a common point in combination with software to stitch the resulting images together, as offered by Infinite Pictures Corporation as part of its "SmoothMove" Technology. Other suitable camera systems include a fish eye lens and de-warping and spherical viewing image processing software, such as that disclosed in U.S. Re. 36,207. Other suitable systems may include a camera system using a convex mirror disclosed in U.S. 5,760,826.
B. Camera Management System
In one embodiment, camera management system 30 monitors the status of cameras connected to computer network 40 and provides a central point of administration for and access to a distributed network of cameras. According to one embodiment, camera management system 30 is communicably connected to at least one camera over a computer network. As Figures 1 -3 demonstrate, communication between
camera management system 30 and each camera can occur via other devices (such as a server 28 and/or camera controller 26 of Figure 1 , or directly through a computer network 42 or a dedicated line). Furthermore, as shown in Figures 1 and 2, camera management system 30, in some embodiments, includes administrator interface 39 allowing for control, configuration and monitoring of the system. In an alternative embodiment, administrator interface 39 is physically remote from camera management system 30. In one form of this embodiment, communication of data between administrator interface 39 and camera management system 30 occurs over computer network 40. As Figure 1 shows, camera management system 30, in one embodiment, includes server 32 and camera database 34. In the embodiment of Figure 1 , server 32 is operably connected to computer network 40. In one embodiment, camera management system 30 transmits status requests to each camera 22 of image acquisition system 20 and records a response. In one embodiment, these recorded responses are used for monitoring activities, such as generating a list of currently active cameras or providing a notification to a systems administrator if a camera failure is detected. (See discussion below.) In another embodiment, camera management system 30 provides and controls access to active cameras. In another embodiment, the cameras or image acquisition systems transmit status registrations to camera management system 30 without first receiving a status request. In one form, the camera 24, camera controller 26, and/or image server 28 determines the status of the camera and transmits a status registration to camera management system 30. In one form, the status registration is transmitted using a computer network address of camera management system 30. In one embodiment, the cameras monitored by camera management system 30 are configured to transmit status registrations at predetermined intervals. According to one form of this embodiment, if camera management system 30 does not receive a status registration as expected from a particular camera, it assumes the camera is inactive.
Figure 2 shows one embodiment of server 32 of camera management system 30. This embodiment of server 32 includes camera management engine 31 , query engine 33, camera database 34, image scheduling engine 35, and communications/network protocol 37. According to one embodiment, camera database 34 includes a list of
cameras (camera identifiers) and an address for each camera. In another embodiment, camera database 34 further includes the status of each camera. In yet another embodiment, camera database 34 further includes access control parameters for each camera. Of course, any suitable camera information can be stored in association with each camera identifier. According to one embodiment of camera database 34, the database includes a record for each camera whose fields include a camera identifier, a camera address, camera status, and access control parameters. Other fields may also be included, such as fields for the type of camera, geographic location, the camera administrator's identity and e-mail address, a schedule of requested images, etc. As discussed more fully below, camera management engine 31 monitors the status of the cameras listed in camera database 34. In one embodiment, the status of each camera is recorded in camera database 34. In one embodiment, query engine 33 allows users and/or administrators to search and display the contents of camera database 34. In another embodiment, query engine 33 allows for modification of data in camera database 34. In one embodiment, query engine 33 includes a set of APIs allowing applications (such as Java Server Pages or Applets) to be created that make calls to query engine 33. Image scheduling engine 35 requests images of designated cameras at predetermined times or intervals and stores them in a database. In one form, the image schedule corresponding to a particular camera is stored in camera database 34. Communications/network protocol 37 formats messages and other communications as appropriate for transmission to or receipt from computer network 40.
Camera database 34 can be any form of database known in the art (for example, a relational database or flat-file database). In one embodiment, camera database 34 has associated therewith a collection of computer programs enabling the storage, modification, and extraction of information in the database. The database may be stored on any suitable device ranging from personal computers (for small systems) to mainframes (for large systems). In addition, the functionality of server 32 may be implemented in hardware or software, or a combination of both. In one embodiment, server 32 is a programmable computer executing computer programs, comprising at least one processor, a data storage system, at least one input device, and at least one output device. In addition, as one skilled in the art will recognize, the database described above
may reside on server 32, or may be physically separate, but operably connected thereto. C. Application Programming Interfaces and User and Administrator Interfaces
According to one embodiment of the present invention, server 32 includes functionality and corresponding public and/or administrative application programming interfaces (APIs) upon which applications can be created that allow for access to and/or management of a distributed network of cameras. In one embodiment, server 32 includes query engine 33 including APIs that allow searching of information in camera database 34. (See Figure 1). For example and in one embodiment, the command "getAllCamsO" returns a list of all cameras in camera database 34. In another example, the command "getLiveCamsO" returns all active cameras listed in the camera database. In another.embodiment, query engine 33 allows an administrator to add, delete or edit access control parameters for a particular camera or group of cameras stored in camera database 34. In one embodiment, applications making calls to these APIs can be incorporated into server 32 or can reside on a separate computer operably connected to server 32. Furthermore, as discussed below, server 32 can include other functionality such as image scheduling engine 35 and corresponding APIs to which applications such as user or administrative interfaces can make calls.
In one embodiment, calls to the public functions and methods of server 32 are used to construct a user interface providing a central point of access to a distributed network of cameras. For example and in one embodiment, a web portal site can be created that includes a page having a list of currently active and available cameras. In one embodiment, Java Server Pages (JSPs) are used to construct the user interface. Or course any suitable method for calling the public functions and methods of server 32 can be used. In one form, the URL corresponding to the list of cameras available to a user points to a JSP page that includes calls to the public functions and methods of camera management system 30. Accordingly, when a user accesses the JSP page, the executable code embedded in the JSP calls methods provided by query engine 33 of server 32 to, for example, retrieve all available cameras, and dynamically returns an HTML page to the user. In one form, the web or HTML page transmitted to the user includes a list of hypertext links corresponding to the currently available cameras. In one embodiment, when the user selects a particular camera in the list (for example, by clicking on one of a
series of hypertext links), camera management system 30 passes the user directly to the requested server 28 or image acquisition system 20. In one embodiment, for example, at least one camera source is a telepresence system. Accordingly, once the user selects a particular camera source, the user interface provided by the image acquisition system allows users to control the camera source (if the camera source allows) and navigate a remote physical location by receiving images of selected regions therein and designating new selected regions for viewing. For example, users, employing the controls provided by the user interface, remotely control image acquisition system 20 via image server 28. One embodiment of the user interface is implemented using page-based interfaces transmitted to a conventional computer 50 having an Internet browser 52 and a connection to the Internet 40. The user's computer 50 can be any computer, special- purpose computing device, or any other suitable device for performing the required functionality. In one embodiment, user computer 50 includes at least one processor, a data storage system (including volatile and non-volatile media), a keyboard, a display, at least one input device and at least one output device. In one embodiment, the user's computer is connected to the Internet via a modem dial-up connection or through a network line. Such communication, however, could also be wireless. In addition, although embodiments of the system are described as working in conjunction with a browser, any suitable device or application for receiving, displaying and transmitting data over a computer network can be used with the present invention.
The use of page-based interfaces is desirable since such interfaces work on most browsers and provide a simple way of accessing files and functionality over a computer network. However, the interface may also be provided on the user's computer via a Java applet or a client-side plug-in which the user downloads prior to using the system. The interface may also be provided by a separate, special purpose application, which operates independently of a browser. Additionally, the present invention may work in conjunction with a special purpose kiosk or WebTV® player. In addition, the interface can also be implemented on a hand-held device, such as a PALM PILOT®.
In addition, embodiments of the present invention also include administrative functions and corresponding APIs to create an administrator interface (see Figure 1 , Ref.
No. 39). In one embodiment, as more fully discussed below, the administrator interface
is a means by which monitoring activity and access associated with the network of cameras is configured. For example, the administrator interface allows an administrator to add or delete cameras from camera database 34. It also allows an administrator to add or edit access control parameters for one or more cameras in the database. As discussed above, the administrator interface can be created by constructing JSP or HTML pages on a general purpose computer. In another embodiment, the administrator interface is implemented on a special-purpose computer. D. Operation
As more fully discussed below, embodiments of the present invention monitor the status of cameras and record information relating to such status in a database. In addition, certain embodiments of the present invention provide functionality and corresponding APIs upon which various applications can be built that access the data contained in camera database 34. This configuration allows for the development of applications using such APIs that provide a central point of administration for a distributed network of cameras, as well as provide, manage, and/or control access to the cameras. For example, an application, via a JSP page can be created that provides a dynamically generated list of active cameras. In other embodiments, a dynamic list of active cameras is generated in response to a request from a user or administrator. In addition, some embodiments of the present invention check to ensure that a camera source is active before serving it to the user. In one form of this embodiment, if a camera source is inactive, an alternate camera (if one is available) is provided. 1. Camera Status Monitoring and Recording
According to one embodiment of the present invention, camera monitoring is performed by transmitting status requests to cameras contained in camera database 34. According to one embodiment, each camera connected to the network 40 has an address such that status requests, as well as image requests can be transmitted to it. In one embodiment, a status request is embedded in a computer network address or URL comprising the address of the camera and a status request command. According to this embodiment, the cameras contained in camera database 34 are configured to recognize the status request command and return a response. (See discussion below.) In one embodiment, server 32 records the status of each camera in camera database 34.
In another embodiment, the cameras associated with camera management system 30 are configured to transmit status registrations to, for example, server 32. In one form, the cameras or image acquisition systems are configured to perform a series of diagnostics at a predetermined interval and transmit a status registration containing the results of such diagnostics to camera management system 30. In one embodiment, the information contained in the status registrations received by server 32 are used to update the records in camera database 34. In one form of this embodiment, server 32 is also configured to record a camera failure, if a status registration from a particular camera is not received as expected. a. Transmitting Status Requests and Recording Responses
Figure 4 sets forth a method according to the present invention for monitoring the status of a network of cameras. As Figure 4 indicates, one embodiment of the monitoring method of the present invention includes a monitoring loop, wherein camera management engine 31 of server 32 steps through the list of cameras in camera database 34 and transmits status requests to each camera. More particularly and in one embodiment, transaction management engine 31 retrieves a camera address from camera database 34 and transmits a status request to the retrieved camera address (Figure 4, step 102). In one embodiment, the status request comprises the camera address of the intended camera and a command that causes the recipient camera to return a response. In one embodiment, the command causes the camera to perform a series of diagnostic tests and return the results of the test to camera management engine 31. In another embodiment, the camera merely returns a status indicator, such as "active" (positive response) or "disabled" (negative response). In another embodiment, the status request is a request for an image, which, if returned, indicates that the camera is active.
As Figure 4 indicates, the response to a status request is subsequently recorded (Figure 4, step 104). In one embodiment, camera management engine 31 accesses the record corresponding to the responding camera in camera database 34 and records its response in a camera status field. According to one embodiment, if a camera does not respond within a predetermined amount of time (e.g., if the status request times out), camera management engine 31 deems this as a negative response to a status request and
records an inactive or disabled response in the appropriate status field.
As steps 106 and 108 of Figure 4 illustrate, camera management engine 31 transmits a status request and records a response for each camera listed in camera database 34. In other embodiments, however, camera management engine transmits status requests to a subset of the list of cameras contained in camera database 34. As discussed more fully below, the responses recorded in camera database 34 can be used to generate a list of active cameras. In addition and in one embodiment, this monitoring loop is continuously repeated (see Figure 4, steps 106 and 114). In one embodiment, camera management engine delays for a predetermined length of time (step 112) before reinitiating the monitoring loop and refreshing the camera status information in camera database 34.
Furthermore, one embodiment of the present invention transmits a camera failure notification if a camera responds negatively to a status request (Figure 4, steps 105 and 107). In one form, camera database 34 includes a camera administrator field for each camera record. According to this embodiment, camera management engine 31 retrieves the address of the administrator of the inactive camera from camera database 34 and transmits a failure notification to the camera administrator. This failure notification is transmitted, in one embodiment, as an e-mail. Alternatively, a negatively responding camera can be added to an inactive camera list accessible through administrator interface 39. b. Status Registration Monitoring As discussed above, camera management system 30, in another embodiment, monitors camera status by receiving status registrations at predetermined intervals. Figure 7 sets forth a method illustrating one embodiment employing status registrations. As Figure 7 shows, in one embodiment, camera management engine 31 performs a database monitoring loop (see Figure 7, steps 410, 412, 414, 416 and 418) as it receives status registrations from the various cameras associated with the system (see Figure 7, steps 402, 404, 405). Specifically, server 32 is configured to receive status registrations from cameras (step 402) and record the status information contained in the status registration in camera database 34 (step 404). As Figure 7 illustrates, if the status registration indicates that the camera is inactive (step 405), a failure notification is
transmitted (step 407). In one embodiment, status registrations include the computer network address of camera management system 30 allowing for monitoring of the status of cameras operably connected to a wide area network.
In one embodiment, each camera record includes the time the last status registration was received, as well as the schedule of expected status registrations. As
Figure 7 shows, server 32 concurrently monitors the receipt of status registrations by scanning camera database 34. Specifically, starting with the first camera in camera database 34 (step 410), server 32 accesses camera database 34 to retrieve the time of the last received status registration and determines whether the particular camera has transmitted a status registration as scheduled (step 416). If the latest-expected status registration was received, server 32 proceeds to the next camera in the database (steps 414 and 412). However, if the last-expected status registration is not received, server 32 records the status of that camera as inactive and reports a failure notification (step 407). c. Active Camera List Generated On-Demand Figure 5 provides an alternative method that generates and provides a list of active cameras in response to a user request. Similar to the embodiment of Figure 4, after a request for a list of available cameras is received (Figure 5, step 202), camera management engine 31 performs a monitoring loop as provided by steps 204, 206, 208, 210 and 212 to identify the active cameras listed in camera database 34. The recorded responses are used to generate a list of active cameras (Figure 5, step 214), which is transmitted to the user in response to the request received in step 202 (Figure 5, step 216). In addition, the access control and administrator notification routines illustrated in Figure 4 can be incorporated into the method set forth in Figure 5. In addition, the method set forth in Figure 5 can be used with any list of cameras, regardless of monitoring activity. In one such embodiment, the camera administrator can control access to the camera merely by changing the status of each camera in camera database 34.
2. Generating Lists of Active Cameras and Controlling Access to Cameras
In one embodiment of the invention, the monitoring activity recorded in camera database 34 can be used by administrators and/or users via applications written to the
APIs presented by server 32. For example, a list of active cameras can be transmitted to
a user at client computer 50 in response to a request. As described below, however, certain embodiments allow for control over user access to cameras.
In one embodiment, query engine 33 receives a request for a list of active cameras and scans camera database 34 to generate a list of active cameras. Such a request could be transmitted by a user or an administrator as a direct command to query engine 33. As discussed above, in another embodiment, query engine 33 includes a set of APIs allowing applications using them to search and/or modify data in camera database 34. In one form, for instance, the command "getLiveCams" returns a list of all active cameras listed in camera database 34. More functionality and corresponding APIs can be added to achieve various objectives. For example, Figure 8 shows an embodiment of a method where access controls associated with one or more cameras in camera database 34 are used to control access to such cameras. In one embodiment, query engine 33 receives a request for a list of available cameras (Figure 8, step 502). Starting with the first camera in camera database (step 504), query engine 33 scans the status field in the corresponding camera record to determine whether the camera is active (step 506). If the camera is active, query engine 33 scans the camera record to determine whether access is allowed for such camera (step 508). If access is allowed, the camera is added to the list of available cameras (step 510). This process is repeated, in one embodiment, for the entire list of cameras (steps 512 and 514). When query engine 33 reaches the end of the camera list, server 32 transmits the list of available cameras in response to the request (step 516).
In one embodiment, the list of available cameras is transmitted as a list of hypertext links to the available camera sources. In one form of this embodiment, a user request for a list of available cameras is associated with a JSP page residing in, for example, server 32 of camera management system 30. Of course, the JSP page may reside in another server remote from server 32. The JSP page, when called, includes calls to the APIs presented by query engine 33 to return a list of available cameras. In one form, the list of available cameras is constructed in an HTML page where each listed camera identifier is a hypertext link to the actual camera source. In one embodiment, clicking on the hypertext link causes server 32 to pass the user to the camera source.
Accordingly, the user's subsequent requests for images from the selected camera occur,
for example, directly between client computer 50 and server 28. (See Figure 1 .) 3. Database Queries and Management
In one embodiment of the present invention, query engine 33 includes functionality and corresponding APIs for access and management of data in camera database 34. \n one form, applications using such APIs can be created to access the data in camera database 34 and the functionality provided by server 32. For example and as discussed above, query engine includes APIs, such as "getLiveCams", to retrieve all active cameras. In addition, query engine 33, in other embodiments, includes functionality allowing "keyword" or other types of searches for a particular camera or group/category of cameras and for display of the list of cameras grouped according to specified criteria.
In one embodiment, query engine 33 comprises computer program code presenting application programming interfaces that allow for access to data in camera database 34. In one embodiment, query engine 33 allows users and/or administrators to search the records and fields of camera database 34. In one embodiment, query engine 33 allows users, at client computers 50, and/or an administrator, at administrator interface 39, to search for particular cameras or groups of cameras. In one embodiment, users access query engine 33 of server 32 to perform a search of available cameras in a particular category. The search can be performed based on a generated list of active cameras or a list of all cameras in database regardless of whether they are currently active or available. In one embodiment, access to information relating to all cameras regardless of availability is restricted to administrators using administrator interface 39.
In one embodiment, query engine 33 allows users to see a list of cameras organized by one or more categories of information available in camera database 34. In one embodiment, query engine 33 scans the fields in camera database 34 to organize the list of cameras in a hierarchical scheme. For example, this hierarchy can be based on geographic location, wherein the each camera record includes fields for the geographic location of each camera. According to one form of this embodiment, the cameras can be categorized according to city, state or province, and country. As one will recognize, cameras can also be sub-categorized according to the city or local region. In another embodiment, cameras can be categorized according to the type of location in which the camera is located. Illustrative categories include retail store cameras, amusement park
cameras, beach cameras, park cameras, and traffic cameras.
In addition, the present invention allows for a hierarchical categorization scheme for the cameras stored in camera database. According to this aspect, an administrator can group cameras into categories according to a hierarchical naming scheme and, using query engine 33, query camera database 34 to display any group or sub-group of camera. For example, an administrator can define the camera identifiers according to a hierarchical scheme, such as
/store1/room1/cam1
/store1/room1/cam2 /store1/room1/cam3
/storel /room2/cam1 /storel /room2/cam2 According to one embodiment, query engine 35 allows the administrator and/or user to retrieve all cameras in "storel " or all cameras in "rooml " of "storel ." 4. Active Camera Check and Alternate Camera Switching
Figure 6 illustrates another method according to the present invention. In this embodiment, server 32 presents a list of cameras to a user. According to this embodiment, when the user activates a link to the selected live camera source, server 32 first ensures that the camera is active/available before serving the live source to the user. More particularly and in one embodiment, when server 32 receives a request for an image from a particular camera (here, "Camera X") (Figure 6, step 302), it transmits a status request to the requested camera (step 304). If the camera is active (Figure 6, step 306), server 32 transmits the image request to the designated camera (step 308). According to one embodiment, the requested image is then served directly to the user's computer 50 by the requested camera source. According to this embodiment, all further requests for images from that image source occur between that image source and the user's computer.
In one embodiment, camera database 34 includes a field in each camera record storing an alternate camera. As Figure 6 indicates, if the requested camera is inactive, server 32 scans camera database 34 for an alternate camera (step 310). If no alternate camera exists, an error message is transmitted to the user (step 312). However, if an
alternate camera is available, the image request is transmitted to the alternate camera (step 316). In one form of this embodiment involving computer-controlled movable cameras, camera management engine 31 calculates the positional parameters required for the alternate camera to fulfill the image request submitted by the user (Figure 6, step 314).
In addition, camera management engine 31 can also be configured to locate an alternate camera if a camera failure is detected during the monitoring loops illustrated in Figures 4 and 5. In one form of this embodiment, the list of active cameras presented to the user includes a link to the alternate camera, if one is available. 5. Image Scheduling
In one embodiment, server 32 includes functionality and APIs to support an image scheduling engine 35 that sends requests for live images to various cameras contained in camera database 34 on a programmed schedule. In one embodiment, the schedule is programmed using administrative interface 39. In another embodiment, users at client computer 50 are granted privileges to schedule live image requests and to have the images stored at a location specified by the user. In one form of this embodiment, image scheduling engine 35 stores user-created schedules and executes them as appropriate. In one embodiment, each camera record in camera database 34 includes an image scheduling field indicating when scheduled images are to be taken. In one form, image scheduling engine 35 repeatedly steps through the image schedule fields in camera database 34 to determine whether an image request should be sent to a particular camera. In one embodiment, the resulting images are stored in an image database or camera database 34.
In one embodiment, image scheduling engine 35 is configured to request thumbnail images from each camera listed in camera database 34 on a periodic basis
(e.g., hourly, daily, etc.). In one embodiment, the thumbnail image is stored in a thumbnail database and a URL pointing to the thumbnail image is stored as a field in each camera record in camera database 34. In one form of this embodiment, these thumbnail images are displayed in association with a camera identifier when a user requests a list of active cameras. According to one form of this embodiment, the user need only click in the thumbnail image to be connected to the corresponding live image
source.
Image scheduling engine 35 can also be used for other purposes such as monitoring the progress of a construction site and recording this progress by storing the captured images in a database. In addition, a user at client computer 50 can configure a schedule run by image scheduling engine 35 that, for example, requests images from various cameras and stores them for subsequent access by the user. In one embodiment, all schedules are stored separately in a database. Alternatively, image schedules can be stored as another field in each camera record. According to this embodiment, one field includes the schedule, while another field stores the file path where the images are to be stored.
With respect to the above-provided description, one skilled in the art will readily recognize that the present invention has application in a variety of contexts. The foregoing description illustrates the principles of the present invention and provides examples of its implementation. Accordingly, the description is not intended to limit the scope of the claims to the exact embodiments shown and described.