Removing noise generated from a non-audio component

An apparatus including at least one processor; and at least one non-transitory memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to generate a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and remove a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

BACKGROUND

1. Technical Field

The exemplary and non-limiting embodiments relate generally to noise removal and, more particularly, to removing noise generated from an internal non-audio component in an apparatus from a signal.

2. Brief Description of Prior Developments

Non-audio components in mobile devices increasingly have features that cause noise. For example, a mobile device may have a camera which produces noise if features such as AutoFocus (AF) and Optical Image Stabilization (OIS) are used. Because mobile devices are small in size, the noise is easily picked up by the air microphone(s) of the mobile device. This may cause problems to video sound tracks for example.

Removing camera noise from audio tracks is a significant problem. Camera companies go as far as introducing new lens generations (e.g. CANON with STM lenses) for more silent operation, but with AF motors which are not as good as previous AF motors.

Removing camera noise from audio tracks can, to some extent, be done by measuring the noise signal caused by the camera to the air microphones and then subtracting the measured signal from the microphone signal when the camera is operational. Within the scope of mobile devices, current noise removal systems typically have a single constant model of the noise, and they apply noise removal when the system “guesses” camera noise to be present. However, variability of the noise over time, component wear, different calibration between microphones, devices and camera components, and changes in the noise when the device is held differently cause the noise to be difficult to estimate without real-time measurements. Thus, a static single constant model for noise reduction of noise generated from an internal non-audio component can be improved upon.

SUMMARY

In accordance with one aspect, an example apparatus comprises at least one processor; and at least one non-transitory memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to generate a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and remove a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

In accordance with another aspect, an example method comprises generating a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and remove a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

In accordance with another aspect, a non-transitory program storage device readable by a machine is provided, tangibly embodying a program of instructions executable by the machine for performing operations, the operations comprising generate a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and remove a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

DETAILED DESCRIPTION OF EMBODIMENTS

Referring toFIG. 1, there is shown a front view of an apparatus10incorporating features of an example embodiment. Although the features will be described with reference to the example embodiments shown in the drawings, it should be understood that features can be embodied in many alternate forms of embodiments. In addition, any suitable size, shape or type of elements or materials could be used.

The apparatus10may be a hand-held portable apparatus, such as a communications device which includes a telephone application for example. In the example shown the apparatus10is a smartphone which includes a camera and a camera application. The apparatus10may additionally or alternatively comprise an Internet browser application, a video recorder application, a music player and recorder application, an email application, a navigation application, a gaming application, and/or any other suitable electronic device application. In an alternate example embodiment the apparatus might not be a smartphone. For example, the apparatus might be a SLR type of camera or video recorder for example.

Referring also toFIGS. 2-3, the apparatus10, in this example embodiment, comprises a housing12, a touchscreen14, a receiver16, a transmitter18, a controller20, a rechargeable battery26and a camera30. However, all of these features are not necessary to implement the features described below. The receiver and the transmitter may be provided in the form of a transceiver for example. The controller20may include at least one processor22, at least one memory24, and software28. The electronic circuitry inside the housing12may comprise at least one printed wiring board (PWB) having components such as the controller20thereon. The receiver16and transmitter18form a primary communications system to allow the apparatus10to communicate with a wireless telephone system, such as a mobile telephone base station for example.

In this example, the apparatus10includes the camera30which is located at the rear side13of the apparatus, a front camera32, an LED34, and a flash system36. The LED34and the flash system36are also visible at the rear side of the apparatus, and are provided for the camera30. The cameras30,32, the LED and the flash system36are connected to the controller20such that the controller20may control their operation. In an alternate example embodiment the rear side may comprise more than one camera, and/or the front side could comprise more than one camera. The apparatus10includes a sound transducer provided as an air microphone38. In an alternate example the apparatus may comprise more than one air microphone.

As shown inFIG. 3, the apparatus10may comprise one or more contact microphones40. A contact microphone, otherwise known as a pickup or a piezo, is a form of microphone designed to sense audio vibrations through solid objects. Unlike normal air microphones, contact microphones are almost completely insensitive to air vibrations, and transduce substantially only structure-borne sound. One type of contact microphone is an accelerometer contact microphone.

