Rear collision alert system

An apparatus comprising a sensor and a processor. The sensor may be configured to capture video frames of an environment near a vehicle. The processor may be configured to (i) receive the video frames from the sensor, (ii) perform video analytics on the video frames and (iii) generate a control signal in response to the video analytics. The video analytics may analyze visual content in the video frames to identify an object approaching the vehicle. The video analytics may determine an expected path of the object approaching the vehicle. The control signal may be configured to generate a warning for the object approaching the vehicle if the expected path poses a collision hazard with the vehicle.

FIELD OF THE INVENTION

The invention relates to video capture generally and, more particularly, to a method and/or apparatus for implementing a rear collision alert system.

BACKGROUND

Slow-moving or stationary vehicles on a roadway are at risk of being struck from behind when traffic conditions are such that other vehicles traveling in the same direction are moving at faster speeds. Drivers approaching a slow-moving or stationary vehicle might not expect to need to brake quickly, might misjudge speed differences, or might not notice the vehicle ahead. One common scenario is a night-time, left hand turn from a busy thoroughfare to a residential street where no traffic light is present. The left hand turn may be delayed by oncoming traffic and the vehicle may be stationary while waiting to turn. The stationary vehicle can be at risk of being struck by fast moving vehicles approaching from behind.

Experienced drivers might attempt to alert other drivers approaching from behind that the vehicle the driver is piloting has stopped or has reduced speed with a visual indication using brake lights located at the tail of the vehicle in front. One common practice for vigilant drivers is to “pump” or rapidly release and depress the brake pedal to toggle the tail brake lights and therefore make them more conspicuous to alert the driver of the oncoming vehicle to take action. However, in the left hand turn scenario, the driver of the stationary vehicle in front might not be aware of vehicles approaching from behind. Often drivers making a left hand turn are focused on the oncoming traffic in order to safely complete the turn.

It would be desirable to implement a rear collision alert system.

SUMMARY

The invention concerns an apparatus comprising a sensor and a processor. The sensor may be configured to capture video frames of an environment near a vehicle. The processor may be configured to (i) receive the video frames from the sensor, (ii) perform video analytics on the video frames and (iii) generate a control signal in response to the video analytics. The video analytics may analyze visual content in the video frames to identify an object approaching the vehicle. The video analytics may determine an expected path of the object approaching the vehicle. The control signal may be configured to generate a warning for the object approaching the vehicle if the expected path poses a collision hazard with the vehicle.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Embodiments of the present invention include providing a rear collision alert system that may (i) prevent collisions, (ii) warn other drivers of a slow-moving and/or stationary vehicle, (iii) interface with components of a vehicle to generate a warning, (iv) alert a driver of an imminent collision, (v) implement video analytics to determine an expected path of oncoming vehicles and/or (vi) be implemented as one or more integrated circuits.

Referring toFIG. 1, a diagram illustrating an example embodiment of the invention is shown. An apparatus100is shown. The apparatus100may be implemented in (or on) a vehicle50. The vehicle50may be a slow-moving vehicle and/or a stationary vehicle. In the example shown, the vehicle50may be a tractor. The vehicle50is shown displaying the slow-moving vehicle sign52. In another example, the slow-moving may be traveling at a speed in accordance with posted speed limits and another vehicle may be speeding (e.g., the vehicle50is traveling at a normal speed, but is slow-moving with respect to another vehicle).

The vehicle50may implement various components. The apparatus100may be configured to interface and/or communicate with the various components of the vehicle50. The various components of the vehicle50may comprise a block (or circuit)54, an onboard safety component56, a block (or circuit)58, a blocks (or circuits)60a-60n, tail lights62a-62n, warning lights64a-64nand/or a seat66. A driver68of the vehicle50is shown in the seat66. The number and/or types of components of the vehicle50may be varied according to the design criteria of a particular implementation.

The circuit54may be an audio output device. In one example, the audio output device54may be a speaker located on an exterior of the vehicle50. In the example shown, the audio output device54may be directed towards a rear of the vehicle50. In another example, the audio output device54may be a horn of the vehicle50. The audio output device54may be configured to generate audio. The audio generated by the audio output device54may be implemented as a warning to other drivers and/or pedestrians. For example, the audio output device54may be configured to alert others of the presence of the vehicle50. The location, implementation, audio level and/or tone of the audio output device54may be varied according to the design criteria of a particular implementation.

The onboard safety component56is shown as a representative example for various onboard safety components implemented by the vehicle50. In one example, the onboard safety component56may be an airbag system. In another example, the onboard safety component56may be a seatbelt restraint system. In yet another example, the onboard safety component56may be a driver assistance module configured to autonomously perform evasive driving maneuvers. The implementation of the onboard safety component56may be varied according to the design criteria of a particular implementation.

The circuit58may be configured as a display device. In one example, the display device may be a LCD (or LED or OLED) screen. In another example, the display device may be a touchscreen display. The display device58may be the infotainment unit of the vehicle50. The display device58may be configured to display images and/or video to the driver68.

The circuits60a-60nmay be configured as cameras and/or camera lenses. The camera lenses60a-60nmay be directed to capture images of the environment near the vehicle50. In one example, the lens60amay be implemented as a rear-facing camera lens directed to capture a view to the rear of the vehicle50. In some embodiments, the lenses60a-60nmay be a component of the vehicle50(e.g., a back-up camera). In some embodiments, the lenses60a-60nmay be installed as an after-market part for the vehicle50(e.g., a dashboard camera). In some embodiments, the lenses60a-60nmay be implemented as one or more wide angle (or fisheye) lenses. In some embodiments, the lenses60a-60nmay be implemented as components of a multi-sensor camera. The number, type, direction and/or location of the lenses60a-60nmay be varied according to the design criteria of a particular implementation.

The tail lights62a-62nmay be configured to emit light from the rear of the vehicle50. The tail lights62a-62nmay be implemented as braking lights to warn drivers behind the vehicle50that the vehicle50has applied the brakes (e.g., is slowing down and/or stopping). The tail lights62a-62nmay be toggled on/off (e.g., pulsed) to implement turn signals. Generally, the tail lights62a-62nmay be implemented to provide a warning to drivers behind the vehicle50. For example, the tail lights62a-62nmay make the vehicle50more visible (e.g., at night, in heavy rain, when snow is falling and/or in foggy conditions).

