Spatio-temporal image metric for rendered animations

An image processing method transforms image sequences into luminances, filters the luminances, determines the temporal differences between the luminances, performs a frequency domain transformation on the temporal differences, and applies a temporal contrast sensitivity function envelope integral to the frequency transform output to generate a temporal image metric. The temporal image metric may be applied for example to train a neural network or to configure a display device to depict a visual indication of the temporal image metric.

BACKGROUND

A specialized metric is useful for measuring the perceived visual quality of animations because metrics developed particularly for image and video compression have proved unsuitable for computer graphics applications. Errors in rendered images often are quite different to the noise in natural images or the blockiness in compressed images. The errors in typical computer-generated graphics sequences include various sorts of aliasing, e.g., geometrical, shader, texture, visibility, but also noise and ‘fireflies’ from, for example, Monte-Carlo based rendering algorithms, or errors arising from different types of reconstruction and filtering algorithms, such as denoising and temporal anti-aliasing.

Many of these errors may be unacceptable for a game developer or for an animated film sequence, for instance. Furthermore, most methods use some type of pooling to condense the errors in an image into a single number. For rendering, this may not always be useful, because even a couple of fireflies in an otherwise perfect image can make the image useless, and most metrics report such an image as extremely similar to the reference image. Also, a static image may appear sufficient in quality, however, during animation small errors can become substantially more visible. Hence, it is important to look at errors over time as well as static errors.

Statistical methods, such as SSIM and 3D-SSIM, are unsuited to this problem. This is a consequence of the fact that these techniques target natural images and video compression. Conventional methods are dependent on the replay frequency, which means that the error image will look the same independent of replay speed.

A contrast sensitivity function (CSF) describes how sensitive humans are to visual stimuli with different frequencies. Thus, a spatial CSF describes sensitivity as a function of the frequency of a spatial change in the image, while a temporal CSF describes sensitivity as a function of the flickering frequency of a visual stimulus. These can also be combined into a spatio-temporal CSF (stCSF), and these dimensions are, in fact, not separable. One conventional method of measuring the quality of computer-generated sequence is a perceptual method to estimate the temporal noise in photon distributions for global illumination rendering. This method does not, however, take other types of artifacts, such as geometrical aliasing, into account. Another conventional method computes an oracle, based on a velocity-dependent sensitivity function that is used to accelerate global illumination rendering. This method also takes into account visual attention. However, it does not exploit information over several frames, which makes it impossible to detect flickering, for example. Yet another conventional method is a full-reference video quality metric for animations generated using computer graphics algorithms. This method compares two image sequences and computes a distortion visibility using a combination of spatio-temporal CSF, three-dimensional Fourier transform, visual masking, and luminance adaption. The method works for HDR and LDR images, and is used for HDR video compression, temporal tone mapping, and for rendered animations using different graphics algorithms. Other conventional techniques using deep features as an image metric are effective, however, they do not extend to the temporal domain.

DETAILED DESCRIPTION

“Band-pass filter” refers to a device that passes frequencies within a certain range and rejects frequencies outside that range.

“Control signal” refers to a pulse or frequency of electricity or light that represents a control command as it travels over a network, a computer channel or wireless.

“Piecewise linear approximation” refers to a real-valued function defined on the real numbers or a segment thereof, whose graph is composed of straight-line sections.

Disclosed herein is a method and system to analyze rendered animations for quality. An error metric suitable for rendered animations is constructed by predicting human perception of spatial and temporal image fidelity. The method is based upon how the human visual system (HVS) reacts. The method uses color channel (e.g., luminance) filtering, temporal differences, and discrete Fourier transform, weighted against a temporal contrast sensitivity function (TCSF). The resulting temporal metric may be applied as a loss function in a denoising algorithm for deep learning to substantially reduce temporal noise, for example.

The perceived correctness of a test image sequence vs. a reference image sequence depends on the spatial correctness of individual frames. However, the temporal behavior of the rendered sequence can under certain conditions improve on the overall perception of the sequence. Human susceptibility to temporal differences compared to the reference may be understood through the temporal contrast sensitivity function (TCSF).