In the example embodiment shown, the contact microphone40is an accelerometer used to measure the noise generated from an internal non-audio component of the apparatus10. Alternatively, or in addition to the internal non-audio component, the contact microphone40may be used to sense or monitor vibrations from one or more components of the apparatus which are at least partially internal and may be at least partially at an exterior surface. The vibration sensor may include multiple measurement devices including the contact microphone40. Although this example is being described with regard to sensing vibrations from a non-audio component, features may be used to sense a component such as a display panel speaker or tactile audio display, such as described in International Application Nos. PCT/IB2010/053783 and PCT/IB2010/056150 which are hereby incorporated by reference in its entireties. In the embodiment shown the accelerometer40is used to measure noise generated by the camera30. With help of a measured or modeled difference between the noise picked up by the microphone38and the accelerometer40, noise from the operation of the camera30may be removed from the signal from the microphone38.

As noted above, a non-audio component such as a camera in a mobile device may produce noise if features, such as AutoFocus (AF) and Optical Image Stabilization (OIS) for example, are used. Because mobile devices are small in size, such as a smartphone for example, the noise is easily picked up by the air microphone(s) of the mobile device. This may cause problems to video sound tracks for example.

With features as described herein, a filter may be tuned in a quiet environment, and then the filter may be used to convert the detected accelerometer signal into an approximation of the noise picked up by an air microphone. The approximation of the noise may then be subtracted from the air microphone signal. In this way calculation of correlations during capture is not needed. Because calculation of correlations during capture is not needed, this saves processing power. With features as described herein, a detected and sampled noise may be subtracted after filtering from the microphone signals. The filter may be tuned in a quiet environment, and then the filter may be used to convert the detected accelerometer signal into an approximation of the noise picked up by the acoustic air microphone38. In this way the apparatus and method does not need to calculate correlations during capture.

Typically, in mobile devices, the camera noise travels first as a structural sound along the device body and then jumps to the acoustic air microphone over air. The jump over the air is usually very short. Because the jump over the air is usually very short, the sound can be estimated.

The accelerometer40(or contact microphone) only picks up structural sounds. Therefore, the accelerometer40is not disturbed by sound sources around the device such as a regular acoustic air microphone would be. Also, no extra hardware is needed because mobile devices typically already have an accelerometer. In other words, the accelerometer used for one or more other functions of the mobile device may also be used for the noise removal, as described herein, without the need to add an additional accelerometer to the mobile device10.

The noise removal system may obtain an estimate of the difference between the camera noises picked up by the microphone38and the accelerometer40by operating the camera30when the mobile device10is in a silent location. An example of a measurement of noise from an operation of the camera30, as picked up by the microphone38in a silent environment, is shown inFIG. 4. An example of a measurement of vibrations picked up by the accelerometer40in the silent environment for the same operation of the camera30is shown inFIG. 5. As can be seen in comparingFIG. 5toFIG. 4, the noise picked up by the microphone38and the vibrations picked up by the accelerometer40are very close; particularly in the loudest and most disturbing 1 kHz region. Therefore, the signal from the accelerometer40may be used as a good estimate for the noise from the camera30picked up by the microphone38.

The signal m(t) picked up by the microphone38and the signal a(t) picked up by the accelerometer40may be divided into short time segments, typically for example 50 ms or 2048 samples: mk(t), ak(t)

where W is the segment length in samples (2048), w is an index of the samples inside a segment and Fsis the sampling rate; typically 48 kHz for example. Typically, the segments may overlap (by 50% for example) and are windowed. However, for the sake of simplicity, the formulas here are presented non-overlapping and non-windowed. The segments may be transformed into frequency domain, typically with fast Fourier transform (FFT). After transformation we get Mk(f) and Ak(f). The frequency domain signals may be divided into sub-bands, typically using ERBs (equivalent rectangular bands), thus we get Mk(b,i) and Ak(b,i) where b corresponds to the band index and i to the index of the frequency bins inside the band. Assuming we have K segments, the average level ratio between the microphone and accelerometer signals for each band is:

cb=∑k=1K⁢⁢∑i=1Ib⁢⁢Mk⁡(b,i)∑k=1K⁢⁢∑i=1Ib⁢⁢Ak⁡(b,i)
where Ibis the number of frequency bins in band b.

The delay between the camera noise picked up by the accelerometer and the microphone can be estimated in silent surroundings using the following:

τmax=arg⁢⁢maxτ⁢∑t⁢⁢m⁡(t)⁢a⁡(t-τ)
where ak(t−τ) is the kith segment of the accelerometer signal delayed by τ:

ak⁡(t-τ)=a⁡(kW+wFs-τ),w=1,…⁢,W
We further define that Ak,T(b,i) is the b:th band in frequency domain of FFT(ak(t−τ)).

With the above notations we get the final noise removed microphone signal in frequency domain for band b:
{circumflex over (M)}k(b,i)=Mk(b,i)−Ak,τ(b,i)cb

After camera noise has been removed from all frequency bands with the above formula, the noise free signal may be inverse transformed to time domain.

Referring also toFIGS. 6-8, examples of use of features as described herein are illustrated with respect to example operations of the camera30. In particular,FIG. 6is in regard to Optical Image Stabilization (OIS) operation by the camera30,FIG. 7is in regard to AutoFocus (AF) operation by the camera30, andFIG. 8is in regard to Zoom operation by the camera30. As can be seen inFIG. 6, the OIS operation uses an accelerometer42, a stabilization algorithm44and an optical image stabilizer46with a mechanical link48to the moving parts50of the camera30(such as the lens, part of the lens, sensor, entire camera, etc.). Noise from the camera30generated by the OIS operation may be picked up by the contact microphone40to produce an output signal41, and with use of a transfer function52, a subtraction53may be made to the signal54from the microphone38to produce the resultant noise cancelled microphone signal56.

As can be seen inFIG. 7, the AutoFocus (AF) operation uses a focus detection58, a focusing algorithm60and an Autofocus motor62with a mechanical link48to the moving parts50of the camera30(such as the lens, part of the lens, sensor, entire camera, etc.). Noise from the camera30generated by the AF operation may be picked up by the contact microphone40to produce an output signal41, and with use of a transfer function52, a subtraction53may be made to the signal54from the microphone38to produce the resultant noise cancelled microphone signal56.

As can be seen inFIG. 8, the Zoom operation uses a zoom input64, a zooming algorithm66and a zoom motor68with a mechanical link48to the moving parts50of the camera30(such as the lens, part of the lens, sensor, entire camera, etc.). Noise from the camera30generated by the zoom operation may be picked up by the contact microphone40to produce an output signal41, and with use of a transfer function52, a subtraction53may be made to the signal54from the microphone38to produce the resultant noise cancelled microphone signal56. Of course, the contact microphone40may pick up vibrations for all three operations (OIS, AF and Zoom) at a same time.

With features as described above, no extra hardware is needed versus a convention mobile device, the accelerometer is not disturbed by external sound sources, and a very good estimate of the camera noise picked up by the microphone38is provided. The accelerometer40may also provide a signal to remove “handling” noise in addition to noise generated from operation of non-audio internal component(s).

Referring also toFIG. 9, as an alternative to use of the contact microphone40, or perhaps in addition to use of the contact microphone40, the drive signal70that drives the noise source (i.e. a drive signal which at least partially drives the camera30) may be routed to the noise removal processing. In the noise removal processing the drive signal may be processed with a model of the transfer function52from the driving signal to the noise in the signal54from the microphone38. The processed signal55is subtracted from the microphone signal54to produce noise cancelled signal56. InFIG. 9the drive signal70is from the stabilization algorithm44of the OIS operation. InFIG. 10the drive signal70′ is from the focusing algorithm60of the AF operation. InFIG. 11the drive signal70″ is from the zooming algorithm66of the Zoom operation.