The warning lights64a-64nare shown on the roof of the vehicle50. The warning lights64a-64nmay be implemented as colored and/or strobe lights. In some embodiments, the warning lights64a-64nmay be police lights and/or emergency vehicle (e.g., ambulance, fire truck, etc.) lights. Generally, the warning lights64a-64nmay be implemented to warn other drivers and/or pedestrians of the vehicle50.

The seat66may be an illustrative example of a component of the vehicle50configured to provide haptic feedback. For example, the seat66may be configured to vibrate to provide feedback to the driver68. Other components of the vehicle50may be configured to provide haptic feedback. In one example, the steering wheel may provide haptic feedback to the hands of the driver68.

The apparatus100may be configured to receive video frames from one or more of the lenses (or cameras)60a-60n. The lenses60a-60nmay be configured to capture the environment near the vehicle50. The apparatus100may configured to implement a rear collision alert system. To generate rear collision alerts, the environment near the vehicle50may be monitored by the apparatus100. In one example, the lenses60a-60nmay be rear facing camera(s) placed at the rear of the vehicle50to monitor the environment to the rear of the vehicle50.

In some embodiments, the apparatus100may be a component of a camera. In some embodiments, the apparatus100may be a component of the vehicle50. The apparatus100may be a processor and/or a system on chip (SoC). For example, the apparatus100may be implemented as a printed circuit board comprising one or more components. The apparatus100may be configured to encode video frames captured by sensors receiving light from the lenses60a-60n. In some embodiments, the apparatus100may be configured to perform video stitching operations to stitch video frames captured by each of the lenses60a-60nto capture a wide angle view and/or a multi-camera view. In some embodiments, the apparatus100may be configured to perform de-warping operations to correct distortion of the video frames caused by the lenses60a-60n. The apparatus100may format (or encode, or compress, or crop) the video signals to enable wireless transmission, output to the display device58and/or local storage of video data.

The apparatus100may be configured to identify other vehicles approaching the vehicle50from behind that pose a risk of colliding into the tail (e.g., rear) of the vehicle50in front. The camera(s) comprising the lenses60a-60nmay feed visual data to a connected and/or embedded processor (e.g., to be described in more detail in association withFIG. 3). The processor of the apparatus100may be configured to perform video analytics on the video frames. The video analytics may detect (or identify or recognize) objects in the video frames. In an example, the apparatus100may implement the video analytics to calculate the speed of the incoming object and/or rate of decrease in speed (if any). The apparatus100may be configured to determine an expected path of the object and/or whether the object poses a collision hazard.

The apparatus100may be configured to generate a control signal. The control signal may be configured to generate a warning for the detected object. Generally, the warning may be implemented to alert a driver of an incoming vehicle about a potential collision with the vehicle50. The warning generated in response to the control signal may be implemented by one or more components of the vehicle50. In one example, the control signal may activate the brake tail light system (e.g., the lights62a-62n) to flash (or blink) as the warning. The blinking brake lights62a-62nmay warn the driver approaching the vehicle50of a potential collision.

The apparatus100may be augmented using various components of the vehicle50and/or other add-on components (e.g., after-market components). In one example, the components of the vehicle50may be the additional lights64a-64b(e.g., lights other than the brake lights62a-62n) that target the incoming driver to alert of an impending collision. The components of the vehicle50may comprise the audio output device54. For example, the audio output device54may be integrated as a rear directed speaker that may be activated as an alert. Generally, the components of the vehicle50may be used as the warning to motivate the incoming driver to engage a braking system and/or take some other corrective action.

The apparatus100may be configured to alert the driver68of the vehicle50under threat of a collision. In one example, the apparatus100may be configured to generate an alert using a visual cue. The visual cue may be output to the display58(e.g., to alert the driver68). In another example, the apparatus100may be configured to generate an alert using an auditory cue. The auditory cue may be output using the vehicle audio system (e.g., the radio, the infotainment system, etc.). In yet another example, the apparatus100may be configured to generate an alert using a haptic cue. The haptic cue may be a vibration of the car seat66.

The alert may be implemented to provide the driver68with a warning to take evasive action to avoid an impact. In one example, the driver may attempt an evasive maneuver using the vehicle50. In another example, the vehicle50may be too slow to perform an evasive maneuver and the evasive action taken by the driver68may be to escape the vehicle50. In yet another example, if the vehicle50is configured to drive autonomously, the alert by the apparatus100may be configured to initiate autonomous driving to avoid the collision.

The apparatus100may be configured to present the control signal to activate and/or initiate onboard safety devices56implemented by the vehicle50. In one example, the onboard safety devices56may comprise an airbag. In another example, the onboard safety devices56may comprise a seat belt restraint system. When the apparatus100determines that an impact may be imminent, the apparatus100may generate the control signal to activate and/or initiate one or more of the onboard safety devices56. For example, by initiating the onboard safety devices56, the safety features implemented may be enhanced and/or augmented (e.g., providing additional activation time).

Referring toFIG. 2, a diagram illustrating an example of a warning in a left hand turn scenario70is shown. In the left hand turn scenario70, the slow-moving vehicle50′ is shown as a transport truck. In the left hand turn scenario70, the vehicle50′ may be waiting to make a left hand turn72. The apparatus100may be implemented in the vehicle50′. The lens60aand the lens60nare shown on the vehicle50′. The tail lights62a-62bare shown emitting light indicating that the brakes are being held as the vehicle50′ waits to make a turn. Lines74a-74bmay represent a field of view of the lens60a. Lines74a′-74b′ may represent a field of view of the lens60n. For example, one or more of the lenses60a-60nmay be capturing the environment near the vehicle50′. The field of view74a-74band/or the field of view74a′-74b′ may be the environment captured by one or more of the lenses60a-60n.

The example left hand turn scenario70may comprise a lane80aand an oncoming lane80b. An intersecting road82may intersect with the lanes80a-80b. For example, the lanes80a-80bmay be the lanes of a higher traffic road, and the intersecting road82may be a lower traffic (e.g., residential) road. Vehicles84a-84nmay be driving in the lanes80a-80band/or the intersecting road82. Arrows86a-86nare shown to indicate a direction of travel for the respective vehicles84a-84n.

In the example left hand turn scenario70, the vehicle50′ may be stopped in the lane80a, waiting to make the left hand turn72onto the intersecting road82. The vehicles84b-84care shown in the oncoming lane80btraveling in the direction86b. For example, the vehicle50′ may be blocked from making the left hand turn72onto the intersecting road82by the vehicles84b-84c. The vehicle84amay be in the lane80a. The vehicle84ais shown traveling behind the vehicle50′ and in the direction86a(e.g., approaching the vehicle50′ from behind). For example, the vehicle84amay be a vehicle approaching the vehicle50′ from the rear. The approaching vehicle84amay need to stop, slow down and/or move around the vehicle50′ to avoid a collision with the vehicle50′.