The TCSF fundamentally describes how temporal flicker is filtered by the human visual system (HVS), up to a point at high frequencies where it is no longer visible. The frequency at which this happens for a particular stimulus, is called the critical flicker frequency (CFF). The disclosed method measures the minimum overall quality based on the worst-case spatial error, with consideration that the frame update frequency can hide these errors in relationship to their position and value under the TCSF envelope. For example, a relatively low per-frame mean-SSIM (MSSIM) metric of 0.8 can be visibly undetectable when the frame rate is high enough, and when the spatial errors are distributed randomly. A typical scenario would be a low sample-count Monte Carlo rendering, with a high update frequency. The integration of the eye is then roughly equivalent to a higher sample-count integration of the same rendering, assuming perfect set-up time in the monitor.

In the examples provided the processing is described on luminance color channels. However the processing may be performed on color channels generally, depending on the implementation.

Referring toFIG. 1, a temporal image metric generation method100translates image sequences to luminances (block102). The luminances are pre-filtered (block104). The temporal differences between the luminances are then determined (block106). A discrete Fourier transform is performed on the temporal differences (block108). A temporal contrast sensitivity function envelope integral is applied to generate the temporal image sequence quality metric (block110) which in turn may be applied to control rendering of the image sequences by a system such as illustrated inFIG. 6andFIG. 7.

Referring toFIG. 2, a metric generation method200receives two input sequences of images, A and B, which may be a reference sequence and test sequence, respectively (block202). B may be an approximation of A, such as a rendering with lower quality. As A and B are image sequences, a particular corresponding pixel pair is accessed both spatially and temporally as A(x,y,t) and B(x,y,t). A particular color channel is accessed with subscripts r, g, and b, for example, Ar(x,y,t) for the red channel of image sequence A. The color values in an image sequence, S, are transformed to luminance, LS, (block204) per Equation 1:
LS(x,y,t)=wrSr(x,y,t)+wgSg(x,y,t)+wbSb(x,y,t)   Equation 1

where wr, wg, and wbare weight coefficients, such as 0.212655, 0.715157, and 0.072187, respectively. Here, S may be A or B. In other embodiments, such as for high dynamic range (HDR) images, tone mapping may be performed prior to this process. In some embodiments, the metric generation method200determines that the image sequences comprise HDR images and, in response, performs tone mapping.

The image luminance sequences are in some embodiments filtered spatially with a Gaussian kernel, Gn(x,y), (block206) per Equation 2:
{circumflex over (L)}(x,y,t)=Gng(x,y)*L(x,y,t)   Equation 2

The Gaussian kernel may be of a size ng×ng. Filter sigmas may be set to half the radius. For example, for a filter of size 7×7, the radius is 3, and, thus, σ=1.5. This operation is performed for both image sequences A and B. Here, the “*” is the convolution operator. Other types of filtering besides those utilizing Gaussian kernels may also be employed.

An optional Hamming window may be applied to investigate reduction of the temporal sensitivity of frequency components outside the current frame, that is, to mimic the limited retinal persistence of humans (block208) per Equation 3:
{tilde over (L)}(x,y,t)=Hnh(t)*{circumflex over (L)}(x,y,t)   Equation 3

where the Hamming function is given by Equation 4:

and where the standard values are α=0.54, β=1−α=0.46, and nhbeing the number of samples in the temporal dimension. This may result in damping recurrent errors in time, for example, a missing and moving specular highlight that otherwise would produce regular copies in the direction of movement.

A set of pixel-by-pixel differences per frame between sequence A and B are created (block210) per Equation 5:
{tilde over (L)}d(x,y,t)={tilde over (L)}A(x,y,t)−{tilde over (L)}B(x,y,t)   Equation 5

The set of pixel-by-pixel differences per frame is adjusted to account for the effects of Weber's law (block212) per Equation 6:
{tilde over (L)}w={tilde over (L)}dw({tilde over (L)}A,{tilde over (L)}B)   Equation 6

The function w emphasizes changes at low base luminances. While Weber's law states the linear relationship between detectable difference and base luminosity, specifically that ΔS/S=constant, with S being the initial stimulus and ΔS being the just noticeable difference (JND), the particular function, w, is specific to a particular environment. Inputs may be received to determine a piecewise linear approximation of w. For example, in one embodiment, w is a linear interpolation utilizing the following points: {0.0, 0.2}, {0.03, 1.0}, and {1.0, 0.1}, where the first coordinate of each pair is the luminance level (∈[0, 1]), and the second coordinate is the suppression level, w, at that luminance level.

