text:
A digital video system including a computer connected via a network to a number of video servers and cameras. The computer includes a program that provides a grid of display windows, each of which displays an image received from the camera associated with that window. The program sequentially polls each camera, accessing and displaying an image from the camera in its associated window. The program can access the cameras at different frame rates. The program stores image streams in a single file, concatenating each successive image onto the end of the file. The file is then indexed using SOI and EOI markers to permit fast access to individual images within the file. The program can monitor received video and automatically start recording upon detecting motion within the video stream. Motion detection is implemented by comparing color component values for pixels from different images.
1. A computer readable medium for use by a computer in providing an interface to multiple cameras accessible to the computer via a network, comprising:
a digital storage device;
a user interface program stored on said digital storage device in computer readable form, said program being operable upon execution by the computer to access camera data uniquely identifying the cameras and to attempt access to the cameras over the network using the camera data;
wherein said program is further operable to verify access to those ones of the cameras that are accessible over the network and to generate a user interface display on the computer that includes a display window for each of the cameras accessed over the network and to display in each of the display windows an image received from the camera associated with that display window.
2. A computer readable medium as defined in
3. A computer readable medium as defined in
4. A computer readable medium as defined in
5. A computer readable medium as defined in
6. A computer readable medium as defined in
7. A computer readable medium as defined in
8. A computer readable medium as defined in
9. A computer readable medium as defined in
10. A computer readable medium as defined in
11. A computer readable medium as defined in
12. A computer readable medium as defined in
13. A computer readable medium as defined in
14. A computer readable medium as defined in
15. A computer readable medium as defined in
16. A computer readable medium as defined in
17. A computer readable medium as defined in
18. A computer readable medium as defined in
19. A computer readable medium as defined in
20. A computer readable medium as defined in
21. A computer readable medium as defined in
22. A computer readable medium as defined in
23. A computer readable medium as defined in
24. A computer readable medium as defined in
25. A computer readable medium as defined in
26. A computer readable medium as defined in
27. A computer readable medium as defined in
28. A computer readable medium as defined in
29. A computer readable medium as defined in
30. A computer readable medium as defined in
31. A computer readable medium for use by a computer in detecting motion in a sequence of color video images received by the computer, comprising:
a digital storage device;
a program stored on said digital storage device in computer readable form, said program being operable upon execution by the computer to select one of the video images as a reference image and another of the video images as a selected image to be compared to the reference image;
wherein said program is operable to access a color component value for each of a number of pixels from the reference image and for each of a number of corresponding pixels from the selected image, with said program being operable to perform pixel comparisons using the color component values and to generate a motion detect signal when the difference in color component values for corresponding pixels from the reference and selected images differ by more than a preselected amount.
32. A computer readable medium as defined in
33. A computer readable medium as defined in
34. A computer readable medium as defined in
35. A computer readable medium as defined in
36. A computer readable medium as defined in
37. A computer readable medium as defined in
38. A computer readable medium as defined in
39. A computer readable medium as defined in
40. A computer readable medium as defined in
41. A computer readable medium as defined in
42. A computer readable medium as defined in
43. A computer readable medium as defined in
44. A computer readable medium as defined in
45. A computer readable medium as defined in
46. A computer readable medium as defined in
47. A computer readable medium as defined in
48. A computer readable medium as defined in
49. A computer readable medium as defined in
50. A computer readable medium for use by a computer in recording a sequence of images, each of which comprises an individual image file in which the image is represented in a graphics file format that includes a first marker identifying the start of the image and a second marker identifying the end of the image, comprising:
a digital storage device;
a program stored on said digital storage device in computer readable form, said program being operable to store the images together as a single file that comprises the images concatentated together in sequential order;
wherein said program is further operable to index the file using the first and second markers.
51. A computer readable memory as defined in
52. A computer readable memory as defined in
53. A computer readable memory as defined in
54. A computer readable memory as defined in
55. A computer readable memory as defined in
56. A computer readable memory as defined in
57. A computer readable memory as defined in
58. A computer readable memory as defined in
59. A digital video system, comprising:
a client computer,
one or more video servers accessible by the client computer over a network;
a plurality of cameras connected to the video server(s), said video server(s) providing an interface between the cameras and client computer in which images from the cameras are accessed by the video server(s) and then sent to the client computer upon request by the client computer;
wherein the client computer provides a user interface display on the computer that includes a display window for each of the cameras accessed over the network and that displays in each of the display windows an image received from the camera associated with that display window.
60. The digital video system of
61. The digital video system of
62. The digital video system of
[0001] This application claims the priority of U.S. Provisional Application Ser. No. 60/189,162, filed Mar. 14, 2000.
[0002] This invention relates to systems for accessing, recording, and displaying camera images from any of a number of remotely located cameras and, more particularly, to such systems that provide access to images from one or more remote cameras over a public or private computer network.
[0003] With the continuing expansion and availability of public and private computer networks it is becoming increasingly common to use these networks for remote video and image surveillance. Historically, analog systems have been used for CCTV systems for purposes such as surveillance. They include an analog video camera, a video cable, and a monitor/TV and/or a VCR recording device. Multiple cameras can be hooked to multiple recording VCRs for complete coverage of one or more target areas. Specialized equipment known as a multiplexer or �MUX� can be used to allow multiple cameras to be hooked to a single recording/view device. The multiplexer takes all video feeds in a sequential fashion, recording from one camera at a time. This allows the quantity of cameras to share a single recording tape. Besides the limitations of a serial tape system, additional limitations are introduced when the sequencing rate of the multiplexer is too slow to allow sufficient video record/view speed of a given camera view. Multiplexers are typically expensive and have limited expandability without purchasing additional complete systems. Also, the configuration of these systems usually requires a skilled technician to be available at the systems site which increases the total cost of implementing such systems.
[0004] Digital systems have become more prevalent with the advent of standardized digital componentry. These systems utilize the same analog cameras and cabling, but introduce a capture card based collector. This collector can be a proprietary digital device or a PC based computer, either of which has analog video inputs directly connected to it. These inputs convert the video to digital for viewing and recording and may even retransmit the signal to analog tape for recording purposes. A factor limiting these digital systems is that an autonomous computer is required relatively near the video sources, sometimes with user intervention required at regular intervals. These machines are also hardware bound. The number of capture cards is limited to the specific design of the collecting equipment. These systems are usually proprietary to a particular manufacturer and can be very expensive. Remote viewing is usually not available. Failover or redundancy function is also limited and expensive, due to the fact that the system is usually duplicated for redundancy. As with the analog systems discussed above, these systems also have configuration requirements that typically require a skilled technician.
[0005] There now exists commercially available networkable cameras that can be accessed over networks running TCP/IP, including both LANs and global networks such as the Internet. Ethernet-based digital video servers are now common that are small, autonomous, and usually contain a web-based configuration utility, as well as administration software. These cameras can be accessed and, in the case of pan/tilt/zoom (PTZ) cameras, controlled over the network using an assigned IP address and standard CGI-based URL syntax or other manufacturer-specified addressing protocols. This allows an authorized user to control the product from anywhere via the Internet or a dialup connection, and allows live images and image streams (video) to be accessed remotely using standard web browsers.
[0006] The video servers exist in two forms. One is a camera server that is a complete product containing both a camera and a web server with an Ethernet port. The other is a component based video server with inputs for one or more analog video feeds, which the user can connect to conventional camera PAL or NTSC video feeds. The inputted analog video feeds are converted to digital signals and sent from the video servers' Ethernet port. Thus, the video servers (whether integrated in as part of a camera server or as a standalone unit) can be connected to the Ethernet-based networks commonly used in businesses and other computer enabled sites. These video servers can be connected to these network segments and are fully compatible with existing data on these networks. The video data can be received by standard PC computers which require no special hardware other than an Ethernet connection. The cameras can be easily configured by a novice user who has very basic experience with the Internet.
[0007] Ethernet video servers connect to an Ethernet connection and deliver digital video based on user requests or internal scripting agents. A user requests video images via standard CGI enhanced URL syntaxes. These syntaxes control the image metrics and other features of the requested video stream. The images are sent to the user as either static JPG snapshots, or as continuous JPG streams. Rates to 30 FPS are easily attainable. Since these images are delivered by Ethernet, the camera servers are very robust. Although a requested image may not be received completely in an expected time frame, the video server will wait for the user to complete its requests and processing. This virtually guarantees delivery of video, except where a connection to the video server is terminated.
[0008] When the user requests a video image or stream, the user is actually requesting a static image that appears to exist as a file in a directory structure on the video server. When the user requests a copy of this image, the video server actually updates it with a new image from the camera source, and the user receives a picture that is up to date. Subsequent requests are to the identical file name, and the server does the updating of its content.
[0009] Although IP-based network cameras and camera servers have now evolved to a relatively advanced state, the use of a browser-based interface to this hardware has seemingly impeded development of user interfaces that provide simplified, automated control over the acquisition of snapshot and streaming images over the network. Access to the camera images typically requires knowledge of the manufacturer's CGI-based syntax to access snapshot or streaming images. For example, to access a particular camera, the user may have to specify to the browser an address in the form of http//Uid:email@example.com/cgi-bin/fullsizejpg?camera=1&compression=1. While this may be handled easily enough for a single camera by bookmarking or pulling the URL out of the browser's history buffer, the task becomes more difficult when the user desires to change the access parameters or where different cameras need to be accessed. Where the identified camera cannot be accessed, such as for example due to an improper address being specified, the user may simply receive a standard �404 not found� error message that is not helpful in diagnosing either the error or actual reason why access was not available.
[0010] Moreover, browser-based access is typically limited to either a snapshot mode or streaming images. In the snapshot mode, a single image is returned when the appropriate URL is entered into the browser. Subsequent images from the camera are then accessed using the browser's �reload� or �refresh� button. In the streaming mode, once the appropriate URL is specified, the remote server or camera simply begins streaming image files back to the browser. This results in relatively high network utilization that may be undesirable in a shared network environment.
[0011] It is therefore a general object of this invention to provide an improved user interface and approach to the network transmission of images from commercially available network cameras.
[0012] In accordance with the invention, there is provided a digital video system which includes a client computer, one or more video servers accessible by the client computer over a network, and a plurality of cameras connected to the video servers. The one or more video servers provide an interface between the cameras and client computer, with images from the cameras being accessed by the video servers and then sent to the client computer upon request by the client computer. The client computer provides a user interface display on the computer that includes a display window for each of the cameras accessed over the network and that displays in each of the display windows an image received from the camera associated with that display window.
[0013] In accordance with another aspect of the invention, there is provided a computer readable medium for use by the client computer in providing the user interface display. The computer readable medium includes a digital storage device and a user interface program stored on the digital storage device in computer readable form. The program is operable upon execution by the computer to access camera data uniquely identifying the cameras and to attempt access to the cameras over the network using the camera data. The program is further operable to verify access to those ones of the cameras that are accessible over the network and to generate the user interface display and to display in each of the display windows an image received from the camera associated with that display window.
[0014] In accordance with another aspect of the invention, there is provided a computer readable medium and method for use by a computer in detecting motion in a sequence of color video images received by the computer. The computer readable medium includes a digital storage device containing a program that is operable to carry out the motion detection. The program selects one of the video images as a reference image and another of the video images as a selected image to be compared to the reference image. The program then accesses a color component value for each of a number of pixels from the reference image and for each of a number of corresponding pixels from the selected image, with the program being operable to perform pixel comparisons using the color component values and to generate a motion detect signal when the difference in color component values for corresponding pixels from the reference and selected images differ by more than a preselected amount.
[0015] In accordance with yet another aspect of the invention, there is provided a computer readable medium and method for use by a computer in recording a sequence of images, each of which comprises an individual image file in which the image is represented in a graphics file format that includes a first marker identifying the start of the image and a second marker identifying the end of the image. The computer readable medium includes a digital storage device containing a program that is operable to carry out the recording. The program stores the images together as a single file that comprises the group of images concatentated together in sequential order. The program is operable to index the file using the first and second markers. This index can then be used to provide quick access to individual images stored within the single file.
[0016] Preferred exemplary embodiments of the invention will hereinafter be described in conjunction with the appended drawings, wherein like designations denote like elements, and wherein:
[0017]FIG. 1 is a block diagram showing a preferred embodiment of a digital video system of the present invention;
[0018]FIGS. 2 and 3 together depict the process flow of the user interface client application of FIG. 1;
[0019]FIG. 4 shows the contents of the initialization file used by the user interface client application of FIG. 1;
[0020]FIG. 5 is a diagram depicting the main menu structure of the user interface client application;
[0021]FIG. 6 is a flow chart showing the process used by the user interface client to provide hardware setup information;
[0022]FIG. 7 is a diagram depicting the server setup form displayed by the user interface client;
[0023]FIG. 8 is a diagram depicting the camera setup form displayed by the user interface client;
[0024]FIG. 9 is a flow chart showing the process used to display a motion form that allows the user to display and record video streams from one of the cameras;
[0025]FIG. 10 is a flow chart showing the process flow for the image viewer program of FIG. 1;
[0026]FIG. 11 is a diagram depicting the menu structure of the image viewer program;
[0027]FIG. 12a is a flow chart of the autoindexing setup process used by the image viewer program;
[0028]FIG. 12b is a flow chart of the archive delete process used by the image viewer program;
[0029]FIG. 13 is an overview of an OCX control used by the user interface client and stream recorder client applications of FIG. 1;
[0030]FIG. 14a is a flow chart of a portion of the OCX control that is used to access individual snapshot images from the cameras used in the digital video system of FIG. 1;
[0031]FIG. 14b is a flow chart of a portion of the OCX control that is used to intermittently access images from a streaming image server;
[0032]FIG. 14c is a flow chart of a portion of the OCX control that is used to access full video streams from a streaming image server;
[0033]FIG. 15 is a flow chart of a portion of the OCX control that is used in the processing and recording of received images and image streams;
[0034]FIG. 16 is a flow chart showing the process flow for the stream recorder client application of FIG. 1; and
[0035]FIGS. 17a and 17 b together depict the motion detection routine used by the user interface client application of FIG. 1.
[0036] Referring to FIG. 1, there is shown a network setup of a digital video system 20 of the present invention. The video system 20 includes a client computer 22, a plurality of cameras 24, and one or more standalone video servers 26. The client computer is connected to the cameras 24 and video servers 26 via a network 28 which can include a private network segment 30 and a public network such as the Internet 32. Other networked components can be used such as a networked storage device 34 and a networked file server 36. Some of the cameras 24 comprise camera servers 38 which include both a video server and camera in a single integrated unit. The camera servers 38 can be, for example, Axis� 200, 200+, or 2100 Ethernet cameras, available from Axis Communications Inc., Chelmsford, Mass. (www.axis.com). The video servers 26 can be Axis� 2400, 2401, or 240 video servers, also available from Axis Communications, Inc. The cameras 24 that are connected to the video servers 26 can be industry standard PAL or NTSC video cameras. Client computer 22 can be a conventional personal computer having an Intel� or compatible CPU running a Windows� operating system and including a network interface card (not shown) for connecting to the 10/100 Mb Ethernet network 30 that uses the TCP/IP network protocol.
[0037] In accordance with the invention, client computer 22 includes a computer readable memory, such as a fixed hard drive shown at 40 containing magnetic media for digital storage of a user interface client application 42 that includes a user interface program along with a number of additional software components. The user interface program is in computer readable form (such as an .exe file). The additional software components include Microsoft� Internet Explorer Internet extensions (included with Windows� 95, 98, ME, 2000 and revisions), the Win32API libraries (included with Windows� operating systems), the Winlnet.dll (also included with Windows� operating systems), and a compression library such as IJL115.dll (available from Intel�) to decode and recompress jpeg images received from the cameras 24.
[0038] Although the user interface client program 42 is shown as being stored on a hard drive 40, it will be appreciated that it can be stored on other digital storage devices as well. As used in the specification and claims, �digital storage device� includes any of a variety of different digital storage devices, including magnetic media such as a hard disk or removable disk, optical storage media such as a CDROM or DVD, or magneto-optical media.
[0039] In general, the user interface client program 42 is operable to access locally stored camera data that uniquely identifies the cameras 24 and then attempts access to those cameras over the network 28. The program 24 is operable to verify access to at least those cameras 24 that are currently accessible, and to generate a user interface display 44 (on the computer's monitor) that includes a display window 46 for each of the cameras 24 accessed over the network 28, and to display in each of the display windows 46 an image 48 received from the camera associated with that display window. As used in the specification and claims in reference to the program 42 or other executable program code, the phrase �operable to� [carry out some action] means that, when executed by a microprocessor or other processing device of the computer, the program directs the microprocessor to carry out or otherwise cause execution of the specified action.
[0040] In addition to the user interface client application 42, the hard drive 40 also contains a stream recorder client application 50 and an image viewer 52. Stream recorder client 50 permits high speed recording of streamed images (video) in a manner that minimizes network bandwidth utilization. Image viewer 52 permits browsing and viewing of archived images and video using a playback screen display 54. These two programs 50, 52 are discussed farther below in connection with FIGS. 10-12 (for viewer program 52) and FIG. 16 (for stream recorder client 50). All three programs 42, 50, and 52 can be developed under Visual Basic 6.0 and Visual C++6.0 and designed to run under Windows� 95, 98, ME, NT, and 2000. User interface client 42 stores all camera, server and image settings to a Microsoft Access� 7.0 database 56 and camera and user configuration data is stored in an .ini file 58. Digitized recorded video is stored directly on hard disk 40.
[0041] The user interface client application 42 is depicted in various levels of detail by FIGS. 2-9 and 13-15, and 17 a-17 b, with FIGS. 2 and 3 together representing the complete process flow through the application starting from program launch. As shown in FIG. 2, once the user has consented to the licensing terms for use of the program, various initialization steps are performed, including:
[0042] 1. getting camera and user configuration data from the .ini file 58;
[0043] 2. initializing the database tables 56;
[0044] 3. configuring the layout of the display form 44 on the client computer 22;
[0045] 4. reading the camera setups from the database table 56;
[0046] 5. validating or creating the base path (directories) for recording of images and image streams;
[0047] 6. formatting user-selectable buttons for the client user interface 44; and
[0048] 7. retrieving embedded MAC addresses for purposes of validating access to the cameras 24 identified in the database 56.
[0049] Thereafter, program 42 generates the user interface display 44 and the user can start accessing images or video or can access various menu options shown in FIG. 5 for purposes of maintenance or changing of setup information. If the user has selected �start� to begin accessing images or video, then the next step is to initialize and test the cameras and/or servers by verifying the IP addresses, testing for a valid MAC addresses, and, if the IP addresses and MAC addresses are valid, assigning the user settings and enabling or disabling individual cameras or servers. As is known, the MAC addresses are unique to each camera and server and can be queried via FTP requests to protected areas of the camera or server's memory. Specific locations vary by manufacturer and require parsing and formatting to extract the required data, as will be known by those skilled in the art. This enables the software to be licensed on a per-camera or per-server basis and can be used to prevent access to any cameras or servers for which the user is not licensed.
[0050] For each camera in the database 56, all control information assigned to that camera is stored in an array data type. This control information includes: Server Enabled, Server Name, Server Model, Server ID, Server IP, Server Mac, Server User ID, Server PW, Server Port, Cam ID, Cam Model, Cam Enabled, Cam Name, Cam Location, Cam Bldg, Cam Room, Cam Tel, Cam Room Contact, Cam Room Contact Tel, Cam Notes, Board Switch Port Nums, Cam Thumb Image Name, Cam Fullimage Name, Record Image Name, Cam Thumb Compression Level, Cam Full Compression Level, Cam Record Compression Level, Tool Tip Text, Last Pan, Last Tilt, Last Zoom, Cam PTZ (y/n), Server Switch Action, Switch Caption, Switch Notes, Email Notification, Email Address, Email Message, Enable Audio Alert, Play Audio File, Last Update Time, Time Lapse Interval, Tie Breaker Count, User Disabled, System Disabled, System Disabled Message, Recompression Value, Pan String, Tilt String, Zoom String, Home String. These parameters all control the camera and/or server used by the application and can be changed via a hardware setup form that is provided by the software for the user and that is described further below.
[0051] Once all tests are complete, the process moves to FIG. 3 where the program �listens� for digital input triggers generated by any of the cameras supporting this function. The client program 42 can listen for these trigger events and either flash or highlight the window associated with that trigger input, show a high frame rate view (motion window) or begin recording an image or series of images in the above formats. Trigger events are recorded to one of the database 56 tables by recording the date, time and image name. The user can review and access images saved during triggering. As will be known to those skilled in the art, triggering is accomplished by enabling a CRON script in the server that will send a message to the client computer 22. Program 42 uses winsock controls to listen on a predefined port (1111 default). If a trigger message is received, the message is parsed for the server ID and port number. This information is compared to the relevant data from database 56 and the appropriate display window 46 is activated. The CRON script comprises one or more control instructions generated by program 42. Although the CRON script can be generated directly using a web browser on the client computer, it will be appreciated that generation of the CRON script by program 42 eliminates common typographical errors encountered in manual CRON programming. Unique identifiers such as host PC and port are automatically added to the CRON script by program 42.
[0052] Once the process begins listening for triggers it then finishes configuring the user interface display grid 44 on the client computer 22. The display grid 44 shown in FIG. 1 is a 3�3 grid for up to nine cameras and it will be appreciated that any size grid can be specified, with the program 42 permitting the user to specify the number of windows and the program then automatically scaling the images 48 to fit the resulting display window size. In configuring the view grid, the program 42 may disable some camera images 48, showing instead a �No Video� or other message in the display box 46 associated with the camera 24. This disabling may be due to, for example, the camera 24 being unreachable, disabled, or invalid. The software also sets the �record� indicators (if enabled), the show port numbers (if enabled), and the camera caption (camera name, if enabled). These are discussed below in connection with FIG. 5.
[0053] Once the screen display 44 has been configured, the display loop begins in which the program accesses and displays images from the cameras 24 on the user's screen, with the software periodically updating the display of each image 48. Starting with the first camera displayed, the program sequentially accesses each camera 24 and displays the received image 48 in the box 46 associated with that camera, scaling the image to fit the user's selected view size. The process runs through the display loop once for each camera 24, incrementing the current frame (display box) for each iteration until it has retrieved and displayed a snapshot image from each camera. It then continues looping through the display loop, starting again at the first camera, and runs through the process continuously, sequentially polling each camera and updating each window 46 with an updated image 48 received from the associated camera. As each display window is being updated, it can be highlighted using, for example, a colored border to distinguish it from the remaining display windows. This allows the user to see the sequential polling process and is especially useful where the images change little if at all from one update to the next.
[0054] The display loop of FIG. 3 continues until either a trigger event is received, a double-click by the user is detected on one of the displayed windows 46, a stream request is made by double-clicking the port number on the camera window, or the user cancels the monitoring, in which case the program pauses. If the user selects a window 46 by double-clicking anywhere on its image 48, a motion form is displayed that permits viewing a setting of various camera parameters, as well as permitting the user to set recording parameters (such as number of frames to manually record) and initiate recording from the camera associated with the selected display window. The motion form and its use will be described further below in connection with FIG. 9. The program checks during the display loop to determine if the user has enabled recording. If so, the program checks user recording settings that can be set through the hardware setup process of Fig. using the recording camera setup tab of FIG. 8. These user configurable settings include selections to record all frames received, or interval recording where the user can specify that frames are only recorded once every so many seconds or minutes. The user can also specify that recording should only occur when motion is detected in the received video. A preferred routine for implementing the motion detection will be described further below in connection with FIGS. 17a and 17 b. Once these user settings are read, the program then checks scheduler settings that are also user configurable under the recording camera setup tab. These scheduler settings allow the user to specify certain hours during the day and days during the week when the recording is either to occur or be blocked. Scheduling can be done in 15 minute intervals. Every 15 minutes the user can select No recording, Standard Recording (FIG. 15), or Video Motion Detection Recording FIGS. 17a-17 b). The program will compare this schedule to the current time of day and adjust the recording functions as necessary. This allows for up to 96 different recording schedules per day, far exceeding any typical user need. If recording is permitted for the current time on this particular day, then the program proceeds to the appropriate recording routine (record all frames, time interval recording, or motion detection) according to the user configurable settings previously read.
[0055] As a part of the display loop, program 42 requests images or video streams from one of the cameras 24. The requests are formatted as standard CGI based URL syntax, i.e.:
[0056] http//Uid:firstname.lastname@example.com/cgi-bin/fullsizejpg?camera=1&compression=1).
[0057] The images are downloaded from the cameras 38 and servers 26 to the client computer 22 where they are stored in a memory buffer, which can be implemented in RAM. The buffer is parsed and augmented with formatted date and time stamps, accurate to the millisecond. The image is assigned a name generated by the program based on the date and time of creation. The program 42 then saves the image to the hard drive 40 using the following directory structure:
[0058] Mapped Drive and Root Path/Server Name/Camera Name/Year/Month/Day
[0059] This directory structure is generated in real-time as the recording executes. The images are saved in one of the following styles, based on user setup preferences:
[0060] Single Images: Images are saved under the Day directory in a graphics file format such a jpegs. The file naming convention used is hh mm ss.jpg, where hh is the current client computer clock hour in 24 hour format, mm is minutes, and ss is seconds.
[0061] Multiple Images (video): Video images (i.e., time sequences of individual images) are saved at the Month directory level as hh 00 00.jpx, where the .jpx extension represents a jpeg concatenation file (streaming jpeg), which is a single file that is built by the program 42 and that comprises a series of jpeg images concatenated together. hh is the client computer clock hour in 24 hour format. These .jpx files can be read and played back by the image viewer 52.
[0062] Before storing the jpeg image files or concatenating the jpegs onto a jpx stream, the images can be compressed using the compression .dll library noted above. In practice, it has been found that good quality recorded images consume an average of 7,500 bytes per image. Higher compression levels can yield a smaller file (down to 2,500 byes) at a reduced quality. Higher quality images can also be recorded at a file size of 70,000 bytes per image up to 250,000 bytes per image.
[0063] The program 42 can acquire images from the cameras in any of three modes:
[0064] Snapshot:
[0065] Request one image from the server and close the connection. By running through the display loop rather than requesting a continuous stream from the server, the program iteratively requests snapshots from the cameras and servers thereby providing continuously-updated images in a manner that requires little bandwidth, with network utilization typically peaking at no more than six percent, regardless of network size.
[0066] Stream Frame Mode:
[0067] Connect in stream mode to each camera and sequentially cycle through each of the cameras, obtaining one or more of the streamed images from one selected camera, pausing the streaming from that camera, and then obtaining one or more streamed images from the next camera until all of the cameras have been accessed and then paused. This cycle is repeated continuously until the user switches the program back out of this stream frame mode. In this mode, the processing is identical to that of the snapshot mode, with the display loop extracting at least one frame from an open stream, and then indexing to the next camera. The connection is periodically reset to remain robustness. This approach to image acquisition yields substantial performance gains over the snapshot mode and is more efficient that a continuous stream. This connection allows the video server to maintain an authorized connection to the client computer, providing enhanced performance and ultimately, augmented received frame rates. Running in this mode requires more bandwidth than the snapshot mode, but will utilize less than the full streaming mode described below, since each stream is paused as the remaining connected cameras are sequentially accessed for a frame of video. The video server buffers surplus video to the point of filling up its internal buffers, at which time the server stops grabbing video frames until the buffer is depleted, or the server is reset. Thus, as will be appreciated by those skilled in the art, this approach can also be used to control the frame rate of displayed and/or recorded video in a manner that minimizes the network bandwidth utilization. Thus, it can be used for only select ones of the cameras and for recording at a frame rate faster than that obtained by individual URL calls, but less than that provided by full streaming from the camera or video server.
[0068] Full Streaming Mode:
[0069] Launch the stream recorder client 50 as a shelled process, pass the URL and various options via a command line syntax. The client computer connects in stream mode and retrieve images in an infinite loop. The connection is reset periodically to ensure robust connectivity across various network topologies. The received image stream is then parsed for SOI (ASCII 255+ASCII 216) and EOI (ASCII 255+ASCII 217) markers, which are the standard start-of-image and end-of-image markers. A buffer is built until these markers are found. When found, the image is displayed and that section is removed from the buffer. This process is then reiterated until a timer expires the session or the user manually closes the connection.
[0070] When recording, the stream recorder client 50 writes directly to the same directory used by program 42, but uses a different naming convention to avoid contention. This naming convention can be implemented by appending a letter suffix to the filename of the jpx stream. For example, program 42 might record a filename as �11 00 00.jpx�, whereas program 50 might record images obtained at the same time as �11 00 00_s.jpx�. Since they are now uniquely named, there is no concern of one program overwriting the image files of the other.
[0071] Referring now to FIG. 4, the .ini configuration file used for program 42 will now be described. The WindowState=Normal (or Maximized) sets the main camera view grid as either normal, with the display being sized based on the Images_Across, Images_Down, Ref_Image_Width, and Ref_Image_Height parameters. The Ref_Image_Width specifies the image width of each display window 46 in units of twips (which is a known measurement unit defined by Microsoft�). There are approximately 1440 twips per inch. The image width is determined by the default image metrics that can be specified by the user via the defined in Setup/Software menu command. The Images_Across parameter specifies the number of cameras to be shown horizontally within the user interface display 44 and the Images_Down parameter specifies the number of cameras to be shown vertically. An exemplary 3�3 display grid (for a total of nine camera windows) is shown in FIG. 1. In the event that WindowState=Maximized, the entire screen is filled with the application's main window and displays the camera view grid in the center of the window based on the parameters noted above. The Display=Image (or List) sets the initial display type, with �Image� resulting in a display of the view grid 44 with camera images 48 shown in the display windows 46 and �List� providing a textual list of the cameras and servers with no images.
[0072] The HighliteFrameColor specifies the hex RGB value for the current update window, that is, it identifies the color used for the border placed around the camera window currently being updated at any one time during the display loop of FIG. 3. The default color is blue. The FlashFrameColor provides the hex RGB value for the camera window corresponding to the camera for which a trigger has been received. The default color is red. The ViewBackColor specifies the hex RGB value for inactive camera windows, with the default being grey. The TCPPort parameter specifies the IP port on which the camera server transmits images and the program 42 application listens. This information is used in the base CRON script.
[0073] The RecordMode setting can either be SINGLE or MULTIPLE, which respectively correspond to the single image jpeg and video stream jpx file formats discussed above. For �Single�, the received images are written to disk (or other non-volatile storage media) as a single jpeg file using the naming convention provided above. For �Multiple�, the images are written as jpx streams, with the RecordMode parameter (�24� shown in FIG. 4) referring to how many jpx files are written per 24 hours. This parameter can have any of the following values: 1, 2, 3, 4, 6, 8, 12, 24. Thus, �1� means that the received stream of jpegs are written into a single jpx file over a 24-hour period, whereas �24� means that a new jpx file is started every hour, 24 per day. As mentioned above, the jpx format is a straight concatenation of jpeg files and, by storing the files with the .jpx rather than .jpg extension, the software avoids the possibility that a user opening the file will inadvertently launch a standard .jpg viewer that might hang due to the large sizes of the jpx files.
[0074] The RecordThumbnails=TRUE setting is used to tell the software to record the displayed thumbnails rather than recording the image at the Record Image parameter that is specified in the Camera Hardware Setup form of FIG. 8. This setting causes the program to record the same image that is viewed in the display grid 44. When set to FALSE, the program accesses and displays one image (a thumbnail) from the camera and then accesses and records a second image (at a different size) without viewing. This allows for different image sizing and/or compression for viewing than for recording.
[0075] The RecordlmageBasePath sets the base directory path for recording all images; that is, it sets the �mapped drive and root path� shown at the upper level of the directory structure shown above. The program will create all lower levels of the directory structure if they do not already exist. An error message is displayed if the drive is not available or the directories cannot be created or accessed, and no recording will occur.
[0076] The Camera_Database setting is a pointer to the database 56 that is used for all camera and camera server settings. Other settings that may be less often accessed are:
[0077] DisplayWidth: Sets the default user interface display 44 size in twips.
[0078] BorderWidth: Sets the width of the black spacing between all thumbnail images in pixels.
[0079] SkiplnactivePorts: TRUE�Thumbnails that are disabled will not be displayed when program 42 is running.
[0080] ShowHighliteFrames: TRUE to show border around currently updated thumbnail.
[0081] ShowRecordIndicators: TRUE to show the record LED status indicator that can be included at a corner of the display window for each camera.
[0082] ShowCameraCaptions: TRUE to show the title caption at the bottom of the thumbnails.
[0083] ShowPortNumbers: TRUE to show the physical thumbnail port numbers.
[0084] PingTimeout: The number of milliseconds to attempt a ping to the video server before failure abort.
[0085] PingOnImageRequest: TRUE to allow ping tests on each received image burst.
[0086] CameraCaptionForeColor: Color of the camera caption in hex RGB
[0087] CameraCaptionBackColor: Back color of the camera caption in hex RGB
[0088] HTTPPort: Http port number to access all cameras. This is a global setting.
[0089] MaxFailOverCount: Number of failed camera requests before shutting down the camera port. The display window 46 will show �Unavailable�.
[0090] ReconnectAttemptlntervalSecs: Seconds to elapse before trying to reconnect a failed camera.
[0091] DefaultEmailRecipient: Email address to use when sending a motion alert.
[0092] EmailUserID: UserID used for email account access.
[0093] EmailUSerPW: User password for email account access.
[0094] ShowMotionBorder: TRUE to allow the video motion detection routine to highlight the target window when motion is detected.
[0095] EnableStatusLog: TRUE to allow status info to be written to a text log.
[0096] EnableErrorLog: TRUE to allow specific Error information to be written to a text log.
[0097] StreamViewMode: When launching a streamer, the mode it starts in can be:
[0098] 0=Icon
[0099] 1=Small frame window with text info only.
[0100] 2=Normal window with video displayed.
[0101] StreamintervalSeconds: Number of seconds to allow the streamer to run before closing:
[0102] 0=Run forever
[0103] 1 to 84600=1 sec to 24 hrs run time before closing.
[0104] StreamMaxFPS: Maximum number of FPS to stream; 0=Max speed
[0105] StreamRecord: 0=no record on program launch, 1=record on launch.
[0106] Referring now to FIG. 5, there is shown the menu structure for the Main Menu displayed by the program 42 as a part of its user interface. In the Display menu, the �List� command displays the cameras as a text grid only�no image is displayed. The �Thumbnail� command displays the cameras as a graphical grid, displaying images 48 received from the cameras 24 using the display loop of FIG. 3. In the Setup menu, the �Hardware� command launches the Hardware Setup form which permits hardware configuration using the process of FIG. 6. The user can add/delete/edit the different server and camera settings. Also in the setup menu is the �Software� command which launches a form that allows the user to graphically modify the core setting of the .ini file. The ability to manually edit the file also is available via the �Other� Tab and then the first �Edit� button. The ini file can also be edited with any user editor such as Microsoft� Notepad. The Archive menu contains a single command, �Browse Archived Images� which launches the image viewer 52 executable shown in FIG. 10. The Help menu includes a �Dump all Server Settings� command which writes all server and camera data to a text file. This information will be located in the application's directory in a file called CameraDump.txt. This information can be useful in troubleshooting functional problems with the system.
[0107]FIG. 6 depicts the Hardware Setup routine that is invoked by selecting �Hardware� under the Setup menu. This process is used to add or delete cameras and servers, and to edit existing camera or server setups, if desired. The servers and cameras are shown in a tree structure on the left side of a new window on the computer screen and, where an existing server is selected, a set of server hardware setup tabs (shown in FIG. 7) are displayed on the right side of the screen to permit configuration of various server parameters, including many of the control information items listed above. Where an existing camera is selected, the camera hardware setup tabs of FIG. 8 are displayed on the right side of the screen for editing of camera parameters and control information noted above. All panels for each of the tabs of FIGS. 7 and 8 includes an Update button to save changes made on the tab.
[0108] For the server hardware setup tabs of FIG. 7, the Connection tab provides a display that permits the user to set the fundamental server settings for the program's CGI base parameters. These options are used in the URL requests to the server. The Connection tab contains the basic server information. The fields are:
[0109] If the Server Root ID and Server Root Password are not used, the Host Scripting tab will not function. The Connection panel also includes two buttons:
[0110] The Switch Inputs tab contains the information related to the digital inputs on the server and can be used to set the program's preference settings for trigger responses from the server. This includes the Show Motion form, Flash Window, and Record Image options shown in FIG. 3. The ports are disabled by default. The fields are:
[0111] The Relay Output tab provides a display that permits editing of functional settings for latching or pulsing the server relay output. As is known to those skilled in the art, this relay can be attached to a siren, autodialer, or other device compatible with the characteristics and limitations of the server's relay. The fields are:
[0112] Enable Relay
[0113] Relay Caption
[0114] Relay Notes
[0115] The Host Scripting tab provides a display for programming or displaying basic CRON scripts on the server. The basic script allows the server to broadcast trigger events from the switch inputs. That is, the script enables to server to send messages to program 42 that are specific to triggering events on the server such as switch closures, infrared, microwave, magnetic, or other forms of sensors. For example, the base CRON script used in Axis� 2400 series servers is:
[0116] 0-59 0-23 1-31 1-12 0-6 /=xx:
[0117] alert -host yyy.yyy.yyy.yyy -port zzzz -message �Port Trigger�;
[0118] where xx is the server port 1-4, yyy.yyy.yyy.yyy is the IP address of the client computer 22, and zzzz is the port specified in the .ini file for communication between the program 42 and the server. The fields on this tab are:
[0119] The Host Scripting panel also contains four buttons:
[0120] For the camera hardware setup tabs of FIG. 8, the Info tab allows the user to set the camera name, Pan/Tilt/Zoom (PTZ), and text reference fields for each camera, as well as enable or disable the camera. In particular, the Info tab includes the following fields:
[0121] The Presets tab allows the user to define any quantity of user defined presets for Pan/Tilt/Zoom. The user is shown a thumbnail of a static snapshot for any new positional requests. The fields are:
[0122] There is one button:
[0123] There are three slider controls:
[0124] The Displayed Image tab allows the user to set the image size and compression level request for the camera server image retrieval. These parameters are mapped against CGI type parameters defined by the server. The user representations are simplified terms versus the CGI syntax. Three image styles are defined here. Each style is set for the three image request types. This value is used by the server when sending requested images to the application. The fields are:
[0125] The Thumbnail Image is displayed on the Main form with all the other camera views. The Full View Image is displayed on the Motion form. The Record Image is used whenever a save request is made by the application. Each Image style has a related compression value. The compression values are selectable for each Image style. The following considerations should be used when selecting the Image styles:
[0127] The Switch Inputs tab allows the user to bind any or all available digital switch ports to a display window. That is, the digital switch inputs must be bound to camera ports. This setting tells the application which cameras to record/notify when a trigger event occurs and allows the application to notify the user on screen which port trigger(s) is/are associated with a camera view. Each defined switch input is listed with a check box that can be selected to bind the camera to that switch input.
[0128] As mentioned above in connection with FIG. 3, the Recording setup tab permits the user to set automatic recording options for interval recording a camera. The interval is expressed in seconds. The camera will record an image at the specified interval if the hardware can meet these expectations. Otherwise, the image is recorded as quickly as possible after the interval has expired. The fastest interval that can be used is derived from observing the cycling rate of all cameras. On a quality system the fastest interval is about {fraction (1/4)} second for any camera. The fields are:
[0129] The compression value is used by the compression library to set the amount of compression for image saves. The lower the number, the higher the compression. The range is between 5 and 40. The most commonly-used value is between 30 and 35.
[0130] The Email tab permits the user to set an email address to which an email notification will be sent upon occurrence of a trigger event. An image from the triggered camera can be attached to the email. The Performance tab permits the user to specify a unique User ID so that the camera or video server administrator can set or limit the bandwidth of video transmission on a user-by-user basis.
[0131] When a user double-clicks on a camera window 46, the program 42 brings up a Motion Form which runs the process shown in FIG. 9. This permits the user to bring up a detailed view of the image from a particular camera, with the image being updated at an increased rate. Complete camera and server information is displayed on this form. The user can Pan/Tilt/Zoom supported cameras, click on preset positions, record images, or display any trigger events.
[0132]FIG. 10 depicts the process flow provided by the image viewer program 52, which can be, but need not be, a separate executable than program 42. This process can be launched from within program 42 using the �Browse Archive Images� command in the Archive menu of FIG. 5. This program 52 can include authentication capability to provide the user with access to only those archived images that have come from servers accessible to that user. This is indicated in FIG. 10 where the program reads the database for defined servers and parses the record path for matching servers. Then it will display a tree structure showing only those archived images and streams that came from cameras or servers defined in the database for that user. Once the user has selected an archived jpg or jpx file, the image is brought up on the screen and, for jpx streams, the user can play, pause, stop, frame advance and review using buttons that emulate a VCR panel. A refresh button can also be provided to reload the archive if additional images are being written to it in the background by the user interface client program 42. The image viewer program 52 can include an autodelete function, in which case a five minute timer is started. The program then checks the archive age against user date settings, and deletes the archived .jpg and .jpx image files that are older than the specified date or time period. The program 52 can also include an autoindex feature which, when enabled, automatically indexes the archived jpx files every hour to build an index into the jpx file for quick access by the program into any point in the jpx file. This index feature is discussed next. If the autoindex feature is not enabled, then the index is not built until the first time the jpx file is loaded.
[0133] In installations where very high speed recording is being performed, the jpx file can become quite large. A typical jpx file for an hour of video is 1 to 5 MB, while high speed recording can easily exceed 20 MB and even reach 100MB. Since the jpx is purely concatenated JPG images, aligned head to tail, the only way to view the images within the jpx file is to parse the SOI and EOI markers and display the image in between them. For incremental playback, this process is easily controlled. However, when a user wants to �rewind�, �fast forward�, or randomly jump to a portion of video, this process requires the program 52 to process from its current position and read all video frames in between. Jumping over frames does not work for these files since, in order to most efficiently store the images, the images within the jpx file are relatively unique in length. This process of reading in all of the frames can be undesirably slow when the jpx file is large. To overcome this issue, the image viewer program 52 creates an index of the SOI and EOI markers of each image in the jpx file. This index is stored as an array of pointers into the jpx file and is stored using .ndx as its filename extension. The program 52 will look for this index and use it to load the image pointers instead of reading the entire jpx. The image pointers identify the memory locations of the SOI and EOI markers, thereby allowing the program to easily locate and retrieve individual images contained within the jpx file. The ndx file can be loaded in less than a second, as compared with jpx load times of up to a minute or more, depending on jpx size. The index is created on the first user access to the jpx image file or when an autoindex event is processed, as described above. Successive requests from the user to a jpx will allow the program to read the ndx file rather than a conventional approach which would entail reading the entire jpx file. With the index file, the pointers can be read into memory and accessed quickly, even for very large jpx files.
[0134] The ndx index file also makes possible the use of the image viewer program 52 as a plug-in for commercially available web browsers. In conventional browser-based retrieval of video, the video files can be quite large, and the user can therefore typically only request a small number of frames. The user does not know the stream size, frame count, index of time pointers, etc. By implementing the image viewer 52 as a plug-in component for a web browser, viewer can be used to provide web page access from a web browser to stored jpx images. This alleviates the necessity of a specialized software product to view the archives. Since this image viewer plug-in utilizes the ndx index file, the user can retrieve a wealth of video specific content in a very short period of time, allowing realtime display of video (assuming the user has sufficient bandwidth) of the Internet or other network.
[0135] When implemented as a plug-in, the image viewer 52 can also be used to view �live� a stream that is being recorded on a network server. This can be accomplished using server software that records the jpx files in the manner described herein, with the image viewer then only parse the target jpx file on the network server for the latest video frame. By displaying this video frame, the user sees live video that originated from the camera server, but is being supplied by what can be a much higher performance network server. Thus, since the user is now viewing recorded video from a higher performance server, the number of simultaneous connections to the video feed is highly scalable by implementing standard web server components. This is advantageous since all Ethernet video servers are highly susceptible to overload from multiple user requests and performance is degraded linearly with each simultaneous connection.
[0136]FIG. 11 depicts the main menu for the image viewer program 52. The �Tree� command under the Browse Mode menu item allows the user to browse all permitted archives by server, camera, date, and type. The �Date� command allows the user to search by date/time for a selected server and camera. The �Directory List� command lets the user browse all attached drives manually. The Indexing command under the Maintenance menu allows the user to set the autoindexing features described above. The process used by the image viewer program 52 for setting up the autoindex feature is shown in FIG. 12a. The �Delete� command under the Maintenance menu allows the user to manually delete archives or automatically delete archives older than a selected date/time stamp. FIG. 12b depicts the process flow when the �Delete� command is selected. The �Format Conversion� command under the Tools menu allows the user to convert images to other standardized formats. The Display Mode menu allows the user to playback the images either as thumbnails (like images 48 displayed in the windows 46 generated by the user interface client program 46) or in a cinema (fullscreen) mode.
[0137] Rather than using the ActiveX control provided by the camera/server manufacturer, the user interface client program 42 and stream recorder program 50 utilize their own ActiveX control to interface with the cameras and servers. An overview of this OCX control is shown in FIG. 13. Further details of the control for obtaining and displaying an image are shown in FIGS. 14a-14 c, and further details of the control for obtaining and recording an image are shown in FIG. 15. The implementation of a suitable OCX control using the process steps shown in these figures will be known to those skilled in the art and therefore no further elaboration of the design of this control is necessary.
[0138] Referring now to FIG. 16, there is shown the program flow of the stream recording client program 50, which is a separate executable that permits high speed recording of image streams (video) in a manner that minimizes network utilization. The program 50 enables the streaming output from the camera servers using the OCX control described above internally within the program as direct subroutine calls. Streaming is initiated using a CGI enabled URL that is sent in the same manner as described above for the user interface client program 42, except that the CGI syntax is set to zero to indicate streaming output from the server. As indicated in FIG. 16, the program 50 utilizes a timer to reset the connection to the server before it is automatically terminated by the network. More specifically, for some networks, such as the Internet, a connection cannot typically be permanently held, but rather will be terminated automatically after a period of time (e.g., 50-70 minutes). The program 50 avoids this problem and enables nearly uninterrupted streaming by automatically resetting the connection before the external termination and then continuing to append the streaming images onto the end of the jpx file. This can be done with the loss of little or no streaming data from the camera.
[0139] Referring now to FIGS. 17a and 17 b, the video motion detection routine of program 42 is used to allow the recording of images to be performed only when a moving subject is present. When enough motion is present, the system will begin recording video until motion has stopped. When motion is sensed according to this routine, the program will perform any or all of the following functions:
[0140] record video up until video motion is no longer sensed and an �extra frames� count is exhausted;
[0141] send an email to a user as selected in the hardware setup panel based on settings from the .ini file;
[0142] attach an image to the email of the first frame of video that motion was detected on;
[0143] show a yellow border around the target window where motion was detected;
[0144] announce motion ON and motion OFF with two wav files, hello.wav and goodbye.wav, which the user may reset to any sounds desirable.
[0145]FIGS. 17a and 17 b detail the logic flow of this process. In general, the motion detection routine uses RGB color component filtering of the actual pixel data. By breaking down the image into these components, the values of each color component per pixel is represented as a decimal value of 0 (No color) to 255 (bright color). These values are compared to user-defined settings in the program 42 for filtering, allowing specific component or combined colors to exhibit reduced or enhanced movement sensitivity. For example, outdoor cameras are very prone to false triggering when blowing grass/leaves or shadows are present. By filtering out more green component, false triggering is reduced to a very acceptable level. This gives the program the ability to use motion detection in a much more broad range of use than other comparable systems.
[0146] The process begins by taking the first image (i.e., frame) of a video sequence and placing it into a buffer where it will be used as a reference image. The reference image is compared to subsequent video frames on a pixel-by-pixel basis. Preferably, the reference image is compared to subsequent images as they are being received (i.e., as soon as they are received) by the client computer so that the program is operable to provide real time motion detection. For each pixel in the current image, the program performs a comparison of the color component values for that pixel with the color component values of the corresponding pixel in the reference image. If the difference in color component values for corresponding pixels from the two images differ by more than a preselected amount, the program generates a motion detect signal which can be implemented as the Record Flag shown in FIG. 17b. For each of the RGB color components, a separate counter (Count_Red, Count_Green, and Count_Blue) is used that tracks the total number of pixels within the current image for which that color component value differs from that of the reference image by more than a preselected amount. This is done using a user-selectable filter levels for each of the color components. In particular, if for a particular RGB color component, ABS(Pref−Pcur)−FilterLevel>0 then the Count is incremented for that color component. Separate filter levels are used for each color component and these filter levels can be set by the user. As will be appreciated, the FilterLevel is an offset that aids in removing unwanted noise inherent in video sources, as well as �pixelation� or �tiling� inherent in jpg image sources under compression. When the entire image is processed, the Count_Red, Count_Green, and Count_Blue counters are compared to a user specified minimum, which can be different for each of the color components. If all three exceed their respective minimums, motion is considered present and the Record Flag is set to tell the program to proceed with recording.
[0147] Once motion is detected, the system records video and continues the pixel comparisons for each subsequent frame until the routine detects that motion is no longer present. To prevent the recording from ending before a subject has completely left the camera's field of view, the program continues recording until a specified number of extra frames have been recorded. This is carried out using an Extra Frames counter that is decremented once per frame starting with the first frame received after no further motion has been detected. As with the other counters, the number used for this counter can be user specified. Periodically, a new reference frame is selected from the video stream. This is done at regular intervals as specified by a user �Refresh Interval� setting, which is an image frame count. This Refresh Interval is used in conjunction with a frame counter C_Ref such that, once the C_Ref counter exceeds the Refresh Interval number, the reference buffer is emptied and the counter reset to zero.
[0148] The core function of the video motion detection is based on a count of pixels for which at least one color component value differs from that of the reference image by a preselected amount. Minimum object size detection can be implemented using the routine of FIGS. 17a and 17 b with the addition of an X by Y (width by height) template that scans the X by Y pixel information. If all pixels have a color component value that differs from that of the reference image by a preselected amount within the X by Y area, motion is detected. The program highlights the object with a bounding rectangle. This process can be used to filter out objects that are too small to be considered motion.
[0149] Apart from minimum object size detection, the program 42 is also operable to permit the user to specify a region of the camera's field of view so that the program performs the pixel comparisons only for those pixels located within that region. This region of interest processing is implemented by providing the user with the ability to mask out specific portions of a video frame, which will then be ignored by the motion detection. This concentrates the motion detection to specific regions of the screen. Typical region of interest masks employ grids or regions based on a grid array of squares. These areas are selected to mask out the regions. This tends to be somewhat granular in use. The program 42 uses a pixel based approach to masking the images. The user first creates a region of interest by defining the mask using the computer mouse to paint a black or other colored area on the image. The painted areas represent those portions not desired for use in detecting motion. A tool palette of square or other shape may be employed to create the painted mask. The mask is converted to a black and white mask and saved as a .bmp file based on the camera name. When video motion detection is used by the program, individual pixels from the reference and current images will be compared only if the corresponding mask pixel is not black. Users may edit the mask in Microsoft� Paint or other image editor to refine the mask to the pixel level.
[0150] Implementations of this type of streaming media have a common difficulty; namely, Ethernet connectivity is at best a highly reliable but not a totally reliable connection. Occasionally, power fluctuations, excessive image requests, overloaded or failing networks and a multitude of other issues can cause the connection to the camera to fail. Competing implementations often cause the application to abnormally abort or stop responding, requiring the user to close and restart the application. This condition is very serious since recorded video will not be available while the program is not responding. The user interface client program 42 and stream recorder client program 50 address this issue by identifying three modes of failure, and providing contingency functions to overcome these problems. These modes are:
[0151] 1. failure upon connect;
[0152] 2. failure upon image request (read); and
[0153] 3. failure during midstream read of image.
[0154] Failure types 1 and 2 are easily overcome by the implementation of the default timeout of failed requests by the Wininet.dll and its related components. The program can count these failures on a per camera basis and optionally shut down the camera and reattempt access periodically. This maximum failure count and reattempt connections are user selectable on a global scale.
[0155] Type 3 failures are usually serious and can cause the program to stop responding. By executing the request asynchronously or in a worker thread, the request can be timed and if abnormally long, cancel the request and try again. This allows the application to continue to function consistently. Preferably, the program utilizes both methods to insure robust connectivity.
[0156] It will thus be apparent that there has been provided in accordance with the present invention a digital video system and computer program therefor which achieves the aims and advantages specified herein. It will of course be understood that the foregoing description is of preferred exemplary embodiments of the invention and that the invention is not limited to the specific embodiments shown. Various changes and modifications will become apparent to those skilled in the art. For example, although the invention has been described as it would be implemented using TCP/IP network cameras and camera servers, it will be appreciated that the invention can be used in conjunction with other image sources. For example, rather than specifying a URL to access a particular camera, the invention could be used to specify a memory location or utilize a .dll file to access images from, for example, a video capture card, USB or IEEE-1394 (Firewire) ports. All such variations and modifications are intended to come within the scope of the appended claims.
Referenced by
Legal Events
Original Image