In the example left hand turn scenario70, the approaching vehicle84amay be within the field of view74a-74bof one or more of the camera lenses60a-60n. The apparatus100may perform the video analytics to determine the expected path of the approaching vehicle84a. If the approaching vehicle84aposes a collision hazard, the apparatus100may generate a control signal. For example, the control signal may activate and/or blink the tail lights62a-62b. The blinking tail lights62a-62bmay be the warning for the vehicle84abehind the vehicle50′.

Similarly, the apparatus100may be configured to detect collision hazards to a side and/or front of the vehicle50′. In the example shown, the lens60nis shown capturing the environment (e.g., the field of view74a′-74b′) on the passenger side of the vehicle50′. The vehicle84nis shown on the intersecting road82traveling towards the intersection in the direction86n. In an example, the intersecting road82may have a stoplight at the intersection with the lanes80a-80b. If the driver of the vehicle84ndoes not stop at the intersection (e.g., during a red stoplight), the vehicle84nmay pose a side-collision (e.g., a T-bone collision) hazard with the vehicle50′ (e.g., the vehicle50′ may have a green stoplight). The vehicle84nmay be within the field of view74a′-74b′ of one or more of the camera lenses60a-60n. The apparatus100may perform the video analytics to determine the expected path of the vehicle84n. If the vehicle84nposes a collision hazard, the apparatus100may generate the control signal. For example, the control signal may activate the audio output device54to alert the driver of the vehicle84n. In another example, the control signal may display a warning to the driver68to stop entering the intersection to avoid the potential collision with the vehicle84n.

Referring toFIG. 3, a block diagram illustrating an example embodiment of the apparatus100for implementing a collision warning using video analytics is shown. The apparatus100generally comprises blocks (or circuits)110a-110n, a block (or circuit)112, a block (or circuit)114and/or a block (or circuit)116. The circuits110a-110nmay be implemented as capture devices. The circuit112may be implemented as a processor. In an example implementation, the circuit112may be implemented as a video processor. The processor112may comprise inputs120a-120n, an input122, an input126and/or other inputs. The processor112may comprise an output124and/or other outputs. The circuit114may be implemented as a memory. The circuit116may be implemented as an interface. The apparatus100may comprise other components (not shown). The apparatus100may be implemented as a system on chip.

The apparatus100may implement a camera system. In some embodiments, the camera system100may be implemented as a drop-in solution (e.g., installed as one component). In an example, the camera system100may be a device that may be installed as an after-market product for the vehicle50(e.g., a retro-fit for the vehicle50). In some embodiments, the apparatus100may be a component of a camera. The number and/or types of signals and/or components implemented by the camera system100may be varied according to the design criteria of a particular implementation.

In the embodiment shown, the apparatus100is shown connected to a block (or circuit)140and/or a block (or circuit)142. The circuit140may be a black box recorder. The circuit142may be a communication device. The black box recorder140may be configured to preserve a recent history of the components of the vehicle50through the recording of various parameters (e.g., collected several times per second). The black box recorder140may be configured to survive accidents and/or collisions. The black box recorder140may be implemented to preserve data for assisting in an investigation. The communication device142may be configured to enable communication with components outside of the vehicle50.

In the embodiment shown, the capture devices110a-110nmay be components of the apparatus100. In some embodiments, the capture devices110a-110nmay be separate devices (e.g., part of the vehicle50and/or part of a camera) configured to send data to the apparatus100. Similarly, in some embodiments, the interface116may be implemented as a component external to the apparatus100. For example, the interface116may be a component of the vehicle50. In some embodiments, the apparatus100may be configured to read data in a format generated by the capture devices110a-110n. In some embodiments, the processor112may be configured to generate a signal compatible with the interface116. Similarly, in the example shown, the black box recorder140and the communication device142are shown as components external to the apparatus100. However, in some embodiments, the black box recorder140and/or the communication device142may be implemented as components of the apparatus100.

The apparatus100may receive one or more signals (e.g., IMF_A-IMF_N). The apparatus100may present one or more signals (e.g., SEN_A-SEN_N). The apparatus may present a signal (e.g., EVENT_DATA). The capture devices110a-110nmay receive the signals IMF_A-IMF_N from the corresponding lenses60a-60n. The apparatus100may present one or more of the signals SEN_A-SEN_N to various components of the vehicle50(e.g., to generate the warning of the potential collision hazard). In some embodiments, the apparatus100may present the signal EVENT_DATA to the wireless communication device142(e.g., a radio-frequency (RF) transmitter, a Wi-Fi module, Bluetooth module and/or a device capable of other wireless communication protocols).

The lenses60a-60nmay capture signals (e.g., IM_A-IM_N). The signals IM_A-IM_N may be an image (e.g., an analog image) of the environment near (e.g., behind) the vehicle50(e.g., within the field of view74a-74b) presented by the lenses60a-60nto the capture devices110a-110nas the signals IMF_A-IMF_N. The lenses60a-60nmay be implemented as an optical lens. The lenses60a-60nmay provide a zooming feature and/or a focusing feature. The capture devices110a-110nand/or the lenses60a-60nmay be implemented, in one example, as a single lens assembly. In another example, the lenses60a-60nmay be a separate implementation from the capture devices110a-110n. The capture devices110a-110nare shown within the circuit100. In an example implementation, the capture devices110a-110nmay be implemented outside of the circuit100(e.g., along with the lenses60a-60nas part of a lens/capture device assembly separate from the apparatus100).

The capture devices110a-110nmay be configured to capture image data for video (e.g., the signals IMF_A-IMF_N from the lenses60a-60n). In some embodiments, the capture devices110a-110nmay be video capturing devices such as cameras. In some embodiments, the apparatus100may implement a single lens assembly (e.g., one lens60aand one capture device110a). The capture devices110a-110nmay capture data received through the lenses60a-60nto generate bitstreams (e.g., generate video frames). For example, the capture devices110a-110nmay receive focused light from the lenses60a-60n. The lenses60a-60nmay be directed, tilted, panned, zoomed and/or rotated to provide a targeted view from the vehicle50(e.g., to provide coverage for a view directed towards the rear of the vehicle). The capture devices110a-110nmay generate signals (e.g., FRAMES_A-FRAMES_N). The signals FRAMES_A-FRAMES_N may be video data (e.g., a sequence of video frames). The signals FRAMES_A-FRAMES_N may be presented to the inputs120a-120nof the processor112.