The difference and adjustment to the difference to compute L˜w (Equations 5 and 6) may be performed in other ways, depending on the implementation. For example:

A˜=G*A (* is the convolution operator here)

L˜w=Dw(min (A˜,B˜)), where the function w is the suppression factor described above.

L=DW(A,B) where per-channel component multiplication is performed between D and W.

L˜w=(1−α)D+αE where α is a tuning constant)

A frequency domain conversion of the time samples, for example a discrete Fourier transform (DFT) of nssamples in time is then performed (block214) per Equation 7:
c(x,y,t)=({tilde over (L)}w(x,y,t))   Equation 7

where c is a vector of nscomplex numbers {cj}, j∈{0, . . . , ns−1}. Next, the power spectrum components, si, are determined (block216) per Equations 8 and 9:

where i∈{1, . . . , k} and k=|ns/2|. These power spectrum components form a vector per pixel, s(x,y,t)={s0(x,y,t), . . . , sk(x,y,t)}. In this embodiment, the power spectrum frequency components are normalized by 1/√nsto make the transform unitary.

A temporal image metric (TIM) is determined by applying a band-pass filter that is a piecewise linear approximation of a temporal contrast sensitivity function (TCSF) at photopic conditions before summing the filtered signal components and normalizing by the number of samples (block218) per Equation 10:

where the function f, in one embodiment, is described by a linear interpolation between the points: {0.0, 0.05}, {2.6, 0.8}, {27.0, 0.9}, and {70.0, 0.0}. The first coordinate is the frequency and the second is the contrast sensitivity. In this embodiment, the DC component (so) of the frequency spectrum is included, thus accounting for static pixel differences. The sum, after normalization by the number of samples, constitutes a badness, b(x,y,t) of a pixel, which is a value indicating the amount of noticeable disturbance in this pixel compared to the reference. In some embodiments, g(x,y,t) is computed for each pixel in all images, which is the TIM. These values may be pooled in different ways and applied to affect the operation of one or more computer graphics rendering machines to improve the TIM in a feedback cycle.

More generally, the temporal bandpass filter is any custom filter that approximates a TCSF.

Referring toFIG. 3, an image rendering system300comprises a machine system302, a display304, a luminance transformer306, a pre-filter308, a temporal differencer310, a discrete Fourier transformer312, a temporal contrast sensitivity function envelope integral calculator314, and a threshold filter316.

The machine system302receives a temporal image metric (TIM) control signal from the threshold filter316and sends an image signal to the display304and image sequences to the luminance transformer306. The machine system302may operate using components depicted inFIG. 6andFIG. 7. The machine system302may utilize the TIM control signal to alter an image generation process, the altered process generating further image sequences. The TIM control signal may be pooled into a single metric from the per-pixel values. The TIM control signal may also be a set of number, such as minimum, maximum, average, and variance, which may be collected in a histogram. The histogram may overlay an image. The TIM control may also operate the machine system302to utilize the TIM as a loss function in a neural network. In other words, the TIM control signal may be applied as a feedback signal to train the neural network. For example, the TIM may be utilized in place of the l2loss function. Resulting images may be sent to be displayed on the display304and/or sent as images sequences to the luminance transformer306. The display304receives an image signal from the machine system302and displays the image.

The luminance transformer306receives image sequences from the machine system302and channel coefficients. Each of the image sequences may have one or more channels, such as the red, green, and blue color channels. A channel coefficient may be received for each channel. The luminance transformer306utilizes the channel coefficients to transform the image sequences into luminances, which are sent to the pre-filter308. In some embodiments, the luminance transformer306may also receive images sequences from a source other than the machine system302. For example, the luminance transformer306may receive a reference image sequence from an archive or network source, to compare to the image sequence (test) received from the machine system302.

The pre-filter308receives the luminances from the luminance transformer306and the Gaussian kernel. The Gaussian kernel may be of a set size, radius, and filter sigma. The pre-filter308transforms the luminances to filtered luminances, which are sent to the temporal differencer310. In some embodiment, the pre-filter308applies a Hamming window to perform temporal filtering.