text:
Video of Sandra Bullock on The Today Show, Lindsay Lohan Photo Shoot, and Demi Moore Dancing With Snoop Dogg
Video: Jessica Alba's Awkward Interview, Behind the Scenes of LL's VF Shoot, and Sandra on Baby Louis!
by Molly Goodson 1 Reactions 5 Shares Print
Sandra Bullock chats about baby Louis in her first postdivorce TV interview, Lindsay Lohan says she has never been addicted to prescription drugs, and David Letterman puts Jessica Alba in an uncomfortable position over her Machete costar. Plus, watch Demi Moore dirty dancing on stage with Snoop Dogg and Ashton. Watch today's all-new PopSugar Rush!
Read More Louis BullockMachetePOPSUGAR NewsDavid LettermanSandra BullockMatt LauerSnoop DoggVanity FairAshton KutcherDemi MooreJessica AlbaCelebrity BabiesLindsay Lohan
Celebrity Babies
David Letterman
Ashton Kutcher
Demi Moore
Sandra Bullock
Link Love
- Tipping, tardiness, and texting are all addressed by celebrity stylists — Byrdie
- Reserve a space on your coffee table for this stunning beauty book — The Cut
- The ultimate guide for pairing your neckline to your hairstyle — StyleBistro
- How to fix your broken lipstick — Real Simple
- Tricks for exfoliating your skin without damaging it — xoVain
- Glittery eye makeup tutorials perfect for New Year's Eve — The Gloss
- Gorgeous braided hair inspiration from the red carpet — Daily Makeover
- Why Jenna Dewan doesn't have time for makeup — People StyleWatch
- The best techniques for applying lipstick on public transportation — Refinery29

