Technologies are presented that allow efficient pixel-based image and/or video warping and scaling. An image processing system may include a memory and an accelerator unit communicatively coupled with the memory. The accelerator unit may, based on configuration settings, receive, from a memory, at least a portion of an input image as an array of neighboring four-cornered shapes; and process each shape by: determining locations of an array of output pixels delineated by four corner locations of the shape via linearization; interpolating a value of each pixel of the array of output pixels; and storing the interpolated pixel values in the memory. For warping, the array of neighboring four-cornered shapes may include an array of neighboring distorted tetragons that approximate distortion of the input image, and the interpolated pixel values may represent a warped output image. For scaling, the array of neighboring four-cornered shapes may include an array of neighboring rectangles.
|
18. A method of image processing, comprising:
receiving, from a memory and by an accelerator unit, only a portion of a region of an input image comprising a portion of a four-cornered shape of the input image, wherein the portion of the region comprises an entirety of the four-cornered shape in one direction and only a portion of the four-cornered shape in a perpendicular direction;
processing, by the accelerator unit and only after receiving the entire portion of the region of the input image into the hardware accelerator unit local memory buffer, the portion of the four-cornered shape by:
determining locations of output pixels corresponding to the portion of the four-cornered shape;
interpolating a value of each of the output pixels; and
storing the interpolated pixel values in the memory to generate a portion of an output image;
prefetching, during processing of the portion of the four-cornered shape, a second portion of the region of the input image comprising a second portion of the four-cornered shape; and
processing the second portion of the four-cornered shape to generate a second portion of the output image.
13. At least one non-transitory computer program product for image processing, including at least one computer readable medium having computer program logic stored therein, the computer program logic including:
logic to receive only a portion of a region an input image comprising a portion of a four-cornered shape of the input image, wherein the portion of the region comprises an entirety of the four-cornered shape in one direction and only a portion of the four-cornered shape in a perpendicular direction;
logic to process, only after receiving the entire portion of the region of the input image into the hardware accelerator unit local memory buffer, the portion of the four-cornered shape, including:
logic to determine locations of output pixels corresponding to the portion of the four-cornered shape;
logic to interpolate a value of each of the output pixels;
logic to store the interpolated pixel values to generate a portion of an output image;
logic to prefetch, during processing of the portion of the four-cornered shape, a second portion of the region of the input image comprising a second portion of the four-cornered shape; and
logic to process the second portion of the four-cornered shape to generate a second portion of the output image.
1. An image processing system, comprising:
a memory to store a region of an input image; and
a hardware accelerator unit communicatively coupled with the memory, wherein the hardware accelerator unit comprises a hardware accelerator unit local memory buffer and wherein the hardware accelerator unit is to, based on configuration settings:
receive, from the memory to the hardware accelerator unit local memory buffer, only a portion of the region of the input image comprising a portion of a four-cornered shape of the input image, wherein the portion of the region comprises an entirety of the four-cornered shape in one direction and only a portion of the four-cornered shape in a perpendicular direction;
process, only after receiving the entire portion of the region of the input image into the hardware accelerator unit local memory buffer, the portion of the four-cornered shape by:
determining locations of output pixels corresponding to the portion of the four-cornered shape;
interpolating a value of each of the output pixels; and
storing the interpolated pixel values in the memory to generate a portion of an output image;
prefetch, during processing of the portion of the four-cornered shape, a second portion of the region of the input image comprising a second portion of the four-cornered shape; and
process the second portion of the four-cornered shape to generate a second portion of the output image.
2. The image processing system of
3. The image processing system of
4. The image processing system of
scanning the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a horizontal direction.
5. The image processing system of
scanning the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a vertical direction.
6. The image processing system of
7. The image processing system of
8. The image processing system of
9. The image processing system of
10. The image processing system of
11. The image processing system of
one pixel per clock cycle (1×1);
two pixels horizontally and one pixel vertically per clock cycle (2×1);
one pixel horizontally and two pixels vertically per clock cycle (1×2); or
two pixels horizontally and two pixels vertically per clock cycle (2×2).
12. The image processing system of
at least one processor;
a communication interface communicatively coupled with the at least one processor and a network;
a user interface including a navigation device and display, the user interface communicatively coupled with the at least one processor; and
storage that stores application logic, the storage communicatively coupled with the at least one processor,
wherein the at least one processor is to load and execute the application logic, wherein the execution of the application logic includes presenting graphics via the user interface.
14. The at least one computer program product of
15. The at least one computer program product of
16. The at least one computer program product of
scan the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a horizontal direction.
17. The at least one computer program product of
scan the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a vertical direction.
19. The method of
20. The method of
21. The method of
scanning the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a horizontal direction.
22. The method of
scanning the portion of the region of the input image by processing pixels within the portion of the region of the input image sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels, wherein the portion of the region comprises the entirety of the four-cornered shape in a vertical direction.
|
The technologies described herein generally relate to image and/or video warping and resolution scaling in a computing system.
Image and video (e.g., frame) warping includes operations that may change the geometry of an image in order to provide, for example, correction of geometrical distortion, digital/image stabilization, correction of artifacts, etc. Image scaling includes operations that may change the resolution (e.g., width and height) of an image. Image and video warping operations may not be easily handled by a vector processor as warping is a pixel-based operation that may not easily be vectorized. Image scaling may also be difficult for current vector processors. No known solutions provide both pixel-based image/video warping and scaling in an efficient manner.
In the drawings, the leftmost digit(s) of a reference number may identify the drawing in which the reference number first appears.
Embodiments are now described with reference to the figures, where like reference numbers indicate identical or functionally similar elements. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the description. It will be apparent to a person skilled in the relevant art that this can also be employed in a variety of other systems and applications other than what is described herein.
In the embodiments presented herein, a customizable application-specific warping/scaling accelerator of an image processing system is described that provides pixel-based image warping and scaling acceleration with efficiency in performance, power, area, flexibility, and implementation.
The warping transformation may be applied to the input distorted tetragons one by one. A piece-wise linearization may be applied to each distorted tetragon, as illustrated in
In
Distorted tetragon 306 of
From the discussions of
The image warping and scaling accelerator may autonomously process entire rows and columns of an input image or video frame. The processing of an input image or video frame may be configurable. For example, one or more of the following configuration settings may be set:
In
According to embodiments, processing may begin when processing region 422 is copied to the local memory of the accelerator. During processing of processing region 422, starting with the configured source address, which may initially be at the top left corner 424 of the processing region, input pixels of processing region 422 (and then prefetch region 432) may be read and output pixels may be determined based on one or more set configuration settings (e.g., scanning type, interpolation, type, performance setting, etc.). The pixels may be read at specified increments until the end of a line, and then read at a new line at a specified line increment. In embodiments, the locations and values of the output pixels may be determined as described with reference to
As can be seen in
Another way to describe an interpolation procedure using “sliding down” mode may be as follows, according to an embodiment. This description refers to
While
According to embodiments, processing may begin when processing region 522 is copied to the local memory. During processing of processing region 522, starting with the configured source address, which may initially be at the top left corner 524 of the processing region, input pixels of processing region 522 (and then prefetch region 432) may be read and output pixels may be determined based on one or more set configuration settings (e.g., scanning type, interpolation, type, performance setting, etc.). The pixels may be read at specified increments until the end of a column, and then read at a new column at a specified increment. In embodiments, the output pixels may be determined as described with reference to
As can be seen in
The accelerator may also be used for resolution scaling operations.
In embodiments, such as those described above, both pixel locations and pixel values are interpolated. In an example embodiment, first a location of a pixel may be interpolated, then its value may be interpolated, then the location and value of a next pixel may be interpolated, and so on. In embodiments, the processing of pixels may depend on configured performance point settings as described earlier herein. A performance point setting may define how many pixels per clock cycle are produced. For example, if a 1×1 performance point is configured, the location and value of each pixel may be processed one pixel at a time, as described earlier in this paragraph. For 1×2 performance, the locations of two pixels vertically may be determined in parallel, and their values may be determined in parallel. For 2×1 performance, the locations of two pixels horizontally may be determined in parallel, and their values may be determined in parallel. For 2×2 performance, the locations of four pixels of a 2×2 block may be determined in parallel, and their values may be determined in parallel.
One or more features disclosed herein may be implemented in hardware, software, firmware, and combinations thereof, including discrete and integrated circuit logic, application specific integrated circuit (ASIC) logic, and microcontrollers, and may be implemented as part of a domain-specific integrated circuit package, or a combination of integrated circuit packages. The terms software and firmware, as used herein, refer to a computer program product including at least one computer readable medium having computer program logic, such as computer-executable instructions, stored therein to cause a computer system to perform one or more features and/or combinations of features disclosed herein. The computer readable medium may be transitory or non-transitory. An example of a transitory computer readable medium may be a digital signal transmitted over a radio frequency or over an electrical conductor, through a local or wide area network, or through a network such as the Internet. An example of a non-transitory computer readable medium may be a compact disk, a flash memory, SRAM, DRAM, a hard drive, a solid state drive, or other data storage device.
As stated above, in embodiments, some or all of the processing described herein may be implemented as hardware, software, and/or firmware. Such embodiments may be illustrated in the context of an example computing system 1080 as shown in
The technology described above may be a part of a larger information system.
In embodiments, system 1100 comprises a platform 1102 coupled with a display 1120. Platform 1102 may receive content from a content device such as content services device(s) 1130 or content delivery device(s) 1140 or other similar content sources. A navigation controller 1150 comprising one or more navigation features may be used to interact with, for example, platform 1102 and/or display 1120. Each of these components is described in more detail below.
In embodiments, platform 1102 may comprise any combination of a chipset 1105, processor 1110, memory 1112, storage 1114, graphics subsystem 1115, applications 1116 and/or radio 1118. Chipset 1105 may provide intercommunication among processor 1110, memory 1112, storage 1114, graphics subsystem 1115, applications 1116 and/or radio 1118. For example, chipset 1105 may include a storage adapter (not depicted) capable of providing intercommunication with storage 1114.
Processor 1110 may be implemented as Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors, x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU). In embodiments, processor 1110 may comprise dual-core processor(s), dual-core mobile processor(s), and so forth.
Memory 1112 may be implemented as a volatile memory device such as, but not limited to, a Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), or Static RAM (SRAM).
Storage 1114 may be implemented as a non-volatile storage device such as, but not limited to, a magnetic disk drive, optical disk drive, tape drive, an internal storage device, an attached storage device, flash memory, battery backed-up SDRAM (synchronous DRAM), and/or a network accessible storage device. In embodiments, storage 1114 may comprise technology to increase the storage performance enhanced protection for valuable digital media when multiple hard drives are included, for example.
Graphics subsystem 1115 may perform processing of images such as still or video for display. Graphics subsystem 1115 may be a graphics processing unit (GPU) or a visual processing unit (VPU), for example. An analog or digital interface may be used to communicatively couple graphics subsystem 1115 and display 1120. For example, the interface may be any of a High-Definition Multimedia Interface, DisplayPort, wireless HDMI, and/or wireless HD compliant techniques. Graphics subsystem 1115 could be integrated into processor 1110 or chipset 1105. Graphics subsystem 1115 could be a stand-alone card communicatively coupled with chipset 1105.
The graphics and/or video processing techniques described herein may be implemented in various hardware architectures. For example, graphics and/or video functionality may be integrated within a chipset. Alternatively, a discrete graphics and/or video processor may be used. As still another embodiment, the graphics and/or video functions may be implemented by a general purpose processor, including a multi-core processor. In a further embodiment, the functions may be implemented in a consumer electronics device.
Radio 1118 may include one or more radios capable of transmitting and receiving signals using various suitable wireless communications techniques. Such techniques may involve communications across one or more wireless networks. Exemplary wireless networks include (but are not limited to) wireless local area networks (WLANs), wireless personal area networks (WPANs), wireless metropolitan area networks (WMANs), cellular networks, and satellite networks. In communicating across such networks, radio 1118 may operate in accordance with one or more applicable standards in any version.
In embodiments, display 1120 may comprise any television type monitor or display. Display 1120 may comprise, for example, a computer display screen, touch screen display, video monitor, television-like device, and/or a television. Display 1120 may be digital and/or analog. In embodiments, display 1120 may be a holographic display. Also, display 1120 may be a transparent surface that may receive a visual projection. Such projections may convey various forms of information, images, and/or objects. For example, such projections may be a visual overlay for a mobile augmented reality (MAR) application. Under the control of one or more software applications 1116, platform 1102 may display user interface 1122 on display 1120.
In embodiments, content services device(s) 1130 may be hosted by any national, international and/or independent service and thus accessible to platform 1102 via the Internet, for example. Content services device(s) 1130 may be coupled with platform 1102 and/or to display 1120. Platform 1102 and/or content services device(s) 1130 may be coupled with a network 1160 to communicate (e.g., send and/or receive) media information to and from network 1160. Content delivery device(s) 1140 also may be coupled with platform 1102 and/or to display 1120.
In embodiments, content services device(s) 1130 may comprise a cable television box, personal computer, network, telephone, Internet enabled devices or appliance capable of delivering digital information and/or content, and any other similar device capable of unidirectionally or bidirectionally communicating content between content providers and platform 1102 and/display 1120, via network 1160 or directly. It will be appreciated that the content may be communicated unidirectionally and/or bidirectionally to and from any one of the components in system 1100 and a content provider via network 1160. Examples of content may include any media information including, for example, video, music, medical and gaming information, and so forth.
Content services device(s) 1130 receives content such as cable television programming including media information, digital information, and/or other content. Examples of content providers may include any cable or satellite television or radio or Internet content providers. The provided examples are not meant to limit embodiments of this disclosure.
In embodiments, platform 1102 may receive control signals from navigation controller 1150 having one or more navigation features. The navigation features of controller 1150 may be used to interact with user interface 1122, for example. In embodiments, navigation controller 1150 may be a pointing device that may be a computer hardware component (specifically human interface device) that allows a user to input spatial (e.g., continuous and multi-dimensional) data into a computer. Many systems such as graphical user interfaces (GUI), and televisions and monitors allow the user to control and provide data to the computer or television using physical gestures, facial expressions, or sounds.
Movements of the navigation features of controller 1150 may be echoed on a display (e.g., display 1120) by movements of a pointer, cursor, focus ring, or other visual indicators displayed on the display. For example, under the control of software applications 1116, the navigation features located on navigation controller 1150 may be mapped to virtual navigation features displayed on user interface 1122, for example. In embodiments, controller 1150 may not be a separate component but integrated into platform 1102 and/or display 1120. Embodiments, however, are not limited to the elements or in the context shown or described herein.
In embodiments, drivers (not shown) may comprise technology to enable users to instantly turn on and off platform 1102 like a television with the touch of a button after initial boot-up, when enabled, for example. Program logic may allow platform 1102 to stream content to media adaptors or other content services device(s) 1130 or content delivery device(s) 1140 when the platform is turned “off.” In addition, chipset 1105 may comprise hardware and/or software support for 5.1 surround sound audio and/or high definition 7.1 surround sound audio, for example. Drivers may include a graphics driver for integrated graphics platforms. In embodiments, the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card.
In various embodiments, any one or more of the components shown in system 1100 may be integrated. For example, platform 1102 and content services device(s) 1130 may be integrated, or platform 1102 and content delivery device(s) 1140 may be integrated, or platform 1102, content services device(s) 1130, and content delivery device(s) 1140 may be integrated, for example. In various embodiments, platform 1102 and display 1120 may be an integrated unit. Display 1120 and content service device(s) 1130 may be integrated, or display 1120 and content delivery device(s) 1140 may be integrated, for example. These examples are not meant to limit the embodiments discussed in this disclosure.
In various embodiments, system 1100 may be implemented as a wireless system, a wired system, or a combination of both. When implemented as a wireless system, system 1100 may include components and interfaces suitable for communicating over a wireless shared media, such as one or more antennas, transmitters, receivers, transceivers, amplifiers, filters, control logic, and so forth. An example of wireless shared media may include portions of a wireless spectrum, such as the RF spectrum and so forth. When implemented as a wired system, system 1100 may include components and interfaces suitable for communicating over wired communications media, such as input/output (I/O) adapters, physical connectors to connect the I/O adapter with a corresponding wired communications medium, a network interface card (NIC), disc controller, video controller, audio controller, and so forth. Examples of wired communications media may include a wire, cable, metal leads, printed circuit board (PCB), backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optics, and so forth.
Platform 1102 may establish one or more logical or physical channels to communicate information. The information may include media information and control information. Media information may refer to any data representing content meant for a user. Examples of content may include, for example, data from a voice conversation, videoconference, streaming video, electronic mail (“email”) message, voice mail message, alphanumeric symbols, graphics, image, video, text and so forth. Data from a voice conversation may be, for example, speech information, silence periods, background noise, comfort noise, tones and so forth. Control information may refer to any data representing commands, instructions or control words meant for an automated system. For example, control information may be used to route media information through a system, or instruct a node to process the media information in a predetermined manner. The embodiments, however, are not limited to the elements or in the context shown or described in
As described above, system 1100 may be embodied in varying physical styles or form factors.
As described above, examples of a mobile computing device may include a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, and so forth.
Examples of a mobile computing device also may include computers that are arranged to be worn by a person, such as a wrist computer, finger computer, ring computer, eyeglass computer, belt-clip computer, arm-band computer, shoe computers, clothing computers, and other wearable computers. In embodiments, for example, a mobile computing device may be implemented as a smart phone capable of executing computer applications, as well as voice communications and/or data communications. Although some embodiments may be described with a mobile computing device implemented as a smart phone by way of example, it may be appreciated that other embodiments may be implemented using other wireless mobile computing devices as well. The embodiments are not limited in this context.
As shown in
Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
Technologies disclosed herein may provide pixel-based image warping and scaling acceleration with efficiency in performance, power, area, flexibility, and implementation. The programmability of the described solutions may allow for the fine tuning of execution performance. For example, the configurability of interpolation mode may be advantageous depending on the desired performance and/or quality (e.g., using bi-linear interpolation may result in higher performance throughput while using bi-cubic interpolation may result in better quality). As another example, the performance may be configurable such that one to many output pixels can be produced per output clock, depending on the interpolation used. Micro-architecture and clock gating techniques may allow for low power consumption. In addition, a modular design may allow ease of changeability. Many other advantages may also be contemplated. The particular examples and scenarios used in this document are for ease of understanding and are not to be limiting. Features described herein may be used in many other contexts, as would be understood by one of ordinary skill in the art.
In addition to image warping and scaling, the customizable image processing block described herein may achieve geometric distortion and/or chromatic aberration correction, digital image and video stabilization, up to six axis movement compensation (e.g., translation, rotation, tilt, zoom in/out, etc.), digital zoom (in/out), image convolution with any separable programmable filter (e.g., 2×2, 3×3, 4×4, etc.). Look-up table (LUT) functionality may also be supported.
The following examples pertain to further embodiments.
Example 1 may include an image processing system, comprising: a memory; and an accelerator unit communicatively coupled with the memory, wherein the accelerator unit is to, based on configuration settings: receive, from the memory, at least a portion of an input image as an array of neighboring four-cornered shapes; and process each shape by: determining locations of an array of output pixels delineated by four corner locations of the shape via linearization; interpolating a value of each pixel of the array of output pixels; and storing the interpolated pixel values in the memory for corresponding determined locations.
Example 2 may include the subject matter of Example 1, wherein the array of neighboring four-cornered shapes includes an array of neighboring distorted tetragons that approximate distortion of the input image, wherein each distorted tetragon is defined by four coordinates wherein a location of at least one of the four coordinates corresponds with a location of a corner of the distorted tetragon, wherein the locations of the array of output pixels are determined based on the four coordinates, and wherein the interpolated pixel values represent a warped output image.
Example 3 may include the subject matter of Example 1, wherein the array of neighboring four-cornered shapes includes an array of neighboring rectangles, and wherein the interpolated pixel values represent a scaled output image based on fractional distances between output pixels.
Example 4 may include the subject matter of any of Examples 1-3, wherein the processing of each shape includes: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels.
Example 5 may include the subject matter of any of Examples 1-3, wherein the processing of each shape includes: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels.
Example 6 may include the subject matter of any of Examples 1-5, wherein the configuration settings include one or more of: a processing mode; a scanning type; an interpolation type; a performance setting; a bit precision setting; block dimension settings; fractional distances between output pixels for scaling; a source address of start of input region; an end address from which to wrap a scan; a wrap address to which to wrap the scan; an input stride setting for reading input pixels; a destination address of start of output region; or an output stride setting for storing output pixels.
Example 7 may include the subject matter of Example 6, wherein the processing mode includes one of a scaling mode or a re-shaping mode.
Example 8 may include the subject matter of Example 6 or Example 7, wherein the scanning type includes one of a slide down scan or a slide right scan.
Example 9 may include the subject matter of any of Examples 6-8, wherein the interpolation type includes one of nearest neighbor interpolation, bi-linear interpolation, bi-cubic interpolation; or a look-up table.
Example 10 may include the subject matter of any of Examples 6-9, wherein the interpolation type includes a poly-phase filter configurable in filter size and filter coefficients.
Example 11 may include the subject matter of any of Examples 6-10, wherein the performance setting relates to a number of output pixels per clock cycle and includes one of: one pixel per clock cycle (1×1); two pixels horizontally and one pixel vertically per clock cycle (2×1); one pixel horizontally and two pixels vertically per clock cycle (1×2); or two pixels horizontally and two pixels vertically per clock cycle (2×2).
In Example 12, any of Examples 1-11 may include: at least one processor; a communication interface communicatively coupled with the at least one processor and a network; a user interface including a navigation device and display, the user interface communicatively coupled with the at least one processor; and storage that stores application logic, the storage communicatively coupled with the at least one processor, wherein the at least one processor is to load and execute the application logic, wherein the execution of the application logic includes presenting graphics via the user interface.
Example 13 may include at least one computer program product for image processing, including at least one computer readable medium having computer program logic stored therein, the computer program logic including: logic to receive at least a portion of an input image as an array of neighboring four-cornered shapes; and logic to process each shape, including: logic to determine locations of an array of output pixels delineated by four corner locations of the shape via linearization; logic to interpolate a value of each pixel of the array of output pixels; and logic to store the interpolated pixel values for corresponding determined locations.
Example 14 may include the subject matter of Example 13, wherein the logic to receive the input image includes logic to receive a distorted input image as an array of neighboring distorted tetragons that approximate distortion of the input image, wherein each distorted tetragon is defined by four coordinates wherein a location of at least one of the four coordinates corresponds with a location of a corner of the distorted tetragon, wherein the locations of the array of output pixels are determined based on the four coordinates, and wherein the interpolated pixel values represent a warped output image.
Example 15 may include the subject matter of Example 13, wherein the logic to receive the input image includes logic to receive the input image as an array of neighboring rectangles, and wherein the interpolated pixel values represent a scaled output image based on fractional distances between output pixels.
Example 16 may include the subject matter of any of Examples 13-15, wherein the logic to process each shape includes logic to: determine at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scan the shape by processing pixels within the window of interest sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels.
Example 17 may include the subject matter of any of Examples 13-15, wherein the logic to process each shape includes logic to: determine at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scan the shape by processing pixels within the window of interest sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels.
Example 18 may include an apparatus for image processing, comprising: means for receiving at least a portion of an input image as an array of neighboring four-cornered shapes; and means for processing each shape, including: means for determining locations of an array of output pixels delineated by four corner locations of the shape via linearization; means for interpolating a value of each pixel of the array of output pixels; and means for storing the interpolated pixel values for corresponding determined locations.
Example 19 may include the subject matter of Example 18, wherein the means for receiving the input image includes means for receiving a distorted input image as an array of neighboring distorted tetragons that approximate distortion of the input image, wherein each distorted tetragon is defined by four coordinates wherein a location of at least one of the four coordinates corresponds with a location of a corner of the distorted tetragon, wherein the locations of the array of output pixels are determined based on the four coordinates, and wherein the interpolated pixel values represent a warped output image.
Example 20 may include the subject matter of Example 18, wherein the means for receiving the input image includes means for receiving the input image as an array of neighboring rectangles, and wherein the interpolated pixel values represent a scaled output image based on fractional distances between output pixels.
Example 21 may include the subject matter of any of Examples 18-20, wherein the means for processing each shape includes means for: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels.
Example 22 may include the subject matter of any of Examples 18-20, wherein the means for processing each shape includes means for: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels.
Example 23 may include a method of image processing, comprising: receiving, from a memory and by an accelerator unit, at least a portion of an input image as an array of neighboring four-cornered shapes; and processing, by the accelerator unit, each shape, by: determining locations of an array of output pixels delineated by four corner locations of the shape via linearization; interpolating a value of each pixel of the array of output pixels; and storing the interpolated pixel values in the memory for corresponding determined locations.
Example 24 may include the subject matter of Example 23, wherein the receiving the input image includes receiving a distorted input image as an array of neighboring distorted tetragons that approximate distortion of the input image, wherein each distorted tetragon is defined by four coordinates wherein a location of at least one of the four coordinates corresponds with a location of a corner of the distorted tetragon, wherein the locations of the array of output pixels are determined based on the four coordinates, and wherein the interpolated pixel values represent a warped output image.
Example 25 may include the subject matter of Example 23, wherein the receiving the input image includes receiving the input image as an array of neighboring rectangles, and wherein the interpolated pixel values represent a scaled output image based on fractional distances between output pixels.
Example 26 may include the subject matter of any of Examples 23-25, wherein the processing each shape includes: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by row, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first row below already-processed pixels.
Example 27 may include the subject matter of any of Examples 23-25, wherein the processing each shape includes: determining at least a portion of the shape to initially scan, wherein the at least a portion of the shape is defined by a window of interest; and scanning the shape by processing pixels within the window of interest sequentially by column, wherein when a first address is reached, scanning is continued at a second address representing a first pixel of a first column to the right of already-processed pixels.
Example 28 may include at least one machine readable medium comprising a plurality of instructions that in response to being executed on a computing device, cause the computing device to carry out a method according to any one of Examples 23-27.
Example 29 may include an apparatus configured to perform the method of any one of Examples 23-27.
Example 30 may include a computer system to perform the method of any one of Examples 23-27.
Example 31 may include a machine to perform the method of any one of Examples 23-27.
Example 32 may include an apparatus comprising means for performing the method of any one of Examples 23-27.
Example 33 may include a computing device comprising memory and a chipset configured to perform the method of any one of Examples 23-27.
Methods and systems are disclosed herein with the aid of functional building blocks illustrating the functions, features, and relationships thereof. At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed.
While various embodiments are disclosed herein, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons of ordinary skill in the relevant art that various changes in form and detail may be made therein without departing from the scope of the methods and systems disclosed herein. Thus, the breadth and scope of the claims should not be limited by any of the exemplary embodiments disclosed herein.
As used in this application and in the claims, a list of items joined by the term “one or more of” can mean any combination of the listed terms. For example, the phrases “one or more of A, B or C” and “one or more of A, B, and C” can mean A; B; C; A and B; A and C; B and C; or A, B and C.
Van Dalen, Edwin, Beric, Aleksandar, Redzic, Dmitar
Patent | Priority | Assignee | Title |
10506161, | Oct 26 2017 | Qualcomm Incorporated | Image signal processor data traffic management |
Patent | Priority | Assignee | Title |
4864629, | Dec 31 1985 | SCHLUMBERGER TECHNOLOGIES, INCORPORATED | Image correlation system |
6215516, | Jul 07 1997 | Reveo, Inc. | Method and apparatus for monoscopic to stereoscopic image conversion |
6249289, | Nov 27 1996 | Microsoft Technology Licensing, LLC | Multi-purpose high resolution distortion correction |
6947610, | Mar 02 2001 | Corel Corporation | Method of correcting an image with perspective distortion and producing an artificial image with perspective distortion |
7519224, | Apr 12 2004 | TAIWAN SEMICONDUCTOR MANUFACTURING CO , LTD | Method and apparatus for compensating data image reproduced from holographic system |
7545391, | Jul 30 2004 | SENSIO TECHNOLOGIES INC | Content adaptive resizer |
8290237, | Oct 31 2007 | UNITED SERVICES AUTOMOBILE ASSOCIATION USAA | Systems and methods to use a digital camera to remotely deposit a negotiable instrument |
20020004421, | |||
20050157947, | |||
20060188172, | |||
20060233253, | |||
20070122061, | |||
20080143745, | |||
20100166297, | |||
20120294528, | |||
20130243353, | |||
20150262344, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 27 2014 | Intel Corporation | (assignment on the face of the patent) | / | |||
Jul 17 2014 | VAN DALEN, EDWIN | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 033524 | /0740 | |
Jul 29 2014 | REDZIC, DMITAR | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 033524 | /0740 | |
Jul 29 2014 | BERIC, ALEKSANDAR | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 033524 | /0740 |
Date | Maintenance Fee Events |
Sep 28 2016 | ASPN: Payor Number Assigned. |
Feb 27 2020 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 06 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 13 2019 | 4 years fee payment window open |
Mar 13 2020 | 6 months grace period start (w surcharge) |
Sep 13 2020 | patent expiry (for year 4) |
Sep 13 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 13 2023 | 8 years fee payment window open |
Mar 13 2024 | 6 months grace period start (w surcharge) |
Sep 13 2024 | patent expiry (for year 8) |
Sep 13 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 13 2027 | 12 years fee payment window open |
Mar 13 2028 | 6 months grace period start (w surcharge) |
Sep 13 2028 | patent expiry (for year 12) |
Sep 13 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |