AU2011265373A1 - Colour gradients from smooth-profiile and sharp-profile paths - Google Patents

Colour gradients from smooth-profiile and sharp-profile paths Download PDF

Info

Publication number
AU2011265373A1
AU2011265373A1 AU2011265373A AU2011265373A AU2011265373A1 AU 2011265373 A1 AU2011265373 A1 AU 2011265373A1 AU 2011265373 A AU2011265373 A AU 2011265373A AU 2011265373 A AU2011265373 A AU 2011265373A AU 2011265373 A1 AU2011265373 A1 AU 2011265373A1
Authority
AU
Australia
Prior art keywords
image
values
scanline
line
output image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
AU2011265373A
Inventor
Peter William Mitchell Ilbery
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU2011265373A priority Critical patent/AU2011265373A1/en
Publication of AU2011265373A1 publication Critical patent/AU2011265373A1/en
Abandoned legal-status Critical Current

Links

Abstract

COLOUR GRADIENTS FROM SMOOTH-PROFILE AND SHARP-PROFILE Disclosed is computer-implemented method of rendering an output image (150) which interpolates predefined constraining image values located at predetermined positions in the output image. At least one of the predefined constraining image values is smoothly interpolated. The method (a) generates an intermediate representation (130) of the output 10 image including a smooth field coefficient (p, , yi) for a smooth field associated with each of the predetermined positions; and (b) renders the output image from the intermediate representation, each output pixel value of the output image being a sum of at least a forward pixel value calculated by a forward pass scanline process (620) and a reverse pixel value calculated by a reverse pass scanline process (630). Each of the forward and reverse 15 pixel values of a current scanline are equal to a sum of a product of the smooth field coefficient and a value of the smooth field determined for each of a plurality of preceding output image positions, wherein the plurality of preceding output image positions are one of the predetermined positions preceding the current scanline. Also each of the forward and reverse pixel values of the current scanline is calculated using first values of the 20 current scanline and of preceding scanlines and using second values of preceding scanlines, where the total contribution of first values of a current scanline to forward or reverse pixel values of a succeeding scanline is constant, and where the total contribution of second values of a current scanline to forward or reverse pixel values of a succeeding scanline is proportional to the separation between the current scanline and the succeeding 25 scanline. P019385_specijodge ' 10 t Generate intermediate image representation (line segments and coefficients) Render intermediate target image representation at resolution target resolution Fig. 1 P019385_figslodge

Description

