Capturing event information using a digital video camera

An event aware video system (EAVS) is to capture video frames during a first time period and process event portion of the video frames before transferring the processed data to a central computing system. The EAVS may establish a present no-event frame from the video frames, wherein a last frame of the video frames is marked as the present no-event frame if the difference between adjacent pair of frames of the video frames is less than a threshold value. The EAVS may establish an event frame, wherein a present frame captured after establishing the no-event frame is marked as the event frame if the difference between the present frame and a previous frame captured prior to the present frame is greater than the threshold value. The EAVS may generate the processed data by processing the event of the event frame.

BACKGROUND

Video surveillance systems generally comprise a plurality of video cameras and each video camera may capture the image of a specific area within the view of the video camera. The video cameras may capture the data and compress the video data before sending the compressed data to a central computing system.

DETAILED DESCRIPTION

The following description describes embodiments of a technique for capturing event information using a digital camera. In the following description, numerous specific details such as logic implementations, resource partitioning, or sharing, or duplication implementations, types and interrelationships of system components, and logic partitioning or integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. In other instances, control structures, gate level circuits, and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation.

Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device).

For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other forms of propagated signals. Further, firmware, software, routines, and instructions may be described herein as performing certain actions. However, it should be appreciated that such descriptions are merely for convenience and that such actions in fact result from computing devices, processors, controllers, and other devices executing the firmware, software, routines, and instructions.

A video surveillance system100, which may support capturing event information in accordance with one embodiment, is illustrated inFIG. 1. In one embodiment, the video surveillance system100may comprise event aware video system (EAVS)150-1to150-N, a network160, and a central computing system190. In one embodiment, the EAVS150-1to150-N may capture images in the scene110-1to110-N respectively.

The central computing system190may receive event information sent by the EAVS150and may perform further analysis. In one embodiment, the event information may comprise processed data generated by processing the event of a event frame. In one embodiment, the central computing system may conserve resources such as the processing cycles to further process the processed data. In one embodiment, the central computing system190may be used by a security officer, who may receive event information from EAVS150-1to150-N and monitor a large area comprising scenes110-1to110-N. In one embodiment, the central computing system190may represent a server system with large storage capability to store the event information for viewing at a later point in time as well.

The network160may comprise routers, switches, gateways, and similar other such devices to transfer event information between the EAVS150and the central computing system190. In one embodiment, the bandwidth of the network160may be conserved as the processed data representing the event information is transferred over the network160. The network160may represent a local area network, wide area network, metropolitan area network, internet, or any other such networks. In one embodiment, the network160may be wire based, or wireless based or a combination of both the wired and wireless technologies. The network160may support protocols such as transport control protocol/internet protocol (TCP/IP), user datagram protocol/internet protocol (UDP/IP), and such other similar protocols.

In one embodiment, the EAVS150may establish a ‘no-event frame’, compare an incoming frame with the no-event frame, and determine whether the incoming frame is an event frame or a no-event frame. In one embodiment, the EAVS150may determine that the incoming frame is an ‘event frame’ if the difference between the ‘no-event frame’ and the incoming frame is greater than a threshold value. In one embodiment, the ‘no-event frame’ may be used as a reference frame with which comparison is performed to detect the occurrence of an event.

In one embodiment, to establish the no-event frame, the EAVS150may capture video frames (P1, P2, . . . Pt) at regular intervals over a time period ‘K’ before marking a video frame as a ‘no-event frame’. In one embodiment, the EAVS150may compare each adjacent pair of frames over the time period ‘K’ to determine whether a video frame is a ‘no-event frame’. For example, the EAVS150may compare first pair of adjacent frames (P2and P1) and if the difference between the first pair of adjacent frames is less than the threshold value, the EAVS150may further compare second pair of adjacent frames (P3and P2). Like-wise, the EAVS150may compare adjacent frames {(P4and P3) . . . (Pt and Pt−1)} until the time period K is elapsed. If the difference between the adjacent pair of video frames is less than the threshold value, then the EAVS150may mark the most recent frame (Pt) as the no-event frame.

For example, if scene110-1represents an empty parking lot of shopping mall, the EAVS150may capture ten images P1to P10at time points T1to T10and compare the adjacent frames {(P2, P1), (P3, P2) . . . (P10, P9)} and if there is no activity detected, the image P10may be marked as the ‘no-event frame’. Further, the EAVS150may capture an image P11at time point T11, compare the image P11with the image P10and if the difference between P10and P11is less than the threshold value, the image P11may be discarded, while maintaining P10as the no-event frame. In one embodiment, the EAVS150may mark the empty parking lot as a first no-event frame and store the first no-event frame in the no-event frame buffer260.