Thus,FIGS. 9-11illustrate that the input signal picked up by an accelerometer or a contact microphone may be replaced (or supplemented) by the driver signal of the noise source. If the input signal picked up by an accelerometer or a contact microphone is replaced by the driver signal of the noise source, this has a benefit that the presence of the noise source is known exactly, and that external noise sources (such as handling noise for example) do not disrupt the noise removal algorithm.

Referring also toFIGS. 12-13, examples of possible locations of the acoustic microphone, noise source and contact microphone are shown. In order to get as good an estimate of the camera noise as possible, the accelerometer may be placed to a location where the noise caused by the camera is as close to the camera noise picked up by the microphone as possible. This may be achieved by placing the accelerometer as close to the microphone as possible (seeFIG. 12) or to a place that is symmetrical with respect to the device and the microphone location (seeFIG. 13). A good location can be found by testing several locations. A good way to measure the “goodness” of a location is to measure the difference between the camera noise picked up by the microphone and the linearly modified noise picked up by the accelerometer, Mk(b,i) and Ak,T(b,i) as defined above respectively. The location that minimizes the difference is a good location.

In the example embodiment ofFIG. 12, the accelerometer (contact microphone)40is placed on the mobile device10at a location where the noise it picks up from the camera30is very close to the camera noise picked up by the acoustic microphone38. The location of the contact microphone40is relatively close to the acoustic microphone38. With this type of relative locationing of components, there will be better noise removal because there should be more accurate output from the contact microphone versus the noise received by the acoustic microphone. If there is more than one acoustic microphone38, the accelerometer may be placed close to the microphone that suffers the most from the camera noise. In the example embodiment ofFIG. 13, the location of the acoustic microphone38and the contact microphone40are symmetrically positioned relative to the noise source (the camera30). With this type of relative locationing of components, there will be better noise removal because there should be more accurate output from the contact microphone versus the noise received by the acoustic microphone. Thus, with features as described herein, the vibration detector40may be placed symmetrically to the microphone38.

With features as described with respect toFIGS. 12 and 13above, an improved estimate of the camera noise picked up by the microphone38may be provided. Also, with symmetrical placement the accelerometer positioning has some degree of freedom for design purposes.

If the device has more than one acoustic microphone38, the presence of camera noise may be detected by summing the microphone signals, together with the delays, that maximize the noise in the summed signal. The maximized noise may then be easier to identify for removal. Sometimes in noisy environments it is difficult to estimate when internal component noise, such as noise from the camera30, is present. This estimate may be improved if the device is provided with several acoustic air microphones rather than one acoustic air microphone.

In a quiet environment the delays between the camera noise reaching the different microphone signals may be found as described below. Let's assume that the device has three (3) microphones (this algorithm benefits devices with two or more microphones). Let the microphone signals be m1(t), m2(t), and m3(t). The delays causing maximum correlation between microphones 1 and 2, and, 1 and 3 are respectively:

We create a sum signal that maximizes the presence of camera noise:
m=m1(t)+m2(t−τ1,2)+m3(t−τ1,3)

Running the camera noise detection algorithms on the sum signal produces a more reliable estimate than running a noise detection algorithm on individual microphone signals. With this feature there is an improved estimate of the presence of camera noise.

FIG. 14illustrates another method which may be used as an alternative, or in addition, to the features described above. If there are several noise sources present, such as both OIS and AF or multiple cameras for example, the presence of each noise source may be signaled to the noise removal algorithm which may then use a different model for removing noise in the presence of all possible combinations of the noise sources. Since the noise may change over long periods of time, the noise removal algorithm may be configured to update the noise model for each combination when the combination is signaled being used and the device surroundings are otherwise quiet.FIG. 14relates merely to camera noise sources. However, features as described herein may be used with any other internal non-audio component noise source.