The temporal differencer310receives the filtered luminances from the pre-filter308and linear approximation weights. The temporal differencer310determines the difference between the filtered luminances for each of the image sequences. For embodiments wherein more than two image sequences are received, the temporal differencer310may determine whether to determine each difference or to select one sequence as a reference sequence and compare each of the other test sequences to that reference sequence. The temporal differencer310may then utilize the linear approximation weights to weight the temporal difference. The weighted temporal difference is then sent to the discrete Fourier transformer312. The discrete Fourier transformer312receives the weighted temporal difference, applies a Fourier transform to generate power spectrum components, and sends those power spectrum components to the temporal contrast sensitivity function envelope integral calculator314.

The temporal contrast sensitivity function envelope integral calculator314receives the power spectrum components and a band-pass filter function. The temporal contrast sensitivity function envelope integral calculator314then calculates a temporal image metric (TIM). The TIM is applied to affect the operation of the threshold filter316. The TIM may be a measure of the “badness” or “goodness” of a pixel, where the “badness” is a value indicating the amount of noticeable disturbance in this pixel compared to the reference and the “goodness” is a function of the “badness”, for example “badness”=1−“goodness”.

The threshold filter316receives the TIM from the temporal contrast sensitivity function envelope integral calculator314and a threshold value. The threshold received and utilized by the threshold filter316may differ based on whether the TIM is measuring “badness” or “goodness”. If the “badness” is above a threshold, or the “goodness” below the threshold, the threshold filter316generates the TIM control signal, which is sent to the machine system302. The image rendering system300may be operated in accordance withFIG. 1andFIG. 2.

Referring toFIG. 4, an image display system400comprises an image rendering system300, a server402, a reference video404, a display device406, a test video408, a display device410, a TIM visual indication412, and a display device414.

The server402receives the reference sequence and the test sequence. The server402may configure the display device406to display the reference sequence as the reference video404. The server402may also configure the display device410to display the test sequence as the test video408. The server402sends the reference sequence and the test sequence to the image rendering system300to generate a temporal image metric. The server402then receives a control signal to configure the display device414to display a visual indication of the temporal image metric, the TIM visual indication412. The TIM visual indication412may utilize a histogram depicting various values associated with the TIM, such as minimum, maximum, average, and variance. The TIM visual indication412may also be a color map (as depicted inFIG. 4) that transforms the values into an associated color. For example, the TIM visual indication412may utilize blue (or another “cool” color) to depict an area of the sequence (or image of the sequence) that has a lower value, such as average TIM, and may utilize red (or another “warm” color) to depict an area of the sequence (or image of the sequence) that has a higher value, such as average TIM. In some embodiment, the display device406, the display device410, and the display device414are the same display device, which is re-configured by the server402to display the reference video404, the test video408, and the TIM visual indication412.

Referring toFIG. 5, a neural network training diagram500comprises a TIM loss502and an L2 loss504over a number of training epochs. The temporal image metric generated by an image rendering system, such as the image rendering system300, may be utilized as a loss function to train a neural network in place of a conventional loss function, such as a 2 norm. Training may continue for a pre-determined number of epochs, until the loss is below a threshold value, until the average loss is below a threshold value, until the average loss over a specific window (such as the last N number of epochs) is below a threshold value, etc. As depicted inFIG. 5, utilizing the TIM loss502in place of the L2 loss504may result in fewer computations performed to train a neural network, and, thus, a more efficient system.

FIG. 6is a block diagram of one embodiment of a computing system600in which one or more aspects of the disclosure may be implemented. The computing system600includes a system data bus632, a CPU602, input devices608, a system memory604, a graphics processing system606, and display devices610. In alternate embodiments, the CPU602, portions of the graphics processing system606, the system data bus632, or any combination thereof, may be integrated into a single processing unit. Further, the functionality of the graphics processing system606may be included in a chipset or in some other type of special purpose processing unit or co-processor.

As shown, the system data bus632connects the CPU602, the input devices608, the system memory604, and the graphics processing system606. In alternate embodiments, the system memory604may connect directly to the CPU602. The CPU602receives user input from the input devices608, executes programming instructions stored in the system memory604, operates on data stored in the system memory604to perform computational tasks. The system memory604typically includes dynamic random access memory (DRAM) employed to store programming instructions and data. The graphics processing system606receives instructions transmitted by the CPU602and processes the instructions, for example to implement aspects of the disclosed embodiments, and/or to render and display graphics (e.g., images, tiles, video) on the display devices610.