subset: commoncrawl


text:
- Cooking Time:
- Servings: 12
- Preparation Time: 10
- 3-Tbsp. butter or margarine
- 1-pkg. (10 oz.) JET-PUFFED Marshmallows
- 5-cups crisp rice cereal
- 16- OREO Cookies, coarsely chopped (about 2 cups), divided
- Microwave butter in large microwavable bowl on HIGH 45 sec. or until melted. Add marshmallows; toss to coat. Microwave 1-1/2 min. or until marshmallows are completely melted and mixture is well blended, stirring after 45 sec.Add cereal and 1 cup chopped cookies; mix well.
- Press onto bottom of 13x9-inch pan sprayed with cooking spray. Sprinkle with remaining chopped cookies; press lightly into cereal mixture to secure. Cool completely before cutting into squares.
NotesI love oreo's and rice crispies! So Whabam :)
Presented by
Holiday Meal Planning
Wine Pairing Chat
Cupcake Recipes: Allison Robicelli Cupcake Chat
DIY Tasty Gift Ideas
Food Travels Through Italy
'CHEF' the Film Cookbook: Recipes from El JefeSee More
Hungarian Beef Paprika
Fresh Tuna Tacos
RICH BLUEBERRY BARSSee More


text:
Pacman 4.1.2
The package manager of the Arch Linux distro
Pacman is similar to Yum and dpkg, a utility that manages software packages, including install, uninstall and update functions.
- last updated on:
- December 25th, 2013, 7:23 GMT
- price:
- homepage:
- www.archlinux.org
- license type:
- GPL (GNU General Public License)
- developed by:
- Judd Vinet
- category:
- ROOT \ System \ Software Distribution
In a hurry? Add it to your Download Basket!
What's New in This Release:
- Validate %FILEPATH% when parsing repos to prevent arbitary file overwrites from malicious databases
- makepkg:
- restrict package name from starting with a dot
Add your review! 3 USER REVIEWS SO FAR