As noted inFIG. 14, the method may comprise determining if a noise source is active as indicated by blocks72A1-72AN. If the noise source is active, this may provide a Mark flag74A1-74AN. If the noise source is not active, this may provide a Unmark flag76A1-76A. The flags may then be used, as indicated by block78, with a camera noise removal profile for currently active noise sources, such as for a predetermined time period of 100 ms for example. In addition, in this example, the apparatus10may determine if the environment is quiet enough for a period of time, as indicated by block80, such as 100 ms for example, to allow updating to occur. If it is quiet enough for a sufficient long amount of time, then the apparatus may be configured to update the camera profile for the currently active noise sources as indicated by block82.

With features as described herein, the noise may have a fixed delay from the camera to each of the fixed contact microphone(s) and the apparatus and method may try to maximize the camera noise in the summed signal in order to improve its detection.

The camera noise (or noise from another internal noise source) may come from more than one source. Each of these noise sources may be picked up differently by the microphone(s) in the device. Also, the noise sources may interact when they are active at a same time. Examples of the noise sources may be camera AF, camera OIS, multiple cameras, etc. The camera system may pass information to the noise removal algorithm about which of the noise sources are active. The noise removal algorithm may have a different profile of the noise for each possible combination of the noise sources for each microphone. For example, in a device which has two cameras (camera 1 and camera 2), where both of the cameras have AF and OIS capabilities, and where there are two acoustic microphones, there may be thirty profiles stored in the memory24of the apparatus10for the following thirty conditions/situations of use:camera 1 AF for mic 1camera 1 AF for mic 2camera 1 OIS for mic 1camera 1 OIS for mic 2camera 2 AF for mic 1camera 2 AF for mic 2camera 2 OIS for mic 1camera 2 OIS for mic 2camera 1 AF+camera 1 OIS for mic 1camera 1 AF+camera 1 OIS for mic 2camera 2 AF+camera 2 OIS for mic 1camera 2 AF+camera 2 OIS for mic 2camera 1 AF+camera 2 AF for mic 1camera 1 AF+camera 2 AF for mic 2camera 1 OIS+camera 2 OIS for mic 1camera 1 OIS+camera 2 OIS for mic 2camera 1 AF+camera 2 OIS for mic 1camera 1 AF+camera 2 OIS for mic 2camera 2 AF+camera 1 OIS for mic 1camera 2 AF+camera 1 OIS for mic 2camera 1 AF+camera 1 OIS+camera 2 AF for mic 1camera 1 AF+camera 1 OIS+camera 2 AF for mic 2camera 1 AF+camera 1 OIS+camera 2 OIS for mic 1camera 1 AF+camera 1 OIS+camera 2 OIS for mic 2camera 1 AF+camera 2 AF+camera 2 OIS for mic 1camera 1 AF+camera 2 AF+camera 2 OIS for mic 2camera 1 OIS+camera 2 AF+camera 2 OIS for mic 1camera 1 OIS+camera 2 AF+camera 2 OIS for mic 2camera 1 AF+camera 1 OIS+camera 2 AF+camera 2 OIS for mic 1camera 1 AF+camera 1 OIS+camera 2 AF+camera 2 OIS for mic 2

The apparatus10may come with pre-installed profiles. The device may also update the profiles when the surrounding sounds are so quiet, that it can be safely assumed that most of the sound picked up by the microphones comes from the camera noises. It is also possible to reduce the number of profiles by assuming that when different noise sources are present together, the resulting noise is simply the sum of the individual noise sources. In that case only the noise profiles for individual noise sources are needed. For example:camera 1 AF for mic 1camera 1 AF for mic 2camera 1 OIS for mic 1camera 1 OIS for mic 2camera 2 AF for mic 1camera 2 AF for mic 2camera 2 OIS for mic 1camera 2 OIS for mic 2

In an example embodiment, these might be updated only when the environment is quiet and only the individual noise component is active and other noise components are not active. The sum of the component noises may be used as an estimate when several noise sources are present. This type of example embodiment allows for a continuously learning noise removal algorithm which may work well for a long time even after the movable camera components start to wear with age (changing their acoustic noise output).

Testing of features as described herein was done using a separate acceleration sensor and laboratory amplifier, which has previously been used for analyzing noises inside product mechanics. One would expect the improvement to be similar to audio interference cancellation methods implemented with multiple microphones. Even there, the interference reduction heavily depends on how well the reference sensor, in this case an accelerometer, captures the noise and avoids capturing the wanted signal. In order to be audible, the reduction may be about 6 dB or more. The best one might expect is probably around 20-30 dB, which is achievable by traditional multi-microphone noise cancelling systems. The accelerometer may be less sensitive to positioning than a microphone. The accelerometer is in physical contact with the vibrating body, whereas an acoustic microphone uses air between the body and the sensor. Since the same acceleration sensor has previously been used analyzing other noise sources inside product mechanics may undoubtedly reduce other noises as well, such as noises generated by power management circuitry, or logic clock circuitry, which often result in vibrations such as in capacitors for example.

In one example embodiment, an apparatus comprises at least one processor; and at least one non-transitory memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to generate a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and remove a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

The component may be a non-audio component such as a camera. The noise component may correspond to acoustic noise generated by the camera from at least one of Auto Focus (AF) and Optical Image Stabilization (OIS). The apparatus may further comprise at least one sensor comprising an accelerometer contact microphone configured to sense movement of the non-audio component which generates the acoustic noise. The apparatus may be configured to reduce the noise component based upon subtracting a signal of the accelerometer contact microphone from the signal of the at least one sound transducer. The accelerometer contact microphone may be suitably located on the apparatus relative to the component at least one of in very close proximity to one another; or substantially equal in distance relative to one another versus a distance between the sound transducer and the component. As used here, “located on” includes “in” or “inside”; partially or wholly. The apparatus may be configured to use a drive signal which drives the component to generate the noise component. The at least one sound transducer may comprise two or more sound transducers, where the apparatus is configured to sum signals from the sound transducers together with delays that maximize the acoustic noise generated by the component. The apparatus may be configured to select a noise removal algorithm model, for removing the acoustic noise generated by the non-acoustic component, based upon at least one signal which indicates use of one or more operations of the component.

Referring also toFIG. 15, an example method may comprise generating a signal from at least one sound transducer of an apparatus, as indicated by block84, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and removing a noise component from the signal, as indicated by block86, where the noise component at least partially corresponds to the acoustic noise generated by the component. The component may be a camera with the acoustic noise coming from at least one operation of the camera. The noise component may correspond to acoustic noise generated by the camera from at least one of Auto Focus (AF) and Optical Image Stabilization (OIS). The method may further comprise an accelerometer contact microphone sensing movement of the component to create the noise component to be removed from the signal. The method may comprise the apparatus reducing the noise component based upon subtracting a signal of the accelerometer contact microphone from the signal of the at least one sound transducer. The accelerometer contact microphone may be located on the apparatus relative to the component with the acoustic sound from the component reaching the at least one sound transducer at about a same time as the accelerometer contact microphone receives mechanical movement based upon movement of the component. The method may further comprise using a drive signal which drives the component to generate the noise component. The at least one sound transducer may comprise two or more sound transducers, where the method comprises summing signals from the sound transducers together with delays that maximize the acoustic noise generated by the component. The method may further comprise selecting a noise removal algorithm model, for removing the acoustic noise generated by the non-acoustic component, based upon at least one signal which indicates use of one or more operations of the component.

An example embodiment may comprise a non-transitory program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine for performing operations, the operations comprising generating a signal from at least one sound transducer of an apparatus, where the signal is generated based upon sound received at the at least one sound transducer, where the sound includes acoustic noise generated by a component of the apparatus; and removing a noise component from the signal, where the noise component at least partially corresponds to the acoustic noise generated by the component.

Any combination of one or more computer readable medium(s) may be utilized as the memory. The computer readable medium may be a computer readable signal medium or a non-transitory computer readable storage medium. A non-transitory computer readable storage medium does not include propagating signals and may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

The apparatus may comprise means for performing any of the methods described above, such as at least one processor and at least one memory comprising software. The means may comprise any suitable components in the apparatus10for accomplishing the means. The method may comprise means for performing any of the method steps described above.