As also shown, the system memory604includes an application program612, an API614(application programming interface), and a graphics processing unit driver616(GPU driver). The application program612generates calls to the API614to produce a desired set of computational results. For example, the application program612may transmit programs or functions thereof to the API614for processing within the graphics processing unit driver616.

The graphics processing system606includes a GPU618(graphics processing unit), an on-chip GPU memory622, an on-chip GPU data bus636, a GPU local memory620, and a GPU data bus634. The GPU618is configured to communicate with the on-chip GPU memory622via the on-chip GPU data bus636and with the GPU local memory620via the GPU data bus634. The GPU618may receive instructions transmitted by the CPU602, process the instructions, and store results in the GPU local memory620. Subsequently, the GPU618may display certain graphics stored in the GPU local memory620on the display devices610.

The GPU618includes one or more logic blocks624. The logic blocks624may implement embodiments of the systems and techniques disclosed herein.

The disclosed embodiments may be utilized to communicate data between various components of the computing system600. Exemplary component communications include between the CPU602and/or the GPU618and the memory circuits, including the system memory604, the GPU local memory620, and/or the on-chip GPU memory622.

The GPU618may be provided with any amount of on-chip GPU memory622and GPU local memory620, including none, and may employ on-chip GPU memory622, GPU local memory620, and system memory604in any combination for memory operations.

The on-chip GPU memory622is configured to include GPU programming628and on-Chip Buffers630. The GPU programming628may be transmitted from the graphics processing unit driver616to the on-chip GPU memory622via the system data bus632. The GPU programming628may include the logic blocks624.

The GPU local memory620typically includes less expensive off-chip dynamic random access memory (DRAM) and is also employed to store data and programming employed by the GPU618. As shown, the GPU local memory620includes a frame buffer626. The frame buffer626may for example store data for example an image, e.g., a graphics surface, that may be employed to drive the display devices610. The frame buffer626may include more than one surface so that the GPU618can render one surface while a second surface is employed to drive the display devices610.

The display devices610are one or more output devices capable of emitting a visual image corresponding to an input data signal. For example, a display device may be built using a liquid crystal display, or any other suitable display system. The input data signals to the display devices610are typically generated by scanning out the contents of one or more frames of image data that is stored in the frame buffer626.

FIG. 7is an example block diagram of a computing device700that may incorporate embodiments of the present invention.FIG. 7is merely illustrative of a machine system to carry out aspects of the technical processes described herein, and does not limit the scope of the claims. One of ordinary skill in the art would recognize other variations, modifications, and alternatives. In one embodiment, the computing device700typically includes a monitor or graphical user interface702, a data processing system720, a communication network interface712, input device(s)708, output device(s)706, and the like.

As depicted inFIG. 7, the data processing system720may include one or more processor(s)704that communicate with a number of peripheral devices via a bus subsystem718. These peripheral devices may include input device(s)708, output device(s)706, communication network interface712, and a storage subsystem, such as a volatile memory710and a nonvolatile memory714.

The volatile memory710and/or the nonvolatile memory714may store computer-executable instructions and thus forming logic722and band-pass filter724that when applied to and executed by the processor(s)704implement embodiments of the processes disclosed herein, for example inFIG. 1andFIG. 2.

The input device(s)708include devices and mechanisms for inputting information to the data processing system720. These may include a keyboard, a keypad, a touch screen incorporated into the monitor or graphical user interface702, audio input devices such as voice recognition systems, microphones, and other types of input devices. In various embodiments, the input device(s)708may be embodied as a computer mouse, a trackball, a track pad, a joystick, wireless remote, drawing tablet, voice command system, eye tracking system, and the like. The input device(s)708typically allow a user to select objects, icons, control areas, text and the like that appear on the monitor or graphical user interface702via a command such as a click of a button or the like.

The output device(s)706include devices and mechanisms for outputting information from the data processing system720. These may include the monitor or graphical user interface702, speakers, printers, infrared LEDs, and so on as well understood in the art.

The communication network interface712provides an interface to communication networks (e.g., communication network716) and devices external to the data processing system720. The communication network interface712may serve as an interface for receiving data from and transmitting data to other systems. Embodiments of the communication network interface712may include an Ethernet interface, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL), FireWire, USB, a wireless communication interface such as Bluetooth or WiFi, a near field communication wireless interface, a cellular interface, and the like.