The capture devices110a-110nmay transform the received focused light signals IMF_A-IMF_N into digital data (e.g., bitstreams). In some embodiments, the capture devices110a-110nmay perform an analog to digital conversion. For example, the capture devices110a-110nmay perform a photoelectric conversion of the focused light received by the lenses60a-60n. The capture devices110a-110nmay transform the bitstreams into video data, video files and/or video frames. In some embodiments, the video data generated by the capture devices110a-110nmay be uncompressed and/or raw data generated in response to the focused light from the lenses60a-60n. In some embodiments, the video data may be digital video signals. The video signals may comprise video frames.

In some embodiments, the video data may be encoded at a high bitrate. For example, the signal may be generated using a lossless compression and/or with a low amount of lossiness. In some embodiments, the video data captured by the capture devices110a-110nmay be presented to the apparatus100. The apparatus100may encode the video data captured by the capture devices110a-110nto generate video data that may be output as a video signal (e.g., for the display device58) and/or may be in a format compatible with performing video analytics.

In some embodiments, the apparatus100may further comprise an audio capture device (e.g., a microphone). The audio capture device may capture audio of the environment. The apparatus100may be configured to synchronize the audio captured with the images captured by the capture devices110a-110n.

The processor112may receive the signals FRAMES_A-FRAMES_N from the capture devices110a-110nat the inputs120a-120nand/or a signal (e.g., DATA) from the memory114at the input122. The processor112may be connected through a bi-directional interface (or connection) to components of the vehicle50, the capture devices110a-110n, the memory114and/or the interface116. The processor112may store and/or retrieve data from the memory114. The memory114may be configured to store computer readable/executable instructions (or firmware). The instructions, when executed by the processor112may perform a number of steps.

The processor112may be configured to receive the signals FRAMES_A-FRAMES_N, the signal DATA, and/or other inputs. The signal FRAMES_A-FRAMES_N may comprise video data (e.g., one or more video frames) providing the field of view74a-74bcaptured by the lenses60a-60n. The processor112may be configured to generate an output video signal and/or other signals (not shown). The output video signal may be generated based on one or more decisions made and/or functions performed by the processor112. The decisions made and/or functions performed by the processor112may be determined based on data received by the processor112at the inputs120a-120n(e.g., the signals FRAMES_A-FRAMES_N), the input122, the input126and/or other inputs.

The inputs120a-120n, the input122, the output124, the input126and/or other inputs/outputs may implement an interface. The interface may be implemented to transfer data to/from the processor112, the capture devices110a-110n, the memory114, the interface116and/or other components of the apparatus100and/or the vehicle50. In one example, the interface of the processor112may be configured to receive (e.g., via the inputs120a-120n) the video streams FRAMES_A-FRAMES_N each from a respective one of the capture devices110a-110n. In yet another example, the interface of the processor112may be configured to output one or more upcoming video frames (e.g., the output video) to the display device58and/or to the memory114(e.g., as the signal DATA). The interface of the processor112may be configured to enable a transfer of data and/or translation of data from one format to another format to ensure that the data transferred is readable by the intended destination component. In an example, the interface of the processor112may comprise a data bus, traces, connectors, wires and/or pins. The implementation of the interface of the processor112may be varied according to the design criteria of a particular implementation.

The output video may be presented to the memory114as the signal DATA. The output video may be an encoded, cropped, stitched and/or enhanced version of one or more of the signals FRAMES_A-FRAMES_N. The output video may be a high resolution, digital, encoded, de-warped, stabilized, cropped, blended, stitched and/or rolling shutter effect corrected version of the signals FRAMES_A-FRAMES_N. In some embodiments, the apparatus100may be configured to balance an amount of time needed to generate the output video with the visual quality of the output video. The signal DATA may further comprise metadata associated with the output video signal (e.g., a location, a timestamp, a severity of the collision hazard, a speed of the vehicles in the video, an acceleration of the vehicles in the video, etc.). The type and/or amount of the metadata in the signal DATA may be varied according to the design criteria of a particular implementation.

The video data of the targeted view from the perspective of the rear of the vehicle50may be represented as the signals/bitstreams/data FRAMES_A-FRAMES_N (e.g., video signals). The capture devices110a-110nmay present the signals FRAMES_A-FRAMES_N to the inputs120a-120nof the processor112. The signals FRAMES_A-FRAMES_N may represent the video frames/video data. The signals FRAMES_A-FRAMES_N may be video streams captured by the capture devices110a-110n. In some embodiments, the capture devices110a-110nmay be implemented in a camera. In some embodiments, the capture devices110a-110nmay be configured to add to existing functionality to a camera.

Each of the capture devices110a-110nmay comprise a block (or circuit)130, a block (or circuit)132, and/or a block (or circuit)134. The circuit130may implement a camera sensor (e.g., a complementary metal-oxide-semiconductor (CMOS) sensor). The circuit132may implement a camera processor/logic. The circuit134may implement a memory buffer. As a representative example, the capture device110ais shown comprising the sensor130a, the logic block132aand the buffer134a. The camera sensors130a-130nmay receive light from the corresponding one of the lenses60a-60nand transform the light into digital data (e.g., the bitstreams).

In one example, the sensor130aof the capture device110amay receive light from the lens60a. The camera sensor130aof the capture device110amay perform a photoelectric conversion of the light from the lens60a. In some embodiments, the sensor130amay be an oversampled binary image sensor. The logic132amay transform the bitstream into a human-legible content (e.g., video data with visual content). The video analytics implemented by the processor112may be performed on the video data in a format that is human-legible (e.g., the visual content of the video data). For example, the logic132amay receive pure (e.g., raw) data from the camera sensor130aand generate video data based on the raw data (e.g., the bitstream). The memory buffer134amay store the raw data and/or the processed bitstream. For example, the frame memory and/or buffer134amay store (e.g., provide temporary storage and/or cache) one or more of the video frames (e.g., the video signal).

The processor112may be configured to execute computer readable code and/or process information. The processor112may be configured to receive input and/or present output to the memory114and/or the interface116. The processor112may be configured to present and/or receive other signals (not shown). The number and/or types of inputs and/or outputs of the processor112may be varied according to the design criteria of a particular implementation.

