The subject matter disclosed herein relates to the field of digital imaging, and more particularly relates to a method and system for adaptive nonlinear compressed visual sensing.
Currently, the use of acquisition devices such as charge coupled devices (CCDs) is widespread. A CCD is a device for the movement of electrical charge, usually from within the device to an area where the charge can be manipulated, for example conversion into a digital value. This is achieved by shifting the signals between stages within the device one at a time. CCDs are actually implemented as shift registers that move charge between capacitive bins in the device, with the shift allowing for the transfer of charge between bins.
The CCD is usually integrated with a sensor, such as a photoelectric device to produce the charge that is being read, thus making the CCD a major technology where the conversion of images into a digital signal is required. CCDs are currently widely used in professional, medical, and scientific applications where high-quality image data is required.
As the size of the imaging areas and the accompanying number of pixels of CCDs and other imaging devices grows, however, these devices produce larger and larger datasets. For example, there is large market demand for increased resolution in digital cameras and video camcorders. There are is also an increasing number of applications for multi-sensor architectures, producing even larger signal datasets. The prior art approach to handling these exploding datasets is to apply some form of compression techniques after the acquisition process of the dataset.
There is thus provided a method of compressed sensing of an image, the method comprising first calculating an approximation of a portion of the image, performing at least one nonlinear measurement of the image portion, second calculating an error on the image portion in accordance with the image approximation and the at least one nonlinear measurement, if the error is greater than a threshold, sub-dividing the image portion into a plurality of image portions and recursively repeating first calculating, performing at least one nonlinear measurement, second calculating and dividing until the error is less than or equal to the threshold for all image portions.
There is also provided a method of compressed sensing of an image, the method comprising performing one or more linear measurements on portions of the image, performing one or more nonlinear measurements on the portions of the image and computing an adaptive approximation of the image utilizing the one or more linear measurements and the one or more nonlinear measurements.
There is further provided an apparatus for compressed sensing of an image comprising a micro-mirror array module, an optical intensifier placed before the micro-mirror array module and operative to apply a nonlinear gain to light passing through it to the micro-mirror array module, a controller operative to control the optical intensifier and the micro-mirror array module to reflect portions of the image onto a detector so as to capture both linear and nonlinear measurements and an image generator operative to compute an adaptive approximation to reconstruct the image utilizing the linear and nonlinear measurements from the detector.
There is also provided computer program product characterized by that upon loading it into computer memory a process of compressed sensing of an image is executed, the computer program product comprising a computer usable medium having computer usable program code embodied therewith, the computer usable program code comprising computer usable code configured to control an optical intensifier placed before a micro-mirror array module and operative to apply nonlinear gain to light passing through it, computer usable code configured to control the micro-mirror array module to reflect portions of the image onto a detector so as to capture both linear and nonlinear measurements and computer usable code configured to compute an adaptive approximation to reconstruct the image utilizing the linear and nonlinear measurements from the detector.
The invention is herein described, by way of example only, with reference to the accompanying drawings, wherein:
The following notation is used throughout this document:
A novel and useful system and method for adaptive nonlinear compressed visual sensing is described. The adaptive nonlinear compressed sensing mechanism provides a modified DMD sensing architecture incorporating a nonlinear optical intensifier coupled with a nonlinear acquisition process. The modified DMD sensing architecture and related circuitry and software are operative to perform nonlinear image acquisition by computing both linear and nonlinear functionals. These computations are performed recursively to approximate the image to achieve any desired target image quality.
The adaptive nonlinear compressed sensing mechanism enables the acquisition and compression of high resolution visual data, without the need to fully sample the entire dataset at its highest resolution, using significantly less measurements. The compressed sensing techniques described herein replaces the prior art methodology of random measurements and computationally intensive reconstruction with a direct and fast adaptive approximation method combining linear and nonlinear measurements.
As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method, computer program product or any combination thereof. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
Any combination of one or more computer usable or computer readable medium(s) may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CDROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc.
Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
A block diagram illustrating an example computer processing system for implementing the adaptive nonlinear compressed sensing mechanism of the present invention is shown in
The computer system is connected to one or more external networks such as a LAN/WAN/SAN 76 via communication lines connected to the system via data I/O communications interface 72 (e.g., network interface card or NIC). The network adapters 72 coupled to the system enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. The system also comprises magnetic or semiconductor based storage device 74 for storing application programs and data. The system comprises computer readable storage medium that may include any suitable memory means, including but not limited to, magnetic storage, optical storage, semiconductor volatile or non-volatile memory, biological memory devices, or any other memory storage device.
Software adapted to implement the adaptive nonlinear compressed sensing mechanism of the present invention is adapted to reside on a computer readable medium, such as a magnetic disk within a disk drive unit. Alternatively, the computer readable medium may comprise a floppy disk, removable hard disk, flash memory 66, EEROM based memory, bubble memory storage, ROM storage, distribution media, intermediate storage media, execution memory of a computer, and any other medium or device capable of storing for later reading by a computer a computer program implementing the mechanism of this invention. The software adapted to implement the adaptive nonlinear compressed sensing mechanism of the present invention may also reside, in whole or in part, in the static or dynamic main memories or in firmware within the processor of the computer system (i.e. within microcontroller, microprocessor or microcomputer internal memory).
Other digital computer system configurations can also be employed to implement the adaptive nonlinear compressed sensing mechanism of the present invention, and to the extent that a particular system configuration is capable of implementing the system and methods of this invention, it is equivalent to the representative digital computer system of
Once they are programmed to perform particular functions pursuant to instructions from program software that implements the system and methods of this invention, such digital computer systems in effect become special purpose computers particular to the mechanism of this invention. The techniques necessary for this are well-known to those skilled in the art of computer systems.
It is noted that computer programs implementing the system and methods of this invention will commonly be distributed to users on a distribution medium such as floppy disk or CDROM or may be downloaded over a network such as the Internet using FTP, HTTP, or other suitable protocols. From there, they will often be copied to a hard disk or a similar intermediate storage medium. When the programs are to be run, they will be loaded either from their distribution medium or their intermediate storage medium into the execution memory of the computer, configuring the computer to act in accordance with the method of this invention. All these operations are well-known to those skilled in the art of computer systems.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or by combinations of special purpose hardware and computer instructions.
Consider a digital camera as an example imaging device incorporating a CCD imaging chip. An example CCD imaging sensor as found in a typical digital camera is shown in
Once the digital image x has been acquired, it is usually then compressed. In most digital cameras the user has the capability to control the compression/quality tradeoff, through the camera settings. Standard compression algorithms such JPEG and JPEG2000 are commonly used to compress the image. These compression algorithms are both ‘transform-based’ and operate as follows.
First, a transform is applied to the image Tx=c to yield N coefficients. Note that in the case of JPEG2000, a wavelet transform is applied. In the case of JPEG, a local discrete cosine transform (DCT) is applied. Exactly N coefficients are obtained for ‘critically-sampled’ transforms. More than N coefficients may be obtained for redundant transforms when using frames.
A quantization process is then applied to the transform coefficients c such that a sparse representation remains consisting of approximations of only k of the coefficients, with k<<N (k significantly smaller than N, in a relative sense).
Then entropy coding is applied to the quantized coefficients, thereby generating a compressed bit-stream. Typically, the compression ratio, i.e. the ratio between the size of the compressed image and the size of the image, is k/N for grayscale images.
A sparse wavelet representation of the image Lena is shown in
Many acquisition devices commonly in use today generate very large datasets. These datasets are immediately reduced using signal processing techniques to a smaller dataset. A signal acquisition paradigm, known as Compressed Sensing (CS), attempts to improve this process by providing mathematical tools that, when coupled with specific acquisition hardware architectures, can potentially reduce the acquired dataset sizes, without reducing the resolution or quality of the compressed signal. A brief mathematical framework of compressed sensing is provided below.
First acquire n<<N measurements, using a sampling matrix Φ, by computing for a signal x
Since n, the dimension of y (i.e. the vector of acquired samples), is substantially smaller than N, the dimension of the signal, we obtain some initial compression, which can be further augmented by applying lossy or lossless compression to the vector y.
Similarly to standard transform-based compression techniques, the paradigm of compressed sensing is based on the assumption that the signal x has a sparse representation in some basis such as wavelets. This means that we assume that there exists a known fixed transform T, such that from the N (or more) transform coefficients c=Tx, only k<n coefficients are significant. Working under this ‘sparsity’ assumption an approximation to x can be reconstructed from y by ‘sparsity’ minimization, such as l1 minimization
Under certain conditions exact reconstruction of x is possible, i.e. when a vector of dimension N can be exactly recovered by the minimization process (Equation 2) from the smaller number of n measurements. Compressed sensing techniques can indicate when exact reconstruction is possible with very high probability or when the solution to the minimization problem (Equation 2) provides a good approximation to the real solution. A key assumption is that the sampling process determined by the matrix Φ and the sparsity transform T are ‘incoherent,’ meaning that if a signal has a sparse representation in one, then it must have a dense representation in the other and visa versa, but a signal cannot have a sparse representation in both.
An example application of compressed sensing within the framework of a ‘single pixel’ digital camera architecture will now be described. The compressed sensing camera replaces the CCD and CMOS acquisition technologies by a Digital Micro-mirror Device (DMD). The DMD consists of an array of electrostatically actuated micro-mirrors where each mirror of the array is suspended above an individual SRAM cell. Each mirror rotates about a hinge and can be positioned in one of two states: +12 degrees or −12 degrees from horizontal. Using lenses, all the reflections from the micro-mirrors at a given state, say +12 degrees for example, are focused onto and collected by a single photodiode to yield an absolute voltage. The output of the photodiode is amplified through an amplifier circuit (e.g., op-amp circuit) and then digitized by an analog-to-digital converter (e.g., 12-bit). The output v of the ADC can be interpreted as follows
where
x=(x1, . . . , xN) is a input digital image;
1θ
the DC offset is the value output when all the micro-mirrors are set to −12 degrees;
It is noted that current DMD hardware platforms are capable of performing tens of thousands configured samples a second. The resolution of current DMD hardware platforms is currently approximately 11 Mega pixels.
In one embodiment, the rows of the compressed sampling matrix Φ comprise a sequence of n pseudo-random binary masks, where each mask is a ‘scrambled’ configuration of the DMD array. Thus, the measurement vector y is composed of dot-products of the digital image x with pseudo-random masks. The measurements taken are collected into a compressed bitstream with possible lossy or lossless compression applied to the elements of y. During the decoding process, which takes place at the viewing device, a minimization algorithm solves Equation 2. An approximate ‘reconstructed’ image is obtained by applying the transform T−1 to the coefficients of the computed solution to Equation 2. In one example, the transform T is chosen to be a wavelet transform, but using compressed sensing, any transform T which is in incoherence with a process of pseudo-random masks Φ (almost all reasonable transforms have this property) and in which the image has a sparse representation will yield an image reconstruction with good approximation to the original image.
One disadvantage of the first embodiment compressed sensing technique is that it exhibits poor control over the quality of the output compressed image. From the theory of wavelet approximation, the error of an n-term wavelet approximation is determined by the ‘weak-type smoothness’ of the image as a function in a Besov space. In other words, the more visual activity in the image, edges and texture parts, the higher the number of wavelet coefficient terms needed to achieve a specified level of visual quality. This compressed sensing architecture, however, is not adaptive and the number of measurements is determined before the acquisition process begins, with no feedback on the progressive quality during the acquisition process.
A second disadvantage is that the compressed sensing technique includes a computationally intensive reconstruction algorithm. It is known that all the algorithms for the l1-minimization (Equation 2) are very computationally intensive. Therefore, the client application performing the decoding of the compressed sensing bitstream for viewing purposes, analysis or conversion purposes must have sufficient computation resources, especially for the case of an image sequence or video stream.
A third disadvantage is that the compressed sensing technique described supra considers only linear measurements as in Equation 1 which is within the capabilities of existing DMD architectures and is not capable of nonlinear sampling.
In this second embodiment, an adaptive nonlinear compressed visual sensing mechanism is described. The adaptive nonlinear compressed sensing mechanism provides a DMD sensing architecture modified to include a nonlinear optical intensifier placed before the DMD array to generate nonlinear samples.
The DMD architecture enables several embodiments of nonlinear sampling to generate the compressed image. A complimentary decoding process is used to reconstruct the compressed image is no more computational intensive than existing algorithms in use today such as JPEG or JPEG2000 decoding.
The adaptive nonlinear compressed sensing mechanism is a direct and adaptive approach to compressed sensing. The DMD array architecture is used differently than in the first embodiment as described infra. The particular DMD used, however, is not critical to the invention as one skilled in the art can adapt a particular DMD array to a particular implementation of the invention. In one example embodiment, a grayscale DMD array is used. Other DMDs commercially available today allow individual ‘gain’ filters to be applied to the light coming into each the of micro-mirrors. This is achieved by variable flipping of each individual micro-mirror at the time of the acquisition, where no flipping allows all the light coming in to be reflected and faster flipping corresponds to multiplying the value of light coming into the micro-mirror by a smaller coefficient.
These DMD array devices can be used for computation of arbitrary linear functionals, where the computation of requires only two measurements. This is because any real linear functional F:N→,F(x)=V,x with V εN, has the representation F=F+−F− where F+(x)=V+,x F−(x)=V−,x where V+,V− are vectors in N with positive coefficients.
In this second embodiment, the architecture of a DMD is modified to permit nonlinear acquisition of the input image. A diagram illustrating an example DMD based adaptive nonlinear compressed sensing system is shown in
A light intensifier 48 such as a toggled light intensifier tube (TLIT) that is capable of applying a nonlinear function to light passing through it is placed between focusing lens 28 and the DMD array 22 in the path of the input image that is projected onto the DMD array. This enables the system to perform nonlinear acquisition of the input image.
A flow diagram illustrating an example method of adaptive nonlinear compressed sensing is shown in
The rectangle R having dimensions [1, Width (f)]×[1, Height (f)] is set as the ‘active’ root of a quad-tree and a recursive procedure is begun (step 120). Initially, the rectangle is set to the entire image. For each ‘active’ node in the quad-tree perform the following two steps. First, calculate an approximation to the image in the rectangle R associated with the node as a constant cR (step 122). This is computed by averaging as expressed below
Where #{(i,j)εR} is the number of pixels in the rectangle R and f (i,j) are the actual pixels values of the image. Note that in this step, the DMD array is configured to turn on all mirrors corresponding to the pixels in the rectangle of the image. In addition, the light intensifier is off or set to a zero or linear gain.
Second, measure the averaged squared error εR on rectangle R using the following (step 124).
Where cR is the image approximation calculated in Equation 4. If εR is greater than some predetermined average error ε (step 126), then subdivide the rectangle R into four child rectangles of equal dimensions (step 128). For each child rectangle create an ‘active’ child node in the quad-tree (step 132) and the method repeats recursively for each child node. If εR≦ε (step 126), then the node is marked as ‘inactive’ (step 130).
As long as there are additional ‘active’ rectangles in the quad-tree (step 134), the method continues recursively with step 122 and an image approximation and average squared error for each child rectangle node is calculated. Once all ‘active’ nodes have been processed (i.e. no active nodes remain and there are only inactive nodes), the approximating piecewise constant approximation to the image is calculated as
where S(i, j) represents the compound approximate image (i.e. the compressed image) (step 136).
It is noted that using current DMD architectures, it is possible to compute Equation 4 for any portion of the image since it can be realized as a linear functional. Note also that the approximation technique described supra is not limited to dividing the image into rectangles, as the image can be divided in any desired manner. The shape and contour of the image portion, i.e. rectangles, etc., is not critical as long as the micro-mirrors situated at the locations (i,j)εR (i.e. pixels in the rectangle or other contour) are turned ‘on’ and reflect light into the photodiode. The measurement taken at the photodiode computes the value
in a single measurement. The averaging of this sum can be performed in a later stage after the analog to digital conversion. In one example embodiment, a modified DMD architecture stores the quantities #{(i,j)εR} in memory for each possible rectangle R in the quad-tree. Thus, there is no additional computational cost for the averaging computation.
The expression for the average squared error εR on rectangle R in Equation 5, however, is a nonlinear functional which cannot be computed by a conventional DMD. To enable computation of nonlinear functionals, a nonlinear optical element 48 (
Preferably, the nonlinear optical element (e.g., TLIT) has the following properties. First, it should be possible to either remove or switch off the light intensifier before each sample (to acquire linear measurements). Alternatively, it should be possible to adaptively set the gain of the light intensifier to zero linear gain before each measurement, so that light coming out of the intensifier is the same light that enters.
Second, it should be possible to set the gain of the intensifier to one or more nonlinear gain settings. In one embodiment the TLIT applies a squared gain on light coming through it such that each micro-mirror element (i,j) receives the light f (i.j)2 when the intensifier is turned on and f (i.j) when it is turned off. The light intensifier, however, may be adapted to apply other nonlinear functions to the light passing through it, depending on the particular implementation and light intensifier used. For example, in some embodiments the TLIT is configured to apply nonlinear gains functions other than the quadratic such as f (i,j)3, f(i,j)4, ef(i,j), etc.
Note that with the addition of the light intensifier (e.g., TLIT) component 48 the nonlinear functional (Equation 5) can be computed with a single measurement and two additional digital computations in the controller unit. This is achieved by decomposing Equation 5 to the following single nonlinear measurement and two digital computations:
Thus, the average squared error εR can be computed by (1) a table lookup for the number # of pixels in the rectangle, (2) a nonlinear measurement using the light intensifier for the summation of the image pixel values squared, and (3) a linear measurement (i.e. light intensifier set to zero linear gain) for the image approximation.
A block diagram illustrating the data flow of an example adaptive nonlinear compressed sensing system is shown in
In operation, the adaptive acquisition module controls the image acquisition process. Linear measurements of the input image 108 (or a portion thereof) are made with the light intensifier configured to zero linear gain (or switched off). The DMD controller configures the DMD 94 to reflect only those pixels in the particular rectangle to be measured. The linear measurement computes the image approximation (Equation 4). Information regarding the number # of pixels in the rectangle (or current image portion) stored in the rectangle pixel database 104 is retrieved to complete the computation.
The nonlinear measurement portion of Equation 8 (average squared error) is performed with the light intensifier set to a nonlinear gain (e.g., squared). The nonlinear measurement is then used to compute Equation 8 for each active node.
To illustrate the compressed sensing mechanism, consider the initial iteration of the method of
In alternative embodiments, the compressed sensing techniques described supra can be used to implement higher order approximation schemes as well. Assuming one wants to apply piecewise linear approximation. Then the step of calculating the average squared error (step 124,
First, the coefficients a,b,c ε are found such that
It is noted that these coefficients represent a planar equation, i.e. the pixel data of the rectangle is approximated by an ‘optimal planar piece’. This provides a better approximation than an average, since approximating by a plane is better than approximating with a constant (the constant function is a special case of a plane parallel to the x-y plane).
Equation 8 can be solved using the linear system
Therefore, to obtain the right hand side of the linear system of Equation 10 one needs to evaluate three linear functionals that are obtained with three linear measurements of the DMD array (i.e. light intensifier is off or set to zero gain) since they are positive functional. Once the system is solved the error can be evaluated as follows
Once the error is computed, it is tested against the required tolerance averaged squared error ε. This requires a single nonlinear measurement and several linear measurements which can be implemented using the DMD image acquisition system of
In alternative embodiments, higher order approximation schemes can be used (e.g., quadratic, cubic, etc.). Any such higher order scheme can be implemented by solving a linear system of moments of the type in Equation 10 above to compute the optimal local polynomial approximation, followed by an error computation of the type in Equation 11 which requires one nonlinear measurement and several additional linear measurements.
In alternative embodiments, the adaptive nonlinear compressed sensing mechanism is used to acquire and compress sequences of 2D images or video streams, where each 2D frame of the sequence or video stream is acquired using the techniques and methods described supra.
The corresponding structures, materials, acts, and equivalents of all means or steps plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of one or more embodiments of the invention. The embodiments were chosen and described in order to best explain the principles and the practical application, and to enable others of ordinary skill in the art to understand the one or more embodiments of the invention for various embodiments with various modifications as are suited to the particular use contemplated.
It is intended that the appended claims cover all such features and advantages of the invention that fall within the spirit and scope of the present invention. As numerous modifications and changes will readily occur to those skilled in the art, it is intended that the invention not be limited to the limited number of embodiments described herein. Accordingly, it will be appreciated that all suitable variations, modifications and equivalents may be resorted to, falling within the spirit and scope of the present invention.