The communication network interface712may be coupled to the communication network716via an antenna, a cable, or the like. In some embodiments, the communication network interface712may be physically integrated on a circuit board of the data processing system720, or in some cases may be implemented in software or firmware, such as “soft modems”, or the like.

The computing device700may include logic that enables communications over a network using protocols such as HTTP, TCP/IP, RTP/RTSP, IPX, UDP and the like.

The volatile memory710and the nonvolatile memory714are examples of tangible media configured to store computer readable data and instructions to implement various embodiments of the processes described herein. Other types of tangible media include removable memory (e.g., pluggable USB memory devices, mobile device SIM cards), optical storage media such as CD-ROMS, DVDs, semiconductor memories such as flash memories, non-transitory read-only-memories (ROMS), battery-backed volatile memories, networked storage devices, and the like. The volatile memory710and the nonvolatile memory714may be configured to store the basic programming and data constructs that provide the functionality of the disclosed processes and other embodiments thereof that fall within the scope of the present invention.

Logic722that implements embodiments of the present invention may be stored in the volatile memory710and/or the nonvolatile memory714. Said logic722may be read from the volatile memory710and/or nonvolatile memory714and executed by the processor(s)704. The volatile memory710and the nonvolatile memory714may also provide a repository for storing data used by the logic722.

The volatile memory710and the nonvolatile memory714may include a number of memories including a main random access memory (RAM) for storage of instructions and data during program execution and a read only memory (ROM) in which read-only non-transitory instructions are stored. The volatile memory710and the nonvolatile memory714may include a file storage subsystem providing persistent (non-volatile) storage for program and data files. The volatile memory710and the nonvolatile memory714may include removable storage systems, such as removable flash memory.

The bus subsystem718provides a mechanism for enabling the various components and subsystems of data processing system720communicate with each other as intended. Although the communication network interface712is depicted schematically as a single bus, some embodiments of the bus subsystem718may utilize multiple distinct busses.

It will be readily apparent to one of ordinary skill in the art that the computing device700may be a device such as a smartphone, a desktop computer, a laptop computer, a rack-mounted computer system, a computer server, or a tablet computer device. As commonly known in the art, the computing device700may be implemented as a collection of multiple networked computing devices. Further, the computing device700will typically include operating system logic (not illustrated) the types and nature of which are well known in the art.

Terms used herein should be accorded their ordinary meaning in the relevant arts, or the meaning indicated by their use in context, but if an express definition is provided, that meaning controls.

“Circuitry” in this context refers to electrical circuitry having at least one discrete electrical circuit, electrical circuitry having at least one integrated circuit, electrical circuitry having at least one application specific integrated circuit, circuitry forming a general purpose computing device configured by a computer program (e.g., a general purpose computer configured by a computer program which at least partially carries out processes or devices described herein, or a microprocessor configured by a computer program which at least partially carries out processes or devices described herein), circuitry forming a memory device (e.g., forms of random access memory), or circuitry forming a communications device (e.g., a modem, communications switch, or optical-electrical equipment).

“Firmware” in this context refers to software logic embodied as processor-executable instructions stored in read-only memories or media.

“Hardware” in this context refers to logic embodied as analog or digital circuitry.

“Software” in this context refers to logic implemented as processor-executable instructions in a machine memory (e.g. read/write volatile or nonvolatile memory or media).

Various logic functional operations described herein may be implemented in logic that is referred to using a noun or noun phrase reflecting said operation or function. For example, an association operation may be carried out by an “associator” or “correlator”. Likewise, switching may be carried out by a “switch”, selection by a “selector”, and so on.

Terms used herein should be accorded their ordinary meaning in the relevant arts, or the meaning indicated by their use in context, but if an express definition is provided, that meaning controls.

A “band-pass filter” refers to a device that passes frequencies within a certain range and rejects frequencies outside that range.

“Control signal” refers to a pulse or frequency of electricity or light that represents a control command as it travels over a network, a computer channel or wireless.

“Piecewise linear approximation” refers to a real-valued function defined on the real numbers or a segment thereof, whose graph is composed of straight-line sections.

Various logic functional operations described herein may be implemented in logic that is referred to using a noun or noun phrase reflecting said operation or function. For example, an association operation may be carried out by an “associator” or “correlator”. Likewise, switching may be carried out by a “switch”, selection by a “selector”, and so on.