Seismic data compression method, decompression method and device

By segmenting the seismic data channels and using multi-threading technology to adjust the number of sample compression bits, the problem of excessive seismic data storage space is solved, efficient data compression and transmission are achieved, and the fidelity and functional integrity of the data are guaranteed.

CN119109463BActive Publication Date: 2025-09-05CHINA NAT PETROLEUM CORP +2
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310675920.2
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-06-08
Publication Date
2025-09-05
Estimated Expiration
2043-06-08

AI Technical Summary

Technical Problem

While ensuring numerical accuracy and processing effect, existing seismic data compression technology has the problems of excessive disk space occupation, poor lossless compression effect, lossy compression affecting data quality, and inconsistent byte length of compressed data tracks.

Method used

By segmenting the seismic data channels, using multi-threading technology and synchronous concurrent bounded queues, adjusting the compression bit number of the seismic sample points, ensuring that the fidelity of the compressed data reaches the preset threshold, and converting the numerical type of the seismic sample points into a form with fewer bits, the data segment compression is achieved.

Benefits of technology

While meeting the fidelity requirements, the compression rate of seismic data is improved, disk space usage is reduced, the normal operation of data indexing, sorting, reading and writing functions is ensured, and data transmission efficiency is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119109463B_ABST
    Figure CN119109463B_ABST
Patent Text Reader

Abstract

The present invention provides a seismic data compression method, decompression method, and device. The seismic data compression method includes: a main thread initializing resources; calculating the fidelity of the seismic data trace before and after compression based on the number of compressed bits for each seismic sample point, until the fidelity meets a preset fidelity threshold; calculating the length of the compressed seismic data trace based on the number of compressed bits for each seismic sample point; utilizing synchronous concurrent bounded queues and running bounded queues to control and coordinate computing threads to convert the numerical type of the seismic sample points into a form with fewer bits according to a preset first rule, thereby compressing the data segments of the seismic data; and when compression of a seismic trace is completed, the corresponding computing thread is blocked, waiting for other computing threads to complete compression of the remaining data traces, and the compressed seismic data is placed in the compressed seismic data buffer for access by the main thread. The present invention improves the compression rate of seismic data, reduces disk space during seismic data processing, and conserves hardware equipment.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention belongs to the technical field of seismic data compression, and in particular relates to a seismic data compression method and device. Background Art

[0002] In recent years, with the continuous advancement of exploration technology, new acquisition techniques have emerged, accelerating the rapid growth of seismic data collection. Some single work areas collect petabytes of seismic data. Experience in processing production seismic data projects indicates that a processing project requires the storage of 10 steps of seismic data to ensure normal operation. Processing projects in the 100TB range are common. If the initial project data is 100TB, then the entire project requires 1PB of disk space. Seismic data processing production units urgently need to reduce seismic data storage space. Summary of the Invention

[0003] The inventors have discovered that the amount of seismic data in current production projects is large, and the use of software processing requires a lot of disk space. Under the condition of ensuring numerical accuracy and processing effect, the seismic data sample values ​​can be compressed to reduce the occupied disk space. Currently, similar compression technologies are divided into lossy compression and lossless compression. Lossless compression algorithms usually use statistical redundancy methods, and the compressed data must be statistically analyzed as a whole. The compression effect of data that does not contain or contains little identifiable redundant patterns is not good, but the compression effect of text data is good. Lossy compression is used when the quality requirements of the data are not high, and is often used for the compression of audio and video data. The byte length of each seismic data after compression in the two types of algorithms is not equal, which will result in the inability to randomly read and write any data channel after compression.

[0004] In view of this, the inventors hope to develop a method for compressing seismic data to meet the following requirements:

[0005] In a first aspect, an embodiment of the present invention provides a seismic data compression method, comprising the following steps:

[0006] The main thread initializes resources, including at least calculating the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer; setting the number of compression bits for each seismic sample point and allocating the compressed seismic data buffer; determining the number of computing threads participating in the compression; initializing a synchronous concurrent bounded queue Q and several running bounded queues QS, and starting the computing threads; wherein the seismic data includes multiple seismic data tracks, each seismic data track includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to compress a preset number of data segments in a seismic data track;

[0007] Calculating the fidelity of the seismic data before and after compression based on the number of compressed bits of each seismic sample point until the fidelity meets a preset fidelity threshold;

[0008] Calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point;

[0009] Using the synchronous concurrent bounded queue Q and the running bounded queue QS to control the coordinated computing thread, the numerical type of the seismic sample point is converted into a form with fewer bits according to the preset first rule, so as to compress the data segment of the seismic data;

[0010] When compression of a seismic trace is completed, the corresponding computing thread is blocked, waiting for other computing threads to complete compression of the remaining data traces, and put the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

[0011] On the other hand, the present invention also discloses a seismic data compression device, comprising a first initialization module, a fidelity calculation module, a first seismic data trace length calculation module, and:

[0012] The first initialization module is used to initialize resources, including at least calculating the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer; setting the number of compression bits for each seismic sample point and allocating a compressed seismic data buffer; determining the number of computing threads participating in the compression, initializing a synchronous concurrent bounded queue Q and several running bounded queues QS, and starting the computing threads; wherein the seismic data includes multiple seismic data tracks, each of which includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to compress a preset number of data segments within a seismic data track;

[0013] A fidelity calculation module, configured to calculate the fidelity of the seismic data before and after compression based on the number of compression bits of each seismic sample point, until the fidelity meets a preset fidelity threshold;

[0014] A first seismic data trace length calculation module is used to calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point;

[0015] The seismic data segment compression module is used to use the synchronous concurrent bounded queue Q and the running bounded queue QS to control the coordinated computing thread to convert the numerical type of the seismic sample point into a form with fewer bits according to the preset first rule to compress the data segment of the seismic data; it is also used to block the corresponding computing thread after the compression of a seismic track is completed, waiting for other computing threads to complete the compression of the remaining data tracks, and put the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

[0016] Based on the same inventive concept, a seismic data decompression method and a seismic data decompression device are also disclosed accordingly.

[0017] Based on the above technical solution, the present invention has the following beneficial effects compared with the prior art:

[0018] The present invention provides a seismic data compression method that processes all sample points in seismic data. While meeting compression fidelity requirements, the method controls the size of the compressed data by segmenting the seismic data traces and compressing the number of sample points in the seismic data traces. Furthermore, multi-threaded techniques are employed to ensure efficient data loading and output. The seismic data compression method proposed in the present invention improves data compression while ensuring numerical fidelity and data transmission rate, thereby reducing disk space and hardware requirements during seismic data processing. Furthermore, because the byte length of the seismic data traces remains unchanged before and after compression, functions such as seismic data indexing and data trace reading and writing are not affected. BRIEF DESCRIPTION OF THE DRAWINGS

[0019] In order to more clearly illustrate the specific embodiments of the present invention or the technical solutions in the prior art, the following briefly introduces the drawings required for use in the specific embodiments or the description of the prior art. Obviously, the drawings described below are some embodiments of the present invention. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.

[0020] Figure 1 This is a flow chart of a seismic data compression method in Example 1;

[0021] Figure 2 This is a flow chart of step S10 in Example 1;

[0022] Figure 3 This is a flow chart of step S104 in Example 1;

[0023] Figure 4 Schematic diagram of the process of step S20 in embodiment 1;

[0024] Figure 5 Schematic diagram of the process of step S30 in embodiment 1;

[0025] Figure 6 This is a schematic diagram of the compression principle of seismic data in Example 1;

[0026] Figure 7 Schematic diagram of the process of step S40 in embodiment 1;

[0027] Figure 8 Schematic diagram of the process of step S50 in embodiment 1;

[0028] Figure 9Schematic diagram of the working status of the main thread, each computing thread, synchronous concurrent bounded queue Q, running bounded queue QS, original seismic data channel buffer, and compressed seismic data buffer when compressing seismic data channels in Example 1;

[0029] Figure 10 Schematic diagram of the basic structure of seismic compression software developed in accordance with the seismic data compression method of the present invention in Example 1;

[0030] Figure 11 In Example 1, the seismic data compression method of the present invention is used to actually process seismic data produced by a project;

[0031] Figure 12 This is a schematic structural diagram of a seismic data compression device in Example 2;

[0032] Figure 13 This is a flow chart of a method for decompressing seismic data in Example 3;

[0033] Figure 14 This is a structural diagram of a seismic data decompression device in Example 4. DETAILED DESCRIPTION

[0034] In order to better understand the above technical solution, the above technical solution will be described in detail below in conjunction with specific implementation methods.

[0035] Example 1

[0036] The embodiment of the present invention provides a seismic data compression method, combined with Figure 1 As shown, it includes steps S10-S50, specifically:

[0037] Step S10: The main thread initializes resources.

[0038] The purpose of this step is to calculate the number of segments of seismic data, allocate compressed seismic data buffer, determine the number of computing threads involved in compression, etc., so as to divide the data segments responsible for each computing thread and ensure the efficiency of data conversion.

[0039] Combine Figure 2 As shown, this step includes at least sub-steps S101 to S104, wherein:

[0040] Step S101, calculating the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer.

[0041] Existing seismic data includes multiple seismic data channels, each of which includes a seismic channel header and multiple seismic sample points, each of which is a 4-byte floating-point value. In this step, the seismic data channel to be compressed, which enters the original seismic data channel buffer, is segmented according to a preset number of seismic sample points to obtain data segment numbers. If all seismic sample points in the seismic data channel can be divided by the preset number of seismic sample points without a remainder, the number of segments in the seismic data channel is the resulting quotient. Otherwise, the number of segments in the seismic data channel is the resulting quotient plus 1, and the last segment of the seismic data channel is padded with the preset number of seismic sample points.

[0042] In some embodiments, SN can be used to represent the number of seismic samples contained in each segment of a seismic data channel. This number must be a multiple of 8, with a preferred default value of 32, meaning each segment contains 32 samples. The calling program is given the number of samples M per seismic data channel to calculate the number of segments. If the last segment contains fewer than SN samples, the remaining samples are added to make it a multiple of 8, and the segment is then counted as one.

[0043] Step S102 , setting the compression bit number for each seismic sample point, and allocating a compressed seismic data buffer according to the number of segments of the seismic data track to be compressed and the compression bit number for each seismic sample point.

[0044] Reasonable setting of the number of bits after compression of each seismic sample point will directly affect the compression effect. In some embodiments, the value range is preferably 16-23 bits. The inventors have found through a large number of implementations that when the number of bits is 20, the compression rate can reach about 35%.

[0045] Step S103: Determine the number of computing threads involved in compression.

[0046] The number of computing threads involved in compression can be determined based on the number of computing threads that the current hardware environment can provide, or it can be specified by the user and determined based on the number of segments of the seismic data track. The number of computing threads shall not be greater than the number of segments of the seismic data track.

[0047] Step S104: initialize the synchronous concurrent bounded queue Q and several running bounded queues QS, and start the computing thread.

[0048] Specific, combined Figure 3 As shown, it includes steps S1041 to S1043.

[0049] Step S1041 , initializing a synchronous concurrent bounded queue Q for coordinating the synchronous and independent operation of each computing thread, and setting the maximum number of elements of the synchronous concurrent bounded queue using the obtained number of computing threads.

[0050] The synchronous concurrent bounded queue can coordinate the synchronous operation of each computing thread and ensure the independence of each computing thread in the compression operation of the current data channel.

[0051] Step S1042 , initializing a bounded running queue QS corresponding to each computing thread, wherein the maximum number of elements in the bounded running queue is 1.

[0052] Each computing thread corresponds to a bounded running queue. The maximum number of elements in the queue is set to 1 to ensure that when there is a seismic data channel that can be compressed, the computing thread starts running from the blocked state. After the current data channel is compressed, the computing thread is blocked.

[0053] Step S1043: Allocate the preset number of data segments to be compressed to each computing thread, and start each computing thread.

[0054] Assign the data segment for operation to each computing thread and start each thread. Since the bounded queue used by each computing thread is empty, when each thread obtains its element from the queue, the computing thread is blocked and waits for the data compression calculation after the seismic data channel is ready.

[0055] Step S20 , calculating the fidelity of the seismic data before and after compression based on the number of compressed bits of each seismic sample point, until the fidelity meets a preset fidelity threshold.

[0056] Specific, combined Figure 4 As shown, it at least includes steps S201 to S204.

[0057] Step S201: Calculate the fidelity of each seismic data sample before and after compression.

[0058] Specifically, if the original value and the compressed value of the seismic data sample point have different positive and negative signs, the fidelity of the seismic data sample point is set to 0.

[0059] Otherwise, if the original value of the seismic data sample is 0 and the compressed value is not 0, the fidelity is set to 0.

[0060] Otherwise, the absolute value of the difference between the original value and the compressed value of the seismic data sample point is calculated. If the absolute value is 0, the fidelity is set to a preset fidelity peak value.

[0061] Otherwise, the fidelity is calculated as follows:

[0062] 20log(V / ABS)

[0063] Wherein, ABS is the original value of the seismic data sample point, and V is the absolute value of the difference between the original value and the compressed value of the seismic data sample point.

[0064] In actual applications, the inventors found that the data fidelity during seismic data processing must reach above -105DB in order not to affect the subsequent seismic data processing effect. If the fidelity reaches -140DB, the data processing effect will be very good, and the preset fidelity peak can be set to -140DB.

[0065] Step S202 : Divide the sum of the fidelity of each seismic data sample point in the data segment by the total number of sample points to obtain the fidelity of each data segment.

[0066] Step S203 : The fidelity of the seismic data trace before and after compression is obtained by dividing the sum of the fidelity of each data segment by the number of data segments of the seismic data trace.

[0067] Step S204 determines whether the fidelity of the obtained seismic data traces before and after compression meets a preset fidelity threshold. If so, the data compression ratio is calculated and recorded. Otherwise, the number of compression bits for each seismic sample is adjusted, and the fidelity calculation of each seismic data sample before and after compression and subsequent steps are re-executed until the fidelity before and after compression meets the preset fidelity threshold. In this embodiment, the preset fidelity threshold is set to -105 dB.

[0068] In other embodiments, it is desirable not only for the compression algorithm to automatically adjust the number of compression bits to meet the fidelity requirement but also for the data compression rate to be maximized. Therefore, preferably, after each trial calculation of the fidelity of the seismic data before and after compression, the data compression rate is recorded, and then the number of compression bits for each seismic sample is adjusted again. Steps S201-S204 are then re-executed, and the saved data compression rates are compared. The number of compression bits for the seismic sample corresponding to the maximum data compression rate is used as the final set number of compression bits for the seismic sample.

[0069] Step S30, calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point. Figure 5 As shown, this step includes at least sub-steps S301-S304, specifically:

[0070] Step S301, calculate the number of bytes of each segment of seismic data after compression according to a preset formula, the preset formula is:

[0071] (BIT*SN / 8)+5

[0072] Where BIT is the number of compressed bits for each seismic sample point, and SN is the number of seismic samples contained in each segment of seismic data. The 5 bytes here include the maximum value of the original sample points in the segment (4 bytes of single-precision floating-point type), and the compressed bit number is one byte.

[0073] Step S302: Calculate the first byte number occupied by the entire seismic data track except the last segment of data according to the number of bytes of each segment of the seismic data track after compression.

[0074] Step S303: Calculate the second byte number occupied by the last segment of the seismic data track.

[0075] In practice, the last segment of data may not contain fewer than SN samples, so it needs to be calculated separately. If the number of samples in the last segment is equal to SN, add another segment of bytes. If the number of samples in the last segment is not a multiple of 8, increase the number of samples to a multiple of 8, and use this value to calculate the number of bytes in the compressed last segment.

[0076] Step S304: Add the first byte number and the second byte number to obtain the length of the compressed seismic data trace.

[0077] Step S40 , using the synchronous concurrent bounded queue Q and the running bounded queue QS to control the coordinated computing thread to convert the numerical type of the seismic sample point into a form with fewer bits according to a preset first rule, so as to compress the data segment of the seismic data.

[0078] An original data segment is composed of multiple seismic sample points, each of which is a 32-bit single-precision floating-point type number. By converting the floating-point type value into a form that occupies fewer bits and occupies less storage space, data compression is achieved. The compression operations of each data segment are independent of each other and can be performed in a multi-threaded parallel manner to improve data compression efficiency. For example, each sample point is stored as an N-bit unsigned integer. In a piece of data, M sample points are grouped together, and M is required to be a multiple of 8. According to the sample value change law, the range of influence of outliers and other factors, M is more suitable for a value of 32. Each group is assisted by a floating-point scale factor (SCALE) for independent compression and decompression operations. Combined with Figure 6 As shown in Figure 2, the compression principle of seismic data is:

[0079] Assumption: Nmax = 2 (N-1) -1;

[0080] Mmax is the maximum absolute value of the M sample points in the group, and the scaling factor SCALE = Nmax / Mmax. If Mmax is 0, special processing is performed.

[0081] The original floating-point sample value is fValue; the compressed unsigned integer value is nValue, and the corresponding value after compression is:

[0082] nValue=fValue×SCALE+Nmax

[0083] Decompression operation: fValue = (nValue - Nmax) / SCALE

[0084] Final result: nValue is shifted, bitwise ORed, or byte-swapped with adjacent sample values.

[0085] The following uses this compression principle, combined with Figure 7 The specific implementation process of this step is described in detail. This step at least includes sub-steps S401-S405:

[0086] Step S401, obtain the range of the data segment to be compressed and the calculation thread program number that the current calculation thread is responsible for.

[0087] Step S402, obtaining the bounded queue QS corresponding to the current computing thread by calculating the thread program number;

[0088] Step S403: Get an element from the bounded queue QS belonging to the current computing thread. If there is no element in the bounded queue, the computing thread is blocked. Otherwise,

[0089] In step S404, an element value is obtained. If the element value indicates that the entire seismic data trace is compressed, the current computing thread exits; otherwise, step S405 is executed. Step S405 includes at least sub-steps S4051-S4054.

[0090] Step S4051: Calculate the byte position of the data segment to be compressed in the original data buffer and the byte position in the compressed data buffer using the obtained data segment number.

[0091] Step S4052, using the number of seismic sample points contained in the data segment to be compressed, calculate the maximum absolute value MAX of the valid sample values ​​in this segment, wherein the maximum positive integer that can be represented by the number of bits BIT used by the compressed data buffer to store the data in this segment is the maximum absolute value of the valid sample values.

