1. A system for performing bare machine computing, comprising:
a bare machine computing platform, comprising:
a processor,
one or more inputoutput devices, and
a storage medium,
wherein the bare machine computing platform does not include an operating system; and
a processor readable storage medium including one or more instructions for implementing an application object, wherein the application object contains data and one or more instructions for enabling an operating environment and executing an application within the operating environment.
2. The system of claim 1 wherein the processor readable storage medium comprises a portable memory device.
3. The system of claim 1 wherein the processor readable storage medium comprises one of the following:
a flash drive;
a compact disc (CD);
a digital video disc (DVD); and
a floppy disk.
4. The system of claim 1 wherein the processor readable storage medium is remote from the processor.
5. The system of claim 1 wherein the one or more inputoutput devices comprise a microphone and a speaker, and wherein the application object comprises a VoIP softphone application.
6. The system of claim 1 wherein the bare machine computing platform is configured to initiate execution of the application when the processor-readable storage medium is in operable communication with the processor.
7. The system of claim 1 wherein the processor-readable storage medium further includes a controller configured to execute the application when the processor-readable storage medium is in operable communication with the bare machine computing platform.
8. The system of claim 1 wherein the application object further includes one or more instructions for directly initializing and managing an interrupt descriptor table and a global descriptor table.
9. The system of claim 1 wherein the application object further includes one or more instructions for switching between a protected mode and a real mode, wherein the protected mode permits execution of the operation, wherein the real mode permits handling of an interrupt and direct access of a device driver for at least one inputoutput device.
10. The system of claim 9 wherein the application object further includes one or more instructions for accessing the device driver for the inputoutput device.
11. The system of claim 1 wherein the one or more inputoutput devices comprise a network interface card, and wherein the application object further includes one or more instructions for implementing one or more network protocols required by the network interface card.
12. The system of claim 11 wherein the one or more network protocols comprise one or more of Internet Protocol, Transmission Control Protocol, Hypertext Transfer Protocol, Simple Mail Transfer Protocol, User Datagram Protocol, and Real-time Transport Protocol.
13. A processor-readable storage medium including one or more instructions for implementing an application object, wherein the application object contains all software programs and data necessary to enable an operating environment and to execute an application within the operating environment.
14. The storage medium of claim 13 wherein the application object comprises data and one or more instructions for performing each of a boot operation, an application loading operation, and the application.
15. The storage medium of claim 14 wherein the application object further comprises data and one or more instructions for performing network interface operations.
16. The storage medium of claim 13 wherein the application comprises a VoIP softphone management application.
17. The storage medium of claim 13 wherein the processor-readable storage medium is configured to communicate with a processor, wherein the processor is configured to execute the application when in operable communication with the processor-readable storage medium.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method of estimating motion in a video on a device comprising:
a. performing phase correlation on the video to identify local motion candidates using a processor; and
b. merging regions of the video to generate motion segmentation using the processor, wherein merging the regions comprises:
i. assigning the local motion candidates according to results from the phase correlation;
ii. calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;
iii. initializing region merging; and
iv. merging the regions until there are no regions to be merged.
2. The method of claim 1 wherein performing the phase correlation further comprises:
a. computing a phase correlation surface; and
b. identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions.
3. The method of claim 1 wherein the set of Sum of Absolute Differences are stored in an array.
4. The method of claim 1 wherein initializing region merging further comprises:
a. generating a linked list of the regions with each sub-block assigned to a region of the regions;
b. maintaining a Sum of Absolute Differences array for each of the regions;
c. assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region’s Sum of Absolute Differences array, and
d. assigning an area of each region to be a value representing a single sub-block.
5. The method of claim 1 wherein merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region.
6. The method of claim 5 wherein determining if the region and the neighboring region are able to be merged further comprises:
a. computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region;
b. determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array; and
c. if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region.
7. The method of claim 6 wherein merging the region and the neighboring region comprises:
a. adding the neighboring region to the region;
b. assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed;
c. assigning a motion for the region according to a candidate; and
d. removing the neighboring region from a region list.
8. The method of claim 1 wherein in addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used.
9. The method of claim 1 further comprising using global motion candidates to assist in the motion estimation.
10. The method of claim 1 further comprising using spatial neighbor candidates to assist in the motion estimation.
11. The method of claim 1 further comprising using temporal neighbor candidates to assist in the motion estimation.
12. The method of claim 1 wherein the device is selected from the group consisting of a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellularmobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, an iPhone, an iPod\xae, a video player, a DVD writerplayer, a television and a home entertainment system.
13. A system for estimating motion in a video on a device comprising:
a. a phase correlation module for performing phase correlation on the video to identify local motion candidates using a processor; and
b. a region merging module for merging regions of the video to generate motion segmentation using the processor, wherein the region merging module is further for:
i. assigning the local motion candidates according to results from the phase correlation;
ii. calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;
iii. initializing region merging; and
iv. merging the regions until there are no regions to be merged.
14. The system of claim 13 wherein the phase correlation module is further for:
a. computing a phase correlation surface; and
b. identifying biggest peaks from the phase correlation surface, wherein indices of the peaks correspond to possible motions.
15. The system of claim 13 wherein the set of Sum of Absolute Differences are stored in an array.
16. The system of claim 13 wherein initializing region merging further comprises:
a. generating a linked list of the regions with each sub-block assigned to a region of the regions;
b. maintaining a Sum of Absolute Differences array for each of the regions;
c. assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region’s Sum of Absolute Differences array; and
d. assigning an area of each region to be a value representing a single sub-block.
17. The system of claim 13 wherein merging regions further comprises for each region in the regions and for each neighboring region, determining if the region and the neighboring region are able to be merged to form a single region.
18. The system of claim 17 wherein determining if the region and the neighboring region are able to be merged further comprises:
a. computing a combined Sum of Absolute Differences array by summing the Sum of Absolute Differences arrays of the region and the neighboring region;
b. determining a minimum Sum of Absolute Differences in the combined Sum of Absolute Differences array; and
c. if the minimum Sum of Absolute Differences is less than a first minimum of the Sum of Absolute Differences of the region, a second minimum of the Sum of Absolute Differences of the neighboring region, and a parameter combined, then merge the region and the neighboring region.
19. The system of claim 18 wherein merging the region and the neighboring region comprises:
a. adding the neighboring region to the region;
b. assigning the Sum of Absolute Differences array according to the summed Sum of Absolute Differences arrays previously computed;
c. assigning a motion for the region according to a candidate; and
d. removing the neighboring region from a region list.
20. The system of claim 13 wherein in addition to the Sum of Absolute Differences, a spatial smoothness term and a penalty value are used.
21. The system of claim 13 further comprising one or more modules for using global motion, spatial neighbor candidates andor temporal neighbor candidates to assist in the motion estimation.
22. A device for estimating motion in a video comprising:
a. a memory for storing an application, the application for:
i. performing phase correlation on the video to identify local motion candidates; and
ii. merging regions of the video to generate motion segmentation, wherein merging the regions comprises:
(1) assigning the local motion candidates according to results from the phase correlation;
(2) calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;
(3) initializing region merging comprising:
(a) generating a linked list of the regions with each sub-block assigned to a region of the regions;
(b) maintaining a Sum of Absolute Differences array for each of the regions;
(c) assigning a motion vector of each of the regions in the linked list according to a smallest Sum of Absolute Differences in the region’s Sum of Absolute Differences array; and
(d) assigning an area of each region to be a value representing a single sub-block; and
(4) merging the regions until there are no regions to be merged; and
b. a processing component coupled to the memory, the processing component configured for processing the application.
23. A camcorder device comprising:
a. a video acquisition component for acquiring a video;
b. an encoder for encoding the image, including motion estimation, by:
i. performing phase correlation on the video to identify local motion candidates; and
ii. merging regions of the video while performing the phase correlation to generate motion segmentation, wherein merging the regions further comprises:
A. assigning the local motion candidates according to results from the phase correlation;
B. calculating a set of Sum of Absolute Differences for each sub-block of blocks of the video, including chroma components;
C. initializing region merging; and
D. merging the regions until there are no regions to be merged; and
c. memory for storing the encoded video.