The processor112may receive the signals FRAMES_A-FRAMES_N and/or the signal DATA. The processor112may make a decision based on data received at the inputs120a-120n, the input122, the input126and/or other input. For example other inputs may comprise external signals generated in response to user input, external signals generated by the vehicle50and/or internally generated signals such as signals generated by the processor112in response to analysis of the signals FRAMES_A-FRAMES_N and/or objects detected in the signals FRAMES_A-FRAMES_N. The processor112may adjust the video data (e.g., crop, digitally move, physically move the camera sensor130, etc.) of the signals FRAMES_A-FRAMES_N.

The video analytics performed by the processor112may comprise analyzing, understanding and/or interpreting digital video to produce numerical and/or symbolic information about the digital video. The numerical and/or symbolic information may be used for interpreting visual information of the digital video. In an example, the intelligent video analytics may comprise computer vision.

In some embodiments, the processor112may be configured to extract data (e.g., the numerical and/or symbolic information) from the video frames. The extracted data may be used to determine the visual content of the video frames. Determining the visual content may comprise recognizing objects. In one example, the processor112may interpret the numerical and/or symbolic information to recognize that the visual data represents a vehicle. In some embodiments, the number of pixels and/or the colors of the pixels of the video data may be used to recognize portions of the video data as objects. The types of objects recognized by the processor112may be varied according to the design criteria of a particular implementation.

The processor112may generate a signal (e.g., CTRL) in response data received by the inputs120a-120n, the input122and/or the input126and/or the decisions made in response to the data received by the inputs120a-120n, the input122and/or the input126. The signal CTRL may be generated in response to the video analytics performed by the processor112.

The signal CTRL may be generated to provide a control signal for the interface116in response to the captured video frames (e.g., the signal FRAMES_A-FRAMES_N) and the video analytics performed by the processor112. For example, the video analytics may be performed by the processor112in real-time and/or near real-time (e.g., with minimal delay). For example, the output video may be a live (or nearly live) video stream.

The processor112may receive a signal (e.g., STATE) from the interface116at the input126. The signal STATE may comprise information corresponding to state data of the vehicle50. In an example, the state data of the vehicle50may comprise speed, tire pressure, whether the tail lights62a-62nare functional, brake fluid pressure, etc. The information in the signal STATE may be presented to the memory114with the signal DATA.

Generally, the video data presented to the memory114as the signal DATA may correspond to the data received at the inputs120a-120n, the input122, the input126and/or enhanced (e.g., stabilized, corrected, cropped, downscaled, packetized, compressed, etc.) by the processor112. For example, the signal DATA may comprise video data that may be stitched, corrected, stabilized, cropped and/or encoded version of the signals FRAMES_A-FRAMES_N. The processor112may further encode and/or compress the signals FRAMES_A-FRAMES_N to generate the signal DATA.

The lenses60a-60n(e.g., camera lenses) may be directed to provide a view from the perspective of the vehicle50. The lenses60a-60nmay be aimed to capture environmental data (e.g., light). The lens60a-60nmay be configured to capture and/or focus the light for the capture devices110a-110n. Generally, the camera sensor130is located behind each of the lenses60a-60n. Based on the captured light from the lenses60a-60n, the capture devices110a-110nmay generate a bitstream and/or video data.

Embodiments of the apparatus100may perform video stitching operations on the signals FRAMES_A-FRAMES_N. In one example, each of the video signals FRAMES_A-FRAMES_N may provide a portion of a panoramic view and the processor112may crop, blend, synchronize and/or align the signals FRAMES_A-FRAMES_N to generate the panoramic video signal. In some embodiments, the processor112may be configured to perform electronic image stabilization (EIS). The processor112may perform de-warping on the signals FRAMES_A-FRAMES_N. The processor112may perform intelligent video analytics on the de-warped video frames FRAMES_A-FRAMES_N. The processor112may encode the signals FRAMES_A-FRAMES_N to a particular format.

The encoded video may be stored locally and/or transmitted wirelessly to external storage (e.g., network attached storage, cloud storage, etc.). In an example, the encoded video may be stored locally by the memory114. In another example, the encoded video may be stored to a hard-drive of a networked computing device. In yet another example, the encoded video may be transmitted wirelessly without storage. The type of storage implemented may be varied according to the design criteria of a particular implementation.

The cropping, downscaling, blending, stabilization, packetization, encoding, compression and/or conversion performed by the processor112may be varied according to the design criteria of a particular implementation. For example, the signal DATA may comprise a processed version of the signals FRAMES_A-FRAMES_N configured to fit the target area to the shape and/or specifications of the display device58and/or associated metadata. For example, the display device58may be implemented for real-time video streaming of the video data of the signal DATA received from the apparatus100.

Generally, the signal DATA may comprise some view (or derivative of some view) captured by the capture devices110a-110n. In some embodiments, the signal DATA may comprise a portion of a panoramic video captured by the capture devices110a-110n. The signal DATA may be a video frame comprising the region of interest selected and/or cropped from a panoramic video frame by the processor112. The signal DATA may have a smaller size than the panoramic video frames FRAMES_A-FRAMES_N. In some embodiments, the signal DATA may provide a series of cropped and/or enhanced panoramic video frames that improves upon the view captured by the lenses60a-60n(e.g., provides night vision, provides High Dynamic Range (HDR) imaging, provides more viewing area, highlights detected objects, provides additional data such as a numerical distance to detected objects, provides visual indicators for expected paths, etc.). The video frames and/or the associated metadata stored in the memory114may be output by the apparatus100as the signal EVENT_DATA.

The memory114may store data. The memory114may be implemented as a cache, flash memory, DRAM memory, etc. The type and/or size of the memory114may be varied according to the design criteria of a particular implementation. The data stored in the memory114may correspond to a video file, status information (e.g., readings from the components of the vehicle50, pre-selected fields of view, user preferences, user inputs, etc.) and/or metadata information.

The interface116may send and/or receive data to/from the apparatus100. In some embodiments, the interface116may be implemented as a wireless communications module. In one example, the interface116may be a hard-wired data port (e.g., a USB port, a mini-USB port, a USB-C connector, HDMI port, an Ethernet port, a DisplayPort interface, a Lightning port, etc.). In another example, the interface116may be a wireless data interface (e.g., Wi-Fi, Bluetooth, ZigBee, cellular, etc.).

The interface116may be configured to receive the signal CTRL from the processor112. The interface116may present one or more of the signals SEN_A-SEN_N to one or more components of the vehicle50(e.g., the tail lights62s-62c, the display device58, the audio output device54, etc.). The interface116may convert the signal CTRL, generated by the processor112, to a format compatible with the various components of the vehicle50.