However, if an event such as a car entering the parking lot is detected in the image P11, the EAVS150may capture the event, mark the image as an ‘event frame’, and transmit the event to the central computer system190. In one embodiment, the EAVS150may compare P11and P10and the difference may be greater than the threshold value as an event (car entering the parking lot) has occurred. In one embodiment, the EAVS150may capture next ten images P12to P21and compare the adjacent pair of frames for detecting an event. If no event is detected, the frame P21comprising a car parked in the parking lot may be marked as the ‘no-event frame’. It may be noted that, the first ‘no-event frame’ was an empty parking lot and the second no event frame is a parking lot with a car parked in the parking lot. In one embodiment, the EAVS150may replace the first ‘no-event frame’ with the ‘second no-event frame’ in the no-event frame buffer260. In one embodiment, the EAVS150may send the no-event frame at a first frame rate and at a first spatial quality to the central computing system190.

In one embodiment, the event aware video system EAVS150may capture a present video frame (p+1thvideo frame) and mark the present video frame as an ‘event frame’ if the difference between the (p+1thvideo frame) and (Pthvideo frame) is higher than the threshold value and if the (p+1thvideo frame) differs from the ‘no-event’ frame substantially. In one embodiment, the threshold value may be determined based on statistical or empirical methods. In one embodiment, the color value histogram (i.e. empirical probability distribution) at each pixel location is continuously collected from the no-event frame. If the color value at the same pixel location for the present video frame (P+1 video frame) falls outside a likelihood value of 90% of the no-event frame color distribution, that pixel may be marked as a candidate pixel for an event frame. In one embodiment, the likelihood value may be tunable system configuration parameter. Also, if there exists at least one large area of candidate pixels for the event frame in the present video frame (P+1th video frame), the entire frame may be marked as an event frame.

Also, in one embodiment, the entire frame may be divided into many small areas A1, A2. . . Ak. The threshold value may be imposed on the change in average color level of X number of pixels in each area A1of the present video frame compared to the same X pixels in the area A1of the previous video frame. In one embodiment, if the average color level of X pixels in the area A1changes by, for example, ten levels on the color scale (e.g., 0-255 color levels) then the EAVS150may mark the area A1as a candidate of the event frame. In one embodiment, if candidate small areas A1, A2. . . AJ connect together to form a larger area, then the present video frame (P+1 video frame) may be marked as the event frame. In one embodiment, the present video frame may be referred to as the ‘event frame’ and the previous video (Pth video frame) frame may be referred to as the ‘no-event frame’.

In one embodiment, the event aware video system (EAVS)150may capture the event frame, extract event information from the event frame, analyze the event information, and transfer the event information to the central computing system190. In one embodiment, the first event information sent to the central computing system190may comprise the difference between the no-event frame (Pthframe) and a first event frame (P+1thframe). Also, the next event information may comprise the difference between the first event frame (p+1thframe) and the next event frame (P_next frame). In one embodiment, the EAVS150may send the event information at a second frame rate (SFR) and at a second spatial quality level (SQ). In one embodiment, the second frame rate may be higher than the first frame rate and the second spatial quality may be lower than the first spatial quality.

An event aware video system (EAVS)150, which may support capturing event information in accordance with one embodiment, is illustrated inFIG. 2. The EAVS150may comprise an image capturing system210, a data conversion system220, a frame buffer230, EAVS enabled controller EEC250, a no-event frame buffer260, a memory280, and a network interface290.

The image capturing system210may capture the image and may comprise image capturing devices such as charge coupled devices (CCDs), CMOS sensors such as active pixel sensors, and similar such other devices. The image capturing system210may capture the optical signal and convert the optical signal into an electric signal. The data conversion system220may comprise analog-to-digital converters and other signal conditioning devices such as amplifiers, attenuators, noise cancellation devices and such other similar devices. The data conversion system220may receive the electrical signal from the image capturing system210, condition the electric signal, and provide the conditioned signal to the frame buffer230.

In one embodiment, the frame buffer230may store data representing the conditioned electric signal. In one embodiment, the frame buffer230may store a small number of frames (e.g., 2 to 3 frames) received from the data conversion system230that may be quickly retrieved by the EEC250.