text: From Barnes & NobleThey say that when good paddlers die, they go to Minnesota's Boundary Waters Canoe Area Wilderness. This million-acre, 150-mile stretch along the Canadian border is a canoer's paradise, boosting over 1,200 miles of navigable water routes and 160 portage trails, not to mention 2,000 campsites. This wilderness-tested two-volume guide offers full cover of dozens of entry points and routes. The trip entries include day-by-day paddling distances, portage tips, difficulty ratings, and other pertinent info. The water-resistant topographic maps for each trip complete this perfect package.


text:
Home » Opinion » Columns
Jonah Goldberg: The Democrats' cynical impeachment play
The House minority leader went on to explain that "for the first time in history, Congress voted to sue a sitting President." And, "Today: the White House alerted us that they believe 'Speaker Boehner ... has opened the door to impeachment.'
Nancy (apparently we're on a first-name basis) went on to promise that ALL GIFTS ARE TRIPLE MATCHED!
This was only one of a bushel of such emails from the Democratic Party. I particularly like the ones from the Democratic Congressional Campaign Committee referring to the "red alert impeachment deadline," complete with a scoreboard slowly ticking upward toward $2 million. "We now have a shot at hitting our $2,000,000 goal to defend the President — and defeat Boehner's Republican House."
Now Obama is reportedly considering a unilateral amnesty of millions of immigrants here illegally, knowing full well it will spark a fierce political backlash and heighten impeachment talk. No doubt he thinks it's the right thing to do on the merits, with his famous pen and phone. What's less clear is if the merits are his top priority.
- Roadside directives aren't always as helpful as they should be - 1
- Immigrants include ethnic dishes at their Thanksgiving table - 0
- A Deep South college town carries his name, but NH's general is no local fixture - 2
- After the election is over, the signs remain - 4
- Mark Hayward's City Matters: Shelters provide stable places to rebuild lives - 0
- School's out for voters - 3
- How stable is this telephone pole? - 0
- Tenants, landlords trumped by persistent bedbugs - 4
- Neighbors want a sound wall for a wall of highway sound - 0
Mark Hayward's City Matters: Library namesake rescued from the vault: Elenora Blood Carpenter gets her rightful placeREADER COMMENTS: 2
- Former New London police chief settles with female accuser - 0
- Alleged parental kidnapper arraigned, ordered held on $250,000 cash bail - 0
- Reports: Celtics near completion of Rondo deal - 0
- Grid coach Cote, BG go their separate ways - 0
- Former owners of 'casualty' of Northern Pass file appeal - 0
- Holiday sales may recover with help of deep discounts - 0
- Wall Street has best 2-day gain since 2011 on Fed optimism - 0
- State Employees Association declares impasse in bargaining - 2
- Shipyard to hire 715 in next year - 1
Police remove dogs, cats and pig from Derry home after report of strong odorREADER COMMENTS: 0
BANANAS and NH's energy needs
Enter to win tickets to see Tom Chapin
Win tickets to see Linkin Park
NH reacts to thaw with Cuba
Vermont's disaster: An Obamedy of errors
NH reacts to thaw with Cuba
Arrest of dad at Gilford School Board meeting about Picoult book 'chilling' says judge, case dismissed


text:
Gina Prince-Bythewood on Representation in Film
By Juan Barquin
Mockingjay Is Sharp on Propaganda, Soft on Celebrity
By Amy Nicholson
Citizenfour Captures History in Progress
By Alan Scherstuhl
O Cinema Opens Sold-Out Show, Soft-Spoken Sound
By Travis Cohen
Rocks in My Pockets Director on Capturing Depression
By Juan Barquin
By Stephanie Zacharek
Sin City Falls Short While Excoriating Women
By Amy Nicholson
Chloe Grace Moretz Confronts Her Own Mortality
By Juan Barquin
1111 Memorial Drive
Coral Gables, FL 33146
Category: Movie Theaters
Region: Coral Gables/South Miami
First-time writer-director Alice Rohrwachers minutely observed, emotionally complex Corpo Celeste would be a treat in any season, but it's particularly refreshing amid the summer-movie bombast. An anti-spectacle in every way, the film focuses on 13-year-old Marta (Yle Vianello, a nonpro), who, with her mother (Anita Caprioli) and sisters, has returned to southern Italy after spending most of her life in Switzerland. Marta, a shy, dreamy, but fiercely observant innocent, is shuffled into Catholic confirmation class as a means of integrating into her new surroundings. The experience does little to cushion her social awakening, let alone encourage a spiritual one: The local priest (Salvatore Cantalupo), a cynical careerist, pours all his effort into finagling a transfer, while the dry dogma of the church itself – no matter how popified for the kids – is cruelly oblivious to Marta's inquisitiveness. As her uncle says and the adult parishioners' rote faith attests, confirmation is something you go through and forget. The loss is theirs – by Corpo Celeste's ambiguous climax, it seems possible that Marta is bonafide saint material. Rohrwacher almost overplays her metaphors (as when the father's boyhood-village crucifix slides over a cliff en route to its new home), but her understated characterizations, cinematographer Hlne Louvart's rapturous range, and especially Vianello's eerie grace combine to make Corpo Celeste an ideal cinematic antidote to the summer doldrums.
Sponsor Content
Find capsule reviews, showtimes & tickets for all films in town.
Join My Voice Nation for free stuff, film info & more!


text:
Interesting discussion
What about an addition to the rep system where the OP you could flag up if a post provided the solution to the problem..
I can hear Shaun from denver going you want to do what.....
Printable View
Interesting discussion
What about an addition to the rep system where the OP you could flag up if a post provided the solution to the problem..
I can hear Shaun from denver going you want to do what.....
Experts Exchange - The #1 resource on the web for solving technology problems. Right?
instead of:Quote:
Originally Posted by me
which does sound completely different!Quote:
Originally Posted by your_cut_quote_from_me
So, my point being: You could tell me to do something that worked for you last week - good advice, because it worked for you. However, my GPO's are slightly different to yours, and the fix that worked for you has just bricked my network - bad advice.
I get the feeling that the people who are good, dont really care if they are recognised that they have a specialism. This is an IT forum to help people with similar jobs/interests. The fact that I get help from here and will contribute when I can is enough for me. I dont see the need for a badge next to my name to show what I(or anyone else) have done:)
Exaggerating above but I'm trying to point out that even if someone's not overly sensitive, short tempered or anything else then having designated 'experts' can discourage others from posting a suggestion or fix. Anything which restricts the advice available is a bad thing. More points of view, generally, are better than just one if you're looking for advice.
I could see the feature being useful for automation in the future allowing an AI to much more easily distil the database into solutions on demand rather than the verbal context that is used now. I do think though that at this point it would kind of be a duplication of existing systems. These have had their issues due to their use not being clearly defined but adding more metrics may not be the answer. Most of the issues that the current system has could at least partially mitigated by allowing a clearer overview of how the points were earned.
Unless we are looking at building a much better search engine/AI to distill answers more easily I'm not sure if this additional model will be as helpful as expected.
I'm not a fan of the individual badges idea personally but a clickthrough to a clearer picture of the rep distribution could be helpful and more importantly interesting.
Ironically, kind of shows what a few have said though, people can get very touchy about things. I'm not trying to start an argument, just opening up idea's for possible downfalls to the proposed new rep system
You could combine tech answer tags with solution tags as sometimes articles that are posted point the OP in the correct direction with enough info to get a solution out of the information and the OP can then post back with the full solution and then tag it with a solution flag
I also can't see this ending well. Making rep distribution clearer would be handy, but let people make up their own minds whether to follow received advice.
And please don't let it become like expert sexchange. Any site that pulls the "Hey, you need to sign up / pay to see the answer......Oh, unless you can scroll down" should not be emulated.
And I've never quite got why anyone pays to use that site, like you say, you can scroll down to the answers anyway...
I think this thread alone proves the badges are a bad idea, it's nearly turned in to an argument twice already. A clearer rep system I agree with others would be a better way to go in my opinion...


text:
Featured Products
Sorry, no public products found.
About this store
Learn More »
Welcome to the land of tree and rain. Raven dreamed these note cards just for you and she hopes you like what you see.
Help us personalize your shopping experience by telling us what you like. (learn more)
Comment Wall
By phoenix864, 12/19/2011 about
"You've Been Firecrackin"
By Firecrackinmama, 12/19/2011 about
By irishpen, 12/19/2011 about
"I LOVE your"
By lioneyes, 12/19/2011 about
"Greetings Shirley!"
By Wholeheartedly, 6/20/2011 about
"Beautiful Fractals"
By Awenasa, 6/8/2010 about
"you site"
By anthonyhedger, 9/9/2009 about
"Glad to see your stuff!"
By sbaker5, 8/3/2009 about
By wutz4tea, 7/28/2009 about
"Fantastic gallery! Awesome images."
By jim270, 6/28/2009 about
By SBricker, 3/7/2009 about
"Thanks for the featured art !!"
By mindpixels, 3/6/2009 about
"Aww thx sweetheART xo"
"hooty hoot! lol!!"
"Great Gallery"
By lindaS47, 2/27/2009 about
No comments yet.


text:
View all MLS scores for 6/20/2009
|Red Bull New York
|Team: Player goal (assisted by) minute
|NY: Juan Pablo Angel 5 (unassisted) 40.
|SEA: Fredy Montero 7 (unassisted) 48+.
|Team -- Player (foul type) minute
|NY -- Macoumba Kandji (caution; Dissent) 11NY -- Kevin Goldthwaite (caution; Reckless Tackle) 36SEA -- Tyrone Marshall (caution; Reckless Tackle) 83
|Player (substitute minute)
|Kasey Keller, Brad Evans, Patrick Ianni, Tyson Wahl, Osvaldo Alonso, James Riley, Sebastien Le Toux (Sanna Nyassi 69), SteveZakuani, Tyrone Marshall, Fredy Montero, Nate Jaqua (Roger Levesque 74).
|Substitutes Not Used
|Ben Dragavon, Peter Vagenas, Freddie Ljungberg, Nathan Sturgis, Stephen King.
|Player (substitute minute)
|Danny Cepero, Kevin Goldthwaite (Danleigh Borman 74), Carlos Mendes, Albert Celades (John Wolyniec 81), Seth Stammler, Juan PabloAngel, Macoumba Kandji, Jorge Rojas (Dane Richards 58), Alfredo Pacheco,Jeremy Hall, Nick Zimmerman.
|Substitutes Not Used
|Jon Conway, Sinisa Ubiparipovic, Juan Pietravallo, Luke Sassano.
Seattle-Red Bull New York Game Review
East Rutherford, NJ (Sports Network) - The New York Red Bulls snapped a five- game losing streak with a 1-1 draw vs. Seattle Sounders FC at Giants Stadium on Saturday night.
The Red Bulls (2-10-4) are still winless in their last seven Major League Soccer matches, but will take the point considering it was their first since May 16.
Seattle (5-3-7) concluded a tough stretch of three games in eight days by going 1-0-2 with the draw vs. New York, a team it beat 3-0 to open its first season in MLS on March 19.
Juan Pablo Angel scored the game's first goal five minutes before the break. The Red Bulls got a lucky bounce when a Tyrone Marshall clearance from the Seattle defensive third hit teammate Patrick Ianni in the back and bounced to the top of the Sounders' 18-yard box. Angel beat on-rushing Seattle goalkeeper Kasey Keller to the loose ball, took a touch around him, and deposited it into the open net for his fifth goal of the season.
Seattle's Fredy Montero leveled things up seconds before the break when he stole the ball off New York right back Jeremy Hall in the right corner, drove into the New York area and fired a shot into the top corner for his seventh goal of the season.
That was how the score stayed as neither team was able to earn a goal in the second half.
New York will aim to build on the solid effort at home when it hits the road for a midweek league fixture at Toronto FC on Wednesday, while Seattle is off until June 28th, when it hosts the Colorado Rapids.


text:
Phone (316) 612-7696
Price $30-$60 plus tax and service fees
Age Suitability None Specified
Sunday, Oct 12 2:00p
Crown Uptown Dinner Theatre Wichita, KS
With music by Elton John and lyrics by Tim Rice, AIDA is a Tony award winning contemporary musical take on a classic tale of the timeless bond between an enslaved Nubian princess and an Egyptian soldier. As forbidden love blossoms, the young lovers are forced to face death or part forever. Together, they set an example of true devotion that transcends the vast cultural differences between their warring nations. This heartwarming, powerful musical has romanced and elated millions the world over.
Created by CrownUptownWichita
Location & Nearby Info
Crown Uptown Dinner Theatre
3207 E. Douglas
Wichita, KS 67218
(316) 612-7696
3207 E. Douglas
Wichita, KS 67218
(316) 612-7696
Show nearby:
1.7 mi 1 El Rodeo
1.7 mi 2 Caffe Moderne
2.3 mi 4 Riverside Cafe Too
2.4 mi 5 Avi Seabar & Chophouse
2.6 mi 6 Las Garzas
2.7 mi 8 Edge Lounge and Cafe
2.7 mi 9 KinFolk Cafe
2.8 mi 10 La Tradicion Tortilleria
Reviews & Comments
Hot Tickets More »
Wed 9/30 7:00p
Tue 3/31 8:00p
Sun 3/22 3:00p
Thu 3/12 7:00p
Tue 3/31 7:30p
Thu 4/9 7:30p


text:
Kate Mara Gets Steamy in Yahoo! Style Shoot by Alisha Goldstein
The latest cover story from Yahoo! Style puts the spotlight on actors Kate Mara and James Marsden. Photographed by Alisha Goldstein and styled by…Read More
The latest cover story from Yahoo! Style puts the spotlight on actors Kate Mara and James Marsden. Photographed by Alisha Goldstein and styled by…Read More
La Bohème–The December 2014 edition of Marie Claire Netherlands shows off the ease and glamour of bohemian style with this editorial captured by Hans…Read More
Anja's Romantic Christmas–Polish model Anja Rubik is back for the Christmas 2014 advertising campaign from Apart Jewelry. Just like last year, the blonde beauty…Read More
UO's Home for the Holidays Shoot–Real life couple Sara Blomqvist and her husband Jeremy Young, get romantic in a new lookbook from Urban Outfitters…Read More
Net-a-Porter taps "Love, Rosie" co-stars Lily Collins and Sam Claflin as the feature of its online magazine The Edit's, latest issue. The two star…Read More
Hotel Love–Landing the November 2014 cover story from Elle Poland, model Marta Dyks impresses in a rock and roll inspired shoot where she gets…Read More
Love You in the Fall–Things get romantic for the October issue of Marie Claire Netherlands, where the magazine takes a look at fall fashions…Read More
Once Upon a Time–British model Karen Elson takes center stage in the September cover story from Stylist Magazine, where she revels in a wardrobe…Read More
Wild at Heart–Seventies rock and roll style serves as the inspiration for this shoot starring Pamela Bernier and Kyle Mobus published in Harper's Bazaar…Read More
The Dreamers–Photographer Dove Shore captures this romantic shoot starring Charlbi Dean Kriek and Dathan Shades for our latest exclusive. The pair gets…Read More


text:
This employer has taken extra steps to respond to reviews and provide job seekers with accurate company information, photos, and reviews. Interested for your company?Learn More.
Work in HR? Unlock Free Profile
ASCAP Jobs & Careers in San Mateo, CA
Hiring? Post a Job
Show: All Results Last 7 Days
No jobs found – change your filters above for more results
ASCAP Photos
ASCAP Reviews
34 Reviews
Recommend to a friend
Approve of CEO
John LoFrumento
21 Ratings
"Used to Be a Great Place to Work "
- Comp & Benefits
- Work/Life Balance
- Senior Management
- Culture & Values
- Career Opportunities
I worked at ASCAP full-time (more than 10 years)Pros
Time off, benefits, their missionCons
Senior management's treatment of employees & their failure to accept responsibility for their own mistakes,Advice to ManagementAdvice
As you may remember, in the ealy 1990's Booz Allen conducted a review of tour operations that called for, among other things, a flatter management structure. The board signed off on it, but instead layers of management increased while midlevel employees get laid off in response to such issues as IMJV and expenses associated with PREP. Think seriously about employee morale.Doesn't RecommendNegative OutlookDisapproves of CEO
Work at ASCAP? Share Your Experiences
Click to Rate


text:
Highgate Road railway stations
Coordinates: 51°33′21″N 0°08′44″W / 51.5559°N 0.14553°W Highgate Road railway stations were two stations of the Tottenham & Hampstead Junction Railway lying virtually side by side in the north of Kentish Town in North London on separate lines which joined east of the stations.
High level station[edit]
The High Level station was on what is now the Gospel Oak to Barking Line. It opened in 1868 and closed in 1915. At one time a link led to Kentish Town station on the up Midland Main Line (MLL). [1]
Low level station[edit]
The Low Level station opened in 1900 and closed in 1918. It was on a line which left the Gospel Oak to Barking Line somewhat east of the High Level station at Junction Road Junction from which road the slightly later Junction Road station took its name. Links from it led to the up Midland Main Line and to the North London Line heading east. Part of the route of the NLL link was later lowered for a connection to be made to the down MLL.
|Preceding station
|Disused railways
|Following station
|Gospel Oak
|Tottenham & Hampstead Junction Railway
|Junction Road
|Kentish Town
|Tottenham & Hampstead Junction Railway
|Junction road
- ^ "Gospel Oak to Barking line". London's Abandoned Stations. Archived from the original on 2009-11-25.
|This London railway station–related article is a stub. You can help Wikipedia by expanding it.


text:
Loading ...
At Build 'n Blocks, laughter drifts from youngsters, punctuating the buzz of motorized cars and the pop of plastic blocks snapping together. Kids preschool through eighth grade construct catapults, devise chemical compounds to create slime, and develop sparks of interest in science, engineering, and math. The instructors at Build 'n Blocks stress that the earlier kids dabble in these fields, the greater their learning abilities will be throughout their lives.
While stacking Legos into replicas of cities or assembling mechanized robots with K'nex, kids develop a comprehension of basic physics without watching the Three Stooges try and run an elevator factory. During science experiments, youngsters strap on goggles to investigate and diagnose unknown illnesses, forming the foundation of inquisitive minds capable of problem solving. As they work together on laptops or around tables strewn with drawing and sculpting materials, they also form an aptitude for teamwork and social interactions. The team at Build 'n Blocks also fosters an appreciation for math and science through afterschool programs and birthday parties.
In the late 1970s career educators Eileen and Raymond Huntington opened the first Huntington Learning Center in Oradell, New Jersey. Their goal was to take an individualized approach to education, adjusting instructional tactics according to each student's set of needs. Their success in helping K–12 students prepare for exams and improve grades and study skills quickly spawned franchises across New York and New Jersey.
Today, the certified Huntington tutoring staff utilizes testing and rubrics for assessing each child's skills, academic needs, and potential for growth. The teachers even note the student's behavior in different testing and academic situations to craft a methodology sensitive to each child's learning style. Teachers also adhere to the company's code of ethics that stresses professionalism and confidentiality and encourages pupils to improve their grades honestly through dedicated study rather than shortcuts.
At Creative Kids, imagination is the driving force behind the programming for each day. The school's facility boasts an art room, a movement and dance area, and a parent's lounge, with rooms painted in bright solid hues of purple, green, and orange. Kids are encouraged to express themselves and discover new talents, whether that means building robots out of LEGO blocks, rocking out in a music class, or embracing their inner Picasso in an art class. With such a wide variety, kids can let their imagination run wild and choose from a broad selection of signature party themes and activities.
Since 1985, Anthony Marra has treated patrons to the same traditional eats that he grew up with, based on recipes brought from Italy by his Nonna Rose and Papa Tony. Each day his deli tables populate with prosciutto, broccoli rabe, and sundried tomatoes in gourmet sandwiches, many available hot or cold, and side dishes such as meatballs, sweet fryer peppers, and seasonal stuffed artichokes complement hand-tossed, gooey pizzas in a variety of sizes. For those seeking catering for a private party, Marra's offers traditional Italian pastas and meats sautéed in wine by the tray-full, or by the bathtub-full for those seeking to be fully immersed in Italian culture.
Estelle Finkel had already spent two decades at the head of the classroom when she founded her Center for Learning in 1984. Today, the center's staff gives students a leg up with educational programs, including basic study-skills and college-advisory services, standardized-test prep courses, and tips on buttering up a teacher who is allergic to apples.
Cellairis, which has more than 500 locations across the United States, Canada, and the United Kingdom, outfits phones and tablets with fashionable cases and accessories. In addition to equipping devices with colorful cases, chargers, headphones, and screen protectors, the Livingston Mall location offers phone repair and screen replacements.