[0092] In this step, it is necessary to determine whether the number of sample points contained in the last segment of the seismic data channel is a multiple of 8. If not, it is necessary to fill in the multiple of 8. In addition, it is also necessary to determine whether the seismic sample point value is abnormal (for example, the seismic sample point value is INF (positive and negative infinity), NAN (not a number), the absolute value exceeds a certain value (such as: 10 10 ) and other situations can be considered as outliers). If the anomaly needs to be discarded, the remaining earthquake sample points are taken as valid values, and the maximum absolute value MAX of the valid sample values ​​is found from them.

[0093] Step S4053: The scale factor SCALE of the seismic sample points in the data segment before and after compression is obtained by dividing the number of bits of the compressed data buffer used to store the data segment by the maximum absolute value of the valid sample values ​​in the segment.

[0094] Assume that the maximum positive integer that can be represented by the number of bits BIT used to store the data in the compressed data buffer is V1, V1 = POW(2, BIT-1)-1, and the POW() function is used to calculate 2 to the power of BIT-1, the maximum absolute value MAX of the valid sample value, and the scale factor SCALE before and after compression of the seismic sample points in the data segment is:

[0095] SCALE=V1 / MAX

[0096] It should be noted that if the maximum absolute value MAX of the valid sample values ​​is 0, the scaling factor is SCALE0.

[0097] Step S4054: Create and initialize variables for compression. Convert each original seismic sample point in the data segment to be compressed into compressed data according to a preset operation method. Place the compressed data into a compressed data buffer. Add an element to the synchronous concurrent bounded queue Q. Then, execute the steps following the element acquisition from the running bounded queue QS belonging to this computation thread. The preset operation method may include original value mapping, data shifting and splicing, byte swapping, etc. Specifically:

[0098] In some embodiments, variables for compression are created and initialized, such as: the value Value after the original seismic sample point is converted using the scaling factor; the value ChangeValue after a seismic sample point is compressed is saved, and the value type is an unsigned integer; the number of bits that the current sample value needs to be shifted left LeftMove, the initial value is 0; the number of bits that the current sample value needs to be shifted right RightMove, the initial value is 0; the number of bits available in ChangeValue (the remaining bits) LeftBits, the initial value is 32.

[0099] Then, each original sample point in this segment is converted into compressed data, and the compressed data is placed in the compressed data buffer. The processing process is from the first sample value to the last sample value in this segment. The specific steps are as follows:

[0100] Step (1): Convert an original sample point into an integer representation. The specific steps are as follows:

[0101] Step (1.1): If SCALE is 0, the integer value Value after the current sample value is converted is 0, otherwise, go to step (1.2).

[0102] Step (1.2): If this segment is the last segment and is a sample point of the padded part, the integer value Value is 0; otherwise, go to step (1.3).

[0103] Step (1.3): The floating point value of the current sample point is *SCALE, then rounded to the unit place, assigned to Value, and then added to V1.

[0104] Step (2): If the current sample value is the first sample point of this segment, go to step (3); otherwise, go to step (4).

[0105] Step (3): Value is assigned to ChangeValue, and then left-shifted by (32-BIT) bits. The remaining bits of Value, LeftBits, are (32-BIT), and the process goes to step (1). BIT represents the number of bits that store this segment of data.

[0106] Step (4): If the number of remaining bits LeftBits is greater than the number of bits in this segment BIT, go to step (5); otherwise, go to step (6).

[0107] Step (5): Set the number of bits to be shifted left LeftMove to LeftMove-BIT, shift Value left by LeftMove bits, and then perform bitwise AND with ChangeValue. The result is placed in ChangeValue, and then go to step (1).

[0108] Step (6): Set the number of bits to be right-shifted RightMove to BIT-LeftBits, shift Value right by RightMove bits, and then perform a bitwise AND operation with ChangeValue.

[0109] Step (7): ChangeValue is a 4-byte unsigned integer. The content is swapped according to the first byte and the fourth byte, and the second byte and the third byte, and then ChangeValue is written into the data compression buffer.

[0110] Step (8): Calculate the number of bits shifted left LeftMove as 32-RightMove. If the number of bits shifted left is 32, set ChangeValue to 0. Otherwise, assign the result of shifting Value left by LeftMove bits to ChangeValue.

[0111] Step (9): Set the remaining number of bits LeftBits in ChangeValue to the number of bits to be left-shifted, and go to step (2).

[0112] Through the above-mentioned methods such as original value mapping, data shift splicing, and byte exchange algorithm, the floating-point type values ​​of seismic data can be converted to occupy fewer bits, occupy less storage space, and ensure that the compressed data tracks are of equal length.

[0113] Step S50: When compression of a seismic trace is completed, the corresponding computing thread is blocked, waiting for other computing threads to complete compression of the remaining data traces, and puts the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

[0114] After one seismic trace is compressed, it is necessary to wait for the compressed data to be output before the next seismic trace can be compressed. At this time, each computing thread needs to be blocked and stopped. Figure 8 As shown, it specifically includes sub-steps S501-S506:

[0115] Step S501: prepare a seismic data channel to be compressed. The interface corresponding to this step is called by the application program using the compression function.

[0116] Step S502: Put an element with a value of 1 into the bounded queue QS corresponding to each computing thread, in order to start each blocked computing thread.

[0117] Step S503, obtain the number of elements of computing threads from the synchronous concurrent bounded queue Q. If there is no corresponding number of elements in the synchronous concurrent bounded queue Q, the current computing thread is blocked and waits for each computing thread to complete the compression task of the current data channel, otherwise enter step S504.

[0118] Step S504: Each computing thread has completed the compression task for the current data track, and the data in the compression buffer is valid and can be used by the calling application.

[0119] Step S505: If there are still seismic data channels that need to be compressed, execute step S501. Otherwise, the compression task of the data volume is completed, and execute step S506.

[0120] Step S506: put an element with a value of -1 into the bounded running queue QS corresponding to each computing thread, and wait for each computing thread to end.

[0121] At this point, the seismic data compression process is completed.

[0122] For ease of understanding, the present invention also provides Figure 9 , in the hope of explaining some of the core contents of the present invention in more detail. Figure 9The diagram illustrates the working states of the main thread, various computing threads, the synchronous concurrent bounded queue Q, the running bounded queue QS, the original seismic data buffer, and the compressed seismic data buffer during seismic data compression. When a seismic data channel requires compression, the computing threads transition from a blocked state to a running state. Each computing thread is responsible for a portion of the data segment and performs operations such as mapping, shifting, and swapping bytes on all samples within each segment. Once all data segments are compressed, the computing threads block, waiting to retrieve the compressed / decompressed data.

[0123] In this embodiment, the main thread is responsible for initializing resources and dividing the data segments into segments for each computing thread. Each computing thread coordinates its operations under the control of a synchronous concurrent bounded queue Q and a running bounded queue QS. During the compression operation, each computing thread operates independently without interfering with each other. When a seismic data channel requires compression, each computing thread is responsible for a portion of the data segment and performs operations such as original value mapping, shifting, and byte swapping on all sample values ​​within each segment. After all data segments are compressed, the main thread waits for the compressed data to be retrieved. When the bounded queue of a computing thread is full, the computing thread will perform the compression operation; when the synchronous queue is full, each computing thread completes the compression operation and waits for the main thread to retrieve the compressed data.

[0124] Using the method of this embodiment, the inventors conducted a large number of experiments, and the results of one of the experiments are presented in this application document to verify the effectiveness of the present invention.

[0125] Specifically: According to the earthquake data compression method of the present invention, a earthquake compression software is developed. The basic structure of the software is as follows: Figure 10 As shown, the software was deployed on a high-performance cluster, and multiple experiments were conducted on this cluster. Each node in the cluster was equipped with two Intel(R) Xeon(R) E5-2660 v3 2.6GHz CPUs, each with 10 physical cores, for a total of 20 physical cores per node. The node operating system was Red Hat Enterprise Linux Server release 6.8 (Santiago). The test data scale was based on the actual data from the project.

[0126] Figure 11This is the seismic data produced by the actual processing project. As can be seen from the figure: when the number of concurrent jobs in the cluster is large, it can effectively alleviate the cluster storage IO load and improve the efficiency of seismic operation. It is very suitable for big data / multi-project conventional processing cluster environment. The integrated application of this seismic data compression method not only saves disk space but also improves IO efficiency. In the experiment conducted by the applicant, the data volume size of an original data was 617GB and the header was 29GB. After compression, the data volume was 410GB and the header was 29GB, with a compression rate of up to 33.5% (data volume only).

[0127] The embodiments of the present invention process all sample points in seismic data, controlling the size of the compressed data by segmenting the seismic data traces and compressing the number of sample points in the seismic data traces while meeting compression fidelity requirements. Furthermore, multi-threaded technologies are employed to ensure efficient data loading and output. The seismic data compression method proposed in the present invention improves the data compression ratio while ensuring both numerical fidelity and data transmission rate, thereby reducing disk space required for seismic data processing and conserving hardware. Furthermore, because the byte length of the seismic data traces remains unchanged before and after compression, functions such as seismic data indexing and data trace reading and writing are not affected.

[0128] Example 2

[0129] The present invention also provides a seismic data compression device, such as Figure 12 As shown, it includes a first initialization module 101, a fidelity calculation module 102, a first seismic data trace length calculation module 103, and a seismic data segment compression module 104, wherein:

[0130] The first initialization module 101 is used to initialize resources, including at least calculating the number of segments of the seismic data track to be compressed entering the original seismic data track buffer, allocating the compressed seismic data buffer, setting the number of compression bits for each seismic sample point, determining the number of computing threads participating in the compression, initializing a synchronous concurrent bounded queue Q and several running bounded queues QS, and starting the computing threads. The seismic data includes multiple seismic data tracks, each of which includes a seismic track header and multiple seismic samples. The running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to compress a preset number of data segments within a seismic data track.

[0131] The fidelity calculation module 102 is used to calculate the fidelity of the seismic data before and after compression based on the number of compression bits of each seismic sample point until the fidelity meets a preset fidelity threshold;

[0132] A first seismic data trace length calculation module 103 is used to calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point;

[0133] The seismic data segment compression module 104 is used to use the synchronous concurrent bounded queue Q and the running bounded queue QS to control the coordinated computing thread to convert the numerical type of the seismic sample point into a form with fewer bits according to the preset first rule to compress the data segment of the seismic data; it is also used to block the corresponding computing thread after the compression of a seismic track is completed, waiting for other computing threads to complete the compression of the remaining data tracks, and put the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

[0134] The specific working process of the seismic data compression device can be found in Example 1 and will not be described in detail here.

[0135] Example 3

[0136] Based on the same inventive concept, this embodiment also discloses a method for decompressing seismic data. Those skilled in the art will appreciate that the steps of the decompression method are essentially the inverse of the compression process. Therefore, details of the decompression method can be found in Example 1. The decompression method of this embodiment is slightly simpler than the compression process, eliminating the need to calculate the maximum value of each segment and addressing fidelity or the number of bits of stored sample values.

[0137] Specifically, a seismic data decompression method, such as Figure 13 As shown, the steps S10' to S40' may be included:

[0138] Step S10', the main thread initializes resources, which at least includes obtaining the compression bit number and sample point number information of each seismic sample point, calculating the number of segments of the compressed seismic data track, and allocating a decompressed seismic data buffer; determining the number of computing threads involved in decompression; initializing synchronous concurrent bounded queues and several running bounded queues, and starting computing threads; wherein the decompressed seismic data includes multiple seismic data tracks, each seismic data track includes a seismic track header and compressed sample value data, the sample value data consists of multiple data segments, each segment includes multiple compressed seismic sample points, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to decompress a preset number of data segments in a seismic data track.

[0139] Among them, obtaining the compression bit number and sample point number information of each seismic sample point, calculating the number of segments of the compressed seismic data channel, and allocating the decompressed seismic data buffer include: obtaining the compression bit number and sample point number information from the compressed seismic data channel, calculating the number of data segments of the compressed data channel, and further calculating the number of seismic sample points padded in the last segment.

[0140] Determining the number of computing threads involved in decompression includes: using the number of computing threads that can be provided by the current hardware environment as the number of computing threads involved in decompression, or determining the number of computing threads based on the number of segments of the seismic data track, wherein the number of computing threads is not greater than the number of segments of the seismic data track.

[0141] Initialize synchronous concurrent bounded queues, several running bounded queues, and start computing threads, including:

[0142] Initialize a synchronous concurrent bounded queue for coordinating the synchronous and independent execution of each computing thread, and use the obtained number of computing threads to set the maximum number of elements in the synchronous concurrent bounded queue. Initialize a running bounded queue corresponding to each computing thread, with the maximum number of elements in the running bounded queue being 1. Allocate the preset number of data segments to be decompressed to each computing thread, and start each computing thread.

[0143] Step S20', calculates the length of the decompressed seismic data trace according to the number of compressed bits of each seismic sample point. Specifically, it includes steps S201' to S204':

[0144] Step S201', calculate the number of bytes of each segment of the seismic data after compression according to a preset formula, the preset formula is:

[0145] (BIT*SN / 8)+5

[0146] Wherein, BIT is the number of compressed bits of each seismic sample point, and SN is the number of seismic sample points contained in each segment of seismic data.

[0147] Step S202': calculating the first byte number occupied by the entire seismic data track except the last segment of data according to the number of bytes of each segment of the seismic data track after compression.

[0148] Step S203 ′: Calculate the second number of bytes occupied by the last segment of the seismic data trace.

[0149] Step S204': add the first byte number and the second byte number to obtain the length of the compressed seismic data trace.

[0150] Step S30': using a synchronous concurrent bounded queue and running a bounded queue to control and coordinate the computing thread to convert the value type of the compressed seismic sample points into a floating point value according to a preset second rule. Specifically, it includes steps S301' to S308':

[0151] Step S301', obtaining the range of the data segment to be decompressed and the program number of the computing thread that the current computing thread is responsible for;

[0152] Step S302', obtain the running bounded queue QS corresponding to the current computing thread by calculating the thread program number;

[0153] Step S303', obtain an element from the bounded queue QS belonging to the current computing thread. If there is no element in the bounded queue QS, the computing thread is blocked; otherwise,

[0154] Step S304', obtain an element value. If the element value represents that the decompression of the entire seismic data channel is completed, then the calculation thread exits; otherwise,

[0155] Step S305', calculating the byte position of the data segment to be decompressed in the decompressed data buffer and the byte position in the decompressed data buffer using the obtained data segment number;

[0156] Step S306', extracting the maximum absolute value of the earthquake sample points in this segment and the number of bits of the sample values ​​in this segment from the compressed data segment;

[0157] Step S307', obtaining the scale factor SCALE before and after decompression by dividing the maximum absolute value of the valid sample values ​​in the current segment in the compressed data buffer by the maximum integer that can be represented by the number of bits of the data in the current segment;

[0158] Step S308' creates and initializes variables for decompression. Each compressed seismic sample in the data segment to be decompressed is converted into decompressed data using a preset computational method. The decompressed data is then placed in a decompressed data buffer. An element is added to a synchronous concurrent bounded queue. The following steps, including retrieving an element from the running bounded queue belonging to this computation thread, are then executed. In this step, the preset computational method includes at least one of the following: data shift and concatenation, byte swapping, and original value mapping algorithms.

[0159] Step S40 ′: when a seismic trace is decompressed, the corresponding computing thread is blocked, waiting for other computing threads to complete the decompression of the remaining data traces, and put the decompressed seismic data into the decompressed seismic data buffer for the main thread to obtain.

[0160] Example 4

[0161] Based on the same inventive concept, this embodiment also discloses a seismic data decompression device, such as Figure 14 As shown, it includes a second initialization module 201, a second seismic data trace length calculation module 202, and a seismic data segment decompression module 203, wherein:

[0162] The second initialization module 201 is used to initialize resources, including at least calculating the number of segments of the seismic data track to be decompressed that enters the original seismic data track buffer, allocating the decompressed seismic data buffer, obtaining the number of compressed bits for each seismic sample point, determining the number of computing threads involved in decompression, initializing a synchronous concurrent bounded queue Q and several running bounded queues QS, and starting the computing threads; wherein the seismic data includes multiple seismic data tracks, each seismic data track includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to decompress a preset number of data segments in a seismic data track;

[0163] A second seismic data trace length calculation module 202 is configured to calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point, and the length is used to read the compressed seismic data trace;

[0164] The seismic data segment decompression module 203 is used to use the synchronous concurrent bounded queue Q and the running bounded queue QS to control the coordinated computing thread to convert the numerical type of the compressed seismic sample points into floating-point form according to the preset first rule to decompress the data segment of the seismic data; it is also used to block the corresponding computing thread after the decompression of a seismic channel is completed, waiting for other computing threads to complete the decompression of the remaining data channels, and put the decompressed seismic data into the decompressed seismic data buffer for the main thread to obtain.

[0165] The specific working process of the seismic data compression device can be found in Example 1 and will not be described in detail here.

[0166] Correspondingly, an embodiment of the present invention further discloses a computer-readable storage medium, in which instructions are stored. When the instructions are executed on a terminal, the terminal executes the seismic data compression method as in the first embodiment.

[0167] The embodiment of the present invention further discloses another computer-readable storage medium, in which instructions are stored. When the instructions are executed on a terminal, the terminal executes the seismic data decompression method as in the third embodiment.

[0168] In the foregoing detailed description, various features are grouped together in a single embodiment to simplify the disclosure. This method of disclosure should not be interpreted as reflecting an intention that embodiments of the claimed subject matter require more features than are expressly recited in each claim. On the contrary, as reflected in the appended claims, the invention comprises less than all the features of any individual disclosed embodiment. The appended claims are therefore hereby expressly incorporated into the detailed description, with each claim standing on its own as a separate preferred embodiment of the invention.

[0169] The foregoing description includes examples of one or more embodiments. Of course, it is not possible to describe all possible combinations of components or methods for the purposes of describing the above embodiments, but it will be appreciated by those skilled in the art that the various embodiments may be further combined and arranged. Therefore, the embodiments described herein are intended to encompass all such changes, modifications and variations that fall within the scope of the appended claims. Furthermore, to the extent that the term "comprising" is used in the specification or claims, the term is intended to be encompassed in a manner similar to the term "including," as explained by "including," when used as a transitional word in the claims. Furthermore, any use of the term "or" in the specification of the claims is intended to mean a "non-exclusive or."

Claims

1. A seismic data compression method, characterized in that: The following steps are involved: The main thread initializes resources, including at least calculating the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer; setting the number of compression bits for each seismic sample point and allocating the compressed seismic data buffer; determining the number of computing threads participating in the compression; initializing a synchronous concurrent bounded queue and several running bounded queues, and starting the computing thread; wherein the seismic data includes multiple seismic data tracks, each seismic data track includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to compress a preset number of data segments in a seismic data track; Calculating the fidelity of the seismic data before and after compression based on the number of compressed bits of each seismic sample point until the fidelity meets a preset fidelity threshold; Calculating the length of the compressed seismic data track according to the number of compressed bits of each seismic sample point, including: calculating the number of bytes of each segment of the seismic data track after compression based on the formula (BIT*SN / 8)+5, calculating the first number of bytes occupied by the entire seismic data track except the last segment of data according to the number of bytes of each segment of the seismic data track after compression; calculating the second number of bytes occupied by the last segment of data in the seismic data track; adding the first number of bytes and the second number of bytes to obtain the calculated length of the compressed seismic data track; wherein BIT is the set number of compressed bits for each seismic sample point, and SN is the number of seismic sample points contained in each segment of the seismic data track; Using a synchronous concurrent bounded queue and running a bounded queue to control and coordinate a computing thread, the numerical type of the seismic sample point is converted into a form with fewer bits according to a preset first rule, so as to compress the data segment of the seismic data; including: Get the range of data segments to be compressed and the program number of the computing thread that the current computing thread is responsible for; Obtain the bounded queue corresponding to the current computing thread by calculating the thread program number; Obtain an element from the running bounded queue belonging to this computing thread. If there is no element in the running bounded queue, the computing thread is blocked. Otherwise, obtain an element value. If the element value indicates that the compression of the entire seismic data track is complete, the computing thread exits. Otherwise, calculate the byte position of the data segment to be compressed in the original data track buffer and the byte position in the compressed data buffer using the obtained data segment number. Calculating the maximum absolute value of valid sample values ​​in the segment of data to be compressed using the number of seismic sample points contained in the segment, wherein the maximum positive integer that can be represented by the number of bits of the compressed data buffer used to store the data in the segment is the maximum absolute value of the valid sample values; The scale factor of the earthquake sample points in the data segment before and after compression is obtained by dividing the number of bits of the compressed data buffer used to store the data segment by the maximum absolute value of the valid sample values ​​in the segment; Create and initialize variables for compression, convert each original seismic sample point in the data segment to be compressed into compressed data according to a preset calculation method, put the compressed data into a compressed data buffer, put an element into a synchronous concurrent bounded queue, and then execute the steps of obtaining the element and subsequent steps from the running bounded queue belonging to this computing thread; When compression of a seismic trace is completed, the corresponding computing thread is blocked, waiting for other computing threads to complete compression of the remaining data traces, and put the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

2. The seismic data compression method according to claim 1, wherein: The calculating of the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer comprises: The seismic data track to be compressed that enters the original seismic data track buffer is segmented according to a preset number of seismic sample points to obtain data segment numbers. If all the seismic sample points of the seismic data track can be divided by the preset number of seismic sample points without a remainder, the number of segments of the seismic data track is the obtained quotient value; otherwise, the number of segments of the seismic data track is the obtained quotient value plus 1, and the last segment of the seismic data track is padded with the preset number of seismic sample points.

3. The seismic data compression method according to claim 1, wherein: The determination of the number of computing threads participating in the compression includes: using the number of computing threads that can be provided by the current hardware environment as the number of computing threads participating in the compression, or determining the number of computing threads based on the number of segments of the seismic data track, wherein the number of computing threads is not greater than the number of segments of the seismic data track.

4. The seismic data compression method according to claim 1, wherein: The initialization of the synchronous concurrent bounded queue and several running bounded queues and the start of the computing thread includes: Initialize a synchronous concurrent bounded queue for coordinating the synchronization and independent operation of each computing thread, and use the obtained number of computing threads to set the maximum number of elements in the synchronous concurrent bounded queue; Initialize a running bounded queue corresponding to each computing thread, where the maximum number of elements in the running bounded queue is 1; The preset number of data segments to be compressed is allocated to each computing thread, and each computing thread is started.

5. The seismic data compression method according to claim 1, wherein: The step of calculating the fidelity of the seismic data before and after compression based on the number of compression bits of each seismic sample point until the fidelity before and after compression meets a preset fidelity threshold includes: Calculate the fidelity of each seismic data sample before and after compression; The sum of the fidelity of each seismic data sample point in the data segment is divided by the total number of sample points to obtain the fidelity of each data segment; The fidelity of the seismic data before and after compression is obtained by dividing the sum of the fidelity of each data segment by the number of data segments of the seismic data track. Determine whether the fidelity of the obtained seismic data track before and after compression meets the preset fidelity threshold. If the fidelity of the obtained seismic data track before and after compression meets the preset fidelity threshold, calculate and record the data compression rate. Otherwise, adjust the number of compression bits for each seismic sample point, re-calculate the fidelity of each seismic data sample point before and after compression and subsequent steps until the fidelity before and after compression meets the preset fidelity threshold.

6. The seismic data compression method according to claim 5, wherein: The method further includes calculating the fidelity of the seismic data before and after compression based on the number of compression bits of each seismic sample point until the fidelity before and after compression meets a preset fidelity threshold, and further includes: after calculating and recording the data compression rate, adjusting the number of compression bits of each seismic sample point again, re-executing the calculation of the fidelity of each seismic data sample point before and after compression and subsequent steps, comparing several saved data compression rates, and using the seismic sample point compression bit corresponding to the maximum data compression rate as the final set seismic sample point compression bit rate.

7. The seismic data compression method according to claim 5 or 6, characterized in that: The calculation of the fidelity of each seismic data sample point before and after compression includes: If the original value and the compressed value of the seismic data sample point have different signs, the fidelity of the seismic data sample point is set to 0; Otherwise, if the original value of the seismic data sample is 0 and the compressed value is not 0, the fidelity is set to 0; Otherwise, the absolute value of the difference between the original value and the compressed value of the seismic data sample is calculated. If the absolute value is 0, the fidelity is set to the preset fidelity peak value. Otherwise, the fidelity is calculated according to the following formula: 20log(V / ABS) Wherein, ABS is the original value of the seismic data sample point, and V is the absolute value of the difference between the original value and the compressed value of the seismic data sample point.

8. The seismic data compression method according to claim 1, wherein: The preset operation method includes at least one of original value mapping, data shift splicing, and byte exchange algorithm.

9. A seismic data compression device, characterized in that: The device is used to execute the method according to any one of claims 1 to 8, comprising a first initialization module, a fidelity calculation module, a first seismic data trace length calculation module, and a seismic data segment compression module, wherein: An initialization module is configured to initialize resources, including at least calculating the number of segments of the seismic data track to be compressed that enters the original seismic data track buffer; setting the number of compression bits for each seismic sample point and allocating a compressed seismic data buffer; determining the number of computing threads involved in compression, initializing a synchronous concurrent bounded queue and several running bounded queues, and starting the computing threads; wherein the seismic data includes multiple seismic data tracks, each of which includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is configured to compress a preset number of data segments within a seismic data track; A fidelity calculation module, configured to calculate the fidelity of the seismic data before and after compression based on the number of compression bits of each seismic sample point, until the fidelity meets a preset fidelity threshold; A first seismic data trace length calculation module is used to calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point; The seismic data segment compression module is used to use synchronous concurrent bounded queues and run bounded queue control to coordinate computing threads to convert the numerical type of seismic sample points into a form with fewer bits according to a preset first rule to compress the data segments of seismic data; it is also used to block the corresponding computing thread after the compression of a seismic trace is completed, waiting for other computing threads to complete the compression of the remaining data traces, and put the compressed seismic data into the compressed seismic data buffer for the main thread to obtain.

10. A method for decompressing seismic data, characterized in that: The following steps are involved: The main thread initializes resources, including at least obtaining information on the number of compressed bits and sample points for each seismic sample point, calculating the number of segments in the compressed seismic data channel, and allocating a decompressed seismic data buffer; determining the number of computing threads involved in decompression; initializing a synchronous concurrent bounded queue and several running bounded queues, and starting the computing thread; wherein the decompressed seismic data includes multiple seismic data channels, each seismic data channel includes a seismic channel header and compressed sample value data, the sample value data consists of multiple data segments, each segment includes multiple compressed seismic sample points, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is used to decompress a preset number of data segments in a seismic data channel; Calculating the length of the decompressed seismic data track according to the number of compressed bits of each seismic sample point, including: calculating the number of bytes of each segment of the seismic data track after compression based on the formula (BIT*SN / 8)+5, calculating the first number of bytes occupied by the entire seismic data track except the last segment of data according to the number of bytes of each segment of the seismic data track after compression; calculating the second number of bytes occupied by the last segment of data in the seismic data track; adding the first number of bytes and the second number of bytes to obtain the calculated length of the compressed seismic data track; wherein BIT is the set number of compressed bits for each seismic sample point, and SN is the number of seismic sample points contained in each segment of the seismic data track; The method uses a synchronous concurrent bounded queue and a running bounded queue to control and coordinate the computing thread to convert the value type of the compressed seismic sample point into a floating point value according to a preset second rule; including: Get the range of the data segment to be decompressed and the program number of the computing thread that the current computing thread is responsible for; Obtain the bounded queue corresponding to the current computing thread by calculating the thread program number; Obtain an element from the running bounded queue belonging to this computation thread. If there is no element in the running bounded queue, the computation thread blocks. Otherwise, obtain an element value. If the element value indicates that the entire seismic data track is compressed, the computation thread exits. Otherwise, calculate the byte position of the data segment to be decompressed in the decompressed data track buffer and the byte position in the decompressed data buffer using the obtained data segment number. Extract the maximum absolute value of the earthquake sample points in this segment and the number of bits of the sample values ​​in this segment from the compressed data segment; The scale factor before and after decompression is obtained by dividing the maximum absolute value of the valid sample value in this section in the compressed data buffer by the maximum integer that can be represented by the number of bits of the data in this section. Create and initialize variables for decompression, convert each compressed seismic sample point in the data segment to be decompressed into decompressed data according to a preset calculation method, put the decompressed data into a decompressed data buffer, put an element into a synchronous concurrent bounded queue, and then execute the steps of obtaining the element and subsequent steps from the running bounded queue belonging to this computing thread; When one seismic trace is decompressed, the corresponding computing thread is blocked, waiting for other computing threads to complete the decompression of the remaining data traces, and put the decompressed seismic data into the decompressed seismic data buffer for the main thread to obtain.

11. A seismic data decompression device, characterized in that: The device for executing the method according to claim 10 comprises a second initialization module, a second seismic data trace length calculation module, and a seismic data segment decompression module, wherein: A second initialization module is configured to initialize resources, including at least calculating the number of segments of the seismic data track to be decompressed that enters the original seismic data track buffer, allocating a decompressed seismic data buffer, obtaining the number of compressed bits for each seismic sample point, determining the number of computing threads involved in decompression, initializing a synchronous concurrent bounded queue Q and several running bounded queues QS, and starting computing threads; wherein the seismic data includes multiple seismic data tracks, each of which includes a seismic track header and multiple seismic samples, the running bounded queues correspond one-to-one to the computing threads, and each computing thread is configured to decompress a preset number of data segments within a seismic data track; A second seismic data trace length calculation module is used to calculate the length of the compressed seismic data trace according to the number of compressed bits of each seismic sample point; The seismic data segment decompression module is used to use synchronous concurrent bounded queues and run bounded queue control to coordinate computing threads to convert the numerical type of compressed seismic sample points into floating-point form according to a preset first rule to decompress the data segments of the seismic data; it is also used to block the corresponding computing thread after the decompression of a seismic channel is completed, waiting for other computing threads to complete the decompression of the remaining data channels, and put the decompressed seismic data into the decompressed seismic data buffer for the main thread to obtain.

12. A computer-readable storage medium storing instructions, wherein when the instructions are executed on a terminal, the terminal executes the seismic data compression method according to any one of claims 1 to 8.

13. A computer-readable storage medium storing instructions, which, when executed on a terminal, causes the terminal to execute the seismic data decompression method according to claim 10.

Citation Information

Patent Citations

  • Compression of data exhibiting mixed compressibility

    CN114503439A

  • Data compression and decompression method and device, storage medium and electronic equipment

    CN115149959A