S&F Ref: P019385 AUSTRALIA PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3 of Applicant: chome, Ohta-ku, Tokyo, 146, Japan Actual Inventor(s): Peter William Mithchell Ilbery Address for Service: Spruson & Ferguson St Martins Tower Level 35 31 Market Street Sydney NSW 2000 (CCN 3710000177) Invention Title: Colour gradients from smooth-profile and sharp-profile paths The following statement is a full description of this invention, including the best method of performing it known to me/us: 5845c(5849229_1) - 1 COLOUR GRADIENTS FROM SMOOTH-PROFILE AND SHARP-PROFILE PATHS TECHNICAL FIELD The current invention relates generally to computer graphics and, in particular, to a system and method for rendering images with smoothly changing colour values between line paths where the colour values along the line paths are specified. 5 BACKGROUND In computer graphics, smooth colour variation in images is often specified by use of linear or radial colour gradients, which are also known as linear blends and radial blends. More complex colour variation in graphics images is sometimes specified using a gradient mesh, where colours are specified at vertices of the mesh. However, specifying 10 colour variation by working with a mesh can be awkward for graphic artists. A scheme for specifying complex and smooth colour variation in graphic images has also been proposed in which firstly, colour values are specified along paths (i.e. lines) and secondly, colour values are determined at positions between paths as a spatial averaging of colour values along nearby paths, where the spatial averaging is obtained by 15 solving Laplace's equation. Separate colour values may be specified on each side of a path. In this case, there is a visible edge or "tear" feature (the colour surface is "torn") along the path in the resulting image. When colour values are specified to be the same on both sides of a path, there is typically a visible feature along the path in the resulting image, which may be described as a "crease" feature. The crease occurs because Laplacian 20 interpolation has the characteristic that interpolated values, along a line normal to a path of constrained values, have a gradient which is typically discontinuous across the path. However, it is highly desirable to provide the ability to specify colours at image positions and have output image colours surrounding those image positions appear smoothly varying without visible discontinuities. In the scheme for specifying colour 25 variation by colour values along paths, additional image controls in the form of blur values along paths have been proposed to specify post-interpolation blurring. Blurring can smooth out "crease" features. However, blurring has a number of disadvantages. Firstly, the requirement to specify blur values can be onerous for graphic artists. Secondly, the results of blurring can 30 be undesirable. The undesirable results occur when a large blur value is specified on one path and there is a nearby path with no blur. The output image values in the vicinity of the path with blur are formed as an average of image values including image values of pixels P019385_speci.jodge -2 located on opposite sides of the nearby path with no blur. The output image values in the vicinity of the path with blur can therefore undesirably include a mix of colours specified on opposite sides of the nearby path with no blur. Thirdly blurring typically results in output values along paths that are different to the specified values, which is not ideal. 5 In an extension of the scheme of specifying colour variation by colour values along paths, it has been recently proposed to add the ability to specify colour values at either points or along selected paths and have output image values smoothly interpolate the specified colour values. The smooth interpolation is provided by thin plate spline (i.e. bi harmonic) interpolation. The extended scheme calculates image values by rasterizing the 10 colour constraints to a rectangular grid and then solving using, at least in part, iteration with a bi-harmonic kernel. However, convergence with a bi-harmonic kernel is very slow. Moreover, the initial rasterization of colour constraints to a rectangular grid, and therefore the resulting image appearance, can depend significantly on slight changes in the positioning of the 15 paths relative to the rectangular grid. The dependence can be seen in animations where each frame of the animation is specified by paths which are slightly re-positioned in the rectangular grid relative to paths in neighbouring frames. The repositioning of the specified paths can introduce flicker effects during the animation. SUMMARY 20 Disclosed is computer-implemented method of rendering an output image which interpolates predefined constraining image values located at predetermined positions in the output image. At least one of the predefined constraining image values is smoothly interpolated. The method generates an intermediate representation of the output image including a smooth field coefficient for a smooth field associated with each of the 25 predetermined positions; and renders the output image from the intermediate representation, each output pixel value of the output image being a sum of at least a forward pixel value calculated by a forward pass scanline process and a reverse pixel value calculated by a reverse pass scanline process. Each of the forward and reverse pixel values of a current scanline are equal to a sum of a product of the smooth field coefficient and a 30 value of the smooth field determined for each of a plurality of preceding output image positions, wherein the plurality of preceding output image positions are one of the predetermined positions preceding the current scanline. Also each of the forward and reverse pixel values of the current scanline is calculated using first values of the current scanline and of preceding scanlines and using second values of preceding scanlines, where P019385_speciodge -3 the total contribution of first values of a current scanline to forward or reverse pixel values of a succeeding scanline is constant, and where the total contribution of second values of a current scanline to forward or reverse pixel values of a succeeding scanline is proportional to the separation between the current scanline and the succeeding scanline. 5 Typically, the image is an entire image or a portion of a larger image. Desirably the calculation' of smooth field coefficients in the generation of the intermediate representation is performed to satisfy at least one image value constraint at one of the predetermined positions. Alternatively the calculation of smooth field coefficients in the generation of the 10 intermediate representation is performed to satisfy at least one Laplacian value constraint at one of the predetermined positions. In a further alternative the calculation of smooth field coefficients in the generation of the intermediate representation of the output image is performed to jointly satisfy at least one image value constraint at one of the predetermined positions and at least one 15 Laplacian value constraint at one of the predetermined positions. Preferably the smooth field is a line segment thin plate spline field. Alternatively the smooth field is a ID-periodic line segment thin plate spline field. Generally the calculation of first and second values of a current scanline is performed using ID look up tables. 20 Other aspects are also disclosed. BRIEF DESCRIPTION OF THE DRAWINGS At least one embodiment of the present invention will now be described with reference to the following drawings, in which: Fig. I is a schematic illustration of the operation of an image rendering method 25 according to the present disclosure; Fig. 2 is a depiction of an example image specification which may be processed by the image rendering method of Fig. 1; Fig. 3A and Fig. 3B are depictions of sharp-profile and smooth-profile line paths which are elements of an image specification associated with the image rendering method; 30 Fig. 4 is a schematic flow diagram illustrating the first processing stage of the image rendering method; Fig. 5 is a depiction of the conversion of a line path to a chain of straight line segments performed in the first processing stage of the image rendering method; P019385_speci-lodge -4 Fig. 6 is a schematic flow diagram illustrating the second processing stage of the image rendering method; Fig. 7 is a schematic flow diagram illustrating forward pass line-by-line calculation of image values performed in the second processing stage; 5 Fig. 8 is a close-up view of straight line segments which is used to illustrate the line-by-line calculation of image values; Fig. 9 is a depiction of the calculations performed for one line of image values in a forward or reverse pass in the second processing stage; and Figs. 10A and 10B form a schematic block diagram of a general purpose computer 10 system upon which arrangements described can be practised. DETAILED DESCRIPTION INCLUDING BEST MODE Fig. I depicts the operation of a piece-wise smooth image rendering method 100 according to the present disclosure. Input data for the system is a specification of a piece wise smooth image 110, which may be an entire image, or a portion of a larger image. The 15 image specification 110 comprises line paths and colour values along line paths, and is thus a vector format specification. The rendering method 100 comprises two processing stages 120, 140. The first processing stage 120 accepts the image specification 110 and generates by calculation an intermediate image representation 130 comprising line segments and coefficients for the 20 line segments, being also a vector format. The second processing stage 140 accepts the intermediate image representation 130 together with a parameter 145 specifying a target image resolution and calculates an output image 150 accordingly. The calculation of the second processing stage 140 is performed according to Equation (1), explained in further detail below, using the target resolution parameter 145 to 25 scale co-ordinates of line segment end-points used in Equation (1). Importantly, the intermediate image representation 130 is typically suited to rendering images over a range of target resolutions. When rendering an image at a coarse resolution, i.e. where there is a relatively small number of image pixels and little image detail, in order to provide good image quality, it is sufficient for the intermediate image representation to use longer line 30 segments. In contrast, when rendering an image at a fine resolution, i.e. where there is a relatively large number of image pixels and a lot of image detail, it is necessary for the intermediate image representation to use shorter line segments to achieve good output image quality. Where the target resolution is not known in advance and can lie within a large range of resolutions, a useful option is to generate a multiplicity of intermediate P019385_speci-lodge -5 image resolutions so as to include an intermediate image representation suitable for any target resolution in the expected range of target resolutions. Figs. 10A and 10B depict a general-purpose computer system 1000, upon which the various arrangements described can be practiced and computer-implemented. 5 As seen in Fig. 10A, the computer system 1000 includes: a computer module 1001; input devices such as a keyboard 1002, a mouse pointer device 1003, a scanner 1026, a camera 1027, and a microphone 1080; and output devices including a printer 1015, a display device 1014 and loudspeakers 1017. An external Modulator-Demodulator (Modem) transceiver device 1016 may be used by the computer module 1001 for 10 communicating to and from a communications network 1020 via a connection 1021. The communications network 1020 may be a wide-area network (WAN), such as the Internet, a cellular telecommunications network, or a private WAN. Where the connection 1021 is a telephone line, the modem 1016 may be a traditional "dial-up" modem. Alternatively, where the connection 1021 is a high capacity (e.g., cable) connection, the modem 1016 15 may be a broadband modem. A wireless modem may also be used for wireless connection to the communications network 1020. The computer module 1001 typically includes at least one processor unit 1005, and a memory unit 1006. For example, the memory unit 1006 may have semiconductor random access memory (RAM) and semiconductor read only memory (ROM). The computer 20 module 1001 also includes an number of input/output (1/0) interfaces including: an audio video interface 1007 that couples to the video display 1014, loudspeakers 1017 and microphone 1080; an 1/0 interface 1013 that couples to the keyboard 1002, mouse 1003, scanner 1026, camera 1027 and optionally a joystick or other human interface device (not illustrated); and an interface 1008 for the external modem 1016 and printer 1015. In some 25 implementations, the modem 1016 may be incorporated within the computer module 1001, for example within the interface 1008. The computer module 1001 also has a local network interface 1011, which permits coupling of the computer system 1000 via a connection 1023 to a local-area communications network 1022, known as a Local Area Network (LAN). As illustrated in Fig. 10A, the local communications network 1022 may 30 also couple to the wide network 1020 via a connection 1024, which would typically include a so-called "firewall" device or device of similar functionality. The local network interface 1011 may comprise an Ethernet circuit card, a BluetoothTm wireless arrangement or an IEEE 802.11 wireless arrangement; however, numerous other types of interfaces may be practiced for the interface 1011. P019385_speci-lodge -6 The I/O interfaces 1008 and 1013 may afford either or both of serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 1009 are provided and typically include a hard disk drive (HDD) 1010. Other 5 storage devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 1012 is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (e.g., CD-ROM, DVD, Blu-ray DiscTM), USB-RAM, portable, external hard drives, and floppy disks, for example, may be used as appropriate sources of data to the system 1000. 10 The components 1005 to 1013 of the computer module 1001 typically communicate via an interconnected bus 1004 and in a manner that results in a conventional mode of operation of the computer system 1000 known to those in the relevant art. For example, the processor 1005 is coupled to the system bus 1004 using a connection 1018. Likewise, the memory 1006 and optical disk drive 1012 are coupled to the system 15 bus 1004 by connections 1019. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun SparcstationsTM Apple MacTM or a like computer systems. The computer-implemented method of image rendering may be performed using the computer system 1000 wherein the processes of Figs. 2 to 9, to be described, may be 20 implemented as one or more software application programs 1033 executable within the computer system 1000. In particular, the steps of the method of image rendering are effected by instructions 1031 (see Fig. 10B) in the software 1033 that are carried out within the computer system 1000. The software instructions 1031 may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be 25 divided into two separate parts, in which a first part and the corresponding code modules performs the rendering methods and a second part and the corresponding code modules manage a user interface between the first part and the user. The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer 30 system 1000 from the computer readable medium, and then executed by the computer system 1000. A computer readable medium having such software or computer program recorded on the computer readable medium is a computer program product. The use of the computer program product in the computer system 1000 preferably effects an advantageous apparatus for image rendering. P019385_speci_lodge -7 The software 1033 is typically stored in the HDD 1010 or the memory 1006. The software is loaded into the computer system 1000 from a computer readable medium, and executed by the computer system 1000. Thus, for example, the software 1033 may be stored on an optically readable disk storage medium (e.g., CD-ROM) 1025 that is read by 5 the optical disk drive 1012. A computer readable medium having such software or computer program recorded on it is a computer program product. The use of the computer program product in the computer system 1000 preferably effects an apparatus for image rendering. In some instances, the application programs 1033 may be supplied to the user 10 encoded on one or more CD-ROMs 1025 and read via the corresponding drive 1012, or alternatively may be read by the user from the networks 1020 or 1022. Still further, the software can also be loaded into the computer system 1000 from other computer readable media. Computer readable storage media refers to any non-transitory tangible storage medium that provides recorded instructions and/or data to the computer system 1000 for 15 execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, DVD, Blu-ray T M Disc, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 1001. Examples of transitory or non-tangible computer readable 20 transmission media that may also participate in the provision of software, application programs, instructions and/or data to the computer module 1001 include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. 25 The second part of the application programs 1033 and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display 1014. Through manipulation of typically the keyboard 1002 and the mouse 1003, a user of the computer system 1000 and the application may manipulate the interface in a functionally adaptable 30 manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 1017 and user voice commands input via the microphone 1080. P019385_specijodge -8 In operation of the method 100, the image specification 110 is typically input to the application program 1033 for processing from a storage location, such as the HDD 1010, the memory 1006, the disk medium 1025 or obtained from storage location provided by one of the networks 1020 or 1022. The presently disclosed arrangements have particular 5 utility where the input image specification 110 is obtained from a public network such as the Internet and may have a first nominal or implied resolution and a user of the computer system 1000 wishes to render the image 110 to either the display screen 1014 or to the printer 1015 at a second output resolution, which may be higher or lower than the nominal or implied resolution. Particularly utility is obtained from the presently disclosed 10 arrangements where the second resolution is higher than the first resolution, and the input image 110 is a graphical object-based image. Fig. 10B is a detailed schematic block diagram of the processor 1005 and a "memory" 1034. The memory 1034 represents a logical aggregation of all the memory modules (including the HDD 1009 and semiconductor memory 1006) that can be accessed 15 by the computer module 1001 in Fig. 10A. When the computer module 1001 is initially powered up, a power-on self-test (POST) program 1050 executes. The POST program 1050 is typically stored in a ROM 1049 of the semiconductor memory 1006 of Fig. 10A. A hardware device such as the ROM 1049 storing software is sometimes referred to as firmware. The POST 20 program 1050 examines hardware within the computer module 1001 to ensure proper functioning and typically checks the processor 1005, the memory 1034 (1009, 1006), and a basic input-output systems software (BIOS) module 1051, also typically stored in the ROM 1049, for correct operation. Once the POST program 1050 has run successfully, the BIOS 1051 activates the hard disk drive 1010 of Fig. 10A. Activation of the hard disk 25 drive 1010 causes a bootstrap loader program 1052 that is resident on the hard disk drive 1010 to execute via the processor 1005. This loads an operating system 1053 into the RAM memory 1006, upon which the operating system 1053 commences operation. The operating system 1053 is a system level application, executable by the processor 1005, to fulfil various high level functions, including processor management, memory management, 30 device management, storage management, software application interface, and generic user interface. The operating system 1053 manages the memory 1034 (1009, 1006) to ensure that each process or application running on the computer module 1001 has sufficient memory in which to execute without colliding with memory allocated to another process. P019385_speci-lodge -9 Furthermore, the different types of memory available in the system 1000 of Fig. 10A must be used properly so that each process can run effectively. Accordingly, the aggregated memory 1034 is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by 5 the computer system 1000 and how such is used. As shown in Fig. 10B, the processor 1005 includes a number of functional modules including a control unit 1039, an arithmetic logic unit (ALU) 1040, and a local or internal memory 1048, sometimes called a cache memory. The cache memory 1048 typically include a number of storage registers 1044 - 1046 in a register section. One or more 10 internal busses 1041 functionally interconnect these functional modules. The processor 1005 typically also has one or more interfaces 1042 for communicating with external devices via the system bus 1004, using a connection 1018. The memory 1034 is coupled to the bus 1004 using a connection 1019. The application program 1033 includes a sequence of instructions 1031 that may 15 include conditional branch and loop instructions. The program 1033 may also include data 1032 which is used in execution of the program 1033. The instructions 1031 and the data 1032 are stored in memory locations 1028, 1029, 1030 and 1035, 1036, 1037, respectively. Depending upon the relative size of the instructions 1031 and the memory locations 1028-1030, a particular instruction may be stored in a single memory location as 20 depicted by the instruction shown in the memory location 1030. Alternately, an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations 1028 and 1029. In general, the processor 1005 is given a set of instructions which are executed 25 therein. The processor 1105 waits for a subsequent input, to which the processor 1005 reacts to by executing another set of instructions. Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices 1002, 1003, data received from an external source across one of the networks 1020, 1002, data retrieved from one of the storage devices 1006, 1009 or data 30 retrieved from a storage medium 1025 inserted into the corresponding reader 1012, all depicted in Fig. 10A. The execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory 1034. The disclosed image rendering arrangements use input variables 1054, which are stored in the memory 1034 in corresponding memory locations 1055, 1056, 1057. The P019385_specijodge -10 rendering arrangements produce output variables 1061, which are stored in the memory 1034 in corresponding memory locations 1062, 1063, 1064. Intermediate variables 1058 may be stored in memory locations 1059, 1060, 1066 and 1067. Referring to the processor 1005 of Fig. 10B, the registers 1044, 1045, 1046, the 5 arithmetic logic unit (ALU) 1040, and the control unit 1039 work together to perform sequences of micro-operations needed to perform "fetch, decode, and execute" cycles for every instruction in the instruction set making up the program 1033. Each fetch, decode, and execute cycle comprises: (a) a fetch operation, which fetches or reads an instruction 1031 from a memory 10 location 1028, 1029, 1030; (b) a decode operation in which the control unit 1039 determines which instruction has been fetched; and (c) an execute operation in which the control unit 1039 and/or the ALU 1040 execute the instruction. 15 Thereafter, a further fetch, decode, and execute cycle for the next instruction may be executed. Similarly, a store cycle may be performed by which the control unit 1039 stores or writes a value to a memory location 1032. Each step or sub-process in the processes of Figs. 2 to 9 is associated with one or more segments of the program 1033 and is performed by the register 20 section 1044, 1045, 1047, the ALU 1040, and the control unit 1039 in the processor 1005 working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 1033. The image specification 110 includes paths which are specified to be "sharp profile" or "smooth-profile", together with colour values along those paths. More details 25 on sharp and smooth profiles will be provided below in relation to Fig. 3A and 3B. Fig. 2 shows paths of an example image specification for a parrot head image. In Fig. 2 sharp profile line paths are indicated by solid lines, such as line paths 210, 240, 250 and smooth profile line paths are indicated by dashed lines, such as line path 260. Sharp and smooth profile line paths will now be explained with reference to Figs. 30 3A and 3B. A sharp-profile line path specifies a path with either an image value discontinuity across the path or a normal gradient discontinuity across the path. Fig. 3A shows an example sharp-profile line path 305 together with a point 310 on the path 305 and an oriented normal line 312 passing through the point 310 and normal to the path at the point 310. When the line path 305 has an image value discontinuity at the point 310, the P019385 specijodge - I1 image value along the line 312 normal to the path 305 has a jump at the point 310, as indicated in graph 320 in Fig. 3A. When the line path 305 has a normal gradient discontinuity at the point 310, the gradient of image values along the normal line 312 has a jump at the point 310, as indicated in graph 330 of Fig. 3A. 5 A smooth-profile curve has neither an image value discontinuity across the path nor a normal gradient discontinuity across the path. Fig. 3B shows smooth-profile line path 345 together with a point 350 on the path and an oriented normal line 352 passing through the point and normal to the path at the point. Graph 360 depicts the desired smooth transition of image values along the line 352. 10 Line paths of an image specification 110 may be specified as Bezier curves. Returning to Fig. 2, line path 210 has end points 220 and 230 which connect the line path 210 to other line paths. As is the case for line path 210, line paths may be connected at their end points to other line paths. On the other hand, line paths may be separate from other line paths for one or both ends. An example of a single open ended line path is line 15 path 240 while line path 250 is an example of a line path with two open ends. In this way, collections of line paths may form closed or open boundaries. Colour values along a path may be specified using colour "stops", which are colour values at particular positions along the path. When a line path is specified as a Bezier curve, the positions along the path may be specified as values of a Bezier curve parameter. 20 Separate colour values can be specified along both sides of sharp-profile paths. This means that at any point along a sharp-profile path there can be a left-side colour value and a right-side colour value. On the other hand, at any point along a smooth-profile path only a single colour value is specified. Returning to Fig. 1, the first processing stage 120 of rendering method 100 receives 25 the image specification 110 including sharp-profile line paths and smooth-profile line paths and colour values along line paths, and generates an intermediate image representation 130 formed of line segments and coefficients for those line segments. Fig. 4 describes a first processing stage 120 of the rendering method 100 for generation of the intermediate image 130 in more detail. In a conversion step 410, line 30 paths from the image specification 110 are read from the memory 1010 or 1006 into the processor 1005 and converted to straight line segments by the processor 1005. For sharp profile line paths, a representative colour value is set for each side of each straight line segment, while for smooth-profile line paths a single representative colour value is set for each line segment. The representative colour values of straight line segments are set based P019385_specijodge - 12 on the curve colour values. Each representative colour value of a line segment is associated with the mid-point of the line segment. The representative colours at the line segment midpoints constitute predefined constraining image values at predetermined positions for generation of the output image. The representative colours are set by 5 interpolating the colour values along line paths of the image specification 110. In a coefficient determination step 420 of the first processing stage 120, coefficients are determined by the processor 1005 for each straight line segment. The coefficients are determined for each colour channel of the image. The straight line segments and the line segment coefficients formed by the processor 1005 constitute the 10 intermediate image representation 130 which may be stored in the memory 1006, 1010 by operation of the processor 1005. Each line segment desirably has three coefficients, denoteda, P, y determined for each of the colour channels. This results in 9 coefficients in an RGB colour space being generated with three coefficients for each of the red, green and blue colour channel. How the coefficients a, P and y are determined will be described 15 below. Fig. 5 is an expanded view of an example of a conversion of a curved line path 500 to an approximating chain of five straight line segments 510, 520, 530, 540 and 550 according to the conversion step 410 of Fig. 4. The calculation of such a piece-wise linear approximation of a Bezier curve can be performed by recursive subdivision or other 20 methods. lS' implementation - image calculation formula In the second processing stage 140 of Fig. 1, values for pixels of each colour channel of a rendered image, being the output image 150 are calculated as values of an image channel function f(x, y). The image channel function works on the straight line 25 segments of the intermediate image 130 produced by the conversion step 410 and uses the coefficients described in relation to the coefficient determination step 420. Each path is broken down into a number of straight line segments which may be considered linked together to form the path. When being processed, the contribution of each of the segments is determined according to the image function by considering each line segment of the path 30 in turn. The function is a weighted sum of line segment basis functions given by the following formula. f(x,y)=Z lax Di(x,y)+jZUi,(x,y)+ ri;(x,y) P 5 i i P019385_speciJodge - 13 Here Di (x, y) is the value, at a field point (x, y), of a line segment "dipole" field function for the i'th line segment of the straight line segments of the paths, Li (x, y) is the value at a field point (x, y) of a line segment "logarithmic" field function for the i'th line segment, and Ti (x, y) is the value at a field point (x, y) of a line segment "thin plate spline" 5 field function for the i'th line segment. The dipole, logarithmic and thin plate spline field functions will be described in more detail below. The values, %i, i y are the three coefficients for the i'th line segment for the colour channel. The thin plate spline field function is an example of a "smooth field" whose contribution is controlled by the Y; coefficient values, which may be considered smooth field coefficient values. 10 Line segment dipole field The line segment dipole field of a line segment extending from a first point (xI, yi) to a second point (x2, Y2) is given by the following formula. D(x,y)=-atan 2((x-x, )(y -y2)-(Y- yl)(X-X2),(X-Xi)(X-)2)+(y-y,)(y -y2)) (2) D(x, y) is continuous everywhere except at points on the line segment. Immediately to the left of the straight line segment, D(x, y) has a limiting value of 1, and 15 immediately to the right D(x, y) has a limiting value of -1. The value of D(x, y) at points on the straight line segment is defined to be zero. D(x, y) is referred to as a line segment dipole field because it is obtained as the integral along the line segment of a dipole function oriented normal to the line segment. Line segment logarithmic field 20 The line segment logarithmic field of a line segment extending from a first point (x I, yl) to a second (x 2 , Y2) is given by the following formula. L(x,y)=(u-u2)( log((u-u 2 )2 +(v-v 2 )2)-1)+(v-v 2 )atan2(v-v 2 ,u-u 2 ) 2 (3) -(u-u,)( log((u-u, )2 +(v-v, ) 2 )-1)+(v-v )atan2(v-v,,u-u,) 2 Here points (u, v), (u 1 , vi),(u 2 , v 2 ) are mappings of points (x, y), (xI, y), (x 2 , Y2) resulting from the following co-ordinate rotation transformation. u(x,y)=x.cos(A)+y.sin(A) v(x,y)=-x.sin(A)+y.cos(A) where A=atan2(y 2 -y,xx 2 -). (5) P019385_specijlodge - 14 L(x, y) has smoothly changing values everywhere and has smoothly changing gradients everywhere except across the line segment. L(x, y) is referred to as a line segment logarithmic field because it is obtained as the integral along the line segment of a logarithmic function. 5 Line segment thin plate spline field The line segment thin plate spline field T(x, y) is the integral along the line segment of the following thin plate spline function. (x2+yz) t(x,y)= log(x2+y2) (6) 2 T(x, y) has smoothly changing values and gradients values everywhere and has smoothly changing Laplacian values everywhere except across the line segment. This 10 provides smooth interpolation of and about desired image values. Coefficient calculation Calculation of coefficients aj, i, y, for each i'th line segment by the processor 1005 will now be described. The calculation will be described for a single colour channel as the same calculation is repeated for each colour channel. If the i'th straight line segment is a 15 line segment of a smooth-profile line path, then oi is set to zero. If the i'th line segment is a line segment of a sharp-profile line path, then ai is calculated as half the difference of colour channel values on the opposing left and right sides of the line segment as follows: i= i CR (7) 2 Here, icL is the representative colour channel value for the i'th straight line segment for the left side of the segment, and icR is the representative colour channel value for the 20 i'th straight for the right side of the segment. The coefficients Pi, and y; depend on the representative colour values for the line segments and the arrangement of the line segments. Suitable values for these coefficients are obtained by formulating and solving a linear system of equations as follows. The equations preferably include firstly a set of equations which constrain the image value 25 f(x,y), the image channel function of Equation (1), to have a suitable value at the midpoint of each line segment, being a first predetermined position, and secondly a set of equations which constrain the Laplacian of the image channel function to be zero at the midpoint of each line segment of a sharp-profile line path, being another predetermined position. The first set of equations may consist of only one equation. Each equation of the 30 first set of equations provides smooth interpolation of one of the predefined constraining P019385_speciJodge - 15 image values at one of the predetermined positions. Similarly, the second set of equations may consist of only one equation. Each equation of the second set of equations provides desirable sharp-profile characteristics at one of the predetermined positions. It is desirable for the coefficients to be obtained by jointly solving equations from both the first set of 5 equations and the second set of equations. Let (xi, y;) be the midpoint of the i'th line segment. If the i'th line segment is a line segment of a smooth-profile line path, then the suitable value is found by setting the image channel function f(xi, yi) to be equal to the representative colour channel value ic of the i'th line segment. Z, L,(x,,yJ)+ZrT(x ,,yi) = c -Zaj Dj(x ,y ) 8 10 If the i'th line segment is a line segment of a sharp-profile line path, then the suitable value is found by setting the image channel function f(xi, yi) to be equal to the average of the left-side and right-side representative colour channel values of the i'th line segment. Q L (xi'X ,y }+ TcLc , }aD(x y 15 If the i'th line segment is a line segment of a smooth-profile line path, then Pi is set to zero. If the i'th line segment is a line segment of a sharp-profile line path then the Laplacian of the image channel function is set to zero at the midpoint of the line segment, thus forming a Laplacian value constraint. Z 7V T(x,yi)) = 0. (10) 20 Equation (10) is obtained by noting that the Laplacian of a dipole field function and the Laplacian of a logarithmic field function are zero except at the field source points, so that the Laplacian of each line segment dipole function and each line segment log function may be considered to be zero everywhere. Satisfying the constraint of Equation (10) at predetermined positions on the line or segment provides for improved interpolation. 25 Let M be the number of line segments of smooth-profile line paths and let S be the number of line segments of sharp-profile line paths, so that the total number of line P019385_speciJodge - 16 segments of the resulting image is equal to the sum of M and S. Because P coefficients for line segments of smooth-profile line paths are zero, there are S P coefficients remaining to be determined for each colour channel. There are also (M+S)y coefficients to be determined for each colour channel. For each colour channel there are M instances of 5 Equation (8), S instances of Equation (9), and S instances of Equation (10). So for each colour channel there are M+2S equations involving M+2S unknown Pand Yvalues. This linear system can be solved to set values for the coefficients Pi, Yi. When rendering each colour channel of an output image, the three components of the image channel function contribute different properties to a line segment of a sharp 10 profile path: - the corresponding line segment dipole field contributes an image value discontinuity at the line segment; - the corresponding line segment logarithmic field contributes an image value gradient discontinuity across the line segment, while providing a suitable average image 15 value at the line segment; and - the corresponding line segment thin plate spline field provides a zero Laplacian value at the line segment. When rendering each colour channel of an output image only a single component of the image channel function contributes to a line segment of a smooth-profile path. For a 20 smooth-profile path the corresponding line segment thin plate spline field provides a suitable image value at the line segment. 2 nd implementation If both the number of pixels to be calculated in an output image and the number of line segments are large, then direct calculation of output image values using Equation (1) is 25 likely to be slow. A second implementation is now described in which a periodic output image is calculated using a I D-periodic version xD(x, y) of the line segment dipole field function, a ID-periodic version xL(x, y) of the line segment logarithmic field function and a ID-periodic version xT(x, y) of the line segment thin plate spline field function. In the second implementation, output image values are calculated to equate to values in the 30 following formula. f (x'y)=1 a;,xD, (x, y) + /(X,y) + r, 7(x, y) (i However, this formula is not used for calculation. Instead output image values are calculated in a line-by-line fashion, the lines being for the output image, exploiting a P019385_speci-lodge - 17 characteristic of ID-periodic dipole, log and thin plate spline field functions. The ID-periodic functions are periodic in x, with period X. The ID-periodic line segment functions are used both for calculation of line segment coefficients and for calculation of the output image line by line. Typically line segment coefficients calculated in the second 5 implementation are different to those calculated in the first implementation, so they are denoted differently in Equation (11). The line-by-line image calculation can provide a significant reduction in computation required to be performed by the processor 1005 compared to using the image channel function of Equation (1). In order to calculate image values for the output image the ID-periodic versions of the dipole, logarithmic and thin 10 plate spline fields will now be described. iD-periodic line segment dipole field The ID-periodic version of the line segment dipole field of a line segment extending from (x I, y) to (X2, Y2) is given by the following formula. tanh(7r(y-y,)/X)sin(;r(x-x 2 )/X)cos(r(x-x,)/X) 1 -tanh(Z(y-y 2 )/X)sin(z(x-x,)/X)cos((x-x 2 )/X), D(xy)=a tanh(r(y- y,)/X)tanh(r(y-y 2 )/X)cos(r(x-x,)/ X)cos(z(x-x 2 )/ X) \+sin (z(x-x,) / X)sin (,(x-x2) /X) An alternate representation of xD(x, y) is provided by the following formula. D(xy)= sin(2m(x-,)/X) _Vx - - sin(2.Tm(x-x) / X ) ,, 2rm Z2zm m=1 M=1I (13) + -X (IY-YI-jY-Y 2 1) X 15 iD-periodic line segment logarithmic field The I D-periodic version of the line segment logarithmic field xL(x, y) is the integral along a line segment of the following periodic logarithmic function xl(x, y). I(x,y)=-21d cos(2crmx/ X)- 2 ,+y|X (14) 2mm For yi S y2 5 y, the line segment logarithmic field xL(x, y) of a line segment 20 extending from (xI, y) to (X2, y2) is given by the following formula. P019385_specilodge - 18 L~~y=(X- sin(2;xm(x-x2}/ X~ec ""+-'N2V sin(2)xm(x-x,)/ X -c2,.+-YyI/ len m2 2m 22 - )r cos(2rm(x-x)/X)c-2.ngx - cos(2tm(x-)x)/X) -2mny-yVX (15) len m m -len(yl+y2-2y)C 2x 2 X ) In the above formula and in subsequent formulas, len is the length of the line segment length. len=((x 2 )2+(y 2
)-Y
1 (16) iD-periodic line segment thin plate spline field 5 The ID-periodic version of the line segment thin plate spline field xT(x, y) is the integral along a line segment of the following periodic thin plate spline function xt(x, y). t(xy)=j: cos(2rmx/ X) c-2,Yh/x (l+2rmjyl/X )+ - 2 (17) (2;rm) 6X' 47rX( For yI S Y25 y, the line segment thin plate spline field xT(x, y) of a line segment extending from (xI, yi) to (x 2 , Y2) is given by the following formulae. xT(x,y)= xT1(x,y)+ xT2(x,y) (y,+y 2 -2y)((y-y 2
)
2 +(y-y,)) 2 (18) Icn 24 12x hUr -leni(T(- 2 )1X +(- 2 )(-y)(y 1 2 sin(2zm(x-x 2 )/X) +e 2 en2 ) si(-~x } )2] _ __ _ _ _ _ _ 4 M4 C ((19) _(X2 cos(2zm(x-x2)/X) _my) ( L2-y,) (y2-yl)((7Y2- -1) 4 len len 3 J cos(2xm(x-x,)/ X )_ - 4C \ m=im P019385_specijlodge - 19 2xly - y sin(2 nm(x-x2|X -2,,-yVx T2(xy)= M1 len 2;rly-y sin(2xm(x-,)/Xc ""20n X m'4 M=1 (20) 2zly-y21 cos(2zm(x-x 2 )/X "2"~Yyx (Y, - _) Xm len 2xry Y 1 1 cos(2;fm(x- x,)iX)c )2ny-yy Representation of iD-periodic field functions using poly-logarithms The I D-periodic dipole field function, logarithmic field function and thin plate spline field function, and the associated ID-periodic line segment field functions as given 5 in Equations (12), (15), (18), can be expressed in terms of poly-logarithms of e 2 n. This fact, together with a property of poly-logarithms of e 2 ,i, allows the ID periodic line segment field functions to be calculated efficiently in a line by line fashion. This property of poly-logarithms and its consequences for line by line calculation, will now be explained. 10 The poly-logarithm of order n, of the complex variable z = x + iy, Lin(z) is given by the following formula. i(z)= Z(21) M=1 For y > 0, real and imaginary components of the poly-logarithm of e2niz are given by the following formulas. pl (x, y) = Re[Li,, (e 21zlX= cos(27rmx/X) pi,(x,y) )= Re([Li,{e2xifx )1=3 c-2 (22)i (22) sin(2Tmx/X )_-2.ylX Ph" (x,y Y)=Im( Li (e 2,Tix )= c2,nl m=1 The poly-logarithm of e 2 1i' has the property that it extends harmonically from the x 15 axis to the upper half plane. As a consequence, for y 1, 1D-periodic functions ys I (x) and ys2n(x) given by the following formulae, P019385_speci-lodge -20 ,sl,(x)=Li (e2z1Xl) (23) ,s2,(x)= y Li(e 2,zXe can be calculated recursively by ID convolution with the standard Cauchy distribution as follows. l1 ,sl'(x)=,_Is',,() 2 T I+x2 (24) ,s2, (x)=( _,s 2,(x)+ _,s1, (x))* Y l +X These recursive formulae can be verified by considering the Fourier Transforms of the functions. According to these recursive formulae, values of the real and imaginary 5 components along horizontal lines of the poly-logarithm of e , multiplied by a polynomial of y of degree at most 1, can be calculated recursively from the same functions along the previous horizontal line. Line-by-line recursive calculation of ID-periodic field functions As noted, the ID-periodic dipole field function, logarithmic field function and thin 10 plate spline field function, and the associated ID-periodic line segment field functions as given in Equations (12), (15), (18),can be expressed in terms of poly-logarithms of e . In particular the lD-periodic line segment field functions all have the characteristic that, for values of y greater than the y co-ordinate value of the line segment start and end y co ordinates yj and y2, the equations can each be represented as a term depending on y plus a 15 weighted sum of real and imaginary parts of poly-logarithms of e , where the weights are polynomials of y of at most degree 1. For example, for y > yi, y2 2;x(y- Y2) Im LD4e 2,Ti-zyx x'T 2(x, y) = (2-X len 2;l(y-yi)Im Li 4 (e2x(z-z)/X)] (25) 2n(_y-y2 ) Re Li(e2xi(-2)/X +( Y2 - YO X len 2([ (y-y,) Re Li (e2;ri(z-xl)-x Consequently values of the lD-periodic line segment dipole, log and thin plate spline fields can be calculated along horizontal lines recursively using components of the 20 poly-logarithm of e 2 ,i determined for a previous scanline. This calculation from previous P019385_speci_lodge -21 scanline values may be exploited to implement an efficient line-by-line calculation method as described below. 2nd implementation - intermediate image representation calculation Calculating output image values according to the second implementation may be 5 implemented using a modified version of the piece-wise smooth image rendering method of Fig. 1. For the modified version the first processing stage 120 to calculate the intermediate image representation 130 is similar to the first implementation, but with the following exception. In step 420 of Fig. 4 the line segment coefficients a, P, y are calculated using the ID-periodic line segment functions described by Equations (12), (15), 10 (18)rather than the aperiodic line segment functions. As with the first implementation, the line segment coefficients are calculated for each colour channel separately. 2nd implementation - image calculation Fig. 6 shows a method 600 for the second processing stage 140 of the modified piece-wise smooth image rendering method. The method 600 describes line-by-line 15 calculation of image values of a single colour channel of the image from the intermediate image representation 130 of line segments and line segment coefficients as performed by the processor 1005. The method 600 starts with an initialisation step 610 in which an image buffer the size of the output image is formed in the memory 1006 by the processor 1005 and initialized with zero values. In a forward pass step 620, image values of a 20 forward pass through lines of the image are calculated by the processor 1005 and added to the image buffer. A forward pass occurs when the lines of the output image are processed from top to bottom in a scan line order. In a reverse pass step 630, image values of a reverse pass through lines of the image are calculated by the processor 1005 in a similar fashion to the forward pass step 620 and added to the image buffer. The reverse pass 25 processes lines of the output image from bottom to top. At the end of the method 600, the image buffer contains image values of the final output image 150. The contribution to an image value from a line segment field is the sum of the contributions to the image value from line segment fields of part line segments which constitute the line segment. Each forward pass image value calculated for a position in the 30 image by the forward pass processing step 620 is the sum of contributions to the image value from weighted line segment fields of those line segments and parts of line segments which have y co-ordinate value less than the y co-ordinate value of the image position (the weights are provided by the line segment coefficients). By using the weighting in the sum, the total contribution of first values of a current scanline to forward or reverse pixel values P019385_speci-lodge - 22 of a succeeding scanline is constant. The y co-ordinate value is considered to be increasing in the downward direction. Each reverse pass image value calculated for a position in the image by the reverse pass processing step 630 is the sum of contributions to the image value from weighted line segment fields of the line segments and parts of line segments 5 which have y co-ordinate value greater than the y co-ordinate value of the current image position. A horizontal line segment with an integer y co-ordinate value will match up with a pixel line in the output image. The horizontal line segment may be shifted by a small vertical distance, i.e. a fraction of a pixel, so that the horizontal line segment contributes to image values of the pixel line in either the forward or reverse pass. In this way, an output 10 image value in the output image, being calculated as the sum of the forward pass image value and the reverse pass image value at the image position, is calculated to be the total contribution at the image position of weighted line segment fields for all line segments. The forward pass processing performed in step 620 will now be described in relation to Figs. 7 and 9. While described in terms of a forward pass, the forward pass 15 process described in relation to Figs. 7 and 9 may be used for the reverse pass processing performed in step 630 with minor modifications. Fig. 7 shows further details of the forward processing step 620 of Fig. 6. Fig. 9 shows a data flow calculation model 900 for performing calculations for each line of the output image in either the forward pass processing step 620 or reverse pass processing step 630. The calculation model 900 will 20 be described for an output image that is Xim pixels wide and Yim pixels high; that is the output image consists of Yim lines (i.e. rows) of pixels where each line has Xim pixels. The forward processing step 620 of Fig. 7 starts at initialisation step 710 where a line counter y is initialized as zero by the processor 1005. The line counter y is an index to identify the current line of the image being processed. Lines of the image are assumed to 25 be integers such that 0 : y 5 Yim-1, with line 0 being located at the top of the image. Also in the initialisation step 710, two line buffers, bufferr" and "buffer2", each consisting of X values, are formed initialized with zero values by the processor 1005, preferably in the memory 1006. The X value is the period of the ID-periodic functions and is desirably chosen to be greater than Xim so that image features are not repeated in the image. 30 Increasing the X value will have the effect of improving the circularity of contours associated with the periodic thin plate spline field for a short line segment. It is desirable that such contours are as circular as possible so that output image colour variation shows no directional bias, i.e. is anisotropic, when the curves and colour values of the image specification have no directional bias. However, increasing the X value also results in P019385_speci-lodge -23 increased computation. Setting the X value to be an odd value simplifies formulas. Setting the X value to be the 2 *Xim+1 is a suitable compromise between complexity and improved circularity of the contours. Bufferl and buffer2, are used to store contributions to the values of the output image 150 from the terms of line segment fields which are 5 components of poly-logarithms. In a convolution step 720, the contents of buffer and buffer2 are each cyclically convolved with a spreading filter. Fig. 9 shows buffer values 910 and buffer2 920 for a preceding scanline (y-l) prior to respective convolution with spreading filter values 930. The result of the convolutions of the previous line buffer and buffer2 with the spreading 10 filter values 930 is filtered buffer values 912 and 922. The spreading filter preferably consists of X values given by the following formula. h[k] I sinh(2 X)-(-l)k2e~"Tsinh(/XX)cos( rkX) (26) hX)k) = (26) X cosh(2rX)cos(2k) The periodic sequence shown in Equation (26)is obtained by evaluating the following band-limited function having period X, at y = 1/X and at integer values of x 1 sinh(2zy)-2e^YX (sinh(ry)cos(zx)cos(fX X )-cosh(zy)sin(7x)sin (ff X X cosh(2zy)cos(2xx/ (27) x -y|W| 2X 32 2z <-+ e - )_ L-m X-X rnl=- 2 The periodic sequence of Equation (26)is chosen as the spreading filter because the 15 periodic sequence has frequency domain characteristics that are similar to those of a Cauchy distribution. Importantly, this periodic sequence has frequency coefficients that reduce exponentially with increasing frequency and the sequence preserves its form under self-convolution. Cyclic convolution of buffer and buffer 2 values with the spreading filter given in Equation (26) ensures that the ID-periodic dipole, log and thin plate spline 20 fields are faithfully generated line by line. Processing of step 620 of Fig. 7 continues in a first addition step 730 where a sequence (i.e. line) of X first field values, shown as values 940 in Fig. 9 are calculated. The first field values are contributions to image values at pixel positions of the current line from the dipole, logarithmic and thin plate spline fields of parts of line segments which 25 intersect the region between the current line and the previous line of the image. The calculation of first field values is described below. Also in the first addition step 730, P019385_specijodge - 24 corresponding first field values 940, filtered bufferl values 912 and filtered buffer2 values 922 are added together by the processor 1005 and the resulting values 914 are stored in buffer for the current line (y). In calculate adjustment step 740, an adjustment value, shown as value 960 in Fig. 9 is calculated for the current line of the image. The adjustment 5 value provides the contribution to output image values of a scanline due to the final term in Equations (13) and(15) and the final two terms in Equation(18). All these final terms are independent of x and hence readily calculated once for an entire scanline without the use of cyclic convolution. In adjustment step 750, the first Xim values of buffer] are taken and adjusted by 10 adding the adjustment value of the calculate adjustment step 740. The adjustment step 750 can be seen in Fig. 9 where adjustment value 960 is added to the buffer values 914. The resulting pass values 970 are the output values for the pass for the current line and they are added by the processor 1005 to corresponding values of the current line of the output image. In the second addition step 760 a set of X second field values 950 are calculated 15 and added to corresponding filtered buffer2 values 922, giving resulting buffer2 values 924. The second field values are additional contributions to image values at pixel positions of the current line from the thin plate spline fields of parts of line segments which intersect the region between the current line and the previous line of the image. The calculation of second field values will be described below. 20 In image end test step 770, the line counter y is examined to see if the last line of the image has been reached; if the last line has not been reached, i.e. y is less than Yim-1, then the line counter is incremented by the processor 1005 in increment step 780 and processing returns to convolution step 720 for a new line of the image, otherwise processing for the forward pass of the colour channel is complete. When processing 25 returns to convolution step 720 the resulting bufferl values 914 and resulting buffer2 values of 924, shown in Fig. 9 become the previous line buffer values 910 and previous line buffer2 values 920. The contribution of part line segments to first field and second field values in first addition step 730 and second addition step 760 will now be described in relation to Fig. 8. 30 Fig. 8 shows an example section of five lines of the output image 150. Fig. 8 shows a previous line 810 of the image with index y-l, and a current line 820 of the image with index y. Four straight line segments 830, 840, 850, 860 are shown. The sections of the straight line segments which intersect the region between the current and previous line (i.e. P019385_speci-lodge -25 which have y co-ordinate values in the range (y-1, y)) are shown as solid lines. Remaining sections of these straight line segments are shown dotted. At the start of the first addition step 730 the values buffer and buffer2 contain contributions to the output image values of the current scanline from parts of line segments 5 which intersect the image region with y co-ordinate value less than y-1, that is the region spanned by previously processed scanlines. The first field values added to buffer in step 730 are contributions to image values of the current line from line segment fields for the line segments contained within the region between the current and previous scanline and from the parts of line segments which intersect the region between the current and previous 10 line. These first field values are the terms of the fields of the intersecting line segments which are components of poly-logarithms in Equations(13), (15), (19) and (20). Second field values are added to buffer2 in the second addition step 760. The second field values are calculated from line segment thin plate spline fields, for the line segments contained within the region between the current and previous scanline and for 15 those parts of line segments which intersect the region between the current and previous line. The contribution to second field values for a line segment with end points (xi, yi) and (x2, y2) is 2;rx~ f3 Im[Li 4 (e 2f (Z-Z)IX len 2 Im Li 4 e2z I X L(28) 2 - r R[Li (e2(Z-Z 2 )/X)] +( Y2 -- YI X len 2 7 Re Li(e 2.'r(z-z)/X X L That is, the contribution to second field values from a line segment consists of the terms of Equation (20) which are components of poly-logarithms, altered so that for each 20 term the weighting provided by the first order polynomial in y is unity. A further explanation is now provided of the role of second field values in calculating a line of image values. As can be seen in Fig. 9 the second field values 950 of a particular line do not contribute to the pass values 970 produced for that line. One copy of filtered second field values of a particular line does contribute to the pass values for the 25 next line because the second field values 950 are stored in resulting buffer2 values 924 and filtered buffer2 values 922 contribute to the pass values 970. Any filtered buffer2 values contributing to the pass values 970 also contribute to succeeding lines because they are P019385_speci-lodge - 26 added to resulting buffer values 914. For each succeeding line a new copy of the further filtered second field values of a particular line stored in buffer2 contribute to the pass values 970. As a consequence, the total contribution of second field values of a particular line to pass output values of a subsequent line grows linearly with each succeeding line and 5 is thus proportional to the separation between the particular line and the subsequent line. An approximate calculation of the first and second field values will now be described. The approximation provides a large reduction in the computation performed by the processor 1005 compared to the previously discussed approach. By inspection of each term involving poly-logarithms in the I D-periodic line segment dipole, 1 D-periodic log 10 and ID-periodic thin plate spline field functions of Equations(13), (15), (18),and by inspection of the terms of Equation (28), it can be seen that each of the terms may be considered as a function of 2 variables. The two variables are the x and y separation between an image position with integer co-ordinate values (x, y) and a line segment end point. For the approximate calculation, each term is evaluated using a bilinear 15 interpolation of the terms evaluated at the integer separations between the image position with integer-valued co-ordinates (x, y) and the (at most four) image positions with integer valued co-ordinates immediately surrounding the line segment end point. In this way, first and second field values can be evaluated using components of poly-logarithms evaluated only at integer x values and for y equal to zero or 1. The values of these poly-logarithms 20 can be pre-calculated and loaded to a I D look up table so that no poly-logarithm evaluation is required at render time. At render time, the calculation of the values of a current scanline can be performed by the processor 1005 conducting a look-up of the ID look up table. INDUSTRIAL APPLICABILITY 25 The arrangements described are applicable to the computer and data processing industries, and particularly for the rendering of images at a variety of resolutions. The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. 30 (Australia Only) In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings. P019385_speciJodge -27 P019385_speci_lodge

Claims (18)

1. A computer-implemented method of rendering an output image which interpolates predefined constraining image values located at predetermined positions in the output 5 image, at least one of the predefined constraining image values being smoothly interpolated, the method comprising: (a) generating an intermediate representation of the output image including a smooth field coefficient for a smooth field associated with each of the predetermined positions; 10 (b) rendering the output image from the intermediate representation, each output pixel value of the output image being a sum of at least a forward pixel value calculated by a forward pass scanline process and a reverse pixel value calculated by a reverse pass scanline process, where: (i) each of the forward and reverse pixel values of a current scanline are 15 equal to a sum of a product of the smooth field coefficient and a value of the smooth field determined for each of a plurality of preceding output image positions, wherein the plurality of preceding output image positions are one of the predetermined positions preceding the current scanline; (ii) each of the forward and reverse pixel values of the current scanline is 20 calculated using first values of the current scanline and of preceding scanlines and using second values of preceding scanlines, where the total contribution of first values of a current scanline to forward or reverse pixel values of a succeeding scanline is constant, and where the total contribution of second values of a current scanline to forward or reverse pixel values of a succeeding scanline is proportional to the separation between the 25 current scanline and the succeeding scanline.
2. The method as claimed in claim 1, wherein said image is an entire image or a portion of a larger image. 30
3. The method as claimed in claim 2, wherein the calculation of smooth field coefficients in the generation of the intermediate representation is performed to satisfy at least one image value constraint at one of the predetermined positions. P019385_specilodge -29
4. The method as claimed in claim 2, wherein the calculation of smooth field coefficients in the generation of the intermediate representation is performed to satisfy at least one Laplacian value constraint at one of the predetermined positions.
5 5. The method as claimed in claim 2, wherein the calculation of smooth field coefficients in the generation of the intermediate representation of the output image is performed to jointly satisfy at least one image value constraint at one of the predetermined positions and at least one Laplacian value constraint at one of the predetermined positions. 10
6. The method as claimed in claim 2, wherein the smooth field is a line segment thin plate spline field.
7. The method as claimed in claim 2, wherein the smooth field is a ID-periodic line segment thin plate spline field. 15
8. The method as claimed in claim 2, wherein the calculation of first and second values of a current scanline is performed using ID look up tables.
9. A computer readable storage medium having a program recorded thereon, the 20 program being executable by computer apparatus to render an output image which interpolates predefined constraining image values located at predetermined positions in the output image, at least one of the predefined constraining image values being smoothly interpolated, the program comprising: code for generating an intermediate representation of the output image including a 25 smooth field coefficient for a smooth field associated with each of the predetermined positions; code for rendering the output image from the intermediate representation, each output pixel value of the output image being a sum of at least a forward pixel value calculated by a forward pass scanline process and a reverse pixel value calculated by a 30 reverse pass scanline process, where: (i) each of the forward and reverse pixel values of a current scanline are equal to a sum of a product of the smooth field coefficient and a value of the smooth field determined for each of a plurality of preceding output image positions, wherein the P019385_specijodge - 30 plurality of preceding output image positions are one of the predetermined positions preceding the current scanline; (ii) each of the forward and reverse pixel values of the current scanline is calculated using first values of the current scanline and of preceding scanlines and using 5 second values of preceding scanlines, where the total contribution of first values of a current scanline to forward or reverse pixel values of a succeeding scanline is constant, and where the total contribution of second values of a current scanline to forward or reverse pixel values of a succeeding scanline is proportional to the separation between the current scanline and the succeeding scanline. 10
10. The computer readable storage medium as claimed in claim 9, wherein said image is an entire image or a portion of a larger image.
II. The computer readable storage medium as claimed in claim 10, wherein the 15 calculation of smooth field coefficients in the generation of the intermediate representation is performed to satisfy at least one image value constraint at one of the predetermined positions.
12. The computer readable storage medium as claimed in claim 10, wherein the 20 calculation of smooth field coefficients in the generation of the intermediate representation is performed to satisfy at least one Laplacian value constraint at one of the predetermined positions.
13. The computer readable storage medium as claimed in claim 10, wherein the 25 calculation of smooth field coefficients in the generation of the intermediate representation of the output image is performed to jointly satisfy at least one image value constraint at one of the predetermined positions and at least one Laplacian value constraint at one of the predetermined positions. 30
14. The computer readable storage medium as claimed in claim 10, wherein the smooth field is a line segment thin plate spline field.
15. The computer readable storage medium as claimed in claim 10, wherein the smooth field is a ID-periodic line segment thin plate spline field. P019385_speci_lodge -31
16. The method as claimed in claim 10, wherein the calculation of first and second values of a current scanline is performed using 1 D look up tables. 5
17. A method of rendering an output image which interpolates predefined constraining image values located at predetermined positions in the output image, at least one of the predefined constraining image values being smoothly interpolated, the method being substantially as described herein with reference to any one of the embodiments as that embodiment is illustrated in the drawings. 10
18. Computer apparatus adapted to perform the method of any one of claims I to 8 or 17. Dated this 20th day of December 2011 15 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson P019385_specijodge
AU2011265373A 2011-12-20 2011-12-20 Colour gradients from smooth-profiile and sharp-profile paths Abandoned AU2011265373A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2011265373A AU2011265373A1 (en) 2011-12-20 2011-12-20 Colour gradients from smooth-profiile and sharp-profile paths

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2011265373A AU2011265373A1 (en) 2011-12-20 2011-12-20 Colour gradients from smooth-profiile and sharp-profile paths

Publications (1)

Publication Number Publication Date
AU2011265373A1 true AU2011265373A1 (en) 2013-07-04

Family

ID=48700110

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2011265373A Abandoned AU2011265373A1 (en) 2011-12-20 2011-12-20 Colour gradients from smooth-profiile and sharp-profile paths

Country Status (1)

Country Link
AU (1) AU2011265373A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115225615A (en) * 2022-06-30 2022-10-21 如你所视(北京)科技有限公司 Illusion engine pixel streaming method and device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115225615A (en) * 2022-06-30 2022-10-21 如你所视(北京)科技有限公司 Illusion engine pixel streaming method and device
CN115225615B (en) * 2022-06-30 2024-02-23 如你所视(北京)科技有限公司 Illusion engine pixel streaming method and device

Similar Documents

Publication Publication Date Title
Ma et al. Learning deep context-sensitive decomposition for low-light image enhancement
Papari et al. Artistic edge and corner enhancing smoothing
Wei et al. Contrast-guided image interpolation
McCrae et al. Sketching piecewise clothoid curves
CN100389597C (en) Methods and systems for locally adaptive image processing filters
RU2419881C2 (en) Anisometric texture synthesis
US7636489B2 (en) Blur computation algorithm
US20130121568A1 (en) System and Method of Image Upsampling
US20080055338A1 (en) Multi-stage edge-directed image scaling
WO2011092696A1 (en) Method and system for generating an output image of increased pixel resolution from an input image
US20110097011A1 (en) Multi-resolution image editing
CN106462950A (en) Systems and methods for localized contrast enhancement
US8457434B2 (en) Spatial diffusion in images
Zhou et al. Edge-preserving single image super-resolution
Ratner et al. Denoising-enhancing images on elastic manifolds
Pandey et al. A novel technique for non-overlapping image mosaicing based on pyramid method
EP2034442A1 (en) Method for non-photorealistic rendering of an image frame sequence
AU2011265373A1 (en) Colour gradients from smooth-profiile and sharp-profile paths
Lukin et al. High-quality algorithm for Bayer pattern interpolation
KR101651203B1 (en) Method and apparatus for image scaling with image enhancement
Bordoloi et al. Hardware accelerated interactive vector field visualization: A level of detail approach
Kyprianidis et al. Anisotropic Kuwahara Filtering with Polynomial Weighting Functions.
US8483505B2 (en) Rendering piece-wise smooth image from colour values along paths
WO2016025980A1 (en) Rendering diffusion curve images using multigrid laplacian smoothing with boundary constraint pixels
US20070003167A1 (en) Interpolation of images

Legal Events

Date Code Title Description
MK4 Application lapsed section 142(2)(d) - no continuation fee paid for the application