EP1963970A2 - Procede pour fournir des donnees a un moyen de traitement numerique - Google Patents

Procede pour fournir des donnees a un moyen de traitement numerique

Info

Publication number
EP1963970A2
EP1963970A2 EP06847178A EP06847178A EP1963970A2 EP 1963970 A2 EP1963970 A2 EP 1963970A2 EP 06847178 A EP06847178 A EP 06847178A EP 06847178 A EP06847178 A EP 06847178A EP 1963970 A2 EP1963970 A2 EP 1963970A2
Authority
EP
European Patent Office
Prior art keywords
generic
data
block
formatted data
parameters
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.)
Ceased
Application number
EP06847178A
Other languages
German (de)
English (en)
Inventor
Bruno Liege
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.)
GoPro Technology France SAS
Original Assignee
Dxo Labs SA
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 Dxo Labs SA filed Critical Dxo Labs SA
Publication of EP1963970A2 publication Critical patent/EP1963970A2/fr
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Definitions

  • the present invention relates to a method for providing generic formatted data to a digital data processing means.
  • each platform has its own characteristics, both in terms of hardware (for example number and type of processors or size and type of memory), and in terms of language used (C for a scalar processor and assembler for a vector processor ).
  • hardware for example number and type of processors or size and type of memory
  • language used for a scalar processor and assembler for a vector processor
  • a signal processing processor has a small local memory and must copy the data from and to the main memory from this local memory.
  • a vector processor in particular of the SIMD (Single Instruction Multiple Data) type, processing data grouped by vectors of different sizes according to the platform and the vectors are not expressible independently of the platform when using a language such as the language C.
  • the computing power is increasing very quickly and it is therefore possible to take advantage of this performance with more and more powerful algorithms, provided that they can be optimized quickly.
  • the characteristics of the sensors evolve very quickly and it is therefore necessary to adapt the image processing algorithms to the characteristics of these sensors, including noise that increases with miniaturization, as long as we can optimize quickly.
  • the invention starts from the observation that, in order to overcome these drawbacks, the algorithms should be developed in a language that is independent of the organization of the data and the order of processing, without explicitly coding these informations manually in order to remain independent of the platform and leave room for automatic tools.
  • the purpose of the invention is to provide generic formatted data to overcome at least one of the aforementioned drawbacks and thus to accelerate the placing on the market of data processing hardware and software, particularly images, in particular automatically and quickly obtaining an optimized implementation for various platforms of any algorithm.
  • the invention thus relates to a method for providing generic formatted data to at least one digital data processing means for translating the generic formatted data into specific formatted data.
  • the generic formatted data comprises data relating to logical blocks, at least one of the logical blocks corresponding to an object to be processed based, directly or indirectly, specific formatted data by at least one processing platform with processor (s) and memory (s), located downstream of the processing means or integrated into the processing means.
  • the object to be processed consists of elementary information of the same nature, each of which is represented by at least one numerical value.
  • the method comprises the following steps:
  • - Data is provided by digital processing first data, forming part of the generic formatted data, and describing at least one sequence of generic operations to be performed on at least one logic block and / or on at least one parameter.
  • Second data is provided by means of digital processing, for generic operations involving multiple logical blocks.
  • These second data are part of the generic formatted data and relate to the relative position, according to at least one dimension of the object, in particular spatial and / or temporal, of the blocks and / or parameters, some by relative to the others, and / or relating to the relative scale, according to at least one dimension of the object, in particular spatial and / or temporal, logic blocks and / or parameters with respect to each other.
  • the generic formatted data is digital data describing a processing to be performed on an object in one or more dimensions, included in the group comprising: an image, a digitized sound signal, a sequence of images, a modulated signal, a simulation data item and a digital mesh.
  • An object to be processed is a physical entity consisting of physical data in the form of elementary information included in the group comprising: the pixels of an image, the samples of a digitized sound signal, the intensity and the phase of a signal modulated, a data characterizing the state of a simulation datum, the temporal and / or spatial information characterizing the points of a digital mesh.
  • the generic formatted data provided by the processing means excludes the data relating to the identification of the basic information and the order in which the basic information will be processed by the platform, so that the generic formatted data is independent of the platform. treatment used. These generic formatted data are also independent of data relating to the decomposition of the object into sub-objects, the shape, size and overlap of these sub-objects, and the storage of the elementary information constituting these sub-objects in a memory.
  • the generic formatted data is digital data for describing a processing to be performed on an object by a data processing platform, regardless of the platform itself.
  • These generic formatted data are, in the context of the invention, provided to a processing means that may contain the processing platform, or be upstream of it.
  • the treated objects correspond to a set of basic information of the same nature; these objects are for example images, digitized sounds, video or simulation data.
  • the generic sequence of operations does not include a loop.
  • the second data are part of the generic formatted data and relate to the relative position, according to at least one dimension of the particular spatial and / or temporal object, of the blocks and / or parameters relative to one another. , and / or relate to the relative scale, according to at least one dimension of the particular spatial and / or temporal object, logic blocks and / or parameters with respect to each other.
  • the objects and sub-objects as well as the logical blocks have several dimensions.
  • the dimensions of the subobjects and logical blocks correspond to all or part of the dimensions of the object.
  • the dimensions can be of various natures, in particular: -spatial, for example a distance, an angle or a course in a mesh, -temporal,
  • -frequency for example a color, a frequency, a frequency band -a phase, a decomposition according to another vector space base, for example a wavelet decomposition
  • a fixed image with 2 dimensions each corresponding to distances, in particular measured in pixels
  • a raw fixed image with 2 dimensions each corresponding to distances, the pixels each being provided with a color, for example red, green or blue
  • an animated image with 3 dimensions, corresponding, for 2 of them, to distances, in particular measured in pixels and for one of them to time, a relief image with 3 dimensions, corresponding to distances,
  • an image with dimensions of distance and / or of angle and / or temporal, and / or frequency
  • a sound with 2 dimensions corresponding to time and a channel
  • a modulated signal with one or more dimensions corresponding to time and, optionally, a frequency and, optionally, a position in space or an angle
  • the elementary information of an object may have a position and / or an absolute scale, in particular spatial and / or temporal and / or frequency, but also according to at least one dimension of the object as well as in any space, especially a space consisting of wavelets:
  • an elementary information of an object "sound" can correspond to an intensity; in this case, the elementary information has an absolute position corresponding to a given instant and, in the case of a multichannel sound, to a given channel.
  • an elementary information of an "image" object can correspond to a pixel; in this case, the elementary information has an absolute position corresponding to a position in the image and, in the case of a video image, at a given moment.
  • An elementary information of a "simulation data" object can correspond to a state; in this case, the elementary information has an absolute position corresponding to a mesh node and at a given moment.
  • an elementary information of a "modulated signal” object may correspond to an intensity and / or a phase; in this case, an elementary information has an absolute position corresponding to a given instant and, possibly, to a given frequency and / or to a given position, if several antennas or transmitters are used.
  • Elementary information is a piece of information to be processed, represented by one or more numerical values. This information can be encoded according to various types of coding such as 8-bit signed coding, 10-bit coding, or signed 16-bit coding. In the case where the object is an image, for example, the basic information will be the pixels of this image.
  • the objects can be raw images ("raw" type) before demosaicing operation, in which case an elementary information is a pixel represented by a corresponding numerical value, according to the absolute position of the pixel, for example to red, green or blue.
  • the objects may also be visible images, in which case an elementary information is a pixel represented, for example, by three numerical values, each representing a color, for example red, green and blue.
  • the objects can also be sequences of images, in particular raw or visible, in which case an elementary information is a pixel of an image of the image sequence.
  • Objects for example, correspond to videos.
  • the image may be derived from an image capture apparatus and / or intended for an image reproduction apparatus:
  • An image capture device is, for example, a disposable camera, a digital camera, a DSLR (digital or not), a scanner, a fax, an endoscope, a camera, a camcorder, a camera of surveillance, a toy, a camera or a camera integrated or connected to a telephone, a personal assistant or a computer, a thermal camera, an ultrasound machine, an MRI (magnetic resonance) imaging apparatus, a device X-ray radiography.
  • An image rendering apparatus is, for example, a screen, a projector, a television set, virtual reality glasses, or a printer.
  • a device for capturing and restoring images is, for example, a scanner / fax / printer, a mini lab for printing photos, a video conference device.
  • the processing platform can take various forms depending on the application.
  • An image capture apparatus that produces processed images, for example a digital camera that integrates a processing platform.
  • An image rendering apparatus which displays or prints processed images, for example a video projector or a printer including a processing platform.
  • a mixed device that corrects the defects of its elements, for example a scanner / printer / fax including a processing platform.
  • a professional image capture device that produces processed images, for example an endoscope including a processing platform.
  • the processing platform can be deported in whole or in part to a server.
  • the processing that will be applied to the object in the platform corresponds to an algorithm, described by one or more sequences of generic operations, which can intervene in various domains such as, for example, image processing, compression and decompression data processing, signal modulation and demodulation, measurement, data analysis, database indexing or search, computer vision, graphics processing, simulation or domain implementing a large amount of data.
  • Generic operations are operations that apply to logical blocks, that is abstract entities, without any notion of size, shape, or time. Generic operations can produce logical blocks.
  • at least one logic block corresponds to the object to be processed.
  • the logical blocks are of several types according to the generic operation, for example, in the case where the object is an image,
  • At least one logic block is of "raw" type, and / or at least one logical block is of red type, and / or
  • At least one logical block is of green type, and / or
  • At least one logic block is of blue type, and / or
  • At least one logic block can be represented by 8-bit data, and / or at least one logic block can be represented by 16-bit data.
  • At least one logic block contains multiscale data, for example scaled data 1, H and 1/8. This allows for generic operations at multiple scales, and then combine the results
  • the logical blocks may, in one embodiment, correspond, according to the type of the logical block, to physical blocks consisting of elements of the same nature as the elementary information or else constituted by elements of a different nature than the information elements.
  • elementary The notion of absolute or relative position is independent of the type of the logical block.
  • elementary information applies to all elements regardless of the type of the logic block.
  • An algorithm may, for example, without the list being limiting, correspond, in the case where the object, is an image to:
  • a treatment in particular for improving the rendering of the contrast
  • a treatment in particular for improving the rendering of the details, and / or
  • the object to be processed is generally, during the processing, broken down into sub-objects, that is to say into groups of elementary information having a determined size and shape, both in space and in time, or other dimensions of the object.
  • the value of a parameter can: be constant and intrinsic to the algorithm; in this case the parameter value may in particular be transmitted to the processing means or to the platform, and / or
  • the value of the parameter may depend on the type of optics that affects the level of blur in the image; in this case, the parameter value may, in particular, be transmitted to the processing means or to the platform, and / or
  • the value of the parameter may depend on the gain of the sensor actually used to capture said object which has an impact on the noise level in the image; in this case the parameter value can in particular be transmitted, chosen or calculated by the platform, and / or - depend on the absolute position of the elementary information in the object; in this case the parameter value may in particular be transmitted, chosen or calculated by the platform, and / or
  • the parameter value can be determined simultaneously or a posteriori with respect to the definition of the algorithm.
  • the value of some parameters may vary from one object to another, from one sub-object to another, or from one elementary information to another.
  • the value of the parameter is calculated at each change.
  • the possible values of the parameter are calculated a priori, and, at each change, the index or the address making it possible to access the value of the parameter, for example in a table, is determined.
  • a limited number of sets of parameter values are determined, each set is stored and for each sub-object the set to be used is selected, for example by calculating a function of the position giving the address of the game to use.
  • the object is an image
  • the image is decomposed into juxtaposed rectangular sub-objects, the sub-objects being processed, for example, from left to right and then from top to bottom.
  • the sub-objects are chosen and stored in one of the following ways, without the list being exhaustive:
  • the size of the sub-objects is chosen to be able to process a sub-object without access to slow memory; we can, for example, take sub-objects corresponding to squares of 32x32 pixels: the result of the computation on the preceding sub-object is transferred in slow memory during the computation relating to the current sub-object, and during the transfer of the slow memory to the fast memory of the data necessary for the calculation relating to the following sub-object
  • the size of the sub-objects is chosen to be able to process a sub-object using the cache memory as much as possible; we can, for example, take sub-objects corresponding to squares of 32x32 pixels or sub-objects of 1 pixel or sub-objects of 4 pixels, especially in the case of a raw image, t ⁇ pe "raw" ,
  • the size of the sub-objects is chosen as equal to or multiple of, the size of a vector that the platform knows how to process and store, it will be possible for example to take sub-objects corresponding to 64 horizontal pixels.
  • the decomposition into sub-object can be adapted in a manner similar to the platform.
  • the invention thus makes it possible to automate and make more effective the adaptation to any platform.
  • the first and second data and the values of the parameters are sufficient for the platform to process the object.
  • the first data further comprises information on the number of bits on which are encoded the values representing the logical blocks.
  • the specific formatted data is the data obtained at the output of the processing means. They are, in fact, a translation of the generic formatted data, and in that they represent, in the same way, a processing algorithm intended to be applied to an object to be processed.
  • This specific formatted data contains particular operations, derived from generic operations, and describing the instructions that will be performed on the object itself during processing in the platform.
  • the generic formatted data according to the invention contains enough information to allow the calculation of these specific formatted data, without however being dependent on this platform. Indeed, the operations defined by the generic formatted data are generic operations applying to logical blocks, as defined above.
  • the first data exclude data describing generic operations involving one or more elementary information independently of the other elementary information belonging to the same logical block (s). Indeed, a logical block being an abstract entity, it is not possible to distinguish and identify the different elementary information that compose it.
  • the generic formatted data can be provided to different processing platforms, regardless of the type of architecture of the platform and also regardless of the format of the object to be processed.
  • the generic formatted data will be the same for a 3 million pixel image as for a 5 million pixel image. In this way, when a new algorithm is developed, it is enough to define once only generic formatted data to be able to operate, after a very short delay, this algorithm in an optimized way in terms of performance and memory size on different platforms. .
  • the second data may have different characteristics.
  • At least part of the second data provided to the processing means and / or the value of at least one parameter are, for a given generic operation, common to all the elementary information of the object to be treat.
  • at least part of the second data provided to the processing means and / or the value of at least one parameter depend on the absolute position of the elementary information in the object to be processed. For example, using a parameter common to all the basic information for a filter makes it possible to increase the sharpness in a uniform manner.
  • the use of a parameter dependent on the absolute position of the elementary information in the object to be processed, for a filter makes it possible to increase the sharpness more significantly at the edge in order to compensate for an optical defect.
  • the use of a parameter dependent on the absolute position of the elementary information in the object to be processed for a vignetting correction makes it possible to obtain a stronger edge compensation in order to compensate for an optical defect.
  • the use of a parameter depending on the absolute position of the elementary information in the object to be treated for a demosaicing process makes it possible to treat the "red” pixels, the "green” pixels and the pixels differently. "Blue” of a raw image from a sensor.
  • second data in particular a displacement, which depends on the absolute position of the elementary information in the object to be processed for a numerical zooming calculation (“zoom”) or a distortion correction, makes it possible to obtain the pixels needed to calculate the interpolation at each point.
  • second data in particular a displacement, depending on the absolute position of the elementary information in the object to be processed for a format change, makes it possible to obtain the pixels necessary for the new format.
  • second data in particular a displacement, depending on the absolute position of the elementary information in the object to be processed for a format change
  • the pixels necessary for the new format can, for example, obtain the pixel values for a YUV type color coding from the separate luminance (Y) and red and blue (U and V) chrominance information.
  • the generic operations comprise at least one generic position operation that makes it possible to obtain a logical block consisting of the absolute position along one dimension of the object, as well as a generic indirect operation, which makes it possible to obtain, from a first block, a second block by displacement and / or scaling according to a third block or a parameter.
  • the generic operations comprise at least one elementary generic operation included in the group comprising: the addition of logic blocks and / or parameters, the subtraction of logic blocks and / or parameters, the calculation of the absolute value the difference between logical blocks, the multiplication of logical blocks and / or parameters, the maximum among at least two logical blocks and / or parameters, the minimum of at least two logical blocks and / or parameters grouping and unbundling of blocks logic, the calculation of a logic block by applying a parameter, corresponding to a correspondence table, to a logic block, the conditional choice of a logical block among at least two logical blocks and / or parameters, this choice is doing the following: if a> b we choose c, otherwise we choose d, with a, b, c, and d which are logical blocks and / or parameters, the histogram of a logical block, the change d scale of a logic block according to a parameter and / or a logic block, the relative displacement of a logic block according to
  • Generic operations implementing a logical block and a parameter, such as addition can be translated into processing in the platform, and correspond, for example when the generic operation is an addition, adding each element or elementary information of the processed physical block, corresponding to the logic block, with the value of the parameter corresponding to the absolute position of the element or of the elementary information processed.
  • the generic operations include complex generic operations corresponding to groups of generic elementary operations used as such.
  • Relative positions and relative scales may correspond to various concepts depending on the nature of the object. They apply between any 2 blocks, whatever their type (in the case of an image as described above, a logic block can in particular be raw, red, green, 8 bits ).
  • the absolute or relative position and the absolute or relative scale may correspond, in one embodiment, each to 2 values (vertical and horizontal); the pixels in the top line of an object can have as absolute positions (0; 0)
  • the pixels of the n th line can have as absolute positions (n; 0) (n; 1) (n; 2); in this case the relative positions can be coded in the following way: (- 1; 0) indicates at the top, (0; 1) indicates at the right and (2; -2) indicates 2 pixels below and 2 at the left; a relative scale of (0.5; 0.5) corresponds to a resolution of half in each direction. More generally, a combination of relative displacement and relative scale can be encoded using 2 functions f and g as follows: (f (x; y); g (x; y))) for each pixel of absolute position x, y. It should be noted that a rounding rule is necessary in order to take, for example, the nearest pixel. So :
  • the absolute or relative position and the absolute or relative scale may each correspond to two values ( vertical and horizontal); the pixels in the top line of an object can have as absolute positions (0; 0)
  • the pixels of the n th line can have as absolute positions (n; 0,5) (n; 1,5) (n; 2,5). if the line is odd, and (n; 0) (n; 1) (n; 2) ... if the line is even; the relative position can correspond to 2 values
  • the absolute or relative position may correspond to 3 values (vertical, horizontal and temporal), for example, (- 1; 0; 0) indicates a pixel located in high in the same picture, (0; 0; -1) indicates the pixel having the same position in the previous image and (2; -2, -1) indicates the pixel located 2 pixels below and 2 left in the previous image.
  • a combination of relative displacement and relative scale can be encoded using 3 functions f, g, h as follows: (f (x; ⁇ ; t); g (x; y; t )); h (x; y; t)) for each pixel of absolute position x, y at time t. It should be noted that a rounding rule is necessary in order to take, for example, the nearest pixel.
  • the absolute or relative position may correspond to 1 value
  • the absolute or relative position may correspond to 2 values
  • a combination of relative displacement and relative scale can be encoded using 2 functions f, g as follows: (f (t; c); g (t; c)) for each sound sample position at time t for channel c. It should be noted that a rounding rule is necessary to take, for example, the instant and the nearest channel.
  • the absolute or relative position may correspond to n values, each corresponding to a spatial or temporal dimension depending on the topology of the mesh.
  • a combination of relative displacement and relative scale can be encoded using n functions. It should be noted that a rounding rule is necessary in order to take, for example, the node and the nearest instant.
  • the absolute or relative position may correspond to n values, respectively corresponding to the time, if appropriate to the frequency channel (transmission or reception on several frequencies) and if necessary (several transmitters or spatially arranged receivers) to a spatial dimension.
  • a combination of relative displacement and relative scale can be encoded using n functions, and a rounding rule should be chosen.
  • the absolute or relative position may correspond to n values, each corresponding to a dimension of the object which, depending on the case, may be of a temporal, spatial, frequency, phase or other.
  • a combination of relative displacement and relative scale can be encoded using n functions, and a rounding rule should be chosen.
  • the absolute or relative position may correspond to n values each corresponding to a dimension of the object which, depending on the case, may be temporal, spatial, frequency, phase Or other.
  • n values each corresponding to a dimension of the object which, depending on the case, may be temporal, spatial, frequency, phase Or other.
  • a combination of relative displacement and relative scale can be encoded using n functions, and a rounding rule should be chosen.
  • the relative positions and / or the relative scales of the logical blocks according to at least one dimension of the object, in particular spatial and / or temporal have integer values or fractional values as described in FIG. the examples above.
  • the elementary information is represented by fixed-point numeric values.
  • the generic operations comprise offset operations, a saturation operation and / or at least one elementary generic operation combined with this saturation operation.
  • the parameters include information representing the type of coding of the elementary information.
  • the elementary information is the pixels of an image
  • they are represented, for example, on 24 bits representing 3 colors in a red-green-blue (RGB) coding, or on N bits representing a color per pixel varying according to the position of the pixel for the raw images from a sensor, or 8 bits corresponding to the luminance information and chrominance Y or U or V for an image coded with a YUV type coding.
  • RGB red-green-blue
  • N bits representing a color per pixel varying according to the position of the pixel for the raw images from a sensor
  • 8 bits corresponding to the luminance information and chrominance Y or U or V for an image coded with a YUV type coding It is therefore useful to provide the processing means with data enabling it to know the type of coding in order to correctly translate the generic formatted data.
  • the generic formatted data represents processing algorithms of objects constituting images, and which are composed of elementary information forming pixels.
  • the processing platform is part of an image capture and / or rendering apparatus, and the values of the parameters are related to the characteristics of the optics and / or the sensor and / or the image.
  • imager and / or electronics and / or software of the capture and / or image recovery apparatus The characteristics can be, in particular, fixed intrinsic characteristics for all objects or variables depending on the object, for example noise characteristics that vary according to the gain of a sensor.
  • the characteristics can also be identical for all the elementary or variable information according to the absolute position of the elementary information, for example the fuzziness characteristics of the optics.
  • the object to be processed is a digitized sound signal, and in this case, the elementary information is the sound samples of this signal.
  • the relative positions present in the second data will generally be time positions. However, it may happen that these positions are spatial, especially in the case where the object to be treated is a sound present on several channels.
  • the object to be processed is a digital mesh and the elementary information is the spatial and / or temporal information characterizing each point of the mesh.
  • FIG. 1 represents a data processing device using a method according to the invention
  • FIG. 2 represents a device similar to that of FIG. 1, in the case where several processing platforms are provided, and
  • FIG. 3 represents an example of a sequence of generic operations applied to several logical blocks and to a parameter.
  • the device shown in FIG. 1 is intended to process an image 22.
  • This image comprises a set of pixels each of which is represented by at least one numerical value.
  • generic data formatted data 12 is provided to digital data processing means 12.
  • This processing means is a compiler in the example.
  • Generic formatted data includes first and second data that describe generic operation sequences and that describe the relative positions of the logical blocks involved in these generic operations. These first and second data will be illustrated in Table 1.
  • the processing means 10 provides a processing platform
  • the specific formatted data contains different types of data, such as data concerning the organization of the pixels in the platform memory, the order in which the pixels are processed by the platform or the specific operations performed by the platform, and their grouping.
  • the processing platform 20 then uses these specific formatted data 18 to process the image 22 it receives as input.
  • FIG. 2 The system shown in FIG. 2 is similar to that shown in FIG. 1, in the case where two treatment platforms are provided.
  • two sets of generic formatted data 32a and 32b are provided to a processing means 30.
  • These generic formatted data 32a and 32b each contain first and second data, respectively 34a for the generic formatted data 32a, and 34b for the generic formatted data 32b.
  • These first and second data have the same characteristics as the first and second data described in connection with FIG.
  • This processing means 30 provides two platforms
  • the platform 40a thus processes an object 42a according to the data 32a or according to the data 32b.
  • the platform 40b processes an object 42b according to the data 32a or according to the data 32b.
  • the same processing means 30 is used to provide formatted data specific to two different processing platforms, 40a and
  • FIG. 2 thus illustrates several advantages of the invention: in the case where the platforms 40a and 40b are identical, one can rapidly replace the generic formatted data 32a by 32b and translate them into specific formatted data 38b optimized for the platform. This reduces the time to market the platform. in the case where the platforms 40a and 40b are different, and the formatted data 32a and 32b are identical, they can quickly be translated into specific formatted data 38a and 38b optimized for each platform. This also reduces the time to market of multiple platforms.
  • Table 1 below and FIG. 3 show an example of a sequence of generic operations applied to a logic block B1.
  • This sequence has three generic operations.
  • the columns of the table represent in order: - the rank of the operation in the sequence, the name of the generic operation, the logical block (output) on which is written the result of the generic operation, it is the place where this result would be if we reconstituted the object at the end of each operation, the first input (input 1) of the generic operation, which may be a logic block or a parameter, the relative position of the logic block to be used with respect to the input logic block 1, if any, - the second input (input 2) of the generic operation, which may also be a logic block or a parameter, and the relative position of the logic block to be used with respect to the input logic block 2, if any.
  • “Relative position” is the information present in the second data provided to a processing means by a method according to the invention.
  • this information is in the form of "left” and “right” to be understandable, but in fact, in generic formatted data, it can also be encoded by numerical values such as (0; 1) as described. in the above exemplary embodiments and / or by functions such that f (x; y).
  • the generic operations comprise at least one generic position operation which makes it possible to obtain a logical block consisting of the absolute position according to one dimension of the object, as well as a generic indirection operation which makes it possible to obtain , from a first block, a second block by displacement and / or scaling according to a third block or a parameter.
  • the relative position and / or relative scale functions can then be calculated, for example, 0.5 * (x-100) using generic block operations, and then use the generic operation of indirection to effect relative displacement and / or relative relative scaling.
  • Table 1 is only an example of coding, the first data and second data can be coded in various ways in tabular form, but also in symbolic form, in graphic form or in any other form. Of in addition, additional information relating to data types, offsets and saturations are not shown for the sake of simplification of the example.
  • the first logic block used in this sequence of operations is a logic block B1 (51).
  • the first generic operation is an addition (52) between the logic block B1 shifted to the left (51g), and the logic block B1 shifted to the right (5Id).
  • the second operation (54) is a transformation of the block B2 (53) with respect to a table. This operation therefore has the block B2 (53) and a Param1 parameter (55) which represents the modification table.
  • the logic block B4 (58) is thus the block obtained at the end of the sequence of generic operations.
  • the generic formatted data in the example in Table 1 are platform-independent, from the object's decomposition to subobjects, from the way in which the object's basic information is traced, from the order in which the elementary information will be processed in the platform, as well as the organization in memory.
  • the data Table 1 generic formats can be translated in various ways into specific formatted data or code for the platform, for example, without the list being limiting, according to the following translations.
  • a first example of a translation although not optimal in terms of memory and computation time, makes it possible to illustrate a simple translation without going through a decomposition into sub-objects:
  • a second example of translation shows that the size of the memory used can be decreased without changing the generic formatted data. Indeed, in the first example, 4 physical blocks of size close to the image are used. We can only use 2 physical blocks using the same memory for BP2, BP3 and BP4. We obtain the following translation:
  • a third example of translation shows that one can reduce the computation time without changing the generic formatted data.
  • two physical blocks of size close to the image are used, but the physical block BP2 is written 3 times entirely, the physical block BP1 is read out twice, and the physical block BP2 is read out 2 times entirely. .
  • the result is written in the same memory area as the input. This makes it possible to further reduce the size of the memory and to make local memory accesses, which is very favorable in the case of a cache memory or a paged memory. We thus obtain the following translation:
  • a fifth example of a translation is particularly suitable for a signal processing processor with a small fast memory and a large slow memory, each sub-object is a rectangle for example 32x32 or any other value maximizing the use of the fast memory, the rectangles being joined.
  • the sub-objects are traversed from left to right then from top to bottom:
  • DMA direct memory access
  • a sixth example of a translation is particularly suitable for a vector processor capable of applying the same calculation to the various pixels of the vector, each sub-object is a rectangle for example 64 horizontal pixels or any other value equal to the size of a vector that the platform knows process and store. This translation does not require any memory because a vector is processed at a time. We thus obtain the following translation:
  • each line create a vector VO containing on the right the 2 pixels of left of the line
  • Extract from VO and Vl the vector V2 corresponding to the two right-hand pixels of VO and the left-hand pixels of Vl excluding the 2 right-hand pixels of VO; add V1 and V2 to obtain V2, apply the table to each pixel of V2 to obtain V2, Extract from VO and V1, the vector V3 corresponding to the right pixel of VO and the left pixels of V1 excluding the pixel from the right of VO; copy Vl into VO for the next iteration; multiply V2 by V3 to obtain V2, store the result V2 in the current output physical block.
  • the examples produce a smaller image than the input image. It is easy, if necessary, to obtain an output image of the same size as the input image by adding code at the beginning and end of each line to duplicate the edge pixel.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

L' invention se rapporte à un procédé pour fournir des données formatées génériques (12) à au moins un moyen de traitement numérique de données (10) , destiné à traduire les données formatées génériques en données formatées spécifiques (18) , les données formatées génériques (12) comprenant des données relatives à des blocs logiques, au moins un des blocs logiques correspondant à un objet (22) à traiter directement ou indirectement en fonction des données formatées spécifiques (18) par au moins une plateforme de traitement (20) à processeur (s) et mémoire (s), située à l'aval du moyen de traitement (10) ou intégrée dans le moyen de traitement (10), l'objet (22) étant constitué d'informations élémentaires de même nature, dont chacune est représentée par au moins une valeur numérique.

Description

PROCEDE POUR FOURNIR DES DONNEES A UN MOYEN DE TRAITEMENT
NUMERIQUE
La présente invention concerne un procédé pour fournir des données formatées génériques à un moyen de traitement numérique de données .
Lorsqu'on souhaite développer de nouveaux algorithmes pour une ou plusieurs plateformes de traitement d'objets avec de fortes contraintes en terme de mémoire consommée et puissance de calcul consommée, la durée de mise au point est très longue. En effet, chaque plateforme a ses propres caractéristiques, tant en terme de matériel (par exemple nombre et type de processeurs ou taille et type de mémoire), qu'en terme de langage utilisé (C pour un processeur scalaire et assembleur pour un processeur vectoriel) . Ainsi, même si un algorithme a déjà été développé pour une plateforme, son adaptation optimisée pour une autre plateforme demande une réécriture quasi-complète du programme ou code.
Par exemple, un processeur de traitement du signal dispose d'une petite mémoire locale et doit recopier les données depuis et vers la mémoire principale à partir de cette mémoire locale. Par exemple encore, un processeur vectoriel, notamment de type SIMD (Single Instruction Multiple Data) doit traiter des données groupées par vecteurs de tailles différentes selon la plateforme et les vecteurs ne sont pas exprimables de manière indépendante de la plateforme lorsqu' on utilise un langage tel que le langage C. Ces adaptations constituent un obstacle à la diffusion de nouveaux algorithmes puisque, par exemple, l'adaptation d'un logiciel de traitement d' image à un type d' appareil photographique peut demander plusieurs mois de développement.
Or, le marché des appareils de prise de vue, notamment les téléphones munis d'un appareil photographique, de type « caméraphones », est très dynamique, avec un renouvellement de la gamme tous les six à douze mois et une évolution très rapide des fonctionnalités. Il est donc indispensable de pouvoir adapter rapidement ces nouvelles fonctionnalités pour pouvoir suivre le marché.
Par ailleurs, la puissance de calcul augmente très vite et il est donc possible de tirer parti de cette performance avec des algorithmes de plus en plus puissants, pour peu que l'on puisse les optimiser rapidement. D'autre part, les caractéristiques des capteurs évoluent très vite et il est donc nécessaire d'adapter les algorithmes de traitement d'images aux caractéristiques de ces capteurs, notamment de bruit qui croit avec la miniaturisation, pour peu que l'on puisse les optimiser rapidement .
L' invention part de la constatation que, pour remédier à ces inconvénients, il faudrait développer les algorithmes dans un langage indépendant de l'organisation des données et de l'ordre des traitements, sans coder manuellement explicitement ces informations afin de rester indépendants de la plateforme et de laisser toute marge de manœuvre à des outils automatiques.
Les langages existants ne permettent pas d'atteindre cet objectif, puisqu'ils imposent tous des conditions qui caractérisent les algorithmes pour une plateforme donnée . Ainsi, par exemple, les langages impératifs tels que le langage C imposent le codage explicite des boucles, et donc la définition d'un ordre de traitement. Les langages tableaux tels que Matlab, quant à eux, permettent de mélanger des traitements tableaux avec des traitements directs sur les informations élémentaires, ces traitements directs ayant pour conséquence de rompre la régularité du code et d'empêcher des optimisations automatiques poussées .
De plus, avec les langages connus, pour effectuer des opérations sur des images avec des déplacements relatifs ou des échelles relatives, notamment fonction de la position absolue dans l'objet, il est nécessaire d'utiliser des manipulations explicites des informations élémentaires en utilisant des accès aux pixels et des boucles, ce qui introduit une forte dépendance du code à la plateforme, en terme, notamment, de mémoire et de parallélisme .
Ainsi, les programmes écrits avec de tels langages sont dépendants de la plateforme de traitement de données, puisqu'ils contiennent des instructions mettant directement en jeu les informations élémentaires .
L' invention a pour but de fournir des données formatées génériques visant à remédier à au moins un des inconvénients cités précédemment et ainsi à permettre d'accélérer la mise sur le marché de matériel et de logiciels de traitement de données, notamment des images, en obtenant automatiquement et rapidement une implémentation optimisée pour diverses plateformes d'un algorithme quelconque.
En outre, l'invention permet de modifier tardivement les algorithmes, par exemple pour:
- bénéficier de la performance des processeurs dès leur mise sur le marché, et/ou - bénéficier des dernières avancées en matière de traitement de données, notamment d'images, et/ou
- tenir compte des caractéristiques particulières de la plateforme, par exemple, dans le cas d'un appareil de capture d'image, adapter rapidement un algorithme aux caractéristiques d'un capteur et/ou d'une optique.
L' invention concerne ainsi un procédé pour fournir des données formatées génériques à au moins un moyen de traitement numérique de données, destiné à traduire les données formatées génériques en données formatées spécifiques . Les données formatées génériques comprennent des données relatives à des blocs logiques, au moins un des blocs logiques correspondant à un objet à traiter en fonction, directement ou indirectement, des données formatées spécifiques par au moins une plateforme de traitement à processeur (s) et mémoire (s), située à l'aval du moyen de traitement ou intégrée dans le moyen de traitement. L'objet à traiter est constitué d'informations élémentaires de même nature, dont chacune est représentée par au moins une valeur numérique .
Le procédé comprend les étapes suivantes :
- On fournit au moyen de traitement numérique des premières données, faisant partie des données formatées génériques, et décrivant au moins une séquence d'opérations génériques à réaliser sur au moins un bloc logique et/ou sur au moins un paramètre .
- On fournit des secondes données au moyen de traitement numérique, pour les opérations génériques impliquant plusieurs blocs logiques.
Ces secondes données font partie des données formatées génériques et se rapportent à la position relative, selon au moins une dimension de l'objet, notamment spatiale et/ou temporelle, des blocs et/ou des paramètres les uns par rapport aux autres, et/ou se rapportant à l'échelle relative, selon au moins une dimension de l'objet, notamment spatiale et/ou temporelle, des blocs logiques et/ou des paramètres les uns par rapport aux autres .
Les données formatées génériques sont des données numériques décrivant un traitement à apporter sur un objet à une ou plusieurs dimensions, compris dans le groupe comprenant : une image, un signal sonore numérisé, une séquence d'images, un signal modulé, une donnée de simulation et un maillage numérique .
Un objet à traiter est une entité physique constitué de données physiques sous forme d' informations élémentaires comprises dans le groupe comprenant : les pixels d'une image, les échantillons d'un signal sonore numérisé, l'intensité et la phase d'un signal modulé, une donnée caractérisant l'état d'une donnée de simulation, les informations temporelles et/ou spatiales caractérisant les points d'un maillage numérique.
Les données formatées génériques fournies au moyen de traitement excluent les données relatives à l'identification des informations élémentaires et à l'ordre dans lequel les informations élémentaires seront traitées par la plateforme, de telle façon que les données formatées génériques soient indépendantes de la plateforme de traitement utilisée. Ces données formatées génériques sont également indépendantes de données relatives à la décomposition de l'objet en sous-objets, à la forme, taille et recouvrement de ces sous-objets, et au stockage des informations élémentaires constituant ces sous- objets dans une mémoire.
Ces données relatives à l'ordre et à la décomposition en sous-objets sont déterminées par le moyen de traitement. Dans la présente description, les données formatées génériques sont des données numériques permettant de décrire un traitement à apporter sur un objet par une plateforme de traitement de données, indépendamment de la plateforme elle- même. Ces données formatées génériques sont, dans le cadre de l'invention, fournies à un moyen de traitement qui peut contenir la plateforme de traitement, ou se trouver en amont de celle-ci. Les objets traités correspondent à un ensemble d'informations élémentaires de même nature ; ces objets sont par exemple des images, des sons numérisés, de la vidéo ou encore des données de simulation.
De préférence, la séquence d'opérations générique ne comprend pas de boucle.
Dans une réalisation, les secondes données font partie des données formatées génériques et se rapportent à la position relative, selon au moins une dimension de l'objet notamment spatiale et/ou temporelle, des blocs et/ou des paramètres les uns par rapport aux autres, et/ou se rapportent à l'échelle relative, selon au moins une dimension de l'objet notamment spatiale et/ou temporelle, des blocs logiques et/ou des paramètres les uns par rapport aux autres .
Dans une réalisation, les objets et sous-objets, ainsi que les blocs logiques ont plusieurs dimensions .
Les dimensions des sous-objets et des blocs logiques correspondent à toutes ou une partie des dimensions de l'objet. Les dimensions peuvent être de diverses natures, notamment : -spatiale, par exemple une distance, un angle ou un parcours dans un maillage, -temporelle,
-fréquentielle, par exemple une couleur, une fréquence, une bande de fréquence -une phase, -une décomposition selon une autre base d'espace vectoriel, par exemple une décomposition en ondelettes
-de manière générale, les dimensions de tout espace de topologie quelconque.
La liste suivante, non limitative, donne des exemples d'objets avec leurs dimensions :
-une image fixe avec 2 dimensions, correspondant chacune à des distances, notamment mesurée en pixels, -une image fixe brute avec 2 dimensions, correspondant chacune à des distances, les pixels étant chacun doté d'une couleur, par exemple rouge, vert ou bleu,
-une image fixe en couleur, avec 2 dimensions, correspondant chacune à des distances, et une dimension correspondant à une fréquence représentant le canal couleur, par exemple rouge/vert/bleu,
-une image animée avec 3 dimensions, correspondant, pour 2 d'entre elles, à des distances, notamment mesurées en pixels et pour une d'entre elles au temps, -une image en relief avec 3 dimensions, correspondant à des distances,
-une image en relief avec 3 dimensions, correspondant, pour 2 d'entre elles à des distances, et pour la troisième à un angle de vue, -une image médicale avec des dimensions de distance et éventuellement des dimensions de canal,
-un hologramme avec des dimensions d'angle de vue,
-de manière plus générale, une image avec des dimensions de distance et/ou d'angle et/ou temporelle, et/ou fréquentielle,
-un son avec une dimension correspondant au temps,
-un son avec 2 dimensions correspondant au temps et à un canal, -un signal modulé avec une ou plusieurs dimensions correspondant au temps et, éventuellement, une fréquence et, éventuellement, une position dans l'espace ou un angle,
-la modulation et démodulation de signal, la mesure, l'analyse de données, l'indexation ou la recherche dans une base de données, la vision par ordinateur, le traitement graphique, la simulation représentés par des informations élémentaires disposés selon une ou plusieurs dimensions,
-de manière plus générale un objet avec une ou plusieurs dimensions.
Dans le cadre de la présente invention, les informations élémentaires d'un objet peuvent avoir une position et/ou une échelle absolue, notamment spatiale et/ou temporelle et/ou fréquentielle mais également selon au moins une dimension de l'objet ainsi que dans tout espace, notamment un espace constitué d' ondelettes :
- une information élémentaire d'un objet « son » peut correspondre à une intensité ; dans ce cas, l'information élémentaire a une position absolue correspondant à un instant donné et, dans le cas, d'un son multicanaux, à un canal donné.
- une information élémentaire d'un objet « image » peut correspondre à un pixel; dans ce cas, l'information élémentaire a une position absolue correspondant à une position dans l'image et, dans le cas d'une image vidéo, à un instant donné.
- une information élémentaire d'un objet « donnée de simulation » peut correspondre à un état; dans ce cas, l'information élémentaire a une position absolue correspondant à un nœud de maillage et à un instant donné. - une information élémentaire d'un objet « signal modulé » peut correspondre à une intensité et/ou une phase; dans ce cas, une information élémentaire a une position absolue correspondant à un instant donné et, éventuellement, à une fréquence donnée et/ou à une position donnée, si plusieurs antennes ou émetteurs sont utilisés. Une information élémentaire est un élément d' information à traiter, représenté par une ou plusieurs valeurs numériques . Ces informations peuvent être codées selon divers types de codage tels que le codage signé sur 8 bits, le codage sur 10 bits, ou encore le codage sur 16 bits signé. Dans le cas où l'objet est une image, par exemple, les informations élémentaires seront les pixels de cette image.
Les objets peuvent être des images brutes (de type « raw ») avant opération de dématriçage (« demosaicing ») , auquel cas une information élémentaire est un pixel représenté par une valeur numérique correspondant, selon la position absolue du pixel, par exemple à du rouge, à du vert ou à du bleu. Les objets peuvent aussi être des images visibles, auquel cas une information élémentaire est un pixel représenté, par exemple, par trois valeurs numériques, représentant chacune une couleur, par exemple rouge, vert et bleu.
Les objets peuvent également être des séquences d'images, notamment brutes ou visibles, auquel cas une information élémentaire est un pixel d' une image de la séquence d' images . Les objets correspondent donc par exemple à des vidéos.
Dans le cas où l'objet est une image, l'image peut être issue d'un appareil de capture d'image et/ou destinée à un appareil de restitution d' images :
- Un appareil de capture d'images est, par exemple, un appareil photo jetable, un appareil photo numérique, un appareil reflex (numérique ou non) , un scanner, un fax, un endoscope, une caméra, un caméscope, une caméra de surveillance, un jouet, une caméra ou un appareil photo intégré ou relié à un téléphone, à un assistant personnel ou à un ordinateur, une caméra thermique, un appareil d'échographie, un appareil d'imagerie IRM (résonance magnétique) , un appareil de radiographie à rayons X. - Un appareil de restitution d'images est, par exemple, un écran, un projecteur, un téléviseur, des lunettes de réalité virtuelle, ou une imprimante.
- Un appareil de capture et de restitution d'images est, par exemple, un scanner/fax/imprimante, un mini lab d'impression photos, un appareil de vidéo conférence.
La plateforme de traitement peut prendre diverses formes selon l'application. A titre d'exemple, dans le cas où l'objet est une image, on citera notamment le cas où la plateforme de traitement est intégrée à l'un des appareils suivants :
- Un appareil de capture d' images qui produit des images traitées, par exemple un appareil photo numérique qui intègre une plateforme de traitement.
- Un appareil de restitution d' images qui affiche ou imprime des images traitées, par exemple un projecteur vidéo ou une imprimante incluant une plateforme de traitement.
- Un appareil mixte qui corrige les défauts de ses éléments, par exemple un scanner/imprimante/télécopieur incluant une plateforme de traitement. - Un appareil de capture d'image professionnel qui produit des images traitées, par exemple un endoscope incluant une plateforme de traitement.
La plateforme de traitement peut être déportés en tout ou partie sur un serveur.
Le traitement qui sera appliqué à l'objet dans la plateforme correspond à un algorithme, décrit par une ou plusieurs séquences d'opérations génériques, pouvant intervenir dans divers domaines tels que, par exemple, le traitement d'image, la compression et la décompression de données, le traitement du son, la modulation et démodulation de signal, la mesure, l'analyse de données, l'indexation ou la recherche dans une base de données, la vision par ordinateur, le traitement graphique, la simulation ou encore tout domaine mettant en œuvre un grand nombre de données. Les opérations génériques sont des opérations qui s'appliquent à des blocs logiques, c'est-à-dire à des entités abstraites, sans notion de taille, ni de forme, ni d'instant. Les opérations génériques peuvent produire des blocs logiques . De préférence, au moins un bloc logique correspond à l'objet à traiter.
La notion d' échelle relative et de position relative de deux blocs logiques et/ou paramètre permet notamment, sans que la liste soit limitative, de:
- combiner plusieurs blocs logiques et/ou paramètres variables en fonction de la position absolue, et/ou
- changer d'échelle, et/ou - réaliser des filtres sur des voisinages, et/ou
- déterminer la valeur d'un paramètre lorsque la valeur dépend de la position absolue de l'information élémentaire de l'objet , et/ou
- changer de représentation.
Dans le cadre de l'invention, les blocs logiques sont de plusieurs types selon l'opération générique, par exemple, dans le cas où l'objet est une image,
- au moins un bloc logique est de type « brut », et/ou - au moins un bloc logique est de type rouge, et/ou
- au moins un bloc logique est de type vert, et/ou
- au moins un bloc logique est de type bleu, et/ou
- au moins un bloc logique est représentable par des données sur 8 bits, et/ou - au moins un bloc logique est représentable par des données sur 16 bits.
Dans une réalisation, au moins un bloc logique contient des données multi échelles, par exemple des données à échelle 1, ^, H et 1/8. Ceci permet de réaliser des opérations génériques à plusieurs échelles, et de combiner ensuite les résultats
Au moment du traitement, les blocs logiques peuvent, dans une réalisation, correspondre, selon le type du bloc logique, à des blocs physiques constitués d'éléments de même nature que les informations élémentaires ou bien constitués d'éléments de nature différente que les informations élémentaires . La notion de position absolue ou relative est indépendante du type du bloc logique. Au sens de l'invention, la notion d'informations élémentaire s'applique à tous les éléments quel que soit le type du bloc logique.
Un algorithme peut, par exemple, sans que la liste soit limitative, correspondre, dans le cas où l'objet, est une image à :
- un calcul, notamment de statistiques, pour une balance des blancs, et/ou
- un calcul, notamment de statistiques, pour une exposition automatique, et/ou
- un calcul, notamment de statistiques, pour une mise au point automatique, et/ou
- un calcul, notamment de statistiques, pour une amélioration de contraste automatique, et/ou - une conversion image brute en image visible (« image pipe ») , et/ou
- une correction de défauts d'optique, et/ou
- une correction de défauts de capteur, et/ou
- une correction de défauts d' imageur, et/ou - un traitement , notamment d'amélioration de netteté, et/ou
- un traitement, notamment d'amélioration de rendu couleur, et/ou
- un traitement, notamment d'amélioration de rendu du contraste, et/ou - un traitement, notamment d'amélioration de rendu des détails, et/ou
- une réduction de bruit, et/ou
- une mesure, et/ou - une compression, et/ou
- une décompression, et/ou
- une interpolation ou un grossissement (zoom) , et/ou
- Un scan, et/ou
- Un effet spécial .
L'objet à traiter est généralement, lors du traitement, décomposé en sous-objets, c'est-à-dire en groupes d'informations élémentaires ayant une taille et une forme déterminées, tant dans l'espace que dans le temps ou les autres dimensions de l'objet.
Généralement, les opérations génériques d'un algorithme font intervenir, en plus des informations élémentaires, des paramètres tels que, par exemple, des coefficients multiplicateurs.
Ces paramètres peuvent correspondre, par exemple, sans que la liste soit limitative à :
- des coefficients de filtres,
- des valeurs de saturation, - des valeurs de décalages, et
- des tables de correspondances .
Dans une réalisation, la valeur d'un paramètre, selon la nature de ce paramètre, peut: - être constante et intrinsèque à l'algorithme ; dans ce cas la valeur de paramètre peut notamment être transmise au moyen de traitement ou à la plateforme, et/ou
- dépendre de la provenance ou de la destination de l'objet : par exemple, dans le cas où l'objet à traiter est une image issue d'un appareil muni d'une optique donnée, la valeur du paramètre peut dépendre du type d'optique qui a un impact sur le niveau de flou dans l'image ; dans ce cas, la valeur de paramètre peut, notamment, être transmise au moyen de traitement ou à la plateforme, et/ou
- dépendre de l'objet à traiter : par exemple, dans le cas où l'objet à traiter est une image issue d'un capteur, la valeur du paramètre peut dépendre du gain du capteur effectivement utilisé pour capturer ledit objet qui a un impact sur le niveau de bruit dans l' image ; dans ce cas la valeur de paramètre peut notamment être transmise, choisie ou calculée par la plateforme, et/ou - dépendre de la position absolue de l'information élémentaire dans l'objet ; dans ce cas la valeur de paramètre peut notamment être transmise, choisie ou calculée par la plateforme, et/ou
- ne pas dépendre de la position absolue de l'information élémentaire dans l'objet.
La valeur de paramètre peut être déterminée simultanément ou à posteriori par rapport à la définition de l'algorithme.
On a vu que la valeur de certains paramètres peut varier d'un objet à l'autre, d'un sous-objet à l'autre, ou d'une information élémentaire à l'autre. Dans ce cas, dans une réalisation, on calcule la valeur du paramètre à chaque changement. Dans une autre réalisation, on calcule à priori les valeurs possibles du paramètre, et, à chaque changement, on détermine l'index ou l'adresse permettant d'accéder à la valeur du paramètre, par exemple dans une table. Dans une autre réalisation, plus particulièrement adaptée aux paramètres dont la valeur varie d'un sous-objet à l'autre en fonction de la position absolue du sous-objet et dont le nombre de valeurs est limité, par exemple les paramètres correspondant aux caractéristiques de flou de l'optique, on détermine un nombre limité de jeux de valeurs de paramètres, on stocke chaque jeu et pour chaque sous-objet on sélectionne le jeu à utiliser, par exemple en calculant une fonction de la position donnant l'adresse du jeu à utiliser.
Dans le cas où l'objet est une image, dans une réalisation l'image est décomposé en sous-objets rectangulaires juxtaposés, les sous-objets étant traités, par exemple, de gauche à droite puis de haut en bas. Selon la plateforme, les sous-objets sont choisis et stockés selon l'une des façons suivantes, sans que la liste soit limitative :
- dans le cas d'un processeur de traitement du signal, disposant d'une petite mémoire rapide et d'une grosse mémoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement d'un sous-objet sans accès à la mémoire lente ; on pourra, par exemple, prendre des sous-objets correspondant à des carrés de 32x32 pixels : le résultat du calcul sur le sous-objet précédent est transféré en mémoire lente pendant le calcul relatif au sous-objet courant, et pendant le transfert de la mémoire lente vers la mémoire rapide des données nécessaires au calcul relatif au sous-objet suivant
- dans le cas d'un processeur scalaire disposant d'une petite mémoire cache et une grosse mémoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement d'un sous-objet en utilisant la mémoire cache le plus possible; on pourra, par exemple, prendre des sous-objets correspondant à des carrés de 32x32 pixels ou des sous-objets de 1 pixel ou des sous-objets de 4 pixels, notamment dans le cas d'une image brute, de tγpe« raw »,
- dans le cas d'un processeur vectoriel, la taille des sous-objets est choisie comme égale à ou multiple de, la taille d'un vecteur que la plateforme sait traiter et stocker, on pourra par exemple prendre des sous-objets correspondant à 64 pixels horizontaux. Dans le cas où l'objet est d'un autre type qu'une image, la décomposition en sous-objet peut être adaptée de manière similaire à la plateforme.
Dans les langages tels le C, cette décomposition en sous- objets et le codage des boucles correspondant doit être explicite en fonction de la plateforme, et réalisé manuellement pour chaque plateforme. Il existe des compilateurs vectoriels qui essaient d'extraire à partir des boucles codées explicitement les sous-objets, mais leur efficacité est limitée, car ils doivent extraire le concept de l'algorithme avant de le coder automatiquement, ce qui est très difficile.
L'invention permet ainsi d'automatiser et de rendre plus efficace l'adaptation à une plateforme quelconque.
Le tableau suivant résume les principales différences entre l'invention et les langages connus :
Dans une réalisation, les premières et secondes données et les valeurs des paramètres sont suffisantes pour que la plateforme puisse traiter l'objet.
Les premières données comprennent en outre des informations sur le nombre de bits sur lesquels sont codées les valeurs représentant les blocs logiques . Les données formatées spécifiques sont les données obtenues en sortie du moyen de traitement. Elles sont, en fait, une traduction des données formatées génériques, et en cela elles représentent, de la même façon, un algorithme de traitement destiné à être appliqué sur un objet à traiter. Ces données formatées spécifiques contiennent notamment des opérations spécifiques, issues des opérations génériques, et décrivant les instructions qui seront effectuées sur l'objet en lui-même lors du traitement dans la plateforme. Les données formatées génériques selon l'invention contiennent suffisamment d' informations pour permettre le calcul de ces données formatées spécifiques, sans toutefois être dépendantes de cette plateforme. En effet, les opérations définies par les données formatées génériques sont des opérations génériques s' appliquant à des blocs logiques, tels que définis plus haut. Ainsi, Les premières données excluent des données décrivant des opérations génériques mettant en jeu une ou plusieurs informations élémentaires indépendamment des autres informations élémentaires appartenant au(x) même (s) bloc (s) logiques. En effet, un bloc logique étant une entité abstraite, il n'est pas possible de distinguer et d'identifier les différentes informations élémentaires qui le composent.
Ainsi, les données formatées génériques peuvent être fournies à différentes plateformes de traitement, quel que soit le type d'architecture de la plateforme et également quel que soit le format de l'objet à traiter. Par exemple, les données formatées génériques seront les mêmes pour une image de 3 millions de pixels que pour une image de 5 millions de pixels . De cette façon, lorsqu'un nouvel algorithme est développé, il suffit de définir une seule fois des données formatées génériques pour pouvoir faire fonctionner, après un délai très court, cet algorithme de façon optimisée en terme de performance et de taille mémoire sur différentes plateformes .
Selon le type d'opération générique mise en jeu dans l'algorithme de traitement, les secondes données peuvent présenter des caractéristiques différentes .
Selon une réalisation de l'invention, au moins une partie des secondes données fournis au moyen de traitement et/ou la valeur d'au moins un paramètre sont, pour une opération générique donnée, communes à toutes les informations élémentaires de l'objet à traiter. Selon une autre réalisation, au moins une partie des secondes données fournis au moyen de traitement et/ou la valeur d'au moins un paramètre dépendent de la position absolue des informations élémentaires dans l'objet à traiter. Par exemple, l'utilisation d'un paramètre commun à toutes les informations élémentaires pour un filtre permet d' augmenter la netteté de manière uniforme.
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter, pour un filtre, permet d'augmenter la netteté de manière plus importante au bord afin de compenser un défaut optique .
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour une correction de vignetage permet d'obtenir une compensation plus forte au bord afin de compenser un défaut optique .
Par exemple, l'utilisation d'un paramètre dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour un dématriçage (« demosaicing ») permet de traiter différemment les pixels « rouges », les pixels « verts » et les pixels « bleus » d'une image brute issue d'un capteur.
Par exemple, l'utilisation de secondes données, notamment un déplacement, dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour un calcul d'agrandissement (« zoom ») numérique ou une correction de distorsion, permet d'obtenir les pixels nécessaires au calcul de l'interpolation en chaque point.
Par exemple, l'utilisation de secondes données, notamment un déplacement, dépendant de la position absolue des informations élémentaires dans l'objet à traiter pour un changement de format, permet d'obtenir les pixels nécessaires au nouveau format. Ainsi on peut, par exemple, obtenir les valeurs de pixels pour un codage couleur de type YUV à partir des informations séparées de luminance (Y) et de chrominance rouge et bleue (U et V) .
Dans une réalisation de l'invention, les opérations génériques comprennent au moins une opération générique de position qui permet d'obtenir un bloc logique constitué de la position absolue selon une dimension de l'objet, ainsi qu'une opération générique d' indirection, qui permet d'obtenir, à partir d'un premier bloc, un second bloc par déplacement et/ou changement d'échelle en fonction d'un troisième bloc ou d'un paramètre .
Dans une autre réalisation, les opérations génériques comprennent au moins une opération générique élémentaire comprise dans le groupe comprenant : l'addition de blocs logiques et/ou de paramètres, la soustraction de blocs logiques et/ou de paramètres, le calcul de la valeur absolue de la différence entre des blocs logiques, la multiplication de blocs logiques et/ou de paramètres, le maximum parmi au moins deux blocs logiques et/ou paramètres, le minimum parmi au moins deux blocs logiques et/ou paramètres le groupement et dégroupement de blocs logiques, le calcul d'un bloc logique par application d'un paramètre, correspondant à une table de correspondance, à un bloc logique, le choix conditionnel d'un bloc logique parmi au moins deux blocs logiques et/ou paramètres, ce choix se faisant de la façon suivante : si a>b on choisit c, sinon on choisit d, avec a, b, c, et d qui sont des blocs logiques et/ou des paramètres, l'histogramme d'un bloc logique, le changement d'échelle d'un bloc logique en fonction d'un paramètre et/ou d'un bloc logique, le déplacement relatif d'un bloc logique en fonction d'un paramètre et/ou d'un bloc logique, et une opération produisant un bloc contenant au moins une coordonnée.
Les opérations génériques mettant en œuvre un bloc logique et un paramètre, telle que l'addition, peuvent être traduites en traitement dans la plateforme, et correspondent, par exemple lorsque l'opération générique est une addition, à additionner chaque élément ou information élémentaire du bloc physique traité, correspondant au bloc logique, avec la valeur du paramètre correspondant à la position absolue de l'élément ou de l'information élémentaire traité.
Ces opérations en tant que telles sont des opérations relativement courantes en traitement d' image mais également dans le traitement d'autres sortes d'objets, par contre, lorsqu'elles sont appliquées à des blocs logiques en combinaison avec les secondes données, ces opérations permettent de résoudre le problème posé. Ces opérations servent de base pour former toutes les opérations pouvant être mises en oeuvre dans un algorithme de traitement de données . Ainsi, dans une réalisation, les opérations génériques comprennent des opérations génériques complexes correspondant à des groupements d'opérations génériques élémentaires utilisés en tant que tels. Parmi ces groupements, on peut notamment citer : le calcul de la valeur médiane d'au moins trois blocs logiques et/ou paramètres, qui correspond à un groupe d'opérations génériques constitué de calculs de minimum et de maximum, la multiplication/accumulation de blocs logiques et/ou de paramètres, la convolution d'un bloc logique avec un paramètre, qui correspond à un groupe d' opérations génériques constitué de multiplications et d'additions avec plusieurs positions relatives, l'addition combinée avec un maximum et un minimum, le calcul d'un gradient, qui correspond à une valeur absolue de différences avec deux positions relatives, le produit scalaire d'un paramètre constitué d'un vecteur et de plusieurs blocs logiques pour produire un bloc logique, le calcul d'un changement d' échelle avec interpolation qui correspond à un groupe d'opérations génériques constitué de changements d' échelle et de multiplications et d' additions avec plusieurs positions relatives, la combinaison de blocs logiques, qui correspond à un groupe d'opérations génériques constitué de changements d'échelle avec plusieurs positions relatives.
Certaines des opérations font appel à plusieurs blocs logiques. On a vu que, dans ce cas, on fournit des secondes données relatives aux positions des blocs logiques mis en jeu les uns par rapport aux autres .
Les positions relatives et les échelles relatives, peuvent correspondre à divers concepts selon la nature de l'objet. Elles s'appliquent entre 2 blocs quelconques, quel que soit leur type (dans le cas d'une image comme décrit plus haut un bloc logique peut notamment être brut, rouge, vert, 8 bits...) .
Dans le cas où l'objet est une image fixe à pixels carrés, la position absolue ou relative et l'échelle absolue ou relative peuvent correspondre, dans une réalisation, chacune à 2 valeurs (verticale et horizontale) ; les pixels de la ligne du haut d'un objet peuvent avoir comme positions absolues (0 ;0)
(0 ;1) (0 ;2) ..., et les pixels de la n ième ligne peuvent avoir comme positions absolues (n ;0) (n ;1) (n ;2); dans ce cas les positions relatives peuvent être codées de la façon suivante : (- 1 ; 0) indique en haut, (0 ;1) indique à droite et (2 ; -2) indique 2 pixels au dessous et 2 à gauche ; une échelle relative de (0,5 ;0,5) correspond alors à une résolution de moitié dans chaque direction. De manière plus générale, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de 2 fonctions f et g de la façon suivante : (f(x ;y) ;g(x ;y))) pour chaque pixel de position absolue x,y. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche. Ainsi :
- une position relative au-dessus se code avec f (x ;y)= - 1 et g (x ;y)=0
- une échelle relative de 0,7 se code avec f (x ;y) = 0,7*(x-x0) et g(x ;y) =0, 7* (y-yO) ; xO et yO correspondant à un paramètre relatif à une position absolue; - une correction de distorsion se code avec f et g correspondant au champ de distorsion
- un changement de format YUV 4 : 2 : 2 à savoir YYUV à partir des informations de luminance et de chrominances Y, U et V séparées peut utiliser pour obtenir Yl Y2 xx xx Y3 Y4 xx xx ... à partir de Yl Y2 Y3 Y4 ... les fonctions suivantes f (x ; y) = (x- xO)*O,5 si x pair, et (x+l-xO)*O,5 si x-xO impair et f (y) =y-yθ ; xO et yO correspondant à un paramètre relatif à une position absolue; La liste suivante, non limitative, donne d'autres exemples de réalisation avec divers types d'objets:
- dans le cas où l'objet est une image fixe à pixels hexagonaux disposés par ligne, deux lignes successives étant décalées d'un demi-pixel, la position absolue ou relative et l'échelle absolue ou relative peuvent correspondre chacune à 2 valeurs (verticale et horizontale) ; les pixels de la ligne du haut d'un objet peuvent avoir comme positions absolues (0 ;0)
(0 ;1) (0 ;2) ..., et les pixels de la n ième ligne peuvent avoir comme positions absolues (n ;0,5) (n ;1,5) (n ;2,5) ... si la ligne est impaire, et (n ;0) (n ;1) (n ;2)... si la ligne est paire; la position relative peut correspondre à 2 valeurs
(verticale et horizontale), par exemple (-0,5 ; 0,5) indique en haut à droite, (0,1) indique à droite et (-0,5 ; 1,5) indique le pixel situé à droite du pixel en haut à droite ; une échelle relative de (0,5 ;0,5) correspond alors à une résolution de moitié dans chaque direction. De même, une combinaison de déplacement relatif et d' échelle relative peut être codée à l'aide de 2 fonctions f et g de la façon suivante :
(f(x ;y) ;g(x ;y))) pour chaque pixel de position absolue x,y. II est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche.
- dans le cas où l'objet est une image animée à pixels carrés, la position absolue ou relative peut correspondre à 3 valeurs (verticale, horizontale et temporelle) , par exemple, (- 1 ; 0 ;0) indique un pixel situé en haut dans la même image, (0 ; 0 ; -1) indique le pixel ayant la même position dans l'image précédente et (2 ; -2, -1) indique le pixel situé 2 pixels au dessous et 2 à gauche dans l'image précédente. De même, une combinaison de déplacement relatif et d'échelle relative peut être codée à l'aide de 3 fonctions f, g, h de la façon suivante : (f(x ;γ ;t) ;g(x ;y ;t)) ; h (x ;y ;t)) pour chaque pixel de position absolue x,y à l'instant t. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le pixel le plus proche. - dans le cas où l'objet est un son monocanal, la position absolue ou relative peut correspondre à 1 valeur
(temporelle); par exemple (-1) indique l'instant précédent, et
(2) indique 2 instants après; une fonction f(t) permet alors de coder un déplacement et échelle relatifs . Une règle d' arrondi étant utilisée pour prendre l'instant le plus proche.
- dans le cas où l'objet est un son multi canal, la position absolue ou relative peut correspondre à 2 valeurs
(temporelle, canal) ; par exemple (-1, 0) indique l'instant précédent du même canal, et (2,1) indique 2 instants après du canal suivant, ordonnés par exemple spatialement de façon circulaire. De même, une combinaison de déplacement relatif et d'échelle relative peut être codé à l'aide de 2 fonctions f, g de la façon suivante : (f(t ;c) ;g(t ;c)) pour chaque échantillon sonore de position à l'instant t pour le canal c. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, l'instant et le canal le plus proche.
- dans le cas où l'objet est un maillage de simulation, la position absolue ou relative peut correspondre à n valeurs, correspondant chacune à une dimension spatiale ou temporelle fonction de la topologie du maillage. De même, une combinaison de déplacement relatif et d'échelle relative peut être codé à l'aide de n fonctions. Il est à noter qu'une règle d'arrondi est nécessaire afin de prendre, par exemple, le nœud et l'instant le plus proche. - dans le cas où l'objet est un signal modulé, la position absolue ou relative peut correspondre à n valeurs, correspondant respectivement au temps, le cas échéant au canal fréquentiel (émission ou réception sur plusieurs fréquences) et le cas échéant (plusieurs émetteurs ou récepteurs disposés spatialement) à une dimension spatiale. De même, une combinaison de déplacement relatif et d'échelle relative peut être codé à l'aide de n fonctions, et une règle d'arrondi doit être choisie. - dans le cas où l'objet est un ensemble de mesures, la position absolue ou relative peut correspondre à n valeurs, correspondant chacune à une dimension de l'objet qui, selon le cas, peuvent être de nature temporelle, spatiale, fréquentielle, phase ou autre. De même, une combinaison de déplacement relatif et d'échelle relative peut être codé à l'aide de n fonctions, et une règle d'arrondi doit être choisie.
- dans le cas général où l'objet est de dimension n, la position absolue ou relative peut correspondre à n valeurs correspondant chacune à une dimension de l'objet qui, selon le cas, peuvent être de nature temporelle, spatiale, fréquentielle, phase ou autre. De même, une combinaison de déplacement relatif et d'échelle relative peut être codé à l'aide de n fonctions, et une règle d'arrondi doit être choisie.
Ainsi, dans une réalisation de l'invention, les positions relatives et/ou les échelles relatives des blocs logiques selon au moins une dimension de l'objet, notamment spatiale et/ou temporelle, ont des valeurs entières ou des valeurs fractionnaires comme décrit dans les exemples ci-dessus .
Dans une réalisation, les informations élémentaires sont représentées par des valeurs numériques en virgule fixe . Dans ce cas, il faut tenir compte de cette virgule fixe lors de l'application des opérations, afin de ne pas perdre d'information dans les résultats. A cet effet, dans la même réalisation de l'invention, les opérations génériques comprennent des opérations de décalage, une opération de saturation et/ou au moins une opération générique élémentaire combinée à cette opération de saturation.
Dans une réalisation, les paramètres comprennent une information représentant le type de codage des informations élémentaires .
Par exemple, dans le cas où les informations élémentaires sont les pixels d'une image, elles sont représentées, par exemple, sur 24 bits représentant 3 couleurs dans un codage rouge-vert-bleu (RVB) , ou encore sur N bits représentant une couleur par pixel variant selon la position du pixel pour les images brutes issues d'un capteur, ou encore sur 8 bits correspondant aux informations de luminance et de chrominance Y ou U ou V pour une image codée avec un codage de type YUV. Il est donc utile de fournir au moyen de traitement des données lui permettant de connaître le type de codage afin de traduire correctement les données formatées génériques . De préférence, les données formatées génériques représentent des algorithmes de traitement d'objets constituant des images, et qui sont composés d'informations élémentaires formant des pixels .
Ainsi, dans une réalisation, la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d' image, et les valeurs des paramètres sont liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'images. Les caractéristiques peuvent être, notamment, des caractéristiques intrinsèques fixes pour tous les objets ou variables selon l'objet, par exemple des caractéristiques de bruit qui varient en fonction du gain d'un capteur.
Les caractéristiques peuvent également être identiques pour toutes les informations élémentaires ou variables selon la position absolue de l'information élémentaire, par exemple les caractéristiques de flou de l'optique.
Toutefois les données formatées génériques peuvent représenter d' autres types d' algorithmes de traitement de données. Ainsi, dans une réalisation, l'objet à traiter est un signal sonore numérisé, et, dans ce cas, les informations élémentaires sont les échantillons sonores de ce signal. Dans ce cas, les positions relatives présentes dans les secondes données seront généralement des positions temporelles. Il peut toutefois arriver que ces positions soient spatiales, notamment dans le cas où l'objet à traiter est un son présent sur plusieurs canaux .
Dans une autre réalisation de l'invention, notamment dans le cas de la simulation numérique, l'objet à traiter est un maillage numérique et les informations élémentaires sont les informations spatiales et/ou temporelles caractérisant chaque point du maillage.
D'autres caractéristiques et avantages de l'invention apparaîtront avec la description non limitative de certains de ses modes de réalisation, cette description étant effectuée à l'aide des figures sur lesquelles :
- la figure 1 représente un dispositif de traitement de données utilisant un procédé conforme à l'invention, - la figure 2 représente un dispositif analogue à celui de la figure 1, dans le cas où l'on prévoit plusieurs plateformes de traitement, et
- la figure 3 représente un exemple d' une séquence d' opérations génériques appliquée à plusieurs blocs logiques et à un paramètre.
Le dispositif représenté sur la figure 1 est destiné à traiter une image 22. Cette image comprend un ensemble de pixels dont chacun est représenté par au moins une valeur numérique . Dans ce dispositif, on fournit à un moyen de traitement de données numériques 10 des données formatées génériques 12. Ce moyen de traitement est un compilateur dans 1' exemple .
Les données formatées génériques, fournies par un procédé conforme à l'invention, comprennent des premières et secondes données 14 qui décrivent des séquences d'opérations génériques et qui décrivent les positions relatives des blocs logiques impliqués dans ces opérations génériques. Ces premières et secondes données seront illustrées par le tableau 1.
A partir de ces données formatées génériques 12, le moyen de traitement 10 fournit à une plateforme de traitement
20, telle qu'un appareil de capture ou de restitution d'images, directement ou indirectement, par exemple via un compilateur, des données formatées spécifiques 18.
Les données formatées spécifiques contiennent différents types de données, telles que des données concernant l'organisation des pixels dans la mémoire de la plateforme, l'ordre dans lequel les pixels sont traités par la plateforme ou encore les opérations spécifiques effectuées par la plateforme, et leur groupement.
La plateforme de traitement 20 utilise alors ces données formatées spécifiques 18 pour traiter l'image 22 qu'elle reçoit en entrée.
Le système représenté sur la figure 2 est analogue à celui représenté sur la figure 1, dans le cas où l'on prévoit deux plateformes de traitement.
Dans ce cas, on fournit à un moyen de traitement 30 deux séries de données formatées génériques 32a et 32b. Ces données formatées génériques 32a et 32b contiennent chacune des premières et secondes données, respectivement 34a pour les données formatées génériques 32a, et 34b pour les données formatées génériques 32b. Ces premières et secondes données présentent les mêmes caractéristiques que les premières et secondes données décrites en relation avec la figure 1.
Ce moyen de traitement 30 fournit à deux plateformes
40a et 40b des données formatées spécifiques 38a et 38b correspondant respectivement aux données formatées génériques
32a et 32b. La plateforme 40a traite ainsi un objet 42a en fonction des données 32a ou en fonction des données 32b. De même, la plateforme 40b traite un objet 42b en fonction des données 32a ou en fonction des données 32b. Ainsi, le même moyen de traitement 30 est utilisé pour fournir des données formatées spécifiques à deux plateformes de traitement différentes, 40a et
40b.
La figure 2 illustre ainsi plusieurs avantages de l'invention : - dans le cas où les plateformes 40a et 40b sont identiques, on peut rapidement remplacer les données formatées génériques 32a par 32b et les traduire en des données formatées spécifiques 38b optimisées pour la plateforme. Ceci permet de réduire le temps de mise sur le marché de la plateforme. - dans le cas où les plateformes 40a et 40b sont différentes, et les données formatées 32a et 32b sont identiques, on peut rapidement les traduire en des données formatées spécifiques 38a et 38b optimisées pour chaque plateforme. Ceci permet également de réduire le temps de mise sur le marché de plusieurs plateforme.
Le tableau 1 ci-dessous et la figure 3 montrent un exemple de séquence d' opérations génériques appliquées à un bloc logique Bl . Cette séquence comporte trois opérations génériques . Les colonnes du tableau représentent dans l'ordre : - le rang de l'opération dans la séquence, le nom de l'opération générique, le bloc logique (sortie) sur lequel est inscrit le résultat de l'opération générique, c'est-à-dire l'emplacement où se trouverait ce résultat si on reconstituait l'objet à l'issue de chaque opération, la première entrée (entrée 1) de l'opération générique, qui peut être un bloc logique ou un paramètre, la position relative du bloc logique à utiliser par rapport au bloc logique mis en entrée 1, s'il y a lieu, - la seconde entrée (entrée 2) de l'opération générique, qui peut également être un bloc logique ou un paramètre, et la position relative du bloc logique à utiliser par rapport au bloc logique mis en entrée 2, s'il y a lieu.
Les informations se trouvant dans les colonnes
« position relative » sont les informations présentes dans les secondes données fournies à un moyen de traitement grâce à un procédé selon l'invention. Dans ce tableau, ces informations se trouvent sous la forme « gauche » et « droite » pour être compréhensibles, mais en réalité, dans les données formatées génériques, elles peuvent également être codées par des valeurs numériques telles que (0 ;1) comme décrit dans les exemples de réalisation plus haut et/ou par des fonctions telle que f (x ; y) .
Dans une réalisation, les opérations génériques comprennent au moins une opération générique de position qui permet d' obtenir un bloc logique constitué de la position absolue selon une dimension de l'objet, ainsi qu'une opération générique d' indirection qui permet d'obtenir, à partir d'un premier bloc, un second bloc par déplacement et/ou changement d'échelle fonction d'un troisième bloc ou d'un paramètre. On peut alors effectuer les calculs des fonctions donnant la position relative et/ou l'échelle relative, par exemple, 0,5*(x- 100) à l'aide d'opérations génériques sur les blocs, puis utiliser l'opération générique d' indirection pour effectuer le déplacement relatif et/ou le changement d'échelle relatif correspondant .
Le tableau 1 n'est qu'un exemple de codage, les premières données et secondes données peuvent être codées de diverses façons sous forme tabulée, mais également sous forme symbolique, sous forme graphique ou sous toute autre forme. De plus, des informations supplémentaires relatives aux types des données, aux décalages et saturations ne sont pas représentées à des fins de simplification de l'exemple.
TABLEAU 1
Le premier bloc logique utilisé dans cette séquence d'opérations est un bloc logique Bl (51). La première opération générique est une addition (52) entre le bloc logique Bl décalé à gauche (51g), et le bloc logique Bl décalé à droite (5Id) . Le résultat de cette addition est inscrit dans le bloc B2 (53) : B2=Blgauche + Bldroite.
La deuxième opération (54) est une transformation du bloc B2 (53) par rapport à une table. Cette opération a donc en entrée le bloc B2 (53) et un paramètre Paraml (55) qui représente la table de modification. Le résultat de cette opération est inscrite dans le bloc B3 (56) : B3 = LUT (Paraml, B2) . La troisième et dernière opération (57) de cette séquence est une multiplication de blocs logiques . Cette opération a pour entrées le bloc logique B3 (56) et le bloc logique Bl (51) : B4 = B3*Bl .
Le bloc logique B4 (58) est ainsi le bloc obtenu à l'issue de la séquence d'opérations génériques.
Les données formatées génériques de l'exemple du tableau 1 sont indépendantes de la plateforme, de la décomposition de l'objet en sous-objets, du mode de parcours des informations élémentaires de l'objet, de l'ordre dans lequel les informations élémentaires seront traitées dans la plateforme, ainsi que de l'organisation en mémoire. En effet, les données formatées génériques du tableau 1 peuvent être traduites de diverses façons en données formatées spécifiques ou en code pour la plateforme, par exemple, sans que la liste soit limitative, selon les traductions suivantes .
Un premier exemple de traduction, bien que non optimal en terme de mémoire et de temps de calcul, permet d'illustrer une traduction simple sans passer par une décomposition en sous- objets :
Pour chaque pixel de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas : Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, stocker le résultat dans un bloc physique BP2 (correspondant au bloc logique B2) .
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas : appliquer la table au pixel courant, et stocker le résultat dans un bloc physique BP3 (correspondant au bloc logique B3)
Pour chaque pixel de BP3 parcouru de gauche à droite puis de haut en bas :
Multiplier le pixel courant par le pixel correspondant de BPl, et stocker le résultat dans le bloc physique de sortie BP4 (correspondant au bloc logique B4) .
Un deuxième exemple de traduction montre que l'on peut diminuer la taille de la mémoire utilisée sans changer les données formatées génériques. En effet, dans le premier exemple, on utilise 4 blocs physiques de taille voisine de l'image. On peut n'utiliser que 2 blocs physique en utilisant la même mémoire pour BP2 , BP3 et BP4. On obtient la traduction suivante :
Pour chaque pixel de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas :
Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, stocker le résultat dans un bloc physique BP2 (correspondant au bloc logique B2) .
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas : appliquer la table au pixel courant, et stocker le résultat dans un bloc physique BP2 (correspondant maintenant au bloc logique B3)
Pour chaque pixel de BP2 parcouru de gauche à droite puis de haut en bas :
Multiplier le pixel courant par le pixel correspondant de BPl et stocker le résultat dans le bloc physique de sortie BP2 (correspondant maintenant au bloc logique B4) .
Un troisième exemple de traduction montre que l'on peut réduire le temps de calcul sans changer les données formatées génériques. En effet, dans le deuxième exemple on utilise 2 blocs physiques de taille voisine de l'image, mais on écrit 3 fois entièrement le bloc physique BP2, on lit 2 fois entièrement le bloc physique BPl et on lit 2 fois entièrement le bloc physique BP2. On peut se limiter à une lecture et une écriture seulement avec un mode de parcours différent et des blocs différents . Ceci réduit le nombre d' instructions nécessaires, mais également les accès à la mémoire. On obtient la traduction suivante : Pour chaque pixel de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas : Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant, stocker le résultat dans le bloc physique courant de sortie BP2 (correspondant au bloc logique B4)
Dans un quatrième exemple, plus particulièrement adapté à un processeur scalaire avec cache, on écrit le résultat dans la même zone mémoire que l'entrée. Ceci permet de réduire encore la taille de la mémoire et de rendre locaux les accès mémoire, ce qui est très favorable dans le cas d'une mémoire cache ou une mémoire paginée. On obtient ainsi la traduction suivante :
Pour chaque pixel de l'objet d'entrée BPl (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite, les pixels étant parcourus de gauche à droite puis de haut en bas :
Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant , stocker le résultat dans le bloc physique courant de sortie BPl à la place du pixel situé à la gauche du pixel courant (le pixel de gauche n'est plus utilisé par la suite contrairement au pixel courant qui va devenir le pixel de gauche pour la prochaine itération ; BPl correspond partiellement au bloc logique B4 et partiellement au bloc logique Bl)
Un cinquième exemple de traduction est particulièrement adapté à un processeur de traitement du signal avec une petite mémoire rapide et une grosse mémoire lente, chaque sous-objet est un rectangle par exemple 32x32 ou toute autre valeur maximisant l'utilisation de la mémoire rapide, les rectangles étant jointifs. On obtient ainsi la traduction suivante :
Pour chaque sous-objet, les sous-objets étant parcourus de gauche à droite puis de haut en bas :
Lancer un transfert par un mécanisme de DMA (« direct memory access ») du bloc physique d'entrée suivant depuis la mémoire lente vers la mémoire rapide, correspondant au sous-objet suivant étendu de une colonne à gauche et à droite, soit 32x34
Lancer un transfert par un mécanisme de DMA (« direct memory access ») du bloc physique de sortie précédent depuis la mémoire rapide vers la mémoire lente
On prend en entrée le bloc physique correspondant au sous-objet courant étendu sur une colonne supplémentaire à gauche et à droite, soit 32x34, et obtenu à l'issue du DMA. de l'itération précédente
Pour chaque pixel du bloc physique d'entrée (correspondant au bloc logique Bl) en excluant les deux colonnes de gauche et de droite parcouru de gauche à droite puis de haut en bas : Additionner le pixel situé à gauche du pixel courant et le pixel situé à droite, appliquer la table au résultat et multiplier la sortie de la table par le pixel courant du bloc, stocker le résultat dans le bloc physique courant de sortie (correspondant au bloc logique B4) .
Un sixième exemple de traduction est particulièrement adapté à un processeur vectoriel capable d'appliquer un même calcul aux différents pixels du vecteur, chaque sous-objet est un rectangle par exemple 64 pixels horizontaux ou toute autre valeur égale à la taille d'un vecteur que la plateforme sait traiter et stocker. Cette traduction ne nécessite aucune mémoire car un vecteur est traité à la fois . On obtient ainsi la traduction suivante :
Pour chaque sous-objet Vl de l'objet d'entrée BPl
(correspondant au bloc logique Bl) en excluant les deux colonnes de gauche, les sous-objets étant parcourus de gauche à droite puis de haut en bas :
En début de chaque ligne créer un vecteur VO contenant à droite les 2 pixels de gauche de la ligne
Extraire de VO et Vl, le vecteur V2 correspondant aux deux pixels de droite de VO et aux pixels de gauche de Vl en excluant les 2 pixels de droite de VO; additionner Vl et V2 pour obtenir V2, appliquer la table à chaque pixel de V2 pour obtenir V2, Extraire de VO et Vl, le vecteur V3 correspondant au pixel de droite de VO et aux pixels de gauche de Vl en excluant le pixel de droite de VO; copier Vl dans VO pour l'itération suivante ; multiplier V2 par V3 pour obtenir V2 , stocker le résultat V2 dans le bloc physique courant de sortie.
Les exemples de traductions ci-dessus montrent qu'il est possible, à partir des mêmes données formatées génériques, de traduire de plusieurs façons avec des structures mémoire, des boucles et un degré de parallélisme adaptés à des plateforme très diverses . En particulier on peut : réduire la taille du code en n'utilisant qu'une seule boucle, et/ou réduire la taille mémoire, à 0 dans l'exemple, mais dans le cas plus général où il y a des filtres verticaux, il faut quand même quelques lignes de mémoire si on veut éviter de refaire des calculs pour les données en entrée des filtre verticaux, et/ou
- réduire le nombre d'instructions nécessaires, notamment en groupant les boucles, et/ou s'adapter à toute taille de vecteur, et/ou s'adapter à toute architecture mémoire.
Afin de simplifier, les exemples produisent une image plus petite que l'image d'entrée. On peut facilement, si nécessaire, obtenir une image de sortie de taille identique à l'image d'entrée en ajoutant du code en début et fin de chaque ligne pour dupliquer le pixel du bord.

Claims

REVENDIC-VTIONS
1. Procédé pour fournir des données formatées génériques
(12) décrivant un traitement à apporter sur un objet à une ou plusieurs dimensions (22), compris dans le groupe comprenant : une image, un signal sonore numérisé, une séquence d'images, un signal modulé, une donnée de simulation et un maillage numérique ; les données formatées génériques étant fournies à au moins un moyen de traitement numérique de données (10) , destiné à traduire les données formatées génériques en données formatées spécifiques (18) , les données formatées génériques (12) comprenant des données relatives à des blocs logiques, au moins un des blocs logiques correspondant à un l'objet (22) à traiter en fonction, directement ou indirectement, des données formatées spécifiques (18) par au moins une plateforme de traitement (20) à processeur (s) et mémoire (s), située à l'aval du moyen de traitement (10) ou intégrée dans le moyen de traitement (10) , l'objet (22) étant constitué d'informations élémentaires de même nature, dont chacune est représentée par au moins une valeur numérique, ces informations élémentaires étant comprise dans le groupe comprenant : les pixels d'une image, les échantillons d'un signal sonore numérisé, l'intensité et la phase d'un signal modulé, une donnée caractérisant l'état d'une donnée de simulation, les informations temporelles et/ou spatiales caractérisant les points d'un maillage numérique, ce procédé comprenant les étapes suivantes : - on fournit au moyen de traitement numérique des premières données (14), faisant partie des données formatées génériques, décrivant au moins une séquence d'opérations génériques à réaliser sur au moins un bloc logique et/ou sur au moins un paramètre, et - on fournit au moyen de traitement numérique, pour les opérations génériques impliquant plusieurs blocs logiques, des secondes données (14) , faisant partie des données formatées génériques et se rapportant à la position relative, selon au moins une dimension de l'objet, notamment spatiale et/ou temporelle, des blocs logiques et/ou des paramètres les uns par rapport aux autres et/ou se rapportant à l'échelle relative, notamment spatiale et/ou temporelle, des blocs logiques et/ou des paramètres les uns par rapport aux autres, les données formatées génériques (12) fournies au moyen de traitement numérique (10) excluant les données relatives à l'identification des informations élémentaires et à l'ordre dans lequel les informations élémentaires seront traitées par la plateforme, de façon que les données formatées génériques (12) soient indépendantes de la plateforme de traitement (20) utilisée, et les données formatées génériques fournies (12) étant indépendantes de données relatives à la décomposition de l'objet en sous-objets, à la forme, taille et recouvrement de ces sous-objets, et au stockage des informations élémentaires dans une mémoire, ces données relatives à l'ordre et celles relatives à la décomposition en sous-objets étant déterminables par le moyen de traitement (10) .
2. Procédé selon la revendication 1 dans lequel au moins une partie des secondes données fournies au moyen de traitement et/ou la valeur d'au moins un paramètre sont, pour une opération générique donnée, communes à toutes les informations élémentaires de l'objet à traiter.
3. Procédé selon la revendication 1 ou 2 dans lequel les secondes données fourni (s) au moyen de traitement et/ou la valeur du (des) paramètre (s) dépend (ent), pour une opération générique donnée, de la position absolue des informations élémentaires dans l'objet à traiter.
4. Procédé selon l'une des revendications précédentes dans lequel les opérations génériques comprennent au moins une opérations générique de position qui permet d'obtenir un bloc logique constitué de la position absolue selon une dimension de l'objet, ainsi qu'une opération générique d' indirection qui permet d'obtenir à partir d'un premier bloc, un second bloc par déplacement et/ou changement d'échelle fonction d'un troisième bloc ou d'un paramètre.
5. Procédé selon l'une des revendications précédentes dans lequel les opérations génériques comprennent au moins une opération générique élémentaire comprise dans le groupe comprenant : l'addition de blocs logiques et/ou de paramètres, la soustraction de blocs logiques et/ou de paramètres, le calcul de la valeur absolue de la différence entre des blocs logiques, la multiplication de blocs logiques et/ou de paramètres, le maximum parmi au moins deux blocs logiques et/ou paramètres, le minimum parmi au moins deux blocs logiques et/ou paramètres, le groupement et le dégroupement de blocs logiques, le calcul d'un bloc logique par application d'un paramètre correspondant à une table de correspondance à un bloc logique, le choix conditionnel d'un bloc logique parmi au moins deux blocs logiques et/ou paramètres, ce choix se faisant de la façon suivante : si a > b on choisit c, sinon on choisit d, avec a, b, c, et d qui sont des blocs logiques et/ou des paramètres, l'histogramme d'un bloc logique, le changement d'échelle d'un bloc logique fonction d'un paramètre et/ou d'un bloc logique, le déplacement relatif d'un bloc logique fonction d'un paramètre et/ou d'un bloc logique et une opération produisant un bloc contenant au moins une coordonnée .
6. Procédé selon la revendication 5 dans lequel les opérations génériques comprennent des opérations génériques complexes correspondant à des groupements d'opérations génériques élémentaires utilisés en tant que tels, ces groupements comprenant notamment : le calcul de la valeur médiane d'au moins trois blocs logiques et/ou paramètres qui correspond à un groupe d'opérations génériques constitué de minimum et maximum, la multiplication-accumulation de blocs logiques et/ou de paramètres, la convolution d'un bloc logique avec un paramètre qui correspond à un groupe d' opérations génériques constitué de multiplications et d'additions avec plusieurs positions relatives, l'addition combinée avec un maximum et un minimum, la soustraction combinée avec un maximum et un minimum, le calcul d'un gradient qui correspond à un valeur absolue de différence avec deux positions relatives, le produit scalaire d'un paramètre constitué d'un vecteur et de plusieurs blocs logiques pour produire un bloc logique, le calcul d'un changement d'échelle avec interpolation qui correspond à un groupe d' opérations génériques constitué de changement d' échelle et de multiplications et d' additions avec plusieurs positions relatives, la combinaison de blocs logiques qui correspond à un groupe d'opérations génériques constitué de changement d'échelle avec plusieurs positions relatives,.
7. Procédé selon l'une des revendications précédentes dans lequel les positions relatives et/ou les échelles relatives, selon au moins une dimension de l'objet, notamment spatiale et/ou temporelle, des blocs logiques ont des valeurs entières ou des valeurs fractionnaires .
8. Procédé selon l'une des revendications précédentes dans lequel les informations élémentaires sont représentées par des valeurs numériques en virgule fixe, et dans lequel les opérations génériques comprennent des opérations de décalage, une opération de saturation et/ou au moins une opération générique élémentaire combinée à cette opération de saturation.
9. Procédé selon l'une des revendications précédentes dans lequel l'objet à traiter est une image et les informations élémentaires sont les pixels de cette image.
10. Procédé selon la revendication 9 dans lequel la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d'image, et dans lequel les valeurs des paramètres sont liées aux caractéristiques de l'optique et/ou du capteur et/ou de l'imageur et/ou de l'électronique et/ou du logiciel de l'appareil de capture et/ou de restitution d'images.
11. Procédé selon l'une des revendications 1 à 8 dans lequel l'objet à traiter est un signal sonore numérisé et les informations élémentaires sont les échantillons sonores de ce signal.
12. Procédé selon l'une des revendications 1 à 8 dans lequel l'objet à traiter est un maillage numérique et les informations élémentaires sont les informations spatiales et/ou temporelles caractérisant chaque point du maillage.
EP06847178A 2005-12-19 2006-12-19 Procede pour fournir des donnees a un moyen de traitement numerique Ceased EP1963970A2 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0553947A FR2895104A1 (fr) 2005-12-19 2005-12-19 Procede pour fournir des donnees a un moyen de traitement numerique
PCT/FR2006/051388 WO2007071882A2 (fr) 2005-12-19 2006-12-19 Procede pour fournir des donnees a un moyen de traitement numerique

Publications (1)

Publication Number Publication Date
EP1963970A2 true EP1963970A2 (fr) 2008-09-03

Family

ID=36716757

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06847178A Ceased EP1963970A2 (fr) 2005-12-19 2006-12-19 Procede pour fournir des donnees a un moyen de traitement numerique

Country Status (7)

Country Link
US (1) US8473720B2 (fr)
EP (1) EP1963970A2 (fr)
JP (1) JP5254030B2 (fr)
KR (1) KR101391569B1 (fr)
CN (1) CN101379469A (fr)
FR (1) FR2895104A1 (fr)
WO (1) WO2007071882A2 (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60227374D1 (de) * 2001-07-12 2008-08-14 Do Labs Verfahren und System zur Bereitstellung formatierter Informationen für Bildverarbeitungsvorrichtungen
CN101927543B (zh) * 2009-06-26 2013-11-06 深圳市远望工业自动化设备有限公司 塑料箱体水冷定型机
KR101080974B1 (ko) * 2009-11-24 2011-11-09 한국과학기술정보연구원 계산 시뮬레이션 모사 시스템 및 그 방법
US9021017B2 (en) * 2011-09-03 2015-04-28 Barracuda Networks, Inc. Configuring a plurality of diverse devices/services from an adaptive configuration control hyper-server apparatus
CN103002464B (zh) * 2011-09-08 2015-08-19 中国移动通信集团设计院有限公司 一种无线网络仿真的参数信息转发方法、装置及仿真系统
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
US10573024B1 (en) * 2016-08-22 2020-02-25 Amazon Technologies, Inc. Distance detection based on chromatic aberration

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666503A (en) * 1994-11-14 1997-09-09 Xerox Corporation Structured image (SI) image editor and method for editing structured images
US5675773A (en) * 1995-12-21 1997-10-07 Cirrus Logic, Inc. Graphics display system with a low level hardware dependent graphics library
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6321323B1 (en) * 1997-06-27 2001-11-20 Sun Microsystems, Inc. System and method for executing platform-independent code on a co-processor
US5923892A (en) * 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US5999179A (en) * 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6305009B1 (en) * 1997-12-05 2001-10-16 Robert M. Goor Compiler design using object technology with cross platform capability
US6847980B1 (en) * 1999-07-03 2005-01-25 Ana B. Benitez Fundamental entity-relationship models for the generic audio visual data signal description
US20020057286A1 (en) * 2000-08-25 2002-05-16 Markel Steven O. Device independent video enhancement scripting language
US20020170039A1 (en) * 2001-02-22 2002-11-14 Kovacevic Branko D. System for operating system and platform independent digital stream handling and method thereof
DE60227374D1 (de) 2001-07-12 2008-08-14 Do Labs Verfahren und System zur Bereitstellung formatierter Informationen für Bildverarbeitungsvorrichtungen
EP1412918B1 (fr) 2001-07-12 2007-02-21 DO Labs Procede et systeme pour produire des informations formatees liees aux distorsions geometriques
FR2827459B1 (fr) 2001-07-12 2004-10-29 Poseidon Procede et systeme pour fournir a des logiciels de traitement d'image des informations formatees liees aux caracteristiques des appareils de capture d'image et/ou des moyens de restitution d'image
US7901291B2 (en) * 2001-09-28 2011-03-08 Igt Gaming device operable with platform independent code and method
JP2004030386A (ja) * 2002-06-27 2004-01-29 Canon Inc 画像処理方法および画像処理装置
US9207958B1 (en) * 2002-08-12 2015-12-08 Arm Finance Overseas Limited Virtual machine coprocessor for accelerating software execution
US7987455B1 (en) * 2003-07-23 2011-07-26 International Business Machines Corporation System and method of command processing
JP2005157857A (ja) * 2003-11-27 2005-06-16 Canon Inc データ処理装置および印刷制御方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US7614075B2 (en) * 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2007071882A2 *

Also Published As

Publication number Publication date
WO2007071882A8 (fr) 2008-05-29
KR20080087123A (ko) 2008-09-30
US20090037877A1 (en) 2009-02-05
JP2009520256A (ja) 2009-05-21
US8473720B2 (en) 2013-06-25
JP5254030B2 (ja) 2013-08-07
CN101379469A (zh) 2009-03-04
WO2007071882A2 (fr) 2007-06-28
FR2895104A1 (fr) 2007-06-22
KR101391569B1 (ko) 2014-05-02

Similar Documents

Publication Publication Date Title
Zheng et al. Ultra-high-definition image dehazing via multi-guided bilateral learning
EP1523730B1 (fr) Procede et systeme pour calculer une image transformee a partir d'une image numerique
WO2007071883A2 (fr) Procede et systeme de traitement de donnes numeriques
EP1410327B1 (fr) Procede et systeme pour produire des informations formatees liees aux defauts d'au moins un appareil d'une chaine, notamment au flou
KR101991766B1 (ko) 적응적인 다중-차원 데이터 분해
JP5784723B2 (ja) 超解像度画像を生成する方法及びこれを実施するための非線形デジタルフィルター
Liu et al. A new polarization image demosaicking algorithm by exploiting inter-channel correlations with guided filtering
EP1964053A2 (fr) Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
EP1963970A2 (fr) Procede pour fournir des donnees a un moyen de traitement numerique
EP2174289A2 (fr) Procede de traitement d'objet numerique et systeme associe.
JP2008310797A (ja) カメラによって或るシーンから取得される画像内の動いている物体の解像度を高めるための方法
KR20100112162A (ko) 고속의 메모리 효율적인 변환 구현 방법
Feng et al. Digital micromirror device camera with per-pixel coded exposure for high dynamic range imaging
Cho et al. Single‐shot High Dynamic Range Imaging Using Coded Electronic Shutter
Vijay et al. Non-uniform deblurring in HDR image reconstruction
Song et al. Real-scene reflection removal with raw-rgb image pairs
WO2013161111A1 (fr) Dispositif d'évaluation d'image, dispositif de sélection d'image, procédé d'évaluation d'image, support d'enregistrement et programme
Karch et al. Adaptive Wiener filter super-resolution of color filter array images
Rego et al. Deep camera obscura: an image restoration pipeline for pinhole photography
Jia et al. Learning rich information for quad bayer remosaicing and denoising
Li et al. Penrose high-dynamic-range imaging
Hajisharif Computational Photography: High Dynamic Range and Light Fields
Singh et al. Detail Enhanced Multi-Exposer Image Fusion Based on Edge Perserving Filters
JP5248719B1 (ja) 画像評価装置、画像選択装置、画像評価方法、記録媒体、ならびに、プログラム
da Silva et al. Isp meets deep learning: A survey on deep learning methods for image signal processing

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20080606

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA HR MK RS

R17D Deferred search report published (corrected)

Effective date: 20080529

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100420

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100420

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20100906

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20121211

111Z Information provided on other rights and legal means of execution

Free format text: AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR

Effective date: 20090813

APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: GOPRO TECHNOLOGY FRANCE SAS

APBT Appeal procedure closed

Free format text: ORIGINAL CODE: EPIDOSNNOA9E

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20170319