Apparatus and computer program products for object rendering method that renders object efficiently using a plurality of processor cores
AssigneeKYOCERA Document Solutions Inc.
InventorXuqiang Bai
Life of this patent
Estimating the term…
Abstract
A system, method, and apparatus provide an improvement to image rendering and the computing resources used to render processing intensive image objects. Exemplary embodiments receive an image object and depending on the type of image object, the image object size, or complexity, a determination is made as to whether the image object should be divided up and processed using multiple threads with a multi-core computer processor. When multiple threads are used, a different thread is assigned to each section of the divided-up image object. Each section may then be processed by its respective thread until converted and mapped into an output image space that yields a final rendered image.
Claims20
A method of image object rendering, by a computer processor with multiple cores, comprising:
- retrieving a number of cores in the computer processor;
- determining a number of threads N available to run processes in parallel in the number of cores;
- receiving an image object for rendering;
- determining whether the image object is a vector;
- calculating a size of the image object based on maximum object dimensions of the vector;
- determining whether the size of the image object exceeds a threshold criterion to justify assigning the number of threads to processing the image object;
- assigning a first available thread, from the determined number of threads N available, to a first section of the image object;
- assigning a second available thread, from the determined number of threads N available, to a second section of the image object;
- and
- rendering the first section of the image object using the first available thread, in parallel with, rendering the second section of the image object using the second available thread to render a final output object.
A computer program product for image object rendering, by a computer processor with multiple cores, the computer program product comprising a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code being configured, when executed by the processor with multiple cores, to:
- retrieve a number of cores in the computer processor;
- determine a number of threads N available to run processes in parallel in the number of cores;
- receive an image object for rendering;
- determine whether the image object is a vector;
- calculate a size of the image object based on maximum object dimensions of the vector;
- determine whether the size of the image object exceeds a threshold criterion to justify assigning the number of threads to processing the image object;
- assign a first available thread, from the determined number of threads N available, to a first section of the image object;
- assign a second available thread, from the determined number of threads N available, to a second section of the image object;
- and
- render the first section of the image object using the first available thread, in parallel with, rendering the second section of the image object using the second available thread to render a final output object.
An image rendering computing device, comprising:
- a memory module;
- and
- a multi-core processor in communication with the memory module, the multi-core processor configured, via a set of executable instructions stored in the memory module, to:
- retrieve a number of cores in the multi-core computer processor;
- determine a number of threads N available to run processes in parallel in the number of cores;
- receive an image object for rendering;
- determine whether the image object is a vector;
- calculate a size of the image object based on maximum object dimensions of the vector;
- determine whether the size of the image object exceeds a threshold criterion to justify assigning the number of threads to processing the image object;
- assign a first available thread, from the determined number of threads N available, to a first section of the image object;
- assign a second available thread, from the determined number of threads N available, to a second section of the image object;
- and
- render the first section of the image object using the first available thread, in parallel with, rendering the second section of the image object using the second available thread to render a final output object.
The image rendering computing device of 15, wherein the multi-core processor is further configured to:
- divide the image object into a number of sections less than or equal to the determined number of threads N available to run processes in parallel, wherein N is greater than 1 and the number of sections is at least 2;
- and
- assign each section of the image object to an available thread.
The image rendering computing device of 16, wherein the step of dividing the image object includes dividing the image object into sections along a horizontal direction or a vertical direction.
The image rendering computing device of 15, wherein the multi-core processor is further configured to:
- determine whether the image object has edge curvature large enough to justify assigning the number of threads to processing the image object prior to assigning the first available thread to the first section of the image object.
The image rendering computing device of 15, wherein the multi-core processor is further configured to:
- calculate an output area of the image object based on an output area of coordinates for the final output object prior to the step of rendering the first section of the image object using the first available thread, in parallel with, rendering the second section of the image object using the second available thread;
- and
- generate trapezoids with the first available thread and the second available thread, filling up an input space of the final output object.
The image rendering computing device of 19, wherein the multi-core processor is further configured to:
- determine a time cost associated with rendering the image object based on the size of the image object, a number of trapezoids needed to be generated, or the output area of the image object;
- and
- render the first section of the image object using the first available thread, in parallel with, rendering the second section of the image object using the second available thread when the time cost is above a threshold value of rendering the image object.
Dependencies are inferred from the claim text.