GB2120504A - Compression process for a digitized image - Google Patents
Compression process for a digitized image Download PDFInfo
- Publication number
- GB2120504A GB2120504A GB8215894A GB8215894A GB2120504A GB 2120504 A GB2120504 A GB 2120504A GB 8215894 A GB8215894 A GB 8215894A GB 8215894 A GB8215894 A GB 8215894A GB 2120504 A GB2120504 A GB 2120504A
- Authority
- GB
- United Kingdom
- Prior art keywords
- value
- values
- line
- segment
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
- H04N11/042—Codec means
- H04N11/046—DPCM
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
The digital values, Bij, of the brightness of points in the i<th> line undergo differential coding with, as reference, the brightness values, Bi-1,j, Bi-1,j-1 or Bi-1,j+1, of the points in the (i-1)<th> line. They are coded by blocks of consecutive values such that the difference in brightness of each point with respect to its point of reference is identical to within a tolerance 2e. The values, Bij, of a block are all coded with respect to the value Bi-1,j or the values Bi-1,j-1 or the values Bi-1,j+1, chosen in order to minimise the difference in brightness. Each block is coded by its brightness difference value, its length and a binary word indicating whether the respective references are Bi-1,j, Bi-1,j-1 or Bi-1,j+1.
Description
SPECIFICATION
Compression process for a digitalized image
The present invention covers compression processes for a digitalized image, these processes
being intended to reduce the quantity of data representing the image before it is stored or transmitted.
In the first case, compression allows a smaller sized and, hence, less costly memory to be used. In the
second case, compression allows an image to be transmitted, in a given time, through a channel with a
smaller output.
Two categories of image compression process may be distinguished, those using a field memory
and those using a line memory. The latter are not so efficient but they require a smaller size and, hence,
less costly memory. The process in accordance with the invention belongs to this latter category. In this
process category, prior practice covered mainly processes for coding by slopes and coding by segments
(Run length coding). The criteria for the appreciation of the results obtained are the reduction factor for
the quantity of data, the complexity of the algorithms, represented by the number of elementary
computing operations done for each point, and the typical difference between the brightness values in
the reproduced image and those in the original image.
Among the two processes mentioned above coding by segments is the one which gives the best
reduction factor for a given typical difference and a given number of operations. The principle is as
follows:
An image is analyzed and the brightness value of each point is digitalized. Then, instead of coding
the brightness of each point separately, the process consists in coding once only the brightness of the
"segments", which are formed of adjacent points in the same line with the same brightness value. Each
segment is characterized by its length and brightness. Coding consists in replacing the series of point
brightness values by a series of length-brightness couples. This method is simple, it requires few
calculations and does not cause coding-decoding errors but the reduction factor for the quantity of data
is small, 1.1 to 1.3.This process is described in particular in "A Probablistic Model for Run-length
Coding of Pictures" by J. CAPON, I.R.E. Transaction Information Theory, I.T.5., of December the 4th
1954, pages 157-1 63, and in "Run Length Encodings", by S. W. GOLOMB, I.E.E.E. Transaction
Information Theory, I.T. 12., of July 1 966, pages 399-401.
Also, prior practice includes a very classical data compression method, differential coding with, as
an improvement, a weighting of the reference values to reduce the transmission errors. This coding is
described in "Delta Modulation Systems" by R. STEELE, Pentech Press, London.
For example, if the reference is taken on the same line, the brightness value, B ij, for the jth point in
the ith line can be coded by Djj = Bi - #.Bi.j-1 in which A is a fixed number between 0 and 1 and Bj j~, is
the brightness value of the point immediately preceding in the same line.
The process in accordance with the invention extends the coding by segments to both dimensions
and combines it with differential coding with ponderation to obtain a better performance.
In accordance with the invention, a compression process for a digitalized image by coding a series of digital values B, in which B is a characteristic value of the point in column j in the jth line of a series
of lines in the image, process which, for each line but the first one, consists in: ~calculating, for j = 1 to N, three sets of numerical values: S1: (a,j = B1- #.B'#1j) S2: (bij = Bu - #.B'i#lA#l)
S# (c = Bi - .B'~; ~+1) in which N is the number of points in a line, A a fixed number between 0.5 and 1 chosen to optimize data compression as a function of the type of image processed and B' i-1,j' B' i-1.j-1 and B' i-1.j+1 are decoded coded values of Bl~ld, Bi-1,j-1 and Bi-1,j+1,
--regrouping the characteristic values of the points in the ith line in blocks formed of consecutive values Bij such that if Bjp is the value whose column is the highest in the block preceding the one being considered, the value whose column is the highest in the block considered is B,Q such that Q = Max (K,
L, M) in which K, L and M are whole numbers less than N such that:: for j = P + 1 to k,(Maxai@ - Min aij) # 2e for j = P + 1 to L, (Max bij - Min bij) # 2e and for j = P + 1 to M, (Max c11 - Min ci < # 2e in which e is a digital value, called the tolerance, which is between 0 and 5% of the maximum of the characteristic values of the points and is chosen as a function of the reduction ratio and image quality desired,
-- coding all the values forming a block (bij, j = P + 1 to Q) with the following data:: - a digital value G = Q- P, called the block length, - a digital value A called the characteristic value of the block such that forj=P+1toK, Max aij # A # Min aij if Q = k, or forj=P+1toL, MaxB > #A > #Minb#if0= or fori=P+1toM, Max cij # A # Min cij if Q = M, - a binary word D, called the shift-indicator, which is different according to whether 0 is equal to
K, L or M,
process consisting in coding the characteristic values, B1j, of the points in the first line in accordance with any process which does not require knowledge of the characteristic values in the preceding line, and consisting in restoring a decoded value, Bf,j, of the characteristic value Bit for i > 1 and j = P + 1 to Q by calculating: A + # B'i-1,j if, on coding, Q = K, or A + A.B'j~, j~ if, on coding, Q =L, or if, on if, on coding, 0 = the distinction between the three cases being provided by the shift indicator D.
The invention will be better understood and other characteristics will appear in the description below and the figures related to it:
Fig. 1 shows an example of a flow chart of the operations for coding an image by the process in accordance with the invention,
Figs. 2, 3 and 5 show in detail parts of the flow chart given in Fig. 1,
Fig. 4 shows an example of use of part of the flow chart given in Fig. 1,
Fig. 6 shows an example of a flow chart of the operations for decoding an image by the process in accordance with the invention,
Figs. 7 and 8 show in detail parts of the flow chart given in Fig. 6.
The digital values, Bij, characteristic of the image points, may be brightness values in particular.
Known improvements enable the process of coding by segments to be improved considerably.
The first improvement consists in defining a tolerance round the brightness value of each segment.
This tolerance may be 1 or 2% of the maximum value of the brightness. This levelling is not very troublesome for the quality of the image; it even has the advantage of supressing part of the noise. The larger the tolerance, the longer the segments statistically and, on the other hand, the typical difference increases when the reduction factor is bigger.
The second improvement consists in optimizing the number of bits assigned to the segments length coding. For example, for images with 512 points per line, 80% of the segments are statistically less than 8 points long. The field reserved for length coding is fixed at 8 bits. Levels more than 8 points long are coded in several fractions.
The third known improvement consists in optimizing the number of bits assigned to segment brightness coding. For example, for brightnesses coded in 8 bits, the difference of brightness between two consecutive segments rarely exceeds +16. The optimized code consists in transmitting the differences in brightness with 5 bits only instead of the absolute value coded in 8 bits. When the value of the brightness difference is greater than +1 6, which is the exception, it is replaced by the absolute value of the brightness coded in 8 bits. To distinguish between the two cases, a bit is added to the brightness coding field.
The process in accordance with the invention improves the process of coding by segments in particular by using the correlation existing between the brightness on the one hand, and between the lengths of the segments of two successive lines on the other hand. In the example described below, in which this process is used, the image is assumed to be analyzed in two fields and is not stored in a field memory or image memory. The two lines considered belong to the same field.
Also, the process in accordance with the invention combines the differential coding process with the process coding by segments, the weighting coefficient A being taken preferably as 1/2. This coefficient gives a very good compression rate when the static characteristics of the brightness values of an image are taken into account. Furthermore, division by 2 is easily done with a computer in a short time because it can be done by shifting by one column the binary figures of the number to be divided into.
The process in accordance with the invention contains three main steps, the first being the use of the correlation between the brightnesses of the points in two successive lines. The brightness, B jj, of the point of column j in the ith line is subjected to weighted differential coding with, as reference, one of the brightness values, B i-1,j' Bj~ j+, which correspond respectively to the homologous point of the current point on the preceding line, to the point preceding and to the point following this homologous point.
After storage or transmission the data are decoded for use. The decoding uses as reference one of the restored brightness values, B'1#1#1, B '1-1.1-I or B'1#1,+1, corresponding to B1#1,1, Bi-1,j-1 and B i-i .1+1 There is a certain error between the original values and the restored values. To avoid coding and decoding with two references which are not identical, which would cause an additional error, the coding uses in fact as reference one of the restored values, B'#1j, B'i-1,j-1 and B' +" obtained by coding and decoding the original values. They are called decoded coded values to distinguish them from the original values.
Depending on the case, the point on the preceding line with the brightness value closest to that of the current point is either the homologous point or the point which precedes it or the point which follows the homologous point. To improve the compression of data obtained by differential coding, the process in accordance with the invention uses as reference the brightness value of the point which allows the best data compression. Also, it combines coding by segments with weighted differential coding using one of these three references. The brightness values are coded in blocks corresponding to adjacent points in a line but, contrary to the coding by segments, these points are not of the same brightness.They are of the same difference in brightness with respect to their respective reference point on the preceding line exactly in the same column or shifted one column to the right or left. As the points corresponding to a block are processed together, the relative position of their respective reference point is taken identically either not shifted or shifted to the right or the left. Two bits are required to indicate, when a block is decoded, the relative position of the reference points.
As an example, take a digitalized image with 512 lignes of 512 points in which the brightness of each point is digitalized by an 8 bit word represented by the hexadecimal values of the two half words: Line i to be coded: 50,53,53,54,61,60,71, 70,70,68,69,...
(i > 1) line 1: 38, 53, 53, 53, 60, 60, 60, 72, 72, 50, 51, 50,...
(after coding and decoding)
Line i - 1: 19, 26,26, 26,30, 30, 30, 36,36, 25, 25,25,...
(weighted by :1=-) 2
The calculation of (B, -:L. B'i - 1 ,j) for the ith line gives: S#:31, 27,27,28,31,30,41,34,34,43,44,...
The calculation of (B1j - ;t.B'1#1j#1) for for the ith line gives: S#: 31, 34, 27, 28, 35, 30, 41 , 40,34, 32,44,...
For the first value, as B'~,l-1 does not exist, the calculation is done with B'1#1,1, i.e. 38.
The calculation of(B1,j - #B' @-1j+1) for the ith line gives: Q:24, 27,27,24,31, 30,35,34,45,43,44,...
For the last value, as B'l-1,N+1 does not exist, B'i#1N is used instead.
The weighted differential coding of the ith line thus gives three sets of N digital values, S,, S2 and
S3, each corresponding to a batch of reference values. These reference values are the brightness values for the (i - 1 )th line,
~with no shift for S,
-- with a shift one column to the left for S2, -- with a shift one column to the right for S3.
The process of coding by segments it then applied to these sets but is limited to the search for the first segment in each set. Also, the numbers contained in a segment are not of a single value but are in an interval e, called the tolerance, such that the difference between the maximum and minimum values in a segment is less than or equal to 2e.
For example, if e = 2, the first segments in S,, S2 and S3 are:
The process consists in finding out which of these segments is the longest, i.e. the one containing the biggest number of values in an interval of width 2e = 4. The longest segment is the one in the S, set. It contains 6 values between 27 and 31.
A segment is also characterized by a brightness difference value, called the median value, which ic equal to the value in the middle of a list when its values are given in increasing order. If the number of values is odd, the median value is one of the two values near the middle of the list. These values are decided between by consideration of the one which appears the biggest number of times in the list or which is the closer to the arithmetic mean of the values. The median value of
A variant of the process consists in choosing the whole number which is closest to the arithmetic mean of the values contained in this segment.In the example above it would be
31 + 27 + 28 + 31 + 30
=29
5
The length and the median value of a segment form the coded value of a block of values of brightness Bii. The brightness values of such a block are not necessarily identical contrary to classical coding by segments.
The length of the block of brightness values corresponding to a segment defined by the process in accordance with the invention is identical to the length of this segment.
To code the next brightness values the process consists in looking for a second segment in each of the three sets S1, S2 and S3 by beginning at the 7th column in the example considered:
Then the lengths of the three segments are compared. The longest segment is retained to characterize a second block of brightness values.
In the example considered, sets S2 and S3 have a second segment of identical length. To decide between them the criterion may be the difference in value compared with the segment previously retained. The segment with the lowest difference in value with respect to the one previously retained is
the length being 2 and the median value 34.
Then a third segment beginning at the gth column is looked for in each of the sets and the longest of the three is selected. Its length and median value code a third block of brightness values. This process is reiterated until the end of the ith line:
Each block of brightness values is coded by its length, the median value of the corresponding segment and two bits indicating that the coding of the block has been done with respect to the preceding line without a shift (S,), with a shift to the right (S3) or one to the left (S2).
The blocks of brightness values thus defined do not necessarily coincide with the constant brightness segments which would have been defined by the classical process of coding by segments.
The term "block" is used to avoid confusion with the segments defined by the classical process.
Let G be the length of a block, A the brightness difference and D the binary word indicating the
shift. The decoded brightness B'ij of each of the G points corresponding to a block is:
A + A.B',~ or
A + A.B',~, i~ or
A + depending on the shift indicator value.
The process in accordance with the invention contains a second big step which is the use of the correlation between the lengths of the segments in two successive lines.
In the process in accordance with the invention the length G of a block of brightness values is differentially coded with respect to that of the nearest block in the previous line when it exists. To determine the relative position of the blocks in the (i - 1 )th line with respect to those of the ith line being processed, a table memorises the column marking the position of the middle of each block in the (i - 1 )th line and their length. The nearest block is the one whose middle is near that of the block being considered. Let G" be the length of the nearest block in the (i - 1 )th line. The coded length of the block being considered is then: H=G-A.G" On decoding, the number of points corresponding to this block is equal to ' = H + A.G".
The third bit step in the process in accordance with the invention is the use of the correlation between the differences in brightness of two adjacent blocks in the same line.
Using differential coding with a weighting, it consists in coding the value of the difference in brightness A in a block with respect to that, A", in the block immediately before it in the same line.
The coded value of A is = = jl.A".
If the block considered is the first in the line, A" = 0 and J = A.
After decoding, the difference in brightness of the block considered is: J'=J +:i.A".
The first line of the image forms a special case because its coding cannot have for reference the preceding line as it does not exist. Any other coding process can be used; for example, an improved coding by segments, which consists in coding the brightness values Bj, (j = 1 at N) by blocks, called segments, formed of consecutive values Bj j contained in an interval such that (max Bl - min B,,) N < 2e for all the column j in a segment. Each segment is characterized by the number, Gol of brightness values it contains, which is called the length of the segment, and by its brightness whose value is taken equal to the median value, Aol of the brightness values in this segment.The median value of the brightness is differentially coded with respect to A"o, which is that of the segment preceding the segment considered in the same line. If the segment considered is the first of the line, A"o is made equal to 0. The coded value of the brightness is: C=A0-%A"0 As in the coding operations previously described, it is advantageous to take A = 1/2.
After decoding, the brightness value of all the points in a segment is: A'0=C+.;L.A"0 The process described above can be improved by combining it with other known processes, to compress even further the data resulting from the compression operations described.
In the first place, it is possible to use the Huffmann coding or prefix coding process. This consists in using the static characteristics of the symboles to be coded to reduce the total number of bits to be transmitted. The number of bits coding a symbol depends on it. The symbols which appear most often are coded by a small number of bits and those appearing least often are coded by the maximum number of bits. These bits are stored or are transmitted without a frame enabling the symbols to be individualized. This reduces the quantity of data. To make decoding possible, the binary words representing the symbols are formed in such a way that none of them can be obtained by adding bits to another shorter word in the code.For example, it is desired to code the messages A, B, C, D, E, F, G, and
H, which have the following probabilities of occurrence:
A B C D E F G H
0,4 0,05 0,2 0,02 0,1 0,03 0,14 0,06
These symbols are classified in decreasing order of probability of appearance and are coded in accordance with a method described, for example, in "A Method for the Construction of Minimum
Redundancy Codes", Proceedings of the l.R.E., David A. Huffmann, of September 1 952 and in "Probabilistic Information Theory" by Jelinck, McGraw Hill publishers.
Symbol Probability Code
A 0,4 0
C 0,2 111
G 0,14 101
E 0,1 100
H 0,06 1100
B 0,05 11011
F 0,03 110101
D 0,02 110100
The decoding can be done by one of the methods described in the publications mentioned above.
In the process in accordance with the invention, the Huffmann coding is applied to the data resulting from a combination of the codings applied to the brightness values of an image. To prepare the coding and decoding tables appropriates to each case, it is necessary to use the statistical characteristics of these data after the codings and not the original data. These statistical calculations are done once only for a given type of image. Experience shows that these statistical characteristics vary little as a function of the type of image. There are two different Huffmann codes, one for block lengths and the other for brightness difference values, because these two quantities have not got the same statistical characteristics. The values of the lengths and brightnesses of the segments in the first line are coded with the same codes.The shift indicator, D, as it only contains 2 bits, can be coded with a very simple Huffmann code which consists in representing the absence of shift, the most frequent case, by the code 0, which only requires one bit, and shifts to the right and left by two bit words, 11 and 10 for example.
Furthermore, if a Huffman code is not used, it is still possible to use the statistical characteristics of the coded data obtained, in accordance with the method already described, by optimizing the fields coding the various values.
For example, if the lines have 512 points, the statistic of the block lengths for a set of images shows that 80% of the lengths are less than 8 points. It is sufficient then to code them with 3 bits. The blocks more than 8 points long are coded in several fractions.
If the weighted differences between the brightness values are most often included, for example, between +16 and~16, the optimum number of bits is 5. As it is necessary to be able to code values of more than 16 absolutely, it is arranged to code these exceptional values with 8 bits which enable all the 256 brightness levels in an image to be covered. To distinguish between the two cases an additional bit is added to the data bits. When the number of bits used increases to 8, it is the same as if there were no differential coding. It is then advantageous not to use differential coding with respect to the preceding block in the same line and to represent, by these 8 bits, the real value of the difference in brightness in the block considered. The advantage of using the real value is that it stops the propagation of errors which may have occurred earlier.
These variants improve the compression in the case in which a Huffmann coding is not used.
Otherwise, they are of little interest.
Thirdly, it is possible to eliminate high amplitude noise. Low amplitude noise is eliminated by defining the tolerance interval 2e between two values of the same segment. To eliminate the high amplitude noise, an additional process is used. It consists in considering that a brightness difference value, which cannot belong to the segment which precedes it, is abnormal if the next value can belong to the same segment. The abnormal value is then replaced by the value representative of the segment, which is the median value in the circumstances. If the value following the one which is outside the segment cannot belong to this segment, a fresh segment is defined from the first value outside the preceding segment. The elimination of the abnormal values due to high amplitude noise not only improves the quality of the restored image but also increases the reduction factor by avoiding useless fractioning of the segments.
Finally, when the compressed data forming an image are juxtaposed in series, to transmit them for example, the absence of a frame which individualizes the data point by point results in a bit reduction in the data output. Nonetheless, it remains necessary to locate the start of the lines. For this purpose, it is convenient to use the classical HDLC format, which consists in preceding each batch of data by a characteristic header. The compressed data corresponding to a line are of variable length and form a batch preceded by an HDLC header: 01111110. To prevent such a header being present among the data bits, an automatic device detects them when present among the data and modifies them by adding a bit of value 0 after each group of 5 consecutive bits of value 1.On reception, another automatic device suppresses systematically the bit of value 0 which follows a group of 5 bits of value 1 among the data.
To prevent the propagation of an error beyond a line, it is possible, after each batch of data, to place an error detector code word, of the classical CRC type for example. An incorrect line is replaced by the preceding line or by the homologous line in the other field if a field memory is used.
The process in accordance with the invention is applicable to any fixed or moving image. If it consists of a single field, each line is coded by taking as reference the preceding line which is its immediate neighbour. If it consists of two fields, they are processed independantly in the absence of a field memory. A variant of the process consists in storing a field in the memory, calculating the weighted difference of the brightness values of the homologous points in the two fields and compressing the value of this difference by using the process described above. The value of the difference then forms the characteristic value Bjl. The compression obtained is improved with respect to the case in which the fields are coded independantly.
It is also possible to compress colour television images by applying the process in accordance with the invention to the luminance value Y and to the two chrominance values B-Y and R-Y. These three characteristic values, Bi, are coded separately. Each luminance value is peculiar to a point but each chrominance value is common to two adjacent points.For example, for the first 5 points of a line, the original data are:
8bits | 4bits | 8bits | 4bits | 8bits | 4bits | 8bits | 4bits Bbits 4bits Y1 R1-Y1 Y2 B1-Y1 Y3 R3-Y3 Y4 B3-Y3 Y5 Rg-Yg # 12 bits When the chrominance values are only calculated for one line in two, the number of bits per point will be 10 on the average.The two lines belong to the same field unless a field memory is available.
Application of the process in accordance with the invention can be obtained by the use of a device with wired or programmed logic whose production is possible by standard methods. For example, to compress an image formed by a single field, this circuit does the operations whose sequence is shown in Fig. 1. The brightness values, Bjp are supplied in series to the device which codes them and restores them in series by inserting binary headers which enable the start of an image and the start of a line to be identified.
At the beginning, the device is on standby. Before receiving the brightness values, it receives a synchronizing signal which indicates that an image or a line is going to begin. If it is the beginning of an image, the device generates a binary HDLC header, O11111110 for example, to identify the start of the image. Then it initializes a line counter at i = 1 and processes all the brightness values in the first line with a coding algorithm, peculiar to this line, which is described later on.
On the other hand, if the device receives a synchronizing signal indicating the start of a line, another binary HDLC header, O1111110 for example, is generated. The line counter is incremented one unit. The brightness values of the whole ith line are then processed by a coding algorithm which is described later on. These two coding programmes do not include the Huffmann codings which are done afterwards.
To allow processing later, the following are stored: ~the coded brightness difference values, J, without the Huffmann coding, in the ith line, ~the decoded coded brightness values, B',i, in the ith line, ~the columns marking the position of the blocks in the (i - 1 )th line.
The brightness values, B,p coded by the coded values, J, of the brightness differences, and the coded values, H, of the block lengths undergo a Huffmann coding in accordance with two separate coding tables, one for the brightness differences and one for the block lengths. The coded data in the first line have statistical characteristics different from those of the coded data in the other lines but the same Huffmann codes are used.
An error detector code word, of the 16 bit CRC type, is calculated with a classical algorithm and added to the sequence of coded data in a line. This sequence is supplied in series to the device using the data and then the device doing the compression switches to standby.
The coding steps, which are applicable to all the lines except the first, are shown in Fig. 2. The brightness values for the whole ith line are memorized. Afirst set, Si: a jj - A. B' i-i.' is is calculated for j = 1 to N; B'~1 ~ is the decoded coded value of the brightness of the point of column j in the (i - 1 )th line.
The brightness values, Bij, thus undergo differential coding, weighted by a coefficient # = 1/2 with respect to the brightness values, B ##,i, of the preceding line, which is not shifted.
A second set, S2: b,J = B@@ - )L.B'1#1j, is calculated for j = 1 to N; B' 1-1.1-i is the decoded coded value
of the brightness of the point of column j - 1 in the (i - 1 )th line. The brightness values, Bij, thus undergo differential coding, weighted by a coefficient A = 1/2 with respect to the brightness values, B~1 ~~" of the preceding line shifted one column to the left.
A third set, S3: C@j = B11 - #B' ~I j+i' is calculated for j = 1 to N; B' i-i,j+i is the decoded coded value of the brightness of the point of column j + 1 in the (i- 1)th line. The brightness values, B jj, thus undergo differential coding, weighted by a coefficient A = 1/2 with respect to the brightness values, B1#1,1+1, of the preceding line shifted one column to the right.
An algorithm, described later, is applied to each of the sets, S1, S2 and S3, to fix a segment in each set with a given tolerance e and eliminate the isolated abnormal points in a segment which are due to noise. In the general case, the preceding segment stops at column P for example. Assume K, L and M are the columns forming the respective upper limits of each of these segments. Assume G is the number of values contained in the longest segment.
G=Q-PinwhichQ=Max(K,L,,M) A binary word, D, is generated to indicate if Q = Max (K, L, M) = K or L or M.
The median value, A, of the brightness difference values forming the longest segment is calculated and then coded differentially with a weighting A = 1/2 with respect to the median value, A", of the preceding block in the same line. If this block does not exist, the median value, A", is taken as 0.
J = A~A.A" The length, G, is differentially coded with a weighting # = 1/2 with respect to the length, G", of the preceding block in the same line if it exists. If it does not exist, G" = 0.
H =G~A.G" If O = N, the coding of the ith line is finished and processing continues with the storage of the coded data as shown in Fig. 1.
If Q f N, the coding of the ith line is not finished and three new segments are determined respectively in the sets, S" S2 and S3. The longest is sought and coded as described above.
Fig. 3 shows an example of a flow-chart of the operations in determining a segment in which the brightness differences are identical to within a tolerance e by eliminating the isolated abnormal points.
This flow-chart considers the values, ajj, in theset S1 as an example but it is identical for sets S2 and 53.
A logic indicator, @, (flag) is initialized at 0. A counter of column, j, is initialized at the value P + 1 in which P is the column of the upper limit of the longest segment previously found. A counter of length of segment G is initialized at 0. The device calculates M = ajj + e and m = a ii - e.
The counters of column j and length G are incremented one unit: jvj + 1;G < -G + 1.
The corresponding value of ajj is read in the memory.
M' = aij a11 + e and m' = a--- e are calculated. If M' < M, the value of M' is transferred to the memory unit of M. If it is not, the processing continues. If m < m', the value of m' is transferred to the memory unit of m. If it is not, the processing continues.
The value of M and m are compared:
-- If M > m, the value of ajj belongs to the segment. It is memorized in a special memory for later calculation of the median value, A, of the segment. The indicator, @, is reset to zero. This changes nothing in the case considered. The content, j, of the column counter is tested. If j < N, the set of values in the line is not completed and the processing begins again from the incrementing of the counter in column:
j < - j + 1.
-- If M # m, the value of ajj does not belong to the segment defined by the values which precede it. Either it is the start of a fresh segment or it is an abnormal value due to noise and is isolated in the segment. The indicator, @, is tested. I = O if the preceding value is not abnormal and, in this case, the processing begins again from the incrementing of the counter in column:
j v j + 1, after recording the meeting of this doubtful value and setting indicator I to segment 1.
Also, the preceding values of M and m are reformed in order to ignore the doubtful value: M < - a1##1 + e; m a1##1 - e.
The counter in column is incremented: iGj+ 1.
For the next value two cases are possible:
a) if M > m, the value aij belongs to the segment and the preceding value, aj j~, was abnormal. It counts for the block length but not for determination of the median value. Only a jj is recorded in the memory used for the calculation of the median value. Also, the indicator I is reset to zero to be reused if there is another isolated doubtful value in the same segment. The column counter is tested. If its content, j, is less than N, the processing begins again from the incrementing of this counter. If it is equal to N, as the line is completed, the segment is finished too and this processing is finished. The value of G gives the segment length.
b) If M < m, the indicator, l, is tested. If the preceding value was doubtful, I = 1. This confirms that the segment is finished and the processing is finished. The column counter is decremented two units because the last two values do not belong to the segment. They must not be counted in its length: G t G - 2.
It may be noted that it is not necessary to calculate the median value of a segment to find out whether or not the next value belongs to it.
Fig. 4 shows the evolution of the values of M and m, in accordance with the preceding algorithm, for the various values of a11 as a function of the column, j. The condition, M > m, is satisfied as long as the curve of M is above the curve of m. Each time that a value, a,i, gets further from the segment and becomes an extreme value of the said segment, the two curves, M and m, come closer together irreversibly. At the 1 4th value, curve m (dotted) passes over curve M (continuous line). Hence, a priori, this 1 4th value is not part of the segment. In this case, the algorithm reforms the preceding values of M and m and considers the following value, a jj, (1 5th column) with respect to these values (continuous line). The next value, a1,15, does not cause intersection of the curves. It is in the segment then.The doubtful value, a1,14, is considered as abnormal. It does not interrupt the segment.
Fig. 5 shows the sequence of coding operations peculiar to the first line. The brightness values, Bgj arrive in series and are stored while waiting for all to be available. A column counter is initialized at zero jt o.
The segments such as (Max B11 - Min B11) Bg 2e are determined by eliminating the abnormal points due to noise with the same algorithm as that shown in Fig. 3. Instead of the brightness difference values ajj, brightness values, Bull, are obtained.
The length Gol of a segment beginning at column j, (here j = 1) is determined and then the column
counter is incremented by this value: j tj + G,.
The median value, Bol of its brightness values is calculated and undergoes weighted differential
coding with respect to the median value, B",, of the preceding segment: C = B0 - 0.
The column counter j is tested. lf j < N, the processing begins again from the incrementing of this
counter. If j = N, the first line has been completely coded and the processing is finished.
Fig. 6 shows an example of a flow-chart of the decoding operations, which can be done by a wired
logic or programmed logic device whose production is possible by standard methods.
The device receives the coded data in series. It waits for the reception of a binary header
characteristic of the beginning of an image or of a line. When a header, 011111110, characteristic of the beginning of an image is recognised, the memorizing of the coded data of the first line is done. The end of the first line is recognised when the binary header, 01111110, characteristic of the start of the
next line is detected. The CRC error detection word is not tested for the first line. The coded data of the first line are decoded and then the resulting brightness values are stored in an image memory which is read by a display device such as a TV monitor, a line counter is initialized at zero: iv O.
The line counter is incremented: ivy+ 1.
Recognition of the beginning of the next line triggers the memorizing of the coded data in this line and recognition of the next start of a line stops this memorizing. This enables the data for each line to be separated. The CRC error detection word is tested. If there is an error, the data in this line are not decoded and the brightness values in the preceding line are stored in the image memory instead of the values which would have been incorrect. If there is no error, an algorithm, which is described later on, decodes the data by taking as reference the brightness values in the preceding line. The resulting brightness values are stored in the image memory. The line counter is tested. If the image is completed, the device waits for the next binary header, 011111110, characteristic of the beginning of the next image.If the image is not completed, the operations begin again from the recognition of the start of the ith line after the line counter has been incremented: i & + 1.
Fig. 7 shows an example of a flow-chart of the operations decoding the ith line with respect to the (i - 1 )th line (i 1). A column counter is initialized at zero: je o.
and then the coded data corresponding to a first block of brightness values are read in the memory. A first Huffmann decoding supplies a brightness difference value differentially coded, J. A second Huffmann decoding supplies H, the block length value differentially coded. The coded value, J, of the block brightness difference is decoded by taking as reference A", the difference in brightness value of the preceding block in the same line if it exists:
A' =J + A.A".
The coded value H of the block length is decoded with respect to the length G" of the nearest block in the preceding line: = = H +A.G".
The column counter is incremented by the value G'. The brightness value coded A' is decoded with, as reference, one of the brightness values, Bli-id' B' 1-1,-i or B'1-1,1+1' which correspond respectively to the homologous point, the one shifted to the left and the one shifted to the right in the preceding line: B'-- = A' + A.B'1#1j or B'-- = A' + #.B'@-1,j-1 lj-1 or B'ij = A' + A.B'#1j+1 The selection is done as a function of the value of the binary word, D, which is the shift indicator accompanying the coded data. The brightness values B'ij obtained are stored in the image memory. The column counter is tested. If the line is completed, j = N, and the processing is completed.If the line is not completed, j < N, and the processing continues by starting the operations again from the reading in the memory of the data coding a block of brightness values.
Fig. 8 shows an example of a flow-chart of the operations decoding the first line of an image which, in this example, has been coded with a coding by segments and in which the brightness value of each segment is differentially coded with respect to that of the preceding segment. A column counter is initialized at zero: jt o.
The coded data corresponding to the first segment are read in the memory. A first Huffmann decoding supplies the value Go of the segment length. The column counter is incremented by this value.
A second Huffmann decoding supplies the coded value C of the segment brightness. Then, it is decoded with respect to the value, B"o, of the brightness in the preceding segment if it exists. For the first segment, the reference, B"o, is O; Bto = C + A.B"0.
The Go brightness values, B1 = B'o, are memorized in the image memory.
The content of the column counter is tested. If j < N, the line is not finished and the processing begins again from the reading of the coded data for the next segment. If j = N, the line is finished and the processing is finished.
The present invention is not limited to this method of production. A professional can use other algorithms in applying the process in accordance with the invention.
Claims (15)
1. A composition process for a digitalized image by coding a series of digital values Bij, in which Bij is a characteristic value of the point in column j in the jth line of a series of lines in the image, process which, for each line but the first one, consists in: ~calculating, for j = 1 to N, three sets of numerical values: S1: (aij - Bij - #.B' @-1,j)
S2: (bij = B1 - :1.Bij - #B' j-1,j-1)
S3: (c@@ = by Bii - #.B'(-1j+1) in which N is the number of points in a line, A a fixed number between 0.5 and 1 chosen to optimize data compression as a function of the type of image processed and B' j-1j,B'i-1j-1 and B'@-1,j+1 are decoded coded values of B@-1,j' B,1,j1 and B@-1,j+1' -- regrouping the characteristic values of the points in the ith line in blocks formed of consecutive values Bij such that if B is the value whose column is the highest in the block preceding the one being considered, the value whose column is the highest in the block considered is Bi, such that Q = Max (K
L, M) in which K, L and M are whole numbers less than N such that:: for j = P + 1 to K, (Max a@j - Min a @@) # are for j = P + 1 to L, (Max bij - Min bij) 6 2e
and
for j = P + 1 to M, (Max Cii - Min cii)# 2e in which e is a digital value, called the tolerance, which is between 0 and 5% of the maximum of the characteristic values of the points and is chosen as a function of the reduction ratio and image quality desired,
coding all the values forming a block (Bij, j = P + 1 to 0) with the following data:: - a digital value G = O-- P, called the block length, - a digital value A called the characteristic value of the block such that
for j = P + 1 to K, Max a@j # A # Min aij if Q = K or
forj=P + 1 to L, Max Bij # A # Min bij if Q = L, or
for j = P + 1 to M,Max c@j # A # Min c@j if Q = M, - a binary word D, called the shift indicator, which is different according to whether Q is equal to
K, LorM,
process consisting in coding the characteristic values, B1j, of the points in the first line in accordance with any process which does not require knowledge of the characteristic values in the preceding line, and consisting in restoring a decoded value, B'jp of the characteristic value Bj for i > 1 and j = P + 1 to O by calculating: A + #.B'@-1,@ if, on coding, ng,0--K, or A + #.B' @-1,j-1 if, on coding, 0 = or
A + #.B'@-1,j+1 if, on coding, Q = M, =
the distinction between the three cases being provided by the shift indicator D.
2. A process as in claim 1, which consists in coding the block length G:
-- by calculating, for the coding and decoding of the ith line, the columns marking the middle of the blocks forming the (i - 1 )th line, the column marking the middle of the block being coded or decoded and the length G" of the block in the (i - 1 )th line whose middle is nearest to the middle of the block being coded or decoded,
-- by taking for the coded value of G:
H = G - #.G", and consisting in decoding G by taking for the decoded value: G' = H +
3.A process as in claim 1, which consists in coding the characteristic value, A, of each blaock in the ith line by taking for the coded value: J=A-A.A" in which At is the characteristic value of the bloc immediately preceding in the ith line, if it exists, and in which Att is zero if the block considered is the first in the ith line, and in decoding A by taking for the decoded value: A'=J +A.A".
4. A process as in claim 1, in which the coding of the characteristic values, B1withj=1toN,of the points in the first line consists in: ~collecting together these values in blocks, called segment, formed of consecutive values, B,j, such that Max B11 - Min B1 6 2e for the columns j corresponding to a segment, ~calculating, for each segment, a value Go of the number of values B,j it contains, Go being called the length of the segment considered, ~calculating, for each segment, a value Aol called the charcteristic value of the segment, such that, for the columns, j, corresponding to the segment considered, Max B,j > Ao > Min B11, ~taking, for the coded value of each segment:
-- the digital value, Got of its length, -- the digital value C = A0 - A.A' '0 inwhich Atto is the characteristic value of the segment preceding the segment considered in the first line, Atto being taken as O if the segment considered is the first segment in the first line, and in which the decoding of the characteristic values of the points corresponding to this segment consists in taking: A'0=C +A.A"0 for the decoded value of the characteristic value of each point of this segment.
5. A process as in claim 1 in which A = 0,5.
6. A process as in claim 1, which consists in coding, in accordance with a prefix code, at least one of the data representing the length, the characteristic value and the shift indicator of a block, a prefix code being set up as a function of the statical characteristics peculiar to each type of data which is coded.
7. A process as in claim 1, which consists in limiting the number of bits used to represent the length of a block to a value which enables most of the length values to be represented, exceptionally long blocks being broken down into several blocks whose length value can be represented with the limited number of bits which are usable.
8. A process as in claim 3, which consists in limiting the number of bits used to express the coded characteristic value of a block, J, to a first value allowing most of the values J to be represented, any exceptionally high value J being replaced by the uncoded characteristic value of a block, A, which is expressed with a number of bits whose value is sufficient to represent the maximum value of A, and consisting in distinguishing between these two cases by means of a bit added to the bits expressing A or J.
9. A process as in claim 1, in which a reduction of noise is also obtained when the values of the sets, S1, S2 and S3, are regrouped in blocks, which consists in adding a value considered to the block containing the value preceding it in the same line if the value considered does not comply with the conditions for belonging to this block but is followed immediately by another value complying with these conditions.
10. A process as in claim 1, in which the characteristic values, B11, of the points in the image are their brightness values.
11. A process as in claim 1, applied to television images formed by two fields, in which the (i - 1 )th line is the line analyzed just before the ith line.
12. A process as in claim 1, applied to television images formed of two fields, in which the (i - 1)th line is the homologous line of the ith line in another field.
13. A process as in claim 1, applied to television images formed of two fields, in which the characteristic values B11 of the points in the image are the values of the brightness differences between the homologous points of two fields forming the image.
14. A process as in claim 1, applied to colour television images, in which the characteristic values, Bü, of the points in the image are the luminance values Y and the chrominance values R-Y and B-Y, the process consisting in coding separately the three values.
15. A compression process for a digitalised image substantially as hereinbefore described with reference to, and as illustrated in, the accompanying drawings.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR8110898A FR2524740B1 (en) | 1981-06-02 | 1981-06-02 | METHOD FOR COMPRESSING A DIGITAL IMAGE |
Publications (2)
Publication Number | Publication Date |
---|---|
GB2120504A true GB2120504A (en) | 1983-11-30 |
GB2120504B GB2120504B (en) | 1985-03-13 |
Family
ID=9259101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB8215894A Expired GB2120504B (en) | 1981-06-02 | 1982-06-01 | Compression process for a digitalized image |
Country Status (3)
Country | Link |
---|---|
DE (1) | DE3219892A1 (en) |
FR (1) | FR2524740B1 (en) |
GB (1) | GB2120504B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2145305A (en) * | 1983-08-15 | 1985-03-20 | Rca Corp | Reduction of control bits for adaptive sub-nyquist encoder |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60185469A (en) * | 1984-03-03 | 1985-09-20 | Dainippon Screen Mfg Co Ltd | Reading method of picture signal |
WO1989010675A1 (en) * | 1988-04-27 | 1989-11-02 | Uvc Corp. | Method and system for compressing color video data |
US4847677A (en) * | 1988-04-27 | 1989-07-11 | Universal Video Communications Corp. | Video telecommunication system and method for compressing and decompressing digital color video data |
CA1326898C (en) * | 1988-04-27 | 1994-02-08 | John Music | Method and system for decompressing color video encoded data |
BR8906930A (en) * | 1988-04-27 | 1990-12-11 | Uvc Corp | PROCESS AND SYSTEM FOR COMPACTING AND DECOMPACTING DATA IN COLOR DIGITAL VIDEO IN A VIDEO COMMUNICATION SYSTEM |
US6512853B2 (en) | 1995-08-14 | 2003-01-28 | Barkfort Limited | Method and apparatus for compressing digital image data |
DE69610987T2 (en) * | 1995-08-14 | 2001-05-23 | Barkfort Ltd., Malahide | METHOD AND DEVICE FOR COMPRESSING DIGITAL IMAGE DATA |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1598343A (en) * | 1977-04-04 | 1981-09-16 | Int Computers Ltd | Display systems |
FR2450016A1 (en) * | 1979-02-23 | 1980-09-19 | Arnaud Jean | METHOD AND APPARATUS FOR COMPRESSING DATA, ESPECIALLY TELEVISION SIGNALS |
-
1981
- 1981-06-02 FR FR8110898A patent/FR2524740B1/en not_active Expired
-
1982
- 1982-05-27 DE DE19823219892 patent/DE3219892A1/en not_active Withdrawn
- 1982-06-01 GB GB8215894A patent/GB2120504B/en not_active Expired
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2145305A (en) * | 1983-08-15 | 1985-03-20 | Rca Corp | Reduction of control bits for adaptive sub-nyquist encoder |
US4605963A (en) * | 1983-08-15 | 1986-08-12 | Rca Corporation | Reduction of control bits for adaptive sub-nyquist encoder |
Also Published As
Publication number | Publication date |
---|---|
DE3219892A1 (en) | 1983-12-01 |
FR2524740A1 (en) | 1983-10-07 |
GB2120504B (en) | 1985-03-13 |
FR2524740B1 (en) | 1986-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5073821A (en) | Orthogonal transform coding apparatus for reducing the amount of coded signals to be processed and transmitted | |
US5046119A (en) | Method and apparatus for compressing and decompressing color video data with an anti-aliasing mode | |
EP0401854B1 (en) | An apparatus for orthogonal transform coding | |
US20020106019A1 (en) | Method and apparatus for implementing motion detection in video compression | |
US6829299B1 (en) | Variable length decoder and decoding method | |
US5539468A (en) | Coding device and decoding device adaptive to local characteristics of an image signal | |
JP2800633B2 (en) | Image coding device | |
CA2014943C (en) | Entropy encoder/decoder including a context extractor | |
US3984626A (en) | Picture signal coder | |
US5038389A (en) | Encoding of a picture signal in consideration of contrast in each picture and decoding corresponding to the encoding | |
EP0558016A2 (en) | Method and apparatus for encoding an image signal using a multi-stage quantizing number determiner | |
CA2183352A1 (en) | Compact source coding tables for encoder/decoder system | |
CN110401833B (en) | Image transmission method and device | |
US6975777B1 (en) | Apparatus and method of block noise detection and reduction | |
US20010040923A1 (en) | Encoding apparatus | |
GB2120504A (en) | Compression process for a digitized image | |
US6584226B1 (en) | Method and apparatus for implementing motion estimation in video compression | |
HU228534B1 (en) | Method and apparatus for encoding pixel colour values of digital video images | |
EP0945021B1 (en) | Data efficient quantization table for a digital video signal processor | |
EP0759663A1 (en) | Device and method for encoding data and device and method for decoding data | |
KR100858245B1 (en) | Recorded medium having program for coding and decoding using bit-precision, and Apparatus there of | |
EP1033885B1 (en) | Encoding device and method, and decoding device and method | |
US5649074A (en) | Raster image data compression method and system | |
US6463179B1 (en) | Image compression and decompression based on a flat pixel group level, group pixel coorindinate positions, and the number of pixels for the group | |
US20030108104A1 (en) | Video encoding and decoding method of mitigating data losses in an encoded video signal transmitted through a channel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PCNP | Patent ceased through non-payment of renewal fee |