The interface116may be configured to receive one or more of the signals SEN_A-SEN_N. The signals SEN_A-SEN_N may be received from the various components of the vehicle50. The signals SEN_A-SEN_N may comprise state data of the vehicle50. The interface116may present the signal STATE to the processor112in response to the state data.

The processor112may generate the signal CTRL, in response to the video analytics performed by the processor112on the video frames (e.g., the signals FRAMES_A-FRAMES_N). The processor112may determine an appropriate response. In one example, if the video analytics do not detect a collision hazard, the appropriate response may be to do nothing (e.g., the processor112may not generate the signal CTRL). In another example, if the video analytics do detect a collision hazard, the appropriate response may be determined based on factors detected by the video analytics. For example, the expected path (e.g., speed and/or acceleration) of the approaching vehicle84amay be a factor.

The appropriate response determined by the processor112may be provided to the interface116in the signal CTRL. In one example, the appropriate response may be to activate the tail lights62a-62n. In another example, the appropriate response may be to sound an alert using the audio output device54. The interface116may be configured to convert the appropriate response from the signal CTRL to a format compatible with the various components of the vehicle50. In one example, the signal SEN_A may be presented to the tail lights62a-62nand the data in the signal SEN_A may be configured to blink the tail lights62a-62nat a particular intensity and/or frequency. In another example, the signal SEN_B may be presented to the audio output device54and the data in the signal SEN_B may be configured to activate a particular tone from the audio output device54. In yet another example, the signal SEN_C may be connected to the display device58, and the data in the signal SEN_C may be configured to display the warning on the display device58. The connections to various components by the signals SEN_A-SEN_N and/or the data carried by the signals SEN_A-SEN_N may be varied according to the design criteria of a particular implementation.

In some embodiments, the apparatus100may be implemented as part of a larger system that collects traffic and/or safety data. For example, many vehicles may be equipped with the apparatus100in order to generate a large data set. The apparatus100may be configured to communicate data wirelessly or otherwise. In one example, the apparatus100may be configured to communicate wirelessly. In another example, the apparatus100may provide output from the memory114(e.g., a wired connection). The wired output from the apparatus100may be communicated using the communication device142implemented by the vehicle50(e.g., Wi-Fi, satellite communication, Bluetooth, 3G, 4G/LTE, 5G, etc.).

The apparatus100may generate information about a detected event and/or the severity of the event (e.g., the signal EVENT_DATA). For example, the event may be a collision and/or a near miss. The information about the detected event (e.g., the signal EVENT_DATA) may comprise the video data generated by the processor112from the signals FRAMES_A-FRAMES_N. The information about the detected event (e.g., the signal EVENT_DATA) may comprise metadata such as a location, a time-of-day, detected weather conditions, speed of the vehicles, acceleration of the vehicles, etc. The information about the detected event (e.g., the signal EVENT_DATA) may comprise the state data from the vehicle50(e.g., information in the signal STATE).

The signal EVENT_DATA may be presented to the black box recorder140and/or the communication device142. In an example, the signal EVENT_DATA may be stored by the black box recorder140and may be recovered at the scene of an accident (e.g., for police investigation and/or insurance claims investigation). The data stored in the black box recorder140may be recovered in a scenario where the vehicle50and/or the communication device142is destroyed before transmission of the signal EVENT_DATA could occur. The information recorded by the black box recorder140and/or communicated by the communication device142may be used by police to determine fault and/or provide more detail about the event (e.g., collision) in an event post mortem. The signal EVENT_DATA may be communicated (e.g., uploaded) to a central database. Statistical analysis may be performed on the aggregated data from the events. The statistical analysis may be used to evaluate road safety. For example, the events may be used by civil and/or highway engineers to make safety improvements based on information in the signal EVENT_DATA.

Referring toFIG. 4, a diagram illustrating an example video frame150analyzed using video analytics is shown. The video frame150may be one of the video frames FRAMES_A-FRAMES_N. In an example, the video frame150may be an example of video data captured within the field of view74a-74bof one of the lenses60a-60n. In the example shown, the video frame150may be a view from the perspective of the rear of the vehicle50(e.g., capturing a view looking behind the vehicle50). The video frame150may be a representation of visual data captured by the sensor130aand/or analyzed by the processor112.

The video frame150may capture a section of the lane80aand/or a section of the lane80b. The video data captured in the video frame150may comprise the approaching vehicle84a. The video data captured in the video frame150may comprise the vehicle84b.

The processor112may be configured to perform video analytics on the visual data in the video frame150. The video analytics may be configured to detect the vehicle84aand/or the vehicle84bas objects. A box152ais shown around the vehicle84a. A box152bis shown around the vehicle84b. The box152amay represent the processor112identifying the vehicle84aas an object in the visual data of the video frame150. The box152bmay represent the processor112identifying the vehicle84bas an object in the visual data of the video frame150. In the example shown, objects152a-152bare shown. However, other objects (e.g., vehicles, pedestrians, animals, obstacles, obstructions, etc.) may be identified by the processor112(e.g., objects152a-152n). The method for identifying the vehicles84a-84bas objects in the visual data of the video frame150may be varied according to the design criteria of a particular implementation.

The video analytics performed by the processor112may be performed on more than one video frame. For example, the video frame150may be one video frame of a series (or sequence) of video frames analyzed by the processor112. The video analytics may be performed on video frames captured temporally before and/or after the video frame150. By performing the video analytics on many video frames (or portions of each of the many video frames), the processor112may determine an expected path of the detected objects152a-152n.

In the video frame150, an arrow154ais shown pointing to the object152a. Similarly, an arrow154bis shown pointing to the object152b. The arrow154amay represent a previous path of the object152a(e.g., determined using video analytics on video frames captured prior to the video frame150). The arrow154bmay represent a previous path of the object152b(determined using video analytics on video frames captured prior to the video frame150). The previous paths154a-154bmay be used by the processor112to determine a current speed, direction and/or acceleration of the objects152a-152b. The current speed, direction and/or acceleration of the objects152a-152bmay be used by the processor112to determine an expected path of the objects152a-152b.

In the video frame150, an arrow156ais shown pointing away from the object152a. Similarly, an arrow156bis shown pointing away from the object152b. The arrow156amay represent an expected path of the object152adetermined by the processor112based on the video analytics. The arrow156bmay represent an expected path of the object152bdetermined by the processor112based on the video analytics. The expected paths156a-156bmay be calculated by the processor112to determine a potential future speed, direction and/or acceleration of the objects152a-152b. The potential future speed, direction and/or acceleration of the objects152a-152bmay be used by the processor112to determine whether one or more of the objects152a-152bmay pose a collision hazard with the vehicle50.