The no-event frame buffer260may be used to store the ‘no-event frame’. At any give time point, there may exist one no-event frame, which may be stored in the no-event frame buffer260. In one embodiment, the no-event frame buffer260may comprise a small amount of high speed memory. However, the no-event frame buffer260may be updated at regular intervals of time and thus may be provided with a capability of supporting higher refresh rates.

The memory280may store instructions that may be used by the EAVS enabled controller EEC250to capture event information. The memory280may store data and/or software instructions and may comprise one or more different types of memory devices such as, for example, DRAM (Dynamic Random Access Memory) devices, SDRAM (Synchronous DRAM) devices, DDR (Double Data Rate) SDRAM devices, or other volatile and/or non-volatile memory devices used in a system such as the video surveillance system100.

The network interface290may receive data packets from the EAVS enabled controller250and may transfer the data packets over the network interface290. In one embodiment, the network interface290may comprise a network interface card (NIC) to transfer the data packets to an appropriate routing device of the network150.

The EAVS enabled controller (EEC)250may capture event information and transfer the event information to the central computing system190. In one embodiment, the EEC250may retrieve a video frame from the frame buffer230and determine whether the video frame is a ‘no-event frame’ or an ‘event frame’. In one embodiment, the EEC250may extract the event information from the video frame if the video frame is an event frame. In one embodiment, the EEC250may mark the video frame as ‘no-event frame’ and may store the ‘no-event frame’ in the no-event frame buffer260if the video frame is a ‘no-event frame’.

An operation of the EAVS enabled controller (EEC)250of the event aware video system (EAVS)150capturing the event information in accordance with one embodiment is illustrated inFIG. 3.

In block305, the EEC250may initialize a variable time span TS to zero. In one embodiment, the time span TS may represent a time window during which all the input frames are different from the no-event frame while there is no occurrence of an event in the input frames. In one embodiment, a large TS value may imply that the current ‘no-event’ frame may not be valid anymore and a new ‘no-event’ frame may need to be re-established.

In block310, the EEC250may invalidate the present ‘no-event frame’. In one embodiment, the present ‘no-event frame’ is invalidated to set-up a new ‘no-event frame’, which may provide an accurate reference that may represent the scenario at scene110-1before capturing any event.

For example, the present ‘no-event frame’, which is invalidated in block305may represent a parking lot with sunshine. However, a cloud may move over the parking lot after sometime and before the event is captured, a new ‘no-event frame’ may be established with a cloud over the parking lot. In one embodiment, the EEC250may invalidate the present ‘no-event frame’ (parking lot with sun shine) and re-establish a new ‘no-event frame’ (parking lot with clouds) to avoid false alarms. In one embodiment, the frame510(F(ne)) ofFIG. 5may represent a re-established ‘no-event’ frame, which may represent a cloud covered parking lot.

In block315, the EEC250may retrieve a new frame F(n) from the frame buffer230. In one embodiment, the EEC250may retrieve a frame520(=F(n)) ofFIG. 5that may be captured and stored in the frame buffer230. In block320, the EEC250may check whether a valid ‘no-event’ F(ne) is established and control passes to block325if the ‘no-event’ frame is valid and to block370otherwise.

In block325, the EEC250may compute the difference between F(n) (frame520) and F(ne) (frame510) and control may pass to block330. In block330, the EEC250may check whether the difference between F(n) (frame520) and F(ne) (frame510) is greater than the threshold value and control passes to block335if the difference between F(n) (frame520) and F(ne) (frame510) is lesser than the threshold value and to block345if the difference between F(n) and F(ne) is greater than the threshold value.

In block335, the EEC250may initialize the time span to zero. In block340, the EEC250may mark the frame F(n) as the ‘no-event’ frame and transmit the ‘no-event frame’ to the central computer system190. Control passes to block315. In one embodiment, the difference between frame520and510may be lesser than the threshold value if the car has not entered the parking lot. Thus, the frame520may be marked as ‘no-event’ frame.

In block345, the EEC250may compute the difference between a frame F(n−1) received prior to the new frame F(n). In block350, the EEC250may check whether the difference between F(n) and F(n−1) is greater than the threshold value and control passes to block355if the difference between F(n) and F(n−1) is greater than a threshold value and to block360otherwise. In block352, the EEC250may initialize the time span to zero.

In block355, the EEC250may compute and compress the action of the moving objects. In block358, the EEC250may compress the identity of the moving objects. In block359, the EEC250may transmit the ‘event frame’ (frame520) to the central computer system190.

In block360, the EEC250may increment the time span (TS) and control passes to block363. In block363, the EEC250may check whether the value of TS is greater than the time duration ‘K” and control passes to block310if the value of TS is greater than the time duration K and to block355otherwise.

In block370, the EEC250may transmit a null tag. In one embodiment, the null tag may indicate that the ‘no-event frame’ is yet to be established. In block374, the EEC250may compute the difference between the frame F(n−1) received prior to the new frame F(n).

In block378, the EEC250may check whether the difference between F(n) and F(n−1) is greater than the threshold value and control passes to block380if the difference between F(n) and F(n−1) is greater than the threshold value and to block390otherwise.

In block380, the EEC250may initialize the time span to zero and control passes to block315. In block390, the EEC250may increment the time span (TS) and control passes to block394.

In block394, the EEC250may check whether the value of TS is greater than the time duration ‘K’ and control passes to block398if the value of TS is greater than the time duration K and to block315otherwise. In block398, the EEC250may validate F(ne) frame by replacing the ‘no-event frame’ F(ne) with the new frame F(n).

An operation of the EAVS enabled controller (EEC)250of the event aware video system (EAVS)150computing and compressing the event information in the event frame in accordance with one embodiment is illustrated inFIG. 4.

In block405, the EEC250may remove the background information from the ‘event frame’ (frame520). In one embodiment, the EEC250may generate the frame560after removing the background information from the frame520. In one embodiment, the EEC250may comprise a finite impulse response (FIR) filter, which may compare every pixel of the new frame F(n) against a corresponding pixel in the ‘no-event frame’ F(ne). After comparison, the EEC250may identify pixels in which the difference of color levels in F(ne) and F(n) is lesser than the threshold value. In one embodiment, the EEC250may mark all the pixels with difference lesser than the threshold value as a portion of the background.

In one embodiment, the color levels for red (R), green (G), and blue (B) of the pixels identified as a portion of the background may be set to represent black color. In one embodiment, setting the color levels of the pixels to black may be equivalent to removing the background information. In one embodiment, the new frame F(n) in which the background information may be removed may be referred to as a background removed frame BRF(n). In one embodiment, the FIR filter may comprise a multiplier, an accumulator, memory rows, and DMA logic to perform filtering and removal of background information. In one embodiment, the EEC250may generate a 1-bit bit-map b(n), which may indicate the position of the moving objects in the background removed present frame BRF(n). In one embodiment, the bit-map b(n) may indicate whether each pixel of the frame BRF(n) is a portion of the moving object or the background. For example, the pixels 3-8 of row-1 and pixels 1 to 14 of row-2 may represent a portion of the moving object and the bit-map b(n) may comprise a first logic value (e.g., 1) for these pixels (3 to 8 of row-1 and 1 to 14 of row-2) and for the remaining pixels, the bit-map b(n) may comprise a second logic value (e.g., 0).

However, to identify an event, the frames520and530are captured at higher rate. For example, the new frame520captured at time point T1may become a previous frame after a next frame530is captured at time point T2, wherein T1occurs prior to T2. In one embodiment, the frame F(n) (frame530) may represent a new frame captured at the most recent time point T2, BRF(n) (frame570) may represent the frame F(n) (frame530) from which the background information is removed, and b(n) may represent the bit-map of the BRF(n) (frame570). In one embodiment, the frame520captured immediately prior to F(n) may be referred to as a previous frame F(n−1) and BRF(n−1) (frame560) may represent the previous frame F(n−1) (frame520) from which the background information is removed, and b(n−1) may represent the bit-map of the BRF(n−1). In one embodiment, a bit-map b(n−1) may indicate the position of the moving objects in the frame BRF(n−1).

In block410, the EEC250may label the moving objects that represent an event. In one embodiment, the event frame may comprise one or more moving objects and the EEC250may label each of the moving objects with an identifier (moving object ID). In one embodiment, the EEC250may scan the bit-map b(n) and the frame BRF(n) before labeling the moving objects and may label the moving objects using a variable ‘i’, wherein ‘i’ may be a positive integer value (e.g., i=1, 2, 3 . . . L) identifying each of the moving objects, where L is the total number of the moving objects in the frame. For each pixel in the BRF(n) may be logically labeled as either belonging to one of the moving objects or the background. Also, for each moving object, the EEC250may collect a statistics vector V(i, k), wherein ‘i’ may represent the moving object ID and ‘k’ may represent index of the frame. In one embodiment, the statistics vector may include size and location of a bounding rectangle in the BRF(n), total mass of Y, U, and V components of the moving object, location of the gravity center of Y component of each of the moving objects, and such other similar statistics, which may allow accurate identification of the moving objects.

In block415, the EEC250may pair the moving objects in the new frame BRF(n) (frame570) and the previous frame BRF(n−1) (frame560). In one embodiment, the EEC250may pair the moving objects using the statistics vector V(i, k) and V(i′, k−1) determined in block410. In one embodiment, the EEC250may detect the pairs corresponding to the moving objects in BRF(n) and BRF(n−1). In one embodiment, the EEC250may determine a corresponding moving object in BRF(n−1) for each moving object in BRF(n) such that both the moving objects represent the same portion of the event frame. In one embodiment, the EEC250may perform pairing based on statistics V(i, k) of BRF(n) and V(i′, k−1) of BRF(n−1) using the following principles: Suppose O(i, k) and O(i′, k−1) are the two objects corresponding to V(i, k) and V(i′, k−1), then,a. If the total masses of V(i, k) scaled to the bounding rectangle's area of V(i, k) are similar to the same quantity of V(i′, k−1), then O(i, k) and O(i′, k−1) are more likely to be the same object;b. If the location of gravity center of V(i, k) relative to the center of the bounding rectangle of V(i, k) is similar to the same quantity of V(i′, k−1), then O(i, k) and O(i′, k−1) are more likely to be the same object; For example, if the location of gravity of center of V(i, k) is Lgi and that of V(i′, k−1) is Lgi′ and if the center of the bounding rectangle of V(i, k) is Lbi and that of V(i′, k−1) is Lbi′, then if {(Lgi−Lbi)−(Lgi′−Lbi′)} is zero or very small then O(i, k) and O(i′, k−1) are more likely to be the same object; andc. There may exist utmost one O(i′, k−1) to match O(i, k).

In one embodiment, as a result of the object pairing, EEC250may determine the object-level motion vector, which indicates the spatial shift between the location of gravity center of O(i′, k−1) and the location of gravity center of O(i, k).

In block420, the EEC250may resize the pre-paired moving objects. In one embodiment, for each paired object in BRF(n) and BRF(n−1), the EEC250may resize the bounding rectangle in BRF(n) such that the bounding rectangle in BRF(n) may have a size same as that of the bounding rectangle in BRF(n−1). In other embodiment, for each paired object in BRF(n) and BRF(n−1), the EEC250may resize the bounding rectangle in BRF(n−1) such that the bounding rectangle in BRF(n−1) may have a size same as that of the bounding rectangle in BRF(n). In one embodiment, the EEC250may choose the size of the bounding rectangle to be less than ⅕thof the total image size. In one embodiment, the EEC250may perform interpolation on the Y-component of the pixels present in the resized moving objects. In one embodiment, the Y-component interpolation in BRF(n) may result in Y(i, k), which may cover O(i, k). In one embodiment, the Y-component interpolation in BRF(n−1) may result in Y(i′, k−1), which may cover O(i′, k−1).

In one embodiment, the resizing the pre-paired moving objects may improve accuracy of the motion vector estimate and reduce the motion error. In one embodiment, the resizing of the per-paired moving objects may be performed to maintain the size of the moving objects. In one embodiment, maintaining the size of the moving objects may improve the accuracy as it is easier to estimate the motion vector for a moving object if the size of the moving object does not change the size in the view as compared to estimating the motion vector for the moving object changing its size in the view. In one embodiment, the removal of background may allow per-paired resizing of the moving objects. In one embodiment, the resizing may be performed using linear interpolation of pixels.

For example, the bounding rectangle size for the frame BRF(n−1) may equal Q (=3×3 pixel matrix) and that of BRF(n) may equal Z (=2×2) pixel matrix. In one embodiment, the size Q may be made equal to Z. In one embodiment, Q may equal a 3×3 pixel matrix and may comprise elements {(1, 2, 3), (4, 5, 6), and (7, 8, 9)]. In one embodiment, the 3×3 pixel matrix may be resized into a 2×2 pixel matrix comprising elements {(3, 4), (6, 7)}. In one embodiment, the first element (=3) may be generated by summing the first four elements (1+2+4+5=12) of the top left 2×2 matrix comprising elements (1, 2, 4, 5) and dividing the sum by the number of elements (=4) in the top left matrix. The resulting resized 2×2 matrix may comprise elements {(3, 4), (6, 7)}.

