text:
Method and apparatus for eliminating flicker by quantizing values based on previous quantization
A method and apparatus for eliminating flicker by quantizing values based on previous quantization is described. In one embodiment, the method comprises encoding a first coefficient value in a first frame of a motion sequence and subsequently setting a second coefficient in a second frame of the motion sequence and in the same position as the first coefficient to be within a predetermined closeness with the value of the first coefficient.
This is a continuation of application Ser. No. 09/801,218, filed Mar. 6, 2001, entitled "Method and Apparatus for Eliminating Flicker by Quantizing Values Based on Previous Quantization," incorporated by reference herein and assigned to the corporate assignee of the present invention, which is a divisional of application Ser. No. 09/784,928, filed on Feb. 15, 2001, entitled "A Memory Usage Scheme for Performing Wavelet Processing," incorporated by reference herein, and assigned to the corporate assignee of the present invention.
The present invention relates to the field of compression and decompression; more particularly, the present invention relates to eliminating flicker by quantizing values based on previous quantization operations.
The new JPEG 2000 decoding standard (ITU-T Rec.T.800/ISO/IEC 154441:2000 JPEG 2000 Image Coding System) provides a new coding scheme and codestream definition for images. Although the JPEG 2000 standard is a decoding standard, the JPEG 2000 specifies encoding and decoding by defining what a decoder must do. Under the JPEG 2000 Standard, each image is divided into one or more rectangular tiles. If there is more than one tile, the tiling of the image creates tile-components that can be extracted or decoded independently of each other. Tile-components comprise all of the samples of a given component in a tile. An image may have multiple components. Each of such components comprises a two-dimensional array of samples. For example, a color image might have red, green and blue components.
After tiling of an image, the tile-components may be decomposed into different decomposition levels using a wavelet transformation. These decomposition levels contain a number of subbands populated with coefficients that describe the horizontal and vertical spatial frequency characteristics of the original tile-components. The coefficients provide frequency information about a local area, rather than across the entire image. That is, a small number of coefficients completely describe a single sample. A decomposition level is related to the next decomposition level by a spatial factor of two, such that each successive decomposition level of the subbands has approximately half the horizontal resolution and half the vertical resolution of the previous decomposition level.
Although there are as many coefficients as there are samples, the information content tends to be concentrated in just a few coefficients. Through quantization, the information content of a large number of coefficients is further reduced. Additional processing by an entropy coder reduces the number of bits required to represent these quantized coefficients, sometimes significantly compared to the original image.
The individual subbands of a tile-component are further divided into code-blocks. These code blocks can be grouped into partitions. These rectangular arrays of coefficients can be extracted independently. The individual bit-planes of the coefficients in a code-block are entropy coded with three coding passes. Each of these coding passes collects contextual information about the bit-plane compressed image data.
The bit stream compressed image data created from these coding passes is grouped in layers. Layers are arbitrary groupings of successive coding passes from code-blocks. Although there is great flexibility in layering, the premise is that each successive layer contributes to a higher quality image. Subband coefficients at each resolution level are partitioned into rectangular areas called precincts.
Packets are a fundamental unit of the compressed codestream. A packet contains compressed image data from one layer of a precinct of one resolution level of one tile-component. These packets are placed in a defined order in the codestream.
The codestream relating to a tile, organized in packets, are arranged in one, or more, tile-parts. A tile-part header, comprised of a series of markers and marker segments, or tags, contains information about the various mechanisms and coding styles that are needed to locate, extract, decode, and reconstruct every tile-component. At the beginning of the entire codestream is a main header, comprised of markers and marker segments, that offers similar information as well as information about the original image.
The codestream is optionally wrapped in a file format that allows applications to interpret the meaning of, and other information about, the image. The file format may contain data besides the codestream.
The decoding of a JPEG 2000 codestream is performed by reversing the order of the encoding steps.
After arithmetic decoding, the coefficients undergo bit modeling in coefficient bit modeling block 103. Next, the codestream is quantized by quantization block 104, which may be quantizing based on a region of interest (ROI) as indicated by ROI block 105. After quantization, an inverse transform is applied to the remaining coefficients via transform block 106, followed by DC and optional component transform block 107. This results in generation of a reconstructed image.
The JPEG2000 standard leaves many choices to implementers.
A method and apparatus for eliminating flicker by quantizing values based on previous quantization is described. In one embodiment, the method comprises encoding a first coefficient value in a first frame of a motion sequence and subsequently setting a second coefficient in a second frame of the motion sequence and in the same position as the first coefficient to be within a predetermined closeness with the value of the first coefficient.
The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.
FIGS. 3A-F illustrate a transform memory organization for various levels depicting conceptually how coefficients may be stored for the forward (FIGS. A-C) and inverse (FIGS. 3D-F) transforms.
Improvements to compression and decompression schemes are described. It is a purpose of the techniques and implementations described herein to use choices in JPEG 2000 to make high speed, low cost, low memory and/or feature rich implementations.
In the following description, numerous details are set forth in order to provide a thorough explanation of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory ("ROM"; random access memory ("RAM"; magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
The following descriptions relate to implementations or novel ways to take advantage of the flexibility of JPEG 2000 or other coding schemes with similar features.
Memory Usage for Low Memory and Fast Burst Access
The wavelet transform processing logic 202 includes memory access logic 202A to read data from and store data to memory 201 to enable wavelet transform 202B to be applied to the data (image data or coefficients depending on the level of coefficient). Wavelet processing logic 202 may comprise hardware, software or a combination of both.
In one embodiment, access logic 202A accesses the tile with four parameters: a pointer or index to the start of the tile in memory, the width of the tile, the height of the tile, and the line offset to get from the start of one line to another (the image width). Alternatively, access logic 202A accesses memory 201 using a pointer or index to the end of the tile instead of the width of the tile.
In one embodiment, in order to access for each line of a tile or a portion of a line of an image to perform some function F, the following process may be used.
One of the functions F may include applying a wavelet transform on pairs of lines. Also another function F may be a DC level shift, multiple component transform.
Such a process would be performed by processing logic that may comprise hardware (e.g., dedicated logic, circuitry, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
In one embodiment, coefficients from a subband are accessed using a similar scheme with a starting point, width, height and line offset. Because rows of coefficients are stored together in memory, rows may be accessed efficiently when stored in cache, burst accessible memories or memories that are wider than one coefficient.
FIGS. 3A-C show a transform memory organization for various levels depicting conceptually how coefficients may be stored. All LH, HL and HH coefficients (using the nominclature of ITU-T Rec.T.800/ISO/IEC 154441:2000 JPEG 2000 Image Coding System) are coded. These coefficients are represented by dotted lines in
FIGS. 3A-C show input tile 301, level 1 (L1)(302) and level 2 (L2)(303) memory areas aligned with an offset to indicate how reuse might be accomplished in one embodiment. The addition of two rows, rows 312 and 313, to the memory space used to hold input file 301, is needed to generate the L1 coefficients when reusing the memory for input tile 301 for L1 coefficients. The addition of four rows, rows 341-342, to the memory space used to hold the L1 coefficients is needed to generate the L2 coefficients when reusing the memory storing the L1 coefficients for L2 coefficients. (Note that there are two rows between rows 341 and 342 that are wasted space.) The additional lines are preferably behind the direction the wavelet transform is being applied to the information in the memory.
More specifically, a pair of input rows input tile 301 corresponds to one row of each of LL, LH, HL and HH coefficients at level 1, resulting from the application of a transform to two different lines and the results of applying the wavelet transform being written into lines of the memory. For example, the results of applying a wavelet transform to input rows 310 and 311 are the coefficients in portions of rows 312 and 313 of L1 coefficients (302). For example, LL coefficients 321 of row 312 corresponds to the LL coefficients (solid line) of level 1, HL coefficients 322 of row 312 corresponds to the HL coefficients of level 1, LH portion 323 of row 313 corresponds to the LH coefficients of level 1, and HH portion 324 corresponds to the HH coefficients of level 1. Note that the level 1 coefficients from the first two input lines are stored in two extra rows at the top of the memory with the remaining level 1 coefficients being written into the locations storing the data of input tile 301 to reuse the memory. The width and height for each type of coefficient (e.g., LH, HL, HH) for each subband of level 1 coefficients is half that of input tile 301. The line offset from the LL row to the next LL row for level 1 (e.g., the distance from row 312 to row 314 in
Similarly, the results of applying the wavelet transform to two rows of LL coefficients at level 1 (solid lines) are the coefficients in two rows namely LL coefficients (331), LH coefficients (332), HL coefficients (333) and HH coefficients (334) at level 2. The width and height for level 2 coefficients is a quarter that of input tile 301. The line offset for level 2 is four times the tile width (since each coefficient row is from an area corresponding to two level 1 LL rows or four input lines). Thus, four extra lines of memory are needed to use the same memory that is storing the input tile to store the L2 coefficients. Note that if a third decomposition level was being performed, an additional 8 lines would be needed. Thus, in this example, a total of 14 extra lines are needed to enable reuse of the memory that stores an input time and has two levels of decomposition applied thereto. A general formula may be used to determine the number of extra lines is as follows:
To access subbands, such as the LL, LH, HL and HH subbands, only a starting pointer and the offset between rows/lines are necessary. The height and width are also needed to know when to stop when accessing a tile.
As the number of decomposition levels increases, some rows at the bottom of memory become unused. That is, the lines of memory below the L1 coefficients after the first decomposition level become unused, the lines of memory below the L2 coefficients after the second decomposition level become unused, etc. In one embodiment, this extra space may be reused.
Table 1 shows the amount of memory required for various transform levels for a 256×256 tile for separate memories and reused memory.
For reused memory, the amount listed is the additional new memory used for that level. For this example, reusing memory for levels 1, 2 and 3 saves memory. Level 4 may use a separate memory.
The memory for levels 4, 5 and 6 could be placed in a single memory after level 3 has been generated or in a completely different and separate memory. The amount of memory necessary is 38×32, which is less than 5×256. Because there are two unused lines after generating the level 1 coefficients (i.e., the memory that stored the last two lines of input data), a small memory savings can be achieved by letting the levels 4, 5 and 6 reuse these two lines. This is particularly important because the number of additional lines for levels 4, 5, and 6is 16, 32and 64, and the extra space between the lines will be twice as far and half as wide as the level before.
In one embodiment, coefficients from levels 4, 5, and 6 are packed in a smaller memory structure, such as storage area 450 in
In one embodiment, to use a very little, or potentially minimum, memory, level 6 is stored separately from levels 4 and 5. However, this only saves 64 bytes of memory.
A memory a little smaller than 273×256 can hold all the transform coefficients for a 256×256 tile. This is less than 7% more than a true in-place memory organization. Unlike an in-place memory organization, extra copies are avoided while simultaneously keeping the rows packed together for fast access.
Table 2 shows another example of using separate versus reused memory for 128×128 tiles. For this size, the first three transform levels can reuse memory in a 142×128 buffer.
In one embodiment, a decision to use in-place memory or new memory is a function of tile height and transform level. Such a decision may be based on the following:
if tile height>2(3*level-2), then use in-place method
if tile height=2(3*level-2), then either may be used
if tile height<2(3*level-2), then use new memory
To illustrate the application of the decision, Table 3 below:
In some applications, adapting the memory organization to the tile height is inconvenient. A singled fixed memory organization can be used. Tile sizes smaller than 128×128 typically result in bad compression performance, so would typically not be used. While tile sizes bigger than 1K×1K can be used for very large images, this does not significantly improve compression and the large amount of memory required would typically be burdensome. Therefore, assuming a tile height between 128 and 1024 inclusive and using in-place memory for 3 levels of the transform is a good heuristic.
Decoding is similar in that the results of applying an inverse transform are written ahead of where the decoding processing logic is reading, with the only notable difference being that the start is from the highest level to the lowest level, such as level 6 to level 1 in the example above. In such a case, the input tile ends up at the top of the memory structure. The extra lines to accommodate the memory reuse are in decreasing order. For example, using the structure of
In one embodiment, to handle input tile data, a color conversion may be performed on the data prior to encoding.
Pixels from storage 501 or received directly form the input undergo color conversion and/or level shifting, with the resulting outputs being stored in one coefficient buffers 5021-502N. That is, once the color conversion has been completed on each tile, it is stored in one of the coefficient buffers 5021-502N , and then the next tile can be processed. In one embodiment, there is one coefficient buffer for each component.
Coefficient buffers 5021-502N are used by the transform in the manner described above to perform the wavelet transform while reusing memory. Thus, coefficient buffers 5021-502N are both input and output to wavelet transform.
After the transform is applied to coefficient buffers 5021-502N, the context model 503 and entropy coder 505 can perform further compression processing on the already transformed data. The coded data is buffered in coded data memory 505.
While performing the further compression processing on one tile, the transform may be applied to another tile. Similarly, any or all the operations may be performed on multiple tiles at the same time.
Progression Order Conversion
In the JPEG2000 standard, data in a compressed codestream can be stored in one of the five progression orders. The progression order can change at different points in the codestream. The order is defined by embedded "for layers" on layers, precincts, resolution, and components.
Five progression orders are described in the standard in Table A-16 of the JPEG 2000 standard. They are layer-resolution-component-position progression (LRCP), resolution-layer-component-position progression (RLCP), resolution-position-component-layer progression (RPCL), position-component-resolution-layer progression (PCRL), component-position-resolution-layer progression (CPRL).
The order may be defined in the COD or POC markers of the JPEG 2000 standard. The Coding style default (COD) marker is defined by the JPEG 2000 standard and describes the coding style, number of decomposition levels, and layering that is the default used for compressing all components of an image (if in the main header) or a tile (if in a tile-part header). The Progression order change (POC) marker describes the bounds and progression order for any progression order other than that specified in the COD marker segments in the codestream. The Packet Length Main Header (PLM) indicates a list of packet lengths in tile-parts for every tile part in order and the Packet Length, Tile-part header (PLT) indicates tile packet lengths in a tile-part and indicates where the data is in the codestream.
The JPEG 2000 standard in section B.12 only specifies how packets of compress data are formed for a given progression order. It does not describe how data should be converted from one progression order to another progression order.
In one embodiment, a progression order converting parser converts a codestream to a desired progression order based on the user input without decoding the data and then encoding it again.
To perform the conversion, the order of the packets in the codestream must be reordered. The packets are labeled by their sequential order in the codestream. Markers may indicate the starting point of the data, the length of the data (or alternatively the endpoint of the data) and how the data should be handled. For example, the indication of how the data is to be handled may indicate whether the data is to be deleted, whether the data is to be truncated, or some other operation to be performed on the data. Such handling information may also come from rate distortion information, such as may be provided in a PLT/PLM and/or the PPT/PPM marker sets of the JPEG 2000 standard. In this manner, the codestream may be truncated without changing the packet header.
In one embodiment, a list, array, or other structure (such as reordering structure 601A) is built by indicating the portion of data in each packet. Using this structure, the packets may be reordered.
Referring to
Therefore, the combination of reordering and parsing allows specification of the desired ordering and resolution, quality, etc.
A Progression Order Conversion Example
The following is an example showing how packets are arranged in a codestream. The codestream was formed based on 2 components, 2 layers, 3 decomposition levels, and layer progression.
Table 4 shows the packet order, length and association index of packets in the example. The packet order column shows the sequential order of packets placed in a codestream. The length indicates the length of the packets. The association index shows the resolution, layer, component, and precinct of the packet.
For example, packet[0] is the first packet in the codestream after the first tile header. It has a length of 589 bytes. Association index RwLxCyPz indicates the packet belongs to resolution w, layer x, component y and precinct z.
In this codestream, packets are grouped based on the layer in which they reside. The first 8 packets belong to Layer 0. The following 8 packets belong to Layer 1.
Using the conversion process described herein, the above codestream is converted to resolution layer progression. The following shows how the above packets are re-ordered.
After the layer progressive codestream is converted to resolution progression, in the new codestream, packets are grouped based on resolution. Such a grouping is shown in Table 5. The first 4 packets belong to resolution 0, the next 4 packets to resolution 1, and so on.
One Embodiment of a Conversion Algorithm
Data Hiding (Sideband Information) in JPEG2000 Coding
Bit hiding allows sideband information to be transmitted without increasing the file size. Sideband information that does increase file size but does not break naive decoders might also be valuable (although the COM marker defined by the JPEG 2000 standard might be used instead).
Some marker segments, packet headers and packets are padded out to the nearest byte. Examples of the JPEG 2000 marker segments include PPM, PPT, PLM, and PLT. In addition, some marker segments can be longer than they need to be including QCD, QCC, and POC. In all of these cases, the padded data values are not defined.
Several proprietary coding schemes could use this semi-randomly located undefined data to provide a number of important types of information including, but not limited to, decoding and filtering hints, ownership, segmentation hints, and so on. A hint might include an index to a particular enhancement scheme. For example, if it is known that an image is mostly text, a value may be sent that indicates that a first post-processing filter is to be used. On the other hand, if the area is mostly a graphic image, then a value may be sent that indicates that a second post-processing filter is to be used.
The following are places where bits may be hidden or sideband information may be stored in the codestream.
- arithmetic coder (AC) termination (without predictable termination)
- end of packet header rounding to byte
- after last packet, before next tile
- tag tree construction by not always using minimum
- packet header Lblock signalling
- LSB parity for codeblocks (refinement pass only, cleanup pass only, all)
- QCD, QCC extra subbands, POC.
For example, with respect to hiding data using AC termination, 0 to 7 bits are provided, at least, everytime the coder is terminated. However, this could be extended for a few bytes. These extra bits and bytes may be used for sending extra information.
With respect to each packet header, the end of a packet header is rounded to a byte boundary. Therefore, there may be 1 to 7 bits that may be available for sending extra information at times when rounding would have been necessary. Similarly, each packet is rounded to a byte boundary, thereby providing 1 to 7 bits (assuming that rounding would have been necessary). Also the last packet in a tile-part can be extended a few bytes. These extra bytes may be used to send additional information.
The length of the compressed data for a code-block can be given in the packet header with a non-minimum representation. The choice of representation (e.g., a non-minimum representation) could be used for indicating other information.
With respect to tag tree data hiding, packet headers of the JPEG 2000 standard use tag trees for coding first inclusion and zero bitplane information. When there are multiple codeblocks, tag trees are like a quadtree of minimum values. For example, in the case of 16 codeblocks in a 4×4 arrangement in a packet, the arrangement may be as follows:
An example tag tree, which is minimal for the 4×4 arrangement above is as follows:
in which "3" is added to every codeblock's value, and "0", "2", "5" and "2" are each added to the 4 corresponding codeblocks. Finally, there is one value per codeblock. That is, the minimal tag tree is created by taking the first 2×2 group in the 4×4 arrangement above and look at minimum value is out of the four values. In this case, for the 2×2 block
the minimum value is 3. This is then performed on the other 2×2 blocks. Then these identified minimum values are evaluated again to determine their minimum, which would be "3" in the example. Then the minimum value is subtracted from the four minimum values to create the following
Then, for the remaining numbers in the 4×4, the number 3 is subtracted from each value along with the value in the 2×2 that corresponds to the particular value in the 4×4 arrangement, thereby resulting in the tag tree above.
The first row adds up as follows:
A variable length code may be used that efficiently represents small numbers.
An example of a tag tree that is not minimal is as follows:
(Note that representing "3", "0", "2", "5" and "2" might use less bitstream data than "2", "1", "3", "6" and "3".)
Once a tag tree representation has been made, a determination can be made as to whether the representation is minimal or not based on whether there is a zero in the 2×2 block. Therefore, this information is hidden. For example, the 1 bit block represents the 1 in the 2×2 block above indicates it is not part of a minimal tag tree, but can be used to convey some particular information to a decoder. Likewise if a 2 was the minimal value in the 2×2 block, such a fact may convey different information to a decoder.
The JPEG 2000 POC, QCD, and QCC markers can have redundant entries. It is as if the codestream were quantized and the markers were not rewritten. For example, the QCD and QCC markers have values for a number of subbands specified by the syntax of the marker. If there are fewer subbands actually coded in the bitstream, data may be hidden in the values used for the missing subbands. The redundant entries may be replaced and used for hidden or sideband information.
The hidden or sideband information may include post-processing hints (such as, for example, sharpen this tile with a specified filter or strength, or smooth, or perform optical character recognition (OCR) on this region, etc.), decoding hints, security (such as, for example, an encryption key for decoding the remainder of the image or another image, etc.) codestream identification (such as, for example, labeling POTUS as the originator of the file, etc.) and/or other information.
Use of Layers When Encoding
Layers are part of the JPEG standard. In one embodiment, sideband information, possibly in a COM marker, is used by the decoder to allow selecting of layers during decoding. The sideband information may be used to select layers for postcompression quantization to meet rate/distortion targets for different viewing distances, different resolutions, different regions of interest, different frequency content for analysis (e.g., finding edges of text).
In one embodiment, the layers are predefined based on rate. For example, the first layer represents a 1-bit per pixel image, while the second layer represents a 2-bit per pixel image, etc. Therefore, the layers run from the lowest quality to the highest quality. Likewise, target rates can be met for lower resolutions as well.
The sideband information may be stored in a marker segment of the codestream. In one embodiment, the JPEG 2000 comment (COM) marker is used to provide information about the layers. Specifically, the COM marker may be used to indicate the number of bytes for each resolution and/or rate across the entire image or a relative number of bytes for each additional layer. Table 6 indicates each layer and its resolution in the number of bytes across the tile in an image. Such a table may have distortion values instead.
In another embodiment, the ordering could be by layer. Thus, the information above is consolidated for each level (not segregated by level or component), as shown below:
- Ordering by layer=0 bytes=7959 bitrate=0.971558 PSNR=30.7785
- Ordering by layer=1 bytes=10877 bitrate=1.327759 PSNR=32.0779
- Ordering by layer=2 bytes=16560 bitrate=2.021484 PSNR=35.7321
Distortion by layers can be based on PSNR. For example,
- layer=0 PSNR=30.7785
- layer=1 PSNR=32.0779
- layer=2 PSNR=35.7321
In an alternative embodiment, such information may be hidden in the codestream as described above. The information may be used to control rate distortion.
In another embodiment, the layers may be predefined for a particular viewing distance. In such a case, the data is divided into layers from the highest frequency, lowest resolution to the lowest frequency, highest resolution.
In one embodiment, the layer information indicates the summation of bits across the entire image for that layer and all previous layers (for example the 16,011 bits listed next to layer 1 indicates the total number of bits for layer 0 and layer 1). Alternatively, bytes, words, kilobytes, or other units of memory or rate could be used instead of bits. Table 7 shows this type of absolute rate information.
Table 8 shows relative rate information. Layer 0 has 4096 bits, layer 1 has 11,915 bits, etc.
For example if only 750,000 bytes may be allowed in the decoded image, then all that can be decoded (as the 1,000,000 bytes tabulated with layer 6 includes the 500,000 bytes of layers 0-5) is through layer 5 and half of importance layer 6. In some embodiments, no packets from layer 6 would be included. In other embodiments, some packets from layer 6 would be included and others would be replaced by zero packets so that the total amount of layer 6 data was approximately 250,000 bytes.
In an alternative embodiment, the layers may be predefined for some other distortion metric (e.g., MSE, weighted MSE, sharpness of text, etc.)
The decoder uses the information regarding the layers from the codestream to select layers to generate an image. The decoder knowing what the desired viewing characteristics from the application or implementation (see Table 9 below), and using the information from the codestream specifying the layers, can quantize the codestream in order to display an image at the correct viewing distance.
Referring to
Editing of Tiles, Tile-parts, or Packets
Once a codestream is created, it may be desirable to edit parts of the image. That is, for example, after performing encoding to create the codestream, a set of tiles may be decoded. After decoding the set of times, editing may be performed, followed by encoding the set of tiles with the edits to the same size as the encoded tiles were prior to their decoding. Examples of typical editing include sharpening of text and removing "red-eye." The JPEG 2000 codestream can be edited in memory or in a disk file system without rewriting the entire codestream.
Referring to
After performing the desired edits, processing logic recompresses the data into coded data (processing block 1103) and creates a replacement tile, tile-part, or packet for the codestream (processing block 1104). In one embodiment, in creating the replacement tile, tile-part, or packet, processing logic pads out the data with bytes at the end of the codestream if the new data is smaller than the unedited version of the data to make the replacement tile, tile-part or packet the same size as the unedited version.
In an alternative embodiment, processing logic may use a marker, or tag, such as a COM marker segment of the appropriate length instead of the padding. The COM marker could be used to fill space or could contain information that the encoder wanted to include. It could contain information such as, for example, sideband information described herein or a copyright license for an image or text or other file format information.
In one embodiment, in creating the replacement tile, tile-part, or packet, processing logic truncates the last packets for any or all components until the data fits in the codestream if the new data is larger than the unedited version of the data.
Editing of an image may be performed by changing coded data for tiles, tile-parts, or codeblocks. In one embodiment, editing is performed without changing file size by quantizing instead of expanding. In another embodiment, a predetermined amount of extra space is allocated per tile or per codeblock to allow for a predetermined amount of expansion. In still another embodiment, coded data may be put at end of files by manipulating tile headers and putting invalid tile data in COM markers.
Note that if there are subsequent tile-parts that depend on the data in the portion of the codestream that is being edited, these tile-parts may become useless in the codestream. An indication of this useless data may be noted to the decoder by one of several methods. These methods involve inserting or modifying information in the codestream to indicate the presence and/or location of the useless data. In one embodiment, the application uses a status buffer to indicate that the data in tile-parts subsequent to an edited tile-part may be useless. The status buffer may be in workspace memory and describes dependencies between packets. If an earlier packet is altered, the subsequent packets cannot be decoded as is. These subsequent packets must be edited accordingly or eliminated. In another embodiment, such an indication may be made by zeroing out the data section of those tile-parts and/or creating a PPT marker segment that denotes no data.
Optimal Encoder Quantization
During encoding, unquantized coefficients from some or all subbands may be divided by a value of Q to create the quantized coefficient values. This value Q may have a wide range of values. Typical encoders quantize a number of the values in a single particular range of values is made equal to one single coefficient value. In essence, all the coefficients in the particular range are quantized to the same value. This can be exemplified by
In some cases, two spatially adjacent coefficients may be close to each other numerically yet in separate quantization bins, such as coefficient values 1201 of range R2 and 1202 of range R1 in
Flicker Reduction for Motion JPEG
At times, flicker occurs when applying wavelet compression to motion sequences. An example of such flicker may include the image getting brighter or darker in areas or the appearance of edges changing in successive frames as the motion sequence is played (mosquito noise around the edges). The flicker may be due to the application of different local quantization to successive frames of a motion sequence or to noise exacerbated by quantization that is viewed temporarily.
To reduce flicker, coefficients that are in the same position and close to the same value in successive frames are forced to the same value. That is, the coefficients values in successive frames are set to a predetermined value. This is essentially a form of quantization that is applied during encoding.
A test of whether to apply such quantization to a coefficient value in a subsequent frame is based on the quantization that was performed on the coefficient in the previous frame. Thus, the encoder is utilizing frame dependency to eliminate flicker while the decoder decodes data frame by frame independently.
In one embodiment, in order to reduce flicker in motion JPEG, coefficient values are modified (quantized) based on their relationship with each other with respect to a threshold. For example, if Dn and Dn+1 are the corresponding coefficient (same spatial location and same subband) in two frames before quantization, if D′n and D′n+1 represent these coefficients after quantization, if Q(•) are scalar quantization, and if the value T is a threshold, then the following may be applied:
For example, the value T may be twice the quantization step size. Other values of T include, but are not limited to, {square root}{square root over (2)}Q, 1.5Q, 2{square root}{square root over (2)}Q.
One of the coefficient values may be modified to be either a predetermined closeness to another coefficient value. The closeness may be determined by some threshold. The threshold may be user set or adaptive based on some criteria. The threshold could be different based on the subband and, perhaps, on the persistance of the particular value (number of frames that this coefficient is close). In one embodiment, the coefficient value is set equal to the other coefficient value. In alternative embodiments, the coefficient is set to be within the quantization bin size of the other coefficient value or twice the quantization bin size.
Quantization logic 1401 may comprise comparison hardware (e.g., logic with gates, circuitry, etc.) or software to perform the comparison. This comparison hardware and software may implement a subtractor or subtraction operation. The results are a quantized codesteam (assuming some values have been changed.)
This may be applied over two or more frames. Also the comparison is not limited to two consecutive frames. The comparison can be over 3, 4, 5, etc., frames, for example, to determine if a variance exists.
Note that the quantization can also be codestream quantization with a code block-based rule.
Rate Control, Quantization, and Layering
In one embodiment, selective quantization of coefficients can be performed during encoding by setting a subset of the refinement bits to be the more probable symbol (MPS). This may be performed at a user selected bitplane. For examples, if there is text on a background image, with a goal of having sharp text images while minimizing coded data required for the background, the refinement bits that are set to MPS are those that do not effect text for the last bitplane, while using the actual value for bits that effect text.
Such a quantization scheme may be used to implement non-uniform quantization step sizes. For example, if one wanted to have a background with fewer bits, setting the refinement bits to the MPS could operate as a form of quantization. This quantization scheme causes some level of distortion but lowers the bit rate necessary to transfer the codestream.
Note that although this technique may be applied to bits generated during the refinement pass, the technique has application to other compression schemes (e.g., lists generated during subordinate passes, tail bits of CREW of Ricoh Silicon Valley, Menlo Park, Calif., MPEG IV texture mode, etc.).
In one embodiment, the same technique may be applied to other changes between frames. That is, in one embodiment, a change due to a rate distortion in one frame may be performed in a subsequent frame to avoid distortion effects.
Rate Control and Quantization
In one embodiment, user specified quantization is provided. For a 3 level transform for one component, 7 quantization values are sufficient: level 1 HH, level 1 HL and LH, level 2 HH, level 2 HL and LH, level 3 HH, level 3 HL and LH, and level 3 LH.
If quantization values are bitplanes to truncate (which is equivalent to scalar quantization by powers of 2), 3-bit values (0 . . . 7 ) are sufficient for most applications. (For image components with depth 12-bits or more and 5 or more transform levels, perhaps higher quantizations might be useful.) Values 0 . . . 6 could be used to specify the number of bitplanes to truncate and 7 could be used to mean discard all bitplanes. The three bit values may be written to a controller that controls compression (or decompression) hardware (e.g., JPEG2000 compatible hardware) to perform the quantization.
For 3 component color quantization:
- 21 values can be used with separate values for each component,
- 14 values can be used, 7 for luminance and 7 for chrominance,
- 17 values can be used for 4:1:1 subsampled data, 7 for luminance and 5 for each chromninance component,
- 12 values can be used for 4:1:1 subsampled data, 7 for luminance and 5 for chrominance,
- 19 values can be used for 4:2:2 subsampled data, 7 for luminance and 6 for each chrominance component, and
- 13 values can be used for 4:2:2 subsampled data, 7 for luminance and 6 for chrominance.
Since 21*3=63 bits is less than 8 bytes, transferring or storing the quantization uses little resources. A central processing unit (CPU) might select one predetermined quantizer from a table and write it to a CPU or other controller controlling special purpose JPEG 2000 hardware (a chip) for each frame of a motion JPEG 2000 video sequence. Alternatively, one implementation of JPEG 2000 might have a small memory that holds 8 or 16 different quantizers that could be selected for each frame.
Quantizers can also be used to assign bitplanes to layers. For example, Q0 , Q1, and Q2 may be quantizers that specify bitplanes of coding pass to quantize. Quantizer Q0 causes the most loss, while quantizer Q2 causes the least loss. Layer 1 is all the data quantized by Q0 but not quantized by Q1 . Layer 2 is all the data quantized by Q1 but not quantized by Q2. Layer 3 is all the data quantized by Q2.
Simple Quantization
The exemplary Verilog below converts a single quantization value "q" into seven quantizers (number of LSBs to truncate). The variable q—1_HH is used for level 1 HH coefficients, the variable q—1_H is used for level 1 HL and LH coefficients, etc. Some consecutive values of q result in the same quantizer: 0 and 1; 2 and 3; 4 and 5; 8i+6 and 8i+7 for all integers i with i>0.
module makeQ(q, q—1HH, q—1H, q—2 HH, q—2H, q—3HH,q—3H, q—3LL);
Human Visual System Weighting for Color and Frequency
Table 9 shows additional bitplanes to quantize (e.g., truncate) for luminance to take advantage of the frequency response of the Human Visual System (from Table J-2 of the JPEG 2000 standard). A viewing distance of 1000 pixels might be appropriate for viewing images on a computer monitor. Larger viewing distances might be appropriate for print images or television.
Additionally chrominance may be quantized more heavily than luminance.
Sharp text without ringing artifacts is more desirable than exact gray value for text/background. That is, if a gray level is supposed to be at 50% (for example), and is instead at 60%, it is often not visually objectionable if the image is of text. In one embodiment, the LL (DC) coefficients are quantized more heavily for text than for non-text images at low bitrate. For example, for an 8-bit image component, a quantiation step size of 8, 16 or 32 might be used for text only regions and a quantization step size of 1, 2 or 4 might be used for regions containing non-text. This allows more fidelity for the high frequency coefficients, thereby resulting in text with sharp edges.
Using Quantizers to Divide Things into Layers
Table 10 shows 16 example quantizers. Quantizer 15 is lossless. Quantizer 8 is the same as
Layer 0 contains all data not quantized away by quantizer 0. This would be luminance data only: all of 3LL; all but 4 bitplanes of 2HL, 2LH, 3HL, 3LH and 3HH; all but 5 bitplanes of 2HH and all but 6 bitplanes of 1HL and 1LH. Layer 1 contains all data not in layer 0 and not quantized away by quantizer 1. This would be luminance bitplanes 5 for 1HL and 1LH, bitplane 4 for 2HH, bitplane 3 for 3HL and 3LH; all 3LL chrominance; all but 5 bitplanes for chrominance 3HL and 3lH; and all but 6 bitplanes for chrorninance 2HL, 2LH and 3HH. Finally, layer 15 would contain the LSB of 1LH chrominance.
Rate Control with Multiple Layers and Tile-Parts
There several well known techniques for rate control in compression systems. The simplist method is to pick a distortion for every "unit" compressed (a unit may be an 8×8 block in JPEG, a frame in a motion sequence, a tile of a single image, a subband of a tile in a wavelet coded image, etc.). If the distortion selected leads to a bitrate higher than the desired average bitrate, the distortion allowed is increased for new units as they are compressed. If the distortion selected leads to a bit rate lower than the desired average bitrate, the distortion allowed is decreased for new units as they are compressed.
A more complex method buffers the compressed data from some number of "units." The bitrate and/or distortion for each unit at each distortion level is stored. Then the distortion to allow across all the units in the buffer is determined when the buffer is full. If the buffer is sufficient to contain the entire image, extremely high quality results can be obtained. In JPEG 2000, layers are designed to contain increments to quality. Thus, selecting a distortion can mean selecting the number of layers to use for each code block or tile. A complete description of this type of rate control is in, David Taubman, "High Performance Scalable Image Compression with EBCOT," IEEE Transactions on Image Processing.
There are several disadvantages to this process. One disadvantage is that a buffer memory for the entire codestream is required. A second disadvantage is that the latency (time until any of the codestream is output) is high. A third disadvantage is that the second pass could take large amount of time.
To mitigate these problems, each tile of a JPEG 2000 codestream is encoded as described above with at least two layers. At the completion of encoding each tile, a number of packets (e.g., layer, resolution, precinct, tile-component) are output to the codestream as a complete tile-part. The remaining layers are stored in the buffer. A second pass through the remaining coded data in the buffer is optional. During this second pass, extra packets from each tile are appended to the codestream as complete tile-parts as space or time allows. If in a fixed-rate application, then only packets within the given rate are appended. If in a fixed time application, then only number of cycles allowed. One embodiment of this process is shown in
The above process is advantageous in that it allows the buffer to store a fraction of the coded data, the first data can be output (transmitted or stored) sooner, and the second pass through the data can be faster because there is less data to process. Also less memory is required for buffering.
The criterion for selecting which packets go into the first set of tile-parts can be similar to any other rate control algorithm. In one embodiment, the rate of packets can be less than the desired average bitrate for the whole image. For example, if a final compressed bitstream at 2.0 bpp is desired, the first pass could place 1.5 bpp for every tile in the codestream, and buffer 1 bpp for every tile.
The second pass can select from the remaining data the packets to place in the second tile part of each tile. Thus, to obtain a 2.0 bpp average encoding, some tiles that had high distortion after the first pass could receive all the remaining data saved for the tile, while other tile parts which had low distortion after the first pass might not have any additional data transmitted.
Rate Control for Compressed Codestream Data
Some rate control techniques described herein include rate control performed on a compressed codestream based on a request implemented by selecting some number of layers to keep in the codestream. A parser may be used to produce a new codestream which shows the bitrate based on layers. This bitrate is equal to or less than the bitrate specified by the request.
The parser may use a data structure referred to herein as a "packet structure." Note that this data structure may be used for other purposes such as, for example, the versatile pocket data structure described below. In one embodiment, the packet structure includes a packet start pointer and packet length. It also contains a tile number, a resolution, a component, layer, and a precinct the packet belongs to. Finally, it also consists of a selection flag. This flag, when set to a predetermined value (e.g., 1), indicates if the packet is selected in the array for writing out to a new codestream.
In one embodiment, packets are read in sequential order from a codestream based on the progression order information indicated by the COD marker.
The number of bytes is computed based on the bitrate desired by the request. The number of bytes belonging to layer 0 is added up to a total. Then this total of bytes is compared with the number of bytes desired. If the total is less than the number of bytes desired, one additional layer is added to the total. The process continues until the total is equal to or greater than the number of bytes desired or all packets have been added.
During the process, those packets which have been added to the total, are marked as selected by the selection flag in the structure.
If the total is equal to the number of bytes desired, the addition process is stopped. If the total exceeds the number of bytes desired, the packets in the last layer added are subtracted from the total. This is done to guarantee that the bitrate is below the bitrate desired. Consequently, during the subtraction step, packets which have been subtracted from the total are marked unselected.
In one embodiment, the related markers such as SOT, COD, PLT are updated according to the request. Packets are written to the new codestream. The packet structure may be created using the following:
Versatile Packet Data Structure
The same packet data structure described above can be used to facilitate other parsing options, once packets are read into the structure.
For resolution parsing, the packets which are to be excluded are marked unselected. For example, given a 4 resolution codestream, and a request is to produce a 3-resolution codestream, a parser marks all packets which belong to resolution 4 unselected. Then the newly produced codestream contains only packets from resolution 1 up to resolution 3.
Similarly, for component parsing, progression conversion parsing, quality parsing can be performed step by step processing the packets in the structure.
The packet data structure can handle complex requests. For example, a request which requires the parser to produce a codestream which has a 3-resolution, 2-layer, and 1-component codestream.
Clipping After Each Inverse Transform
As a result of quantization performed on wavelet coefficients, the final decoded pixels are often outside of the original range of allowed pixels from the specified bit depth. Typically, these pixels are clipped to the original range so that further image processing or display devices can use the original bit depth.
For example, an eight bit image has pixel values between 0 and 255, indusive. After lossy compression is used, the decoded image may contain values like −5 and 256. To provide an eight bit output, these values are clipped to 0 and 255 respectively. This clipping procedure always reduces pixel wise distortion because the original image did not contain pixels outside of the clipping bounds. This procedure is well known and recommend by the JPEG 2000 standard.
In addition to the bounds on the final output samples, there are bounds on the values coefficients can assume at the various stages of the wavelet transform. Just as quantization can change the final decoded samples to lie outside the original bounds, quantization can change the partially transformed wavelet coefficients to lie outside their original bounds. If these coefficients are clipped to their original bounds, distortion will decrease.
For example, after a horizontal (one dimensional) 5-3 reversible transform as specified by JPEG 2000 with 8 bit input samples, the maximum value of the low pass coefficient is +191, and the minimum possible value is −191. The high pass coefficient must be between −255 and 255 inclusive. After the vertical one dimensional transform, the Low-Low coefficients are bounded by −286 and 287. Thus when decoding an eight bit image, when the first level low-low pass coefficients are generated (by the inverse wavelet transform from a higher level), the coefficients can be clipped to −286 and +287, and distortion will decrease. Likewise after the first level vertical inverse transformation is done, the low pass coefficients can be clipped to −191, +191, and the high pass coefficients can be clipped to −255, 255.
For each subband, each filter, each transform level, and each image depth, there is a different maximum and minimum value for the coefficients. These maximum and minimum values can be computed by finding the signal that leads to the maximum and minimum and running the forward compression system and recording the maxima. The signals that lead to extreme values come from inputs where each pixel is either a maximum or minimum. Which pixels should be maximum and which pixels should be minimum can be determined by convolving sequences which are −1 when the wavelet coefficient is negative and +1 when the wavelet coefficient is negative. For the 5-3 filter used in JPEG 2000 Part I, the low pass signal of interest is [−1+1+1+1−1] and the high pass signal is [−1+1−1].
The signal (image) which will generate the largest LL value is:
(where +1 must be replaced by the input maximum (e.g., 255 ) and −1 must be replaced by the input minimum (e.g., 0).
For irreversible filters, it is not necessary to actually run the system to determine the maxima, simply convolving the wavelet coefficients is sufficient. For the reversible 5-3 filter, however, the floor function is used in the computation of coefficients and is also used to determine the correct maxima.
Note that this may be used for other filters (e.g., a 9-7 filter).
Referring to
Simplified Colorspace Handling
A typical decoding process including color management is shown in
Finally, the ICC color profile from the file format along with information about the display device will be used to produce the output pixels.
Inverse ICC block 2503 receives the (non-display) RGB pixels and the ICC profile and applies an inverse color space transform to provide display RGB pixels.
where ∘ represents function composition.
Restricted ICC profiles are "syntaxes" for functions on pixels. A camera will typically write the same profile for all images, so ICCB is computed offline, and copied into each output file. In a prior art system there must be HW for YCrCb−1 and RCT/ICT which operates on every pixel.
Coding 4:2:2 and 4:1:1 Data as 4:4:4 Data with Quantization
The JPEG 2000 standard is typically used to handling data in a 4:4:4 format. It is not capable of describing how to reconstruct data in 4:1:1 or 4:2:2 formats in a 4:4:4 format for output. In one embodiment, when encoding 4:1:1 data, the encoder treats 1 HL, 1 LH and 1 HH coefficients as zero. When encoding 4:2:2 data, the encoder treats 1 HL and 1 HH coefficients as zero. Thus, with all information in the extra subbands quantized to zero, a decoder is able to receive the codestream in a way it expects. In other words, the encoded data resembles 4:4:4 data that has been heavily quantized.
File Order for Thumbnail, Monitor, Printer, and Full Resolution and Quality
Multiple images at multiple resolutions are important in many image processing situations. Depending on the application, a user may want to select different images of different resolutions. For example, thumbnail images may be used as an index into a large number of images. Also, a screen resolution image may be the image used to send to a monitor for display thereon. A print resolution image may be of lower quality for printer applications.
In one embodiment, a codestream of an image is organized into sections so that different versions of the image, such as, for example, a thumbnail version, a screen version, a print version and a lossless version, is progressive by quality.
In one embodiment, the packets are arranged such that certain packets correspond to particular resolutions such as a thumbnail. The combination of these packets with other packets represents the monitor resolution image, which when combined with other packets may represent the printer version, etc. Using the POC and tile parts, portions of a codestream may be grouped together. For example, all the tiles of the thumbnail size may be grouped together followed by tiles for another resolution followed by tiles of another resolution, etc.
One embodiment of the process for accessing the groupings of tile parts is shown in
Referring to
Next, processing logic repeats processing block 1601 for the monitor resolution given that the thumbnail packets are already in the codestream (processing block 1602). Then, processing logic repeats processing block 1601 for the printer resolution given that the monitor packets are already in the codestream (processing block 1603).
Lastly, processing logic creates a POC marker with the extremes of the resolutions and layers for each tile (processing block 1604). In one embodiment, creating the POC with the extremes of the resolutions and layers is performed by creating a fourth set of tile-parts with the remaining tile-parts for a lossless version.
Note that the particular orders of the packets defined in the POCs are not of importance, only the limits.
An Exemplary Computer System
System 2000 further comprises a random access memory (RAM), or other dynamic storage device 2004 (referred to as main memory) coupled to bus 2011 for storing information and instructions to be executed by processor 2012. Main memory 2004 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 2012.
Computer system 2000 also comprises a read only memory (ROM) and/or other static storage device 2006 coupled to bus 2011 for storing static information and instructions for processor 2012, and a data storage device 2007, such as a magnetic disk or optical disk and its corresponding disk drive. Data storage device 2007 is coupled to bus 2011 for storing information and instructions.
Computer system 2000 may further be coupled to a display device 2021, such as a cathode ray tube (CRT) or liquid crystal display (LCD), coupled to bus 2011 for displaying information to a computer user. An alphanumeric input device 2022, including alphanumeric and other keys, may also be coupled to bus 2011 for communicating information and command selections to processor 2012. An additional user input device is cursor control 2023, such as a mouse, trackball, trackpad, stylus, or cursor direction keys, coupled to bus 2011 for communicating direction information and command selections to processor 2012, and for controlling cursor movement on display 2021.
Another device that may be coupled to bus 2011 is hard copy device 2024, which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media. Furthermore, a sound recording and playback device, such as a speaker and/or microphone may optionally be coupled to bus 2011 for audio interfacing with computer system 2000. Another device that may be coupled to bus 2011 is a wired/wireless communication capability 2025 to communication to a phone or handheld palm device.
Note that any or all of the components of system 2000 and associated hardware may be used in the present invention. However, it can be appreciated that other configurations of the computer system may include some or all of the devices.
Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention.
This is a continuation of application Ser. No. 09/801,218, filed on Mar. 6, 2001, entitled "Method and Apparatus for Eliminating Flicker by Quantizing Values Based on Previous Quantization," incorporated by reference herein and assigned to the corporate assignee of the present invention, which is a divisional of application Ser. No. 09/784,928, filed on Feb. 15, 2001, entitled "A Memory Usage Scheme for Performing Wavelet Processing," incorporated by reference herein, and assigned to the corporate assignee of the present invention.
1. A method comprising:
- encoding a first coefficient value in a first frame of a motion sequence;
- subsequently setting a second coefficient in a second frame of the motion sequence and in the same postion as the first coefficient to be within a predetermined closeness with the value of the first coefficient.
2. (Canceled)
3. (Canceled)
4. (Canceled)
5. (Canceled)
6. (Canceled)
7. (Canceled)
8. (Canceled)
9. (Canceled)
10. (Canceled)
11. (Canceled)
12. (Canceled)
13. (Canceled)
14. (Canceled)
15. (Canceled)
16. (Canceled)
17. (Canceled)
18. (Canceled)
19. (Canceled)
20. (Canceled)
21. (Canceled)
22. (Canceled)
Patent History
Type: Application
Filed: Mar 15, 2005
Publication Date: Jul 28, 2005
Patent Grant number: 7164804
Inventors: Edward Schwartz (Sunnyvale, CA), Michael Gormish (Redwood City, CA), Martin Boliek (San Francisco, CA), Kok Wu (Daly City, CA)
Application Number: 11/081,281


text:
India's uranium mines cast a health shadow
Gudiya Das whines as flies settle on her face, waiting for her mother to swat them while she lies on a cot in Ichra, one in a cluster of villages around India's only functioning uranium mines. The 12-year-old, whose skeletal frame makes her look about half her age, was diagnosed with severe cerebral palsy when she was a year old.
"Back then there were 33 disabled kids here, now there are more than a hundred," her father, Chhatua Das told in his home in Jaduguda valley in the eastern state of Jharkhand.
For Das and his wife Lakshmi, who have lost six children before the age of one, there is only one possible culprit -- the nearby mines run by the state-owned Uranium Corporation of India Limited (UCIL).
"I know there is some connection between the mining and what's happened to my daughter," Lakshmi told. "It's because of the uranium in the water here."
Environmental groups say the mining company is polluting the groundwater by dumping radioactive waste inside three so-called tailings ponds that hold the sludge produced by the mining process -- a charge vehemently denied by UCIL.
UCIL opened its first mine in Jaduguda in 1967, and has built six more since then, providing work for thousands of local villagers in what was a deeply impoverished area. With starting salaries of 14,000 rupees ($ 280) a month, jobs with the mining firm are highly coveted and bring a level of economic prosperity that adds a conflicting layer of complexity to the health risk issue.
Jharkhand is one of India's poorest states, with more than 40 % of the population living on less than $ 2 a day, according to 2007 World Bank figures. Ghanshyam Birulee, founder of the Jharkhand Organisation Against Radiation, believes the financial benefits are meaningless when weighed against what his group says is an alarming rise in stillbirths, birth defects, and adults and children diagnosed with cancer, kidney disease, and tuberculosis.
"How did these illnesses suddenly become so commonplace here? It's because our valley has become a dumping ground for all this nuclear trash," Birulee said.
"Jaduguda" means "magic fields" in the local language Sadri.
"These days it feels like there's black magic at work here," said Birulee, a former apprentice at UCIL who lost both his parents to cancer. "When people first started getting sick, they thought it was because of witches or evil spirits. We had never seen anything like this," he told.
UCIL firmly denies any links between its operations and any health issues in Jaduguda.
"The grade of ore is very low, so the level of radioactivity is also very low. If you are 100-120 metres away from the periphery of the tailings ponds, you face no risk," said A.K. Sarangi, deputy general manager for strategic planning at UCIL. "We acquired land for several people here and tried to help them move, but they refused. Their intention is to extract as much money as possible from the company now," Sarangi said.
The company cites a 1998 government-funded study that found no water contamination and rejected the idea that illnesses in Jaduguda could be ascribed to radiation exposure.
Critics say the study, carried out by the Mumbai-based Bhabha Atomic Research Centre, was tainted by association with the nuclear industry, and cite a 2007 report by the non-profit Indian Doctors for Peace and Development (IDPD). That report showed a far greater incidence of congenital abnormality, sterility, and cancer among people living within 2.5 km (1.5 miles) of the mines than those living 35 km away. Mothers in villages close to the mine sites were also twice as likely to have a child with congenital deformities, it said.
The IDPD is an affiliate of the 1985 Nobel Peace Prize winning organisation, International Physicians for the Prevention of Nuclear War. The health risks associated with exposure to uranium are well-known. According to the US department of energy, sustained exposure can result in kidney damage and an increased risk of cancer.
A few years ago, the US environmental protection agency noted high levels of radiation in homes and drinking water sources in parts of Arizona state occupied by Navajo people, many of whom worked in the mines operating there from 1944 to 1986.
Developed nations like the United States and Australia employ strict environmental standards to limit the amount of uranium released into the air by mines and processing plants.
They also require mining waste to be disposed of in a manner that limits emissions and keeps groundwater clean, by erecting fences around tailings ponds and building earthen covers to prevent any seepage into the soil.
UCIL officials insist that their mines are in complete compliance with international requirements, and that emission levels are within the accepted limits.
"We have built fences around the tailings ponds, but villagers still cut through them in parts," to take shortcuts across the land, Sarangi said. "It is a huge area, it is just not possible to guard it all the time."
Asha Kaibart lives in a small house about 200 metres from a tailings pond. Seventeen years ago her son Anil started to have trouble with his eyes. A few years later the same thing happened to his younger sister Sumitra. Doctors said both had sustained severe damage to their optic nerves. Today, at 29, Anil is totally blind. He and Sumitra rarely leave the house anymore, according to their father Situ, a former UCIL miner.
"I am sure waste from the company mixes with the water we use to bathe," Asha said, pointing to a small lake nearby.
Birulee says companies like UCIL simply abdicate responsibility, refusing to help families like the Kaibarts and "threatening anyone who supports us" -- a charge that UCIL spokesperson Pinaki Roy rejected outright.
"Such allegations pain us. Our social responsibility is very important to us. After all, at least one member of each family here is working for us," Roy said.

subset: commoncrawl


text:
Job Title: Medical Doctor
Location: Jos
Department: Medical Microbiology
Applicants seeking admission into the Residency Training Programme must possess the following:
- Evidence of graduation from any accredited medical school.
- Evidence of passing primary examination of either the National or West African Postgraduate Medical College in the candidate's chosen field of specialization.
- Evidence of registration with the Medical and Dental Council of Nigeria.
- Evidence of current annual practicing license, and
- Evidence of NYSC discharge certificate or exemption as the case may be.
- CONMESS 2 (i.e. N1,590,117.00PA).
3:30pm, Monday, 18th April, 2016.
Method of Application
Interested and qualified candidates are to forward two (2) copies of their application along with photocopies of credentials and detailed curriculum vitae highlighting the following:
- Full names
- Age
- Sex
- Place and date of birth
- Permanent Home address
- Nationality
- State of origin
- Local Government Area
- Contact address
- Phone number(s)
- E-mail address
- Marital status
- Institutions attended with dates
- Academic qualifications obtained with dates
- Extracurricular activities
- Referees (3)
The Director of Administration,
Jos University Teaching Hospital,
Plateau State.
- Only shortlisted candidates shall be contacted.
- Previous applications submitted are not valid.


text:
Message Board
Michelle Blake Message Board
Talk about the novels, new and used books that Blake has written!
Author Blake's Book Reviews
Earth Has No Sorrow
Putnam, Jun 2001, 23.95, 272 pp. ISBN: 0399447470 Lily Connor was born and raised as a Catholic, but left the church to become an Episcopalian minister. She is a tentmaker, earning a living outside the church and has no assigned church although the diocese would like her to serve in one. Her closest friend, Anna Baneta, watched the Nazis kill her parents for harboring Jews. Anna went to an orphanage and then to Auschwitz before immigrating to Ame...
The Book of Light
Putnam, May 2003, 24.95, 215 pp. ISBN 0399150463 After graduating from Cambridge Theological Seminary, Lily Connor becomes an ordained Episcopalian priest. At present she is the interim pastor of Tate University located a few miles from Harvard in Cambridge, Massachusetts. One day while counseling a student in her office, Samantha Lamb-Henderson walks in and says she want to get reacquainted with Lily. Lily feels the professor has a hidden age...
The Tentmaker
Lily Connor, the Episcopal priest who has been assigned to be Interim Rector at Saint Mary of the Garden Episcopal Church, investigates the death of the long-time rector [not the result of natural causes, as original thought], the disappearance of the son of the Junior Warden, and the attempted murder of the sexton. In The Tentmaker [ISBN 0-425-17668-1] Lily Connors, an Episcopal Priest in Boston, has to take a leave of absence from her job at the women'...


text:
Student Life
Beloit College places a high premium on individuality, and that is reflected in its student body. Actors and athletes, scientists and sorority sisters, science-fiction fans and fraternity brothers, writers and political wonks, activists and artists and everyone in between come together to form a tight-knit community known, first and foremost, for its warmth and open-mindedness.
The campus is defined by a range of housing options, all of which have a front porch on the campus. More than 96 percent of students live and play on campus (residential options include single-sex halls, coed floors, and special interest houses; all halls feature kitchen facilities and common lounge areas, and trained residential assistants make great resources for staying in the loop). But students also venture out and do their own thing. A campus weeknight might find groups of friends studying in a local coffee shop, catching dinner downtown, or taking in some music at the C-Haus, the campus pub.
There are facts and figures that will tell you more about what Beloit offers as a community, but it's probably best to just come and see for yourself. What you'll find is a place chock full of options and opportunities for joining a gaggle of people who share your interests, as well as easily wading into new and welcoming groups and experiences. The campus itself seems made for such interactions. And in fact, it is.
Read more about campus life, resources, policies, and procedures through the links at the left; learn more about campus life through our YouTube channel.


text:
Faculty and administration users may direct computing and network questions or problems to the BCIT Service Desk. (Students should contact Student Computing Services, in 307 Diana.)
To contact the BCIT Service Desk, please choose from these options:
- Submit a Service Desk ticket at https://barnard.service-now.com/.
- Send an email to: firstname.lastname@example.com.
- Call (212) 854-7172 (extension 4-7172 from a campus phone).
- Visit the BCIT Service Desk in Milbank 13, 8am-5pm, Monday-Friday.
Note: ServiceNow may be used to check the status or comment on an existing ticket.


text:
- Home
- News
- Sports
- Opinion
- Obituaries
- Features
- Special Sections
- Classifieds
- Public Notices
130 years ago
March 7, 1883
Skating rink items
We postponed the rink on last Friday night to give the people a rest, and because there was a show in town…On next Friday night we will have a sack race. A prize of $5 will be given to the party making three rounds in 40 seconds, a prize of $2 for 45 seconds and prize of $1 for 60 seconds. In preparing the contestant for the race the end of the sack will be cut off to allow the feet to pass through, thus leaving the feet free to make short, quick strokes.
If you currently subscribe or have subscribed in the past to the The Lebanon Enterprise, then simply find your account number on your mailing label and enter it below.
Click the question mark below to see where your account ID appears on your mailing label.
|ZIP Code:


text:
Subscribe to our Newsroom RSS feed | What is RSS?
Follow Loyola University New Orleans on Twitter
Science students discuss summer research at SCORE symposium
Loyola press release - August 1, 2012
Loyola University New Orleans will host the annual Summer Collaborative Outreach and Research Experience mini-symposium on Friday, August 3 at 9 a.m. in Monroe Hall, Room 127.
During the event, 17 natural science undergraduates and two high school teachers will describe the results of research they have been conducting with nine different faculty mentors. Research projects this summer examined a variety of topics, ranging from population genetics of Mississippi River delta reeds to inflammatory joint disease in humans.
SCORE is part of an interdisciplinary and experiential approach to strengthen recruitment, retention and training in natural sciences in post-Katrina New Orleans. Support for SCORE is provided by the Louisiana Board of Regents.
For more information, visit www.loyno.edu/score or email Frank Jordan at firstname.lastname@example.com.


text:
Guidelines to Full-Frame Replacement
May 13, 2014
COLUMN : From the Field | Methods & Techniques
When I presented replacement challenges in the March/April issue, I focused mostly on full-frame replacement. Most agree this is by far the most difficult replacement scenario. Requirements for structural performance, and stopping air infiltration and water intrusion, depend on the installation, but are even more difficult to satisfy in this case. In many circumstances, however, full-frame replacement is the only good replacement option. This usually leads to several additional concerns.
Dealers and installers would do well to frequently check with their fenestration manufacturer―and manufacturer of weather barriers and sealants―for available new instructions for full-frame replacement. The continued release of this information will continue to grow, and some brands have quite a bit available even now.
Conversely, if you're a manufacturer with these instructions already available, push that information to your installers. Don't leave it on the table or hidden on your website. Push it out to the field. You've invested a lot of resources in these materials and getting it in the hands of the people who need it the most will benefit everyone.
If you're an installer and instructions are not available, consider the following guidelines and concepts before you propose your replacement project. This is not intended to lead an installer into an installation he is uncomfortable with. The best guideline might be to not perform the replacement at all.
1. The biggest hurdle in full frame replacement is preventing water intrusion around the installation perimeter.
Pressure differentials between the interior and exterior can draw water through small penetrations, just like sipping through a straw, especially in more extreme regions and newer, tighter homes. The installation perimeter can be the weakest link. Your goal is to interface the fenestration with the membrane, or surface barrier, if possible. From a practical standpoint, this might not be possible. At the very least, do what you can to deflect water from the rough opening or lead it back to the exterior with drip caps, thru-flashings and sill pans.
2. Consider the entire wall and its components as a system.
Whether it's a surface barrier or membrane drainage wall structure, many elements work together to prevent water intrusion: flashings, sealants, fenestration, exterior veneers, and related components. A failure of any of these components can result in water emerging at the fenestration. Consequently, an examination of the entire wall condition should be taken into account before and during fenestration replacement. I've even seen a roof leak and improperly installed gutters cause water to trickle into the wall and down to the interior of fenestration.
3. Consider entire facade replacement at the same time as fenestration replacement.
Obviously, this will add substantial expense, but there are situations when this is justified, especially where siding is decaying or no weather resistive barrier exists. Replacing the entire facade enables a new construction installation practice with a proper new membrane, flashing and unquestionable results.
5. Consider risk factors.
Eliminating the risk of underperformance, air infiltration and water intrusion is the ideal goal. Many issues factor into the risk level. Minimizing these risks is the next best thing and should be considered in less-than-ideal full-frame replacement situations. Some risks to consider include:
- Regional weather: wind speeds, rain amounts, climate
- Exposure of the fenestration: orientation to incoming weather, soffit and overhang protection, tree protection (wind break)
- Elevation: Higher up means higher wind speed
- Existing structure: Does it have a weather resistive barrier for the membrane drainage system, and is it in good condition? What is the façade condition? Will you have full access to the nail fin by removing casing or cutting back siding?
- Replacement product: Are you replacing with the same frame-type product or is some adaptation needed?
- Installer's skill level and experience: This leads to a "comfort level" discretionary call by the installer or contractor, and in some cases, I discuss it with the client. I'll warranty the fenestration installation but not the entire wall system. Full disclosure up front is much easier than "excuses" after the fact.
In the end, with or without written instructions, you must have confidence in your replacement and be able to stand behind it.


text:
Support PDX POP NOW! Make a PayPal donation today.
100% of the money you give goes to support all of our activities.
PDX Pop Now! Programs in Local Schools
PDX Pop Now! wants to bring local music to your school!
How would your relationship to your school and learning be different if some of the best bands, emcees, DJs, singer-songwriters and laptop wizards in Portland came to your school to play a concert for you and your classmates, and to speak with you and your teachers about music history, technology, education, songwriting, and changing your community through art?
PDX Pop Now! wants to help you find out! And to give you a hint, here's how things looked at Parkrose Middle School on May 4, 2007 when The Shaky Hands, Syndel, Soul P and Alela Diane came by for the day to perform, teach and just talk. And that wasn't all. Instructors from some of Portland's best music education organizations – The Rock'n'Roll Camp for Girls, The Old Library Studio, Spun Academy and The School of Rock – were also in attendance to tell students about their programs and scholarships, as well as to let them rock out on guitars, keyboards, drums and basses, and mix it up on turntables that had been brought in specially for the day.
PDX Pop Now! is planning 3 events like this one for 3 different Portland-area schools in 2008, so let us know if one of them should be yours.
As a key component of our mission to expand participation in the vibrant music community of Portland, OR, PDX Pop Now! strives to reach out to our area's young people as collaborators and supporters. In spite of the fact that the most engaging, influential and fecund regional communities in the history of modern music have been driven primarily by the energy, enthusiasm and creativity of people under 21, this demographic often gets left out of our local creative culture because of a lack of viable all-ages venues and the overly aggressive, homogenized mainstream music apparatus of major labels and commercial concerns.
We believe that young people who are active in their local music community, as musicians, organizers or fans, are fundamentally more engaged citizens, better prepared to advocate for themselves and the issues they believe in, inspired by the empowering do-it-yourself ethos of independent music. Where better to introduce Portland's young people and adult musicians to each other than directly in schools, where they can draw connections between what students are learning in their classes and the inherently exciting culture of popular music? Who better to encourage students' interest in the arts than local musicians who create in styles students are already interested in?
For more press on the Parkrose event, here are articles and photos from:
Local Cut (Willamette Week)
The Portland Mercury
and CMJ
Email us if you have any ideas or suggestions about PDX Pop Now!'s school-based programs, or would like to set up an event in your school.


text:
Toshiba has announced its first 3D-capable laptop and it is called Toshiba Dynabook TX/98MBL for the Japanese market and Toshiba Satellite A665 in Europe (and maybe in other regions). The laptop is equipped with a 120Hz LCD panel and uses Nvidia's 3D Vision active shutter glasses to provide stereoscopic 3D capabilities. Have in mind that Toshiba Satellite A665 will come in two versions, one without 3D capabilities and one with, so you have to be careful should you decide to go for it in order not to get the non-3D instead of the 3D-capable model. Both models should be available on the market during the third quarter of 2010 throughout Europe and Middle East, so Asus G51J/G51Jx 3D is still the only available mobile solution for 3D Vision for the moment that is currently on the market and it will be for some more time.
Toshiba Satellite A665 is using 15.6″ 120Hz LCD panel with LED backlight, resolution of 1366×768 pixels and 200 cd/m2 brightness which should be OK for a mobile solution. Especially having in mind that the laptop will be based on a NVIDIA GeForce GTS 350M GPU with 96 stream processors (CUDA cores) and 128-bit memory bus. The processor will be mobile Quad Core Intel Core i7, probably the i7-740QM (mentioned in the Japanese market model) which operates on 1.73GHz by default, but when using turbo boost can go up to 2.93GHz. So it should not be very different from what Asus is currently offering with their G51J 3D gaming laptops in terms of performance, and we can only hope to get better quality from Toshiba – brighter display, higher viewing angles and less ghosting.
Toshiba Satellite A665 3D Vision model specifications:
– Intel Core i7 (Quad Core)
– RAM: up to 8 GB DDR3 (1066 MHz)
– 2.5″ HDD up to 750 GB (as of Aug. 2010) with HDD 3D impact sensor
– 39.6cm (15.6") TruBrite HD display (120 Hz) with LED backlighting, 1366×768 pixels(16:9), 200 cd/m2
– Dedicated graphics: NVIDIA GeForce GTS 350M, 1GB VRAM
– Blu-ray Disc rewritable drive, ready for playback of Blu-ray 3D Disc or DVD Super Multi drive (Double Layer)
– Bluetooth 2.1 +EDR, WLAN (802.11 b/g/n), Gigabit Ethernet LAN
– 3 x USB 2.0, 1x eSATA / USB combo port with Sleep-and-Charge and Multi-Card Reader, HDMI
– 1.3 MPixel Webcam with Face Recognition
– Sound: Harman Kardon stereo speakers, Line-In with Sleep-and-Music function, Dolby Advanced Audio
– Analog and DVB-T hybrid TV Tuner
– Toshiba Resolution+, Toshiba Media Controller, Toshiba LifeSpace, Toshiba PC Health Monitor
– Size: 380.5mm x 254mm x 28mm (front) / 35.6 mm (rear)
– OS: Windows 7 Home Premium (64bit)
– ENERGY STAR 5.0 qualified.


text:
On the Ball: Spring schedules: Your results may vary
And so it (spring schedule changing) beginsNever mind the sap buckets, first thunderstorms or the Red Sox equipment truck heading to Florida, the surest sign of spring in these parts comes when the local high schools start juggling their schedules. If it's not the weather, it's lacrosse players taking off en masse for the Caribbean. Either way, ADs end up scrambling to reschedule games. Sometimes we find out here at the Independent. Sometimes the View My Schedule email feature works, sometimes the schools use it. Sometimes neither of those things happen. Sometimes often-overworked ADs remember to tell us about scheduling changes. Sometimes, not so much. I only found out that the Vergennes-Harwood boys' lacrosse game had been moved up to this past Monday by accident, for example. So what's a fan of a team or teams to do? Ask an athlete or a coach. Call the schools. Sadly, please don't rely on our published schedules. One rain shower between our deadline and the start of a baseball game, and there it goes.Here's one heads-up for girls' lacrosse fans: The Middlebury Union High School team's opener has been moved from Fucile Field at 4:30 on Thursday the 10th to Middlebury Union Middle School at 5 p.m. That decision came after typical three-way talks among Woodstock, MUHS and Middlebury College officials. The college offered its turf field, but reasonably not till Saturday. Woodstock said no, too many kids leaving early for spring break, and offered to host. MUHS was skeptical, remembering a "Come on down, the weather's fine" game last year that was then played in a steady downpour, and also citing a scheduling conflict with a Thursday evening concert. Hence, the MUMS compromise was struck.Hey, welcome to spring. When you see a schedule, remember this Reagan-era motto: "Trust, but verify."This just in at about 4:35: Since I wrote the original copy a couple hours ago, two more changes have come to light. Saturday's MUHS boys' lacrosse game vs. Woodstock has been moved to Middlebury College's Alumni Field at 4:30 p.m., and the Otter Valley softball game at Burr & Burton game for Saturday has been postponed. Can't tell the games without a scorecard. Andy Kirkaldy may be reached at [email protected].


text:
North of Myrtle Beach RV Parks, Campgrounds
When it comes to finding the best Myrtle Beach RV Parks, campgrounds, there are several key details to consider. It is the area that you choose which will determine how much fun you have and whether or not you come back to the area. While there is no denying that Myrtle Beach camping can be a lot of fun, if you are not careful you could quickly find yourself in the wrong area and regretting your decision. No matter if you are going to sleep in an RV or a tent, there are many options to consider.
Inn d'Vine
A two room Inn is on the property, private baths in each room..pleaceful and quiet. A great get- a-way for a romantic weekend, birthday, anniversary, or "just don't want to be in all the hustle and noise of the North Carolina or South Carolina beaches" ...Our B&B will soothe your soul...peacefull and quiet...call for best rates: 910-653-2944.
Camping Near Myrtle Beach on a Budget
One of the primary benefits of camping in Myrtle Beach – as opposed to staying in a hotel or condo – is that you can save a lot of money. When you decide to setup shop on our campground, you can rest assured that you will be saving plenty of money. Of course, this does not mean we skimp on amenities. We offer all of the following, plus so much more: wireless internet, access to our winery and gift shop, on site grills and fire rings ,cable TV, fishing pond, playground, quiet location, and many special events.
Read more about our campgrounds for campers
Location Matters When Camping Near Myrtle Beach
Although you will be spending a lot of your time in the campground or at the Inn, you don't want to overlook the importance of choosing a great location. After all, there is more to Myrtle Beach than camping.
We are located in close proximity to many of the best beaches in both North and South Carolina. Along with this, you can easily make your way to local restaurants, golf courses and other hot spots. No matter what type of fun you are looking to have, you won't have to travel far in order to find it.
Find Us Now - Driving Directions
Availability at our campsite in Myrtle Beach
As one of the most unique campgrounds and Inns in the Myrtle Beach area, we are able to accommodate a limited number of visitors. Of course, it is always best to book as soon as possible – especially during the busy summer months. This will ensure the best availability when you reserve your site or room for the days that best fit your schedule.


text:
HDD Pictures of Living Room Furniture Sets with Modern Leathered Sofas
When you have modern living rooms, there are so many choices of living room furniture sets which you can find. Still, modern living rooms are always good with that luxury furniture which is bold, sleek and clean and the endless elegance which is always aimed by many homeowners. For that, those who want to achieve that kind of modern living rooms, they can choose furniture sets which consist of leathered sofas.
Leathered sofas are indeed elegant and always suitable for modern living rooms which are pointed for its generosity. Living room furniture sets which consist of leathered sofas are always great for boosting your living rooms. Leathered sofas are undeniably prestigious and give the high class look to your living rooms. You also can choose any color which you like because the available colors are so many, for example when you want masculine modern living rooms, choose black leathered sofas with the wooden table and glass countertop also some black leathered love seats.
Well, black living room furniture sets are indeed masculine and manly, you also can choose cleaner colors like white, cream even the bright vibrant colors like orange and yellow. Living room furniture sets will result on modern and playful look with the vibrant colors and for that, leathered sofas can give you that look right away. It depends on what look that you want, you can get the desired atmospheres with the right and exact hues.
As additions, leathered sofas are indeed mostly found in living room furniture sets which are elegant with modern styles. Not only that, when you choose leather living room furniture sets, you also get the easy maintenance for those furniture actually. With simple treatments and caring actions, your leathered furniture will always bring your living room to the next level room in your home.
Pictures of living room furniture sets clearance is created to be the inspiration of for you. This image was published on August 17, 2017 and published by Marlene this is fall into the category Chair, the size of image is
1200 x 750
and this post has 38 related images. If you have any questions please Contact Us. Hope it could inspire you, our beloved reader in home-oka.com, back to article please click Living Room Furniture Sets with Modern Leathered Sofas.
Here we have 38 great photos about Living Room Furniture Sets with Modern Leathered Sofas. We hope you enjoyed it and if you want to download the pictures in high quality, simply just click the image and you will be redirected to the download page of Living Room Furniture Sets with Modern Leathered Sofas.


text:
View Properties in Berthoud
Additional Photos
Photo 1 of 1
Affordability, housing quality, neighborhood conditions, the community, and the town's location figure into each housing decision. Whether you have a growing family and need to move into a larger home, or are scaling down to a smaller one, your perfect home can be found in Berthoud.
Berthoud neighborhoods are residential areas with stately trees and inviting parks scattered throughout. Roberts Lake and Park anchor the northern neighborhoods of Berthoud, while Berthoud and Bien Parks are the focus of the southern area of town. Berthoud residents enjoy easy commutes to employment centers like Denver, Loveland and Fort Collins while still providing a true oasis where families experience the quality of life that only a small town can provide.


text:
Kapelle is Concordia's premier choral performance ensemble. This select voice choir tours annually throughout the U.S. as well as internationally every four years, and records regularly. Their active performance schedule also includes Concordia's annual Lessons and Carols services during Advent as well as performing major choral works with Concordia's Chamber Orchestra.
Conductor: Charles P. Brown


text:
Version: 1.1
Platforms: Series 60, Symbian OS
Developer: Andre Paulus
Distribution Type: Freeware
Downloads: 408
File Size: 4 Kb
Car Maintenance Log for HanDBase - Do you want to track your car refuellings, drives, maintenance activities and insurance data easily and comfortably ? Do you plan to get control over these car expenses ? If it is so, the solution that can meet your needs is CarLIS...


text:
A lot of hopes are resting on the economies of Latin America, not just in the wind industry. Power demand is expected to grow by 3% yearly to 2016. wind power is competing with popular hydro and ethanol sources to provide the extra capacity.
The last 12 months show significant wind power capacity growth, especially in the leading wind nations of Brazil and Mexico. Argentina has added megawatts too, largely from a 77MW project in Patagonia, the first from a renewable energy auction system that had been hoped to bring more projects on line - many now on hold through the country's financial difficulties.
Project plans in the pipeline, according to Windpower Intelligence, reflect the high expectations, with Chile and Argentina expected to join the two stalwarts in delivering projects. But, with policy across the region remaining largely uncertain, and grid issues already affecting Brazil's project connections, only time will tell how much of this capacity will be realised, and when.