In some embodiments, the video frame150may be used as a proxy to represent the location of the vehicle50with respect to the objects152a-152b. Generally, the lenses60a-60nmay be attached to the vehicle50and if an object is determined to pose a collision hazard with one or more of the lenses60a-60n, the object may collide with the vehicle50. For example, if an object is approaching the video frame (e.g., getting larger in the video frame as time passes), the object may pose a collision hazard with the vehicle50.

The expected path156bis shown directed away from the perspective of the video frame150. For example, the vehicle84bmay be in the oncoming lane80btraveling away from the vehicle50. In subsequent video frames, the object152bmay become smaller as the object152btravels away from the capture location of the video frame150. In the example shown, the expected path156bmay not pose a collision hazard with the vehicle50. In an example with no collision hazard, the processor112may not generate the control signal to generate the warning.

The expected path156ais shown directed towards the perspective of the video frame150. For example, the vehicle84amay be in the same lane80aas the vehicle50and/or traveling approaching the vehicle50. In subsequent video frames, the object152amay become larger as the object152atravels closer to the capture location of the video frame150. In the example shown, the expected path156amay pose a collision hazard with the vehicle50. In an example with a potential collision hazard, the processor112may generate the control signal to generate the warning.

In some embodiments, the processor112may be configured to provide directional data from the expected path156a-156b. For example, the control signal CTRL may be generated in response to the directional data determined using the video analytics. The directional data may be used to generate an appropriate warning. In an example, the warning lights64a-64nmay be directed towards the incoming vehicle (e.g., the vehicle84aand/or the vehicle84n) that poses the collision hazard. In another example, directional audio may be implemented using the audio output device54. Using the directional data determined by the video analytics, the processor112may present the signal CTRL to enable the audio output device54to provide directional audio as the warning. The directional audio may be implemented to prevent and/or reduce the risk of distracting other drivers in the vicinity. For example, a general audio warning may cause vehicles that do not pose a collision hazard to take evasive actions (e.g., that could unintentionally cause a collision with vehicles and/or pedestrians). A directed warning may be used to reduce a likelihood that vehicles that do not pose a collision hazard may react to the warning.

Referring toFIG. 5, a method (or process)200is shown. The method200may generate a control signal in response to a detected object posing a collision hazard. The method200generally comprises a step (or state)202, a step (or state)204, a step (or state)206, a step (or state)208, a decision step (or state)210, a step (or state)212, a decision step (or state)214, a step (or state)216, a step (or state)218, and a step (or state)220.

The state202may start the method200. In the state204, the lenses60a-60nand/or the capture devices110a-110nmay capture the video frames FRAMES_A-FRAMES_N. The processor112may receive the signals FRAMES_A-FRAMES_N at the inputs120a-120n. Next, in the state206, the processor112may generate video data from the video frames. The video data may be used internally by the processor112. In some embodiments, the video data may be presented to the display58and/or to the memory114as part of the signal DATA. In the state208, the processor112may perform the video analytics on the video frames and/or the video data. Next, the method200may move to the decision state210.

In the decision state210, the processor112may determine whether an object (e.g., one or more of the objects152a-152n) has been detected in the video frame (e.g., the video frame150). If an object has not been detected, the method200may return to the state204. If an object has been detected, the method200may move to the state212. In the state212, the processor112may determine the expected path of the object. For example, the processor112may determine the expected path156afor the detected object152ain the video frame150based on the video data in the signals FRAMES_A-FRAMES_N, the previous path154aand/or a speed (or acceleration) of the vehicle84a. Next, the method200may move to the decision state214.

In the decision state214, the processor112may determine whether the detected object poses a collision hazard. For example, the processor112may determine that the object152ain the video frame150poses a collision hazard with the vehicle50based on the expected path156a. If the object does not pose a collision hazard, the method200may return to the state204. If the object does pose a collision hazard, the method200may move to the state216. In the state216, the processor112may determine the appropriate warning (e.g., the appropriate response). For example, the appropriate response may be to flicker the tail lights62a-62nof the vehicle50to warn the driver piloting the approaching vehicle84a. Next, in the state218, the processor112may generate the control signal CTRL. The signal CTRL may be presented to the interface116. Based on the signal CTRL, the interface116may generate one or more of the signals SEN_A-SEN_N to enable the appropriate warning. In an example, the signal SEN_I may be generated to flicker the tail lights62a-62n. Next, the method200may move to the state220. The state220may end the method200.

Referring toFIG. 6, a method (or process)250is shown. The method250may implement multiple warning types. The method250generally comprises a step (or state)252, a step (or state)254, a decision step (or state)256, a step (or state)258, a step (or state)260, a step (or state)262, a decision step (or state)264, a step (or state)266, and a step (or state)268.

The state252may start the method250. In the state254, the processor112may determine the expected path of the detected object. For example, the processor112may determine the expected path156afor the detected object152ain the video frame150based on the video data in the signals FRAMES_A-FRAMES_N, the previous path154aand/or a speed (or acceleration) of the vehicle84a. Next, the method250may move to the decision state256. In the decision state256, the processor112may determine whether the detected object poses a collision hazard. For example, the processor112may determine that the object152ain the video frame150poses a collision hazard with the vehicle50based on the expected path156a. If the object does not pose a collision hazard, the method250may move to the state268. If the object does pose a collision hazard, the method250may move to the state258.

In the state258, the processor112may determine the appropriate warning (e.g., the appropriate response). The appropriate response may be a first response (e.g., an initial warning). For example, the first response may be to flicker the tail lights62a-62nof the vehicle50to warn the driver piloting the approaching vehicle84a. Using a first response may be less intrusive and/or distracting to other drivers (e.g., to the vehicles84b-84n) while still providing enough of a warning to the vehicle84ato avoid the potential collision. Next, in the state260, the processor112may generate the control signal CTRL. The signal CTRL may be presented to the interface116. Based on the signal CTRL, the interface116may generate one or more of the signals SEN_A-SEN_N to enable the initial warning. In an example, the signal SEN_I may be generated to flicker the tail lights62a-62n. Next, the method250may move to the decision state262.

In the state262, the processor112may perform video analytics on the video data to update the expected path. For example, processor112may perform video analytics on frames after the video frame150to determine an update to the expected path156a(e.g., determine whether or not the detected object152ahas an altered path in response to the previous warning). Next, the method250may move to the decision state264. In the decision state264, the processor112may determine whether the object is still a collision hazard (e.g., based on the updated expected path). If the object is still a collision hazard, the method250may move to the state266. In the state266, the processor112may determine a next warning.

The next warning (or response) may be determined based on a response of the detected object to the previous warning and/or the urgency of the potential collision hazard. In an example, if the previous warning was flickering the tail lights62a-62n, the next warning may be playing loud audio using the audio output device54. In another example, if the urgency of the collision hazard is high (e.g., a collision is imminent), the next response may be to initiate an evasive action by the vehicle50. The next response (or warning) may be generated in response to the signals SEN_A-SEN_N. The signals SEN_A-SEN_N may be generated in response to the signal CTRL received by the interface116from the processor112.

In the decision state264, if the object is not still a collision hazard, the method250may move to the state268. For example, if the approaching vehicle84ahas altered the expected path156ain response to the previous warning, the detected object152amay no longer be a collision hazard. No additional warnings may be needed. The state268may end the method250.

Referring toFIG. 7, a method (or process)300is shown. The method300may activate safety measures in response to an imminent collision. The method300generally comprises a step (or state)302, a step (or state)304, a decision step (or state)306, a decision step (or state)308, a step (or state)310, a step (or state)312, a step (or state)314, and a step (or state)316.

The state302may start the method300. In the state304, the processor112may determine the expected path of the detected object. For example, the processor112may determine the expected path156afor the detected object152ain the video frame150based on the video data in the signals FRAMES_A-FRAMES_N, the previous path154aand/or a speed (or acceleration) of the vehicle84a. Next, the method300may move to the decision state306. In the decision state306, the processor112may determine whether the detected object poses a collision hazard. For example, the processor112may determine that the object152ain the video frame150poses a collision hazard with the vehicle50based on the expected path156a. If the object does not pose a collision hazard, the method300may move to the state316. If the object does pose a collision hazard, the method300may move to the decision state308.

In the decision state308, the processor112may determine whether a collision is imminent. For example, the processor112may perform the video analytics on the video frame150to determine the expected path156aof the vehicle84a. The expected path156amay indicate that a crash with the vehicle50is unavoidable. For example, the vehicle84amay be approaching the lens60aat a high rate and/or the detected object152amay appear large in the video frame150to indicate a collision. If the collision is not imminent, the method300may move to the state310. In the state310, the processor112may determine the appropriate warning. For example, for an expected path that does not indicate an imminent collision, the appropriate warning may be to flicker the tail lights62a-62n. Next, the method300may move to the state314. In the decision state308, if the collision is imminent, the method300may move to the state312. In the state312, the processor112may select the onboard safety device56to protect the driver68. For example, the onboard safety device56may be a seatbelt restraint system. Next, the method300may move to the state314.

In the state314, the processor112may generate the control signal CTRL. Next, the method300may move to the state316. The state316may end the method300.

Referring toFIG. 8, a method (or process)350is shown. The method350may collect and communicate safety data using video analytics. The method350generally comprises a step (or state)352, a step (or state)354, a step (or state)356, a step (or state)358, a step (or state)360, a step (or state)362, a decision step (or state)364, a step (or state)366, a decision step (or state)368, a step (or state)370, and a step (or state)372.

The state352may start the method350. In the state354, the processor112may generate video data from the video frames FRAMES_A-FRAMES_N. Next, in the state356, the processor112may store the video data in the memory114. For example, the video data may be transmitted as the signal DATA. In the state358, the processor112may perform video analytics on the video frames FRAMES_A-FRAMES_N and/or the video data. In some embodiments, the video analytics may be performed as the video frames FRAMES_A-FRAMES_N are received. In some embodiments, the video data may be retrieved from the memory114by the processor112. Next, in the state360, the processor112may collect the vehicle state information. For example, the processor112may receive the signal STATE from the interface116. The interface116may receive information from various components of the vehicle50from the signals SEN_A-SEN_N. In the state362, the processor112may store metadata associated with the video in the memory114. For example, the metadata may comprise location information, speed information, a timestamp, a vehicle identification number, a serial number for the camera, etc. The metadata may further comprise the vehicle state information. The metadata may be transmitted to the memory114as the signal DATA (e.g., along with the video data). Next, the method350may move to the decision state364.

In the decision state364, the processor112may determine whether the video analysis has detected an event. The event may be a collision, a near collision and/or a particular scenario (e.g., parking, unloading cargo, traveling particular intersections, etc.). If an event has not been detected, the method350may return to the state354. If an event has been detected, the method350may move to the state366. In the state366, the processor112and/or the memory114may flag the video and the metadata associated with the event for communication. Next, the method350may move to the decision state368.

In the decision state368, the apparatus100and/or the components of the vehicle50may determine whether to communicate the data. In some embodiments, the data may be communicated using the communication device142at particular times and/or time intervals. In some embodiments, the data may be communicated live (e.g., streamed as output as it is recorded). If the data is not to be communicated (e.g., the data is not flagged for communication), the method350may move to the state372. If the data is to be communicated (e.g., the data is flagged for communication), the method350may move to the state370. In the state370, the memory114may send the flagged data to the black box recorder140and/or the communication device142(e.g., as the signal EVENT_DATA). Next, in the state372, the memory114may delete the unflagged data (e.g., purge data to ensure the memory114has available storage for future events). Next, the method350may return to the state354.

The functions and structures illustrated in the diagrams ofFIGS. 1 to 8may be designed, modeled, emulated, and/or simulated using one or more of a conventional general purpose processor, digital computer, microprocessor, microcontroller, distributed computer resources and/or similar computational machines, programmed according to the teachings of the present specification, as will be apparent to those skilled in the relevant art(s). Appropriate software, firmware, coding, routines, instructions, opcodes, microcode, and/or program modules may readily be prepared by skilled programmers based on the teachings of the present disclosure, as will also be apparent to those skilled in the relevant art(s). The software is generally embodied in a medium or several media, for example non-transitory storage media, and may be executed by one or more of the processors sequentially or in parallel.

Embodiments of the present invention may also be implemented in one or more of ASICs (application specific integrated circuits), FPGAs (field programmable gate arrays), PLDs (programmable logic devices), CPLDs (complex programmable logic device), sea-of-gates, ASSPs (application specific standard products), and integrated circuits. The circuitry may be implemented based on one or more hardware description languages. Embodiments of the present invention may be utilized in connection with flash memory, nonvolatile memory, random access memory, read-only memory, magnetic disks, floppy disks, optical disks such as DVDs and DVD RAM, magneto-optical disks and/or distributed storage systems.