In block430, the EEC250may determine a real motion vector (V) of the moving object. In one embodiment, EEC250may determine the real motion vector by computing the center of gravity of the bounding rectangles B(k) and B(k−1) and the difference between the center of gravity of B(k) and B(k−1) may represent the real motion vector. In one embodiment, the location of the gravity centers of V(i, k) and V(i′, k−1) may provide the motion vector of the moving objects. In one embodiment, in the previous frame, the bounding box B(k−1) for an object may be centered at coordinate (X,Y)=(7, 13) and the pixels inside B(k−1) may equal {(1, 2), (3, 4)}. In one embodiment, in the current frame, the bounding box B(k) for the same object may be centered at coordinate (X,Y)=(25, 49) and the pixels inside the B(k−1) may equal {(9, 7), (10, 8)}. In one embodiment, the coordinate of the gravity center of B(k−1) may equal (X,Y)=(7.1, 12.8) and the gravity center of B(k) may equal (X,Y)=(24.94, 48.97). In one embodiment, by the definition of gravity center may be computed for B(k−1) and B(k) as follows:
ForB(k−1),X-coordinate=(7−0.5)*(1+3)/(1+2+3+4)+(7+0.5)*(2+4)/(1+2+3+4)=7.1; andY-coordinate=(13−0.5)*(3+4)/(1+2+3+4)+(13+0.5)*(1+2)/(1+2+3+4)=12.8.
ForB(k),X-coordinate=(25−0.5)*(9+10)/(7+8+9+10)+(25+0.5)*(7+8)/(7+8+9+10)=24.94; andY-coordinate=(49−0.5)*(10+8)/(7+8+9+10)+(49+0.5)*(9+7)/(7+8+9+10)=48.

In one embodiment, the real motion vector derived from the gravity centers from B(k−1) to B(k) is then: (24.94−7.1, 48.97−12.8)=(17.84, 36.17).

In block450, the EEC250may estimate the motion error. In one embodiment, the EEC250may shift the moving object in B(k−1) by the real motion vector to generate an estimated moving object in B(k). In one embodiment, the EEC250may determine the motion error by computing the difference between the real and the estimated motion vector. In one embodiment, the EEC250may estimate the motion error by computing the difference between Y(i, k) and the motion estimate of Y(i, k) based on the motion vectors Y(i, k) and Y(i′, k−1). In one embodiment, the motion vector from B(k−1) to B(k) may be used to shift the moving object in B(k−1) by an amount V to become motion estimated B(k), called B′(k). In one embodiment, the estimated motion vector from B(k−1) to B(k) may be determined by shifting the moving object in B(k−1) by an amount V to get motion estimated B(k), called B′(k), the error ‘e’ may be computed using e=[B(k)−B′(k)].

In block470, the EEC250may determine if the motion error is greater than the allowable error threshold and control passes to block480if the motion error is greater than the allowable error threshold and to block490if the motion error is lesser than the allowable error threshold. In one embodiment, the EEC250may compare the error ‘e’ with an allowable error threshold and if the error ‘e’ is greater than the allowable error threshold value, then the refined motion estimate for the bounding box B(k) may be performed by dividing the bounding box B(k) into ‘X’ smaller rectangles, for example, Bsmall(k, m), m=1, 2, 3, 4.

In block480, the EEC250may perform motion refining and control passes to block450. In one embodiment, for each smaller rectangle Bsmall(k, m), a traditional motion search may be performed by moving Bsmall(k, m) around within B(k−1) to find the best match between Bsmall(k, m) and a rectangle of the same size in B(k−1). In one embodiment, such an approach may generate four motion vectors V(m), m=1, 2, 3, 4, for each of the smaller rectangles. In one embodiment, the motion error for each of the smaller rectangles may be determined as described above. If the error is small enough, the refining of the motion error for that particular small rectangle may be considered as completed. However, if the error is larger, the smaller rectangle may be further divided into the smaller rectangles into, for example, X smaller rectangles and the motion estimation may be performed again for the smaller rectangles. In one embodiment, the process may be continued until motion errors are all within the limit. Such as process may be referred to as “Motion refining”.

In block490, the EEC250may perform motion vector and motion error coding. In one embodiment, the EEC250may perform encoding using, for example, discrete cosine transform (DCT) on the motion errors of YUV, quantization of the DCT coefficients, compression of motion errors, and such other similar operations. In one embodiment, the event information such as the bounding rectangles of all the moving objects, object level motion vectors of the all the moving objects, object pairing and resizing factors, encoded and compressed values of motion errors may be sent over the network to the central computer system190.

Certain features of the invention have been described with reference to example embodiments. However, the description is not intended to be construed in a limiting sense. Various modifications of the example embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the invention pertains are deemed to lie within the spirit and scope of the invention.