An efficient H264 video steganography method

By analyzing the macroblock semantic layer of H264 video coding and selecting the embedding path with the lowest distortion cost in STC coding, the problems of low efficiency and small steganographic capacity of existing video steganography algorithms are solved, and efficient information embedding and extraction are achieved.

CN119011868BActive Publication Date: 2025-10-10FUJIAN NORCA TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411080748.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-08-08
Publication Date
2025-10-10
Estimated Expiration
2044-08-08

AI Technical Summary

Technical Problem

Existing video steganography algorithms based on motion vectors are inefficient and have small steganographic capacity. They require a series of encoding processes after completely decoding the original carrier file, resulting in low efficiency.

Method used

By analyzing the macroblock semantic layer of H264 video coding, the entropy decoding method is used to directly extract the motion vector residual and modify its value. Combined with STC coding, the embedding path with the minimum distortion cost is selected to achieve information embedding and extraction.

Benefits of technology

It achieves efficient information embedding and extraction, with high embedding efficiency and large embedding capacity, avoiding the process of complete decoding and re-encoding.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119011868B_ABST
    Figure CN119011868B_ABST
Patent Text Reader

Abstract

The application discloses a high-efficiency H264 video steganography method for embedding information to be hidden into an original video, which comprises the following steps: reading the original video code stream, when the NAL unit is P_NAL type or B_NAL type, adopting a carrier disordering and constructing strategy to select a carrier sequence C from available macroblocks in the slice; and saving the least significant bit information of all carriers in sequence G; constructing an STC parity check matrix, calculating an embedding path G' with the minimum distortion cost through STC encoding, modifying the carrier sequence C according to G', obtaining a carrier sequence C' with the hidden information; extracting the macroblocks from the carrier sequence C' in sequence, obtaining a sequence Cover', modifying the motion vector residual of the macroblocks in the slice, writing back the code stream after entropy encoding, and completing the slice encoding; and until the embedding of the binary sequence S to be hidden is completed, outputting a video file. The method can safely and efficiently embed and extract the secret information needing steganography completely and uniformly, has a good embedding capacity, and can meet the demand of users for secret communication.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to an efficient H264 video steganography method. Background Art

[0002] Digital video, a widely used medium in cyberspace, is an excellent carrier of secret information and is often used to establish covert communications. Motion vector-based video steganography algorithms have been extensively studied, but most existing steganography algorithms require fully decoding the original carrier file and then implementing the steganographic method through a series of encoding steps, including intra-frame prediction, inter-frame prediction, DCT transformation, quantization, and entropy coding. This implementation is inefficient, and most methods also suffer from drawbacks such as low steganographic capacity. Summary of the Invention

[0003] The purpose of the present invention is to provide an efficient H264 video steganography method that can safely and efficiently embed and extract secret information that needs to be steganographic completely and consistently, has good embedding capacity, and can meet users' needs for secret communication.

[0004] In order to achieve the above object, the solution of the present invention is:

[0005] An efficient H264 video steganography method is used to embed hidden information into the original video; the method comprises the following steps:

[0006] Step A1, obtaining a binary sequence S to be hidden based on the information to be hidden;

[0007] Step A2: Read the original video stream. When the NAL unit is of P_NAL type or B_NAL type, select a carrier sequence C from the available macroblocks using a carrier scrambling and construction strategy for the slices therein; and save the least significant bit information of all carriers in sequence as a sequence G.

[0008] Step A3: construct an STC parity check matrix, calculate the embedding path G′ with the minimum distortion cost through STC coding, modify the carrier sequence C according to G′, and obtain the encrypted carrier sequence C′;

[0009] Step A4: extract macroblocks from the carrier sequence C′ in sequence to obtain the sequence Cover′, modify the motion vector residuals of the macroblocks in the slice, perform entropy coding, and write them back to the bitstream to complete the encoding of the slice;

[0010] Step A5, determining whether the NAL unit where the slice is located has been processed, if it has been processed, then moving on to the next NAL unit, otherwise moving on to the next slice; until the embedding of the binary sequence S to be hidden is completed, the video file is output.

[0011] The specific content of the above step A1 is:

[0012] Step A11: Encrypt the information to be hidden and then convert it into a binary sequence M=(m1,m2,...,m le ), le is the length of the secret information binary sequence;

[0013] Step A12: Encrypt le and convert it into 32-bit binary form to obtain the sequence L = (l1, l2, ..., l 32 );

[0014] Step A13: Combine the sequences L and M to obtain the hidden binary sequence S = L + M = (l1, l2, ..., l 32 ,m1,m2,...,m le ), that is, S=(s1,s2,...,s 32+le ).

[0015] In the above step A2, for a certain NAL unit of P_NAL type or B_NAL type, the NAL header and slice header are skipped, and the type of the slice data is determined to be P slice or B slice, and the carrier scrambling and construction strategy is adopted for it; otherwise, the slice is skipped.

[0016] In the above step A2, the specific content of selecting the carrier sequence from the available macroblocks using the carrier scrambling and construction strategy is:

[0017] Starting from the first macroblock in the slice, except for 16×16 partitioned macroblocks, non-P macroblocks or non-B macroblocks, extract the component with the larger absolute value of the vertical component MVDx and the horizontal component MVDy of the motion vector residual from each macroblock in turn until the last macroblock in the slice;

[0018] Then start again from the first macroblock in the slice and repeat the above operation until all components are extracted. During this process, if there are no extractable components in the macroblock, skip the macroblock.

[0019] The extracted component sequence is the vector sequence C.

[0020] In the above step A3, the method of constructing the STC parity check matrix is ​​based on the embedding rate α and the basic matrix Establish STC parity check matrix H STC ; Among them, the embedding rate α of STC coding is affected by the basic matrix In w decision, when When is an integer, Otherwise, w has two values in Indicates floor operation;

[0021]

[0022] in, The value is 0 or 1.

[0023] In the above step A3, the embedding path G′ with the minimum distortion cost is calculated by STC coding, and the carrier sequence C is modified according to G′ to obtain the encrypted carrier sequence C′; specifically, the following steps are included:

[0024] Step A31: count the number of the binary sequence S to be hidden m Starting from the bit, extract bits as the secret information embedded in STC, and apply STC to construct the embedding path G′ that minimizes the overall steganalysis embedding cost;

[0025] Step A32, compare sequence G = (lsb1, lsb2, ..., lsb n ) and G′=(lsb1′,lsb2′,...,lsb n ′), if lsb i ≠lsb i ′, then the vector sequence C=(c1,c2,...,c n ) in the corresponding position of the embedding vector c i Modify to get c ni ′, otherwise no modification is required, let c ni ′=c i Finally, the carrier sequence C′=(c1′,c2′,...,c n ′); wherein lsb1 represents the least significant bit value of c1, and c1 represents the component with the larger absolute value between the vertical component and the horizontal component of the motion vector residual.

[0026] In the above step A32, the embedding carrier c i The way to make the modification is,

[0027] If MVDX i !=MVDY i And c i If c is a positive odd number or a negative even number, i Subtract 1, and we get c i ';

[0028] If MVDX i !=MVDY i And c i If c is a positive even number or a negative odd number, i Add 1 to get c i ';

[0029] If MVDX i ==MVDY i And c i If c is a positive number, i Add 1 to get c i ';

[0030] If MVDX i ==MVDY i And c i If c is negative, i Subtract 1, and we get c i ';

[0031] Wherein, MVDx1 and MVDy1 represent the vertical component and horizontal component of the motion vector residual of the macroblock respectively.

[0032] The specific process of the above step A4 is:

[0033] Step A41: First, according to the sequence numbers of the macroblocks in FG, sequentially extract the elements whose macroblock is the first macroblock from sequence C′ from left to right, until the end of the sequence; then, sequentially extract the elements whose macroblock is the second macroblock from sequence C′ from left to right; and so on, until the last macroblock. The sequence of extracted elements is recorded as Cover′; where FG is the sequence number corresponding to the macroblocks selected to construct sequence C;

[0034] Step A42: Modify the vertical component MVDx and horizontal component MVDy of the motion vector residual in all macroblocks in the slice according to the Cover′ sequence, and after the modification is completed, re-entropy encode the motion vector residual and write it back to the bitstream to complete the encoding of the slice.

[0035] After adopting the above scheme, the beneficial effects of the present invention include:

[0036] (1) The present invention analyzes the semantic layer of H264-encoded macroblocks, uses an entropy decoding method to directly extract motion vector residuals from macroblocks, and modifies their values ​​to achieve information embedding. After embedding, the entropy encoding is written back to the bitstream. The embedding process does not require complete decoding and re-encoding, and has high embedding efficiency and good practicality.

[0037] (2) The present invention analyzes the distortion that may be caused by modifying the motion vector residual of macroblocks with different partitioning forms, designs a scrambling strategy for the motion vector residual as a steganographic carrier and an embedding distortion cost function for the scrambled carrier, and selects the embedding path with the minimum distortion cost through STC coding, thereby achieving better embedding capacity. BRIEF DESCRIPTION OF THE DRAWINGS

[0038] Figure 1 It is the NALU parsing structure diagram;

[0039] The meanings of the parameters are as follows:

[0040] VCL: Video Coding Layer, video coding layer

[0041] NAL: Network Abstract Layer, network abstraction layer

[0042] SPS: seq_parameter_set, sequence parameter set

[0043] PPS: pic_parameter_set, image parameter set

[0044] IDR_NAL: NAL of IDR frame

[0045] I_NAL: NAL of I frame

[0046] P_NAL: NAL of P frame

[0047] B_NAL: B frame NAL

[0048] slice_header: slice header information

[0049] slcide_data: stripe content specific information

[0050] macroblock: macroblock

[0051] marcoblock_layer(): macroblock layer data

[0052] MVD: Motion Vector Residual

[0053] mb_type: macroblock type

[0054] mb_pred: macroblock prediction information

[0055] Intra: inter-frame prediction

[0056] Inter: inter-frame prediction

[0057] modes: prediction mode

[0058] Reference Frames

[0059] MotionVectors: motion vector residuals

[0060] CBP: Coded Block Mode

[0061] QP: Quantization Parameter

[0062] CodedData: pixel residual coded data

[0063] Figure 2 It is the H264 macroblock and sub-macroblock division;

[0064] Figure 3 It is the secret information embedded in the flow chart;

[0065] Figure 4 It is the secret information extraction flow chart. DETAILED DESCRIPTION

[0066] The technical solutions and beneficial effects of the present invention will be described in detail below with reference to the accompanying drawings.

[0067] The present invention provides an efficient H264 video steganography method for embedding information to be hidden into an original video. The method comprises the following steps:

[0068] Step A1, obtaining a binary sequence S to be hidden based on the information to be hidden;

[0069] Step A2: Read the original video stream. When the NAL unit is of P_NAL type or B_NAL type, select a carrier sequence C from the available macroblocks using a carrier scrambling and construction strategy for the slices therein; and save the least significant bit information of all carriers in sequence as a sequence G.

[0070] Step A3: construct an STC parity check matrix, calculate the embedding path G′ with the minimum distortion cost through STC coding, modify the carrier sequence C according to G′, and obtain the encrypted carrier sequence C′;

[0071] Step A4: extract macroblocks from the carrier sequence C′ in sequence to obtain the sequence Cover′, modify the motion vector residuals of the macroblocks in the slice, perform entropy coding, and write them back to the bitstream to complete the encoding of the slice;

[0072] Step A5, determining whether the NAL unit where the slice is located has been processed, if it has been processed, then moving on to the next NAL unit, otherwise moving on to the next slice; until the embedding of the binary sequence S to be hidden is completed, the video file is output.

[0073] The technical solution provided by this invention simply uses the decoded motion vector residual entropy value in the H264 bitstream as an embedding carrier, eliminating the need to fully decode and re-encode the bitstream. This enables efficient information embedding and extraction, while also combining it with the steganographic code (STC) to increase embedding capacity. The specific embedding and extraction steps are described below:

[0074] 1. Information embedding process

[0075] (1) Preprocessing of the information to be hidden. After encrypting the secret information to be hidden, convert it into a binary sequence M = (m1, m2, ..., m le ), le is the length of the secret binary sequence; then le is encrypted and converted into 32-bit binary form to obtain the sequence L=(l1,l2,...,l 32 ). Combine the sequences L and M to obtain the hidden binary sequence S=L+M=(l1,l2,...,l 32 ,m1,m2,...,m le ), that is, S=(s1,s2,...,s 32+le ),

[0076] (2) Set a counter count m =0, used to indicate the number of embedded information bits;

[0077] (3) Read the original video stream into the cache, and read each NAL unit in sequence according to the separation index of different NAL units. In the H.264 stream, the NAL unit is usually separated by a three-byte start code 0x000001 or a four-byte start code 0x00000001, which marks the beginning of a new NAL unit.

[0078] (4) Determine the type of the current NAL unit. If it is a P_NAL type or a B_NAL type, proceed to the next step. Otherwise, skip the NAL unit and continue to read the next NAL unit.

[0079] (5) When NAL is P_NAL or B_NAL, skip the NAL header and slice header data and directly perform the next operation on the subsequent slice data;

[0080] (6) Determine the type of different slices. If the slice type is P slice or B slice, proceed to the next step; otherwise, skip the slice.

[0081] (7) Carrier scrambling and construction strategy. In the H.264 / AVC standard, the size of the basic macroblock is 16×16. Each macroblock can also be divided into smaller sub-macroblocks according to actual conditions, such as 16×8, 8×16, 8×8, 4×4, etc. In order to reduce the amount of embedded modification and reduce the distortion caused by embedding, starting from the first macroblock in the slice, except for the 16×16 split macroblock, non-P macroblock or non-B macroblock, the vertical component MVDx and the horizontal component MVDy of the motion vector residual with larger absolute value are extracted from each macroblock in turn until the last macroblock in the slice; then, the same operation is repeated from the first macroblock to extract the components with larger absolute value in turn. If there is no extractable component in the macroblock, the macroblock is skipped; and so on, until all components are extracted. During the extraction process, the sequence number of the macroblock where the extracted component is located in the slice is recorded at the same time. The extracted component sequence is recorded as C, and the recorded sequence number is recorded as FG:

[0082] C=(max(|MVDx1|,|MVDy1|),max(|MVDx2|,|MVDy2|),...,max(|MVDx n |,|MVDy n |))

[0083] =(c1,c2,...,c n )

[0084] FG=(fg1,fg2,...,fg n )

[0085] Among them, MVDx1 and MVDy1 represent the vertical component and horizontal component of the motion vector residual of the macroblock respectively; |a| means taking the absolute value of a; max(a,b) means taking the larger number between a and b; c1 represents the component with the larger absolute value between the vertical component and the horizontal component of the motion vector residual; n is the length of sequence C; fg1 represents the sequence number of the macroblock at this position in the slice.

[0086] The least significant bit information of all carriers is stored in sequence as a sequence G = (lsb1, lsb2, ..., lsb n ), and mark the modification cost of each carrier: p=(ρ1,ρ2,...,ρ n ). Among them, lsb1 represents the least significant bit value of c1, mbCS represents the total number of available carriers in the macroblock where the i-th carrier is located.

[0087] (8) Based on the embedding rate α and the basic matrix Establish the parity check matrix H required for STC STC , where H STC Depend on The STC code embedding rate α is affected by the basic matrix In w decision, when When is an integer, Otherwise, w has two values in Indicates floor operation. The larger h is, the greater the STC encoding time complexity is.

[0088]

[0089] in, Each element in takes the value of 0 or 1.

[0090] (9) Take the sequence G obtained in step 6 as the carrier required by STC and the STC parity check matrix constructed in step 7, and replace the count m Starting from the bit, extract bits as secret information embedded in STC Indicates rounding down, and combined with the parity check matrix obtained in step 7, apply STC to construct a matrix that satisfies H STC G′ T =MI, and the embedding path G′=(lsb1′,lsb2′,...,lsb n ′). The distortion cost function calculation formula is:

[0091]

[0092] (10) According to G and STC encoding, G′ is obtained, and the embedded carrier sequence C is modified to obtain the encrypted carrier sequence C′=(c1′, c2′, ..., c n ′), where the modification method is: if lsb i ≠lsb i ′,(lsb i ∈G,lsb i ′∈G′), then the embedding carrier c of the corresponding position needs to be modified i , if lsb i =lsb i ′, then there is no need to modify the embedding carrier c of the corresponding position i , that is, c i ′=c i Among them, the embedding carrier c i The modification method is as follows:

[0093] 1) If MVDXi !=MVDY i And c i If c is a positive odd number or a negative even number, i Subtract 1, and we get c i ';

[0094] 2) If MVDX i !=MVDY i And c i If c is a positive even number or a negative odd number, i Add 1 to get c i ';

[0095] 3) If MVDX i ==MVDY i And c i If c is a positive number, i Add 1 to get c i ';

[0096] 4) If MVDX i ==MVDY i And c i If c is negative, i Subtract 1, and we get c i ';

[0097] (11) According to the sequence number of the macroblocks in FG, first extract the elements of the macroblock in which the macroblock is located as the first macroblock from the C′ sequence in order from left to right until the end of the sequence; then extract the elements of the macroblock in which the macroblock is located as the second macroblock from the C′ sequence in order from left to right; and so on until the last macroblock, and the extracted element sequence is recorded as Cover′.

[0098] (12) According to the Cover′ sequence, modify the vertical component MVDx and the horizontal component MVDy of the motion vector residual in all macroblocks in the slice with the larger absolute value. After the modification is completed, the motion vector residual is re-entropy encoded and written back to the bitstream to complete the slice encoding and recalculate the counter value. in, Indicates rounding up to the nearest integer.

[0099] (13) Read the judgment count m , if count m <32+le, execute step (14), otherwise, embedding is completed, embedding is stopped, and the video file is output;

[0100] (14) If the NAL unit has not been processed, proceed to the next slice encoding and jump to step (6) until the NAL unit is processed; otherwise, continue to process the next NAL unit and jump to step (4).

[0101] 2. Information extraction process

[0102] (1) Set a counter count m =0, indicating the number of information bits that have been extracted, and starting to read the video sequence in which the information has been embedded into the cache, determining the separation index of different NAL units, and judging the type of the current NAL. If it is a P_NAL type or a B_NAL type, proceed to the next step; otherwise, skip the NAL unit and continue to read the next NAL unit;

[0103] (2) When NAL is P_NAL or B_NAL, skip the NAL header and slice header data and directly perform the next operation on the subsequent slice data;

[0104] (3) Determine the types of different slices. If the slice type is P or B slice and the macroblock type is P or B macroblock, locate and parse the MVD data of each macroblock, perform entropy decoding on it, and obtain the MVD;

[0105] (4) Except for 16×16 partitioned macroblocks, non-P macroblocks or non-B macroblocks, starting from the first macroblock in the slice, extract the component with the larger absolute value of the vertical component MVDx and the horizontal component MVDy of the motion vector residual from each macroblock in turn until the last macroblock in the slice; then, loop back and extract the component with the larger absolute value from the first macroblock using the same operation. If there is no component to be extracted in the macroblock, skip the macroblock; and so on, until all components are extracted. The extracted component sequence is recorded as C:

[0106] C=(max(|MVDx1|,|MVDy1|),max(|MVDx2|,|MVDy2|),...,max(|MVDx n |,|MVDy n |))

[0107] =(c1,c2,...,c n )

[0108] Among them, MVDx1 and MVDy1 represent the vertical component and horizontal component of the motion vector residual of the macroblock respectively; |a| means taking the absolute value of a; max(a,b) means taking the larger number between a and b; c1 represents the component with the larger absolute value between the vertical component and the horizontal component of the motion vector residual; n is the length of sequence C.

[0109] The least significant bit information of all carriers is stored in sequence as a sequence G = (lsb1, lsb2, ..., lsb n ):

[0110] (5) Based on the load rate α and parameter matrix Establish the parity check matrix H required for STC STC ;

[0111] (6) The obtained sequence G is combined with the obtained parity check matrix to calculate the secret information sequence, and the calculation formula H is used for STC decoding. STC C′=MI, extract the secret information MI, the length of the secret information sequence is

[0112]

[0113] (7) Determine count m Is it greater than 32? If so, decode and decrypt the first 32 bits of the information sequence to obtain the length le of the secret information. If not, execute step 9.

[0114] (8) Determine count m Is it less than 32+le? If so, after the secret information extraction of the slice is completed, proceed to the next slice unit and jump to step 3. If it is the last slice of the NAL unit, jump to step 2 to continue processing the next NAL unit; otherwise, execute 10;

[0115] (10) After the information sequence is extracted, all extracted sequences are decoded and decrypted to obtain the secret information.

[0116] The above embodiments are only for illustrating the technical idea of ​​the present invention and cannot be used to limit the protection scope of the present invention. Any changes made on the basis of the technical solution in accordance with the technical idea proposed by the present invention shall fall within the protection scope of the present invention.

Claims

1. An efficient H264 video steganography method for embedding hidden information into the original video; The steps include: Step A1, obtaining a binary sequence S to be hidden based on the information to be hidden; Step A2: Read the original video stream. When the NAL unit is of P_NAL type or B_NAL type, select a carrier sequence C from the available macroblocks using a carrier scrambling and construction strategy for the slices therein; and save the least significant bit information of all carriers in sequence as a sequence G. Step A3: construct an STC parity check matrix, calculate the embedding path G′ with the minimum distortion cost through STC coding, modify the carrier sequence C according to G′, and obtain the encrypted carrier sequence C′; Step A4: extract macroblocks from the carrier sequence C′ in sequence to obtain the sequence Cover′, modify the motion vector residuals of the macroblocks in the slice, perform entropy coding, and write them back to the bitstream to complete the encoding of the slice; Step A5, determining whether the NAL unit where the slice is located has been processed, if it has been processed, then moving on to the next NAL unit, otherwise moving on to the next slice; until the embedding of the to-be-hidden binary sequence S is completed, then outputting the video file; In step A2, the specific content of selecting a carrier sequence from available macroblocks using the carrier scrambling and construction strategy is: Starting from the first macroblock in the slice, except for 16×16 partitioned macroblocks, non-P macroblocks or non-B macroblocks, extract the component with the larger absolute value of the vertical component MVDx and the horizontal component MVDy of the motion vector residual from each macroblock in turn until the last macroblock in the slice; Then start again from the first macroblock in the slice and repeat the above steps until all components are extracted; During this process, if there are no extractable components in a macroblock, the macroblock is skipped; The extracted component sequence is the vector sequence C.

2. The method according to claim 1, wherein: The specific content of step A1 is: Step A11: Encrypt the information to be hidden and then convert it into a binary sequence M=(m1,m2,...,m le ), le is the length of the secret information binary sequence; Step A12: Encrypt le and convert it into 32-bit binary form to obtain the sequence L = (l1, l2, ..., l 32 ); Step A13: Combine the sequences L and M to obtain the hidden binary sequence S = L + M = (l1, l2, ..., l 32 ,m1,m2,...,m le ), that is, S=(s1,s2,...,s 32+le ).

3. The method according to claim 1, wherein: In step A2, for a NAL unit of a P_NAL type or a B_NAL type, the NAL header and the slice header are skipped, and the type of the slice data is determined to be a P slice or a Bslice, and a carrier scrambling and construction strategy is applied thereto; otherwise, the slice is skipped.

4. The method according to claim 1, wherein: In step A3, the method of constructing the STC parity check matrix is ​​based on the embedding rate α and the basic matrix Establish STC parity check matrix H STC ; Among them, the embedding rate α of STC coding is affected by the basic matrix In w decision, when When is an integer, Otherwise, w has two values in Indicates floor operation; in, The value is 0 or 1.

5. The method according to claim 1, wherein: In the step A3, the embedding path G′ with the minimum distortion cost is calculated by STC coding, and the carrier sequence C is modified according to G′ to obtain the encrypted carrier sequence C′; specifically, the steps include: Step A31, set a counter count m =0, used to indicate the number of bits of information that have been extracted, and the count bits in the binary sequence S to be hidden m Starting from the bit, extract bits as the secret information embedded in STC, and STC is used to construct the embedding path G′ that minimizes the overall steganalysis embedding cost. n is the length of sequence C; Step A32, compare sequence G = (lsb1, lsb2, ..., lsb n ) and G′=(lsb1′,lsb2′,...,lsb n ′), if lsb i ≠lsb i ′, then the vector sequence C=(c1,c2,...,c n ) in the corresponding position of the embedding vector c i Modify to get c ni ′, otherwise no modification is required, let c ni ′=c i Finally, the carrier sequence C′=(c1′,c2′,...,c n ′); wherein lsb1 represents the least significant bit value of c1, and c1 represents the component with the larger absolute value between the vertical component and the horizontal component of the motion vector residual.

6. The method according to claim 5, wherein: In the step A32, the embedding carrier c i The way to make the modification is, If MVDX i !=MVDY i And c i If c is a positive odd number or a negative even number, i Subtract 1, and we get c i '; If MVDX i !=MVDY i And c i If c is a positive even number or a negative odd number, i Add 1 to get c i '; If MVDX i ==MVDY i And c i If c is a positive number, i Add 1 to get c i '; If MVDX i ==MVDY i And c i If c is negative, i Subtract 1, and we get c i '; Among them, MDVX i and MVDY i Represents the vertical and horizontal components of the motion vector residual of the macroblock respectively.

7. The method according to claim 1, wherein: The specific process of step A4 is: Step A41: First, according to the sequence numbers of the macroblocks in FG, sequentially extract the elements whose macroblock is the first macroblock from sequence C′ from left to right, until the end of the sequence; then, sequentially extract the elements whose macroblock is the second macroblock from sequence C′ from left to right; and so on, until the last macroblock. The sequence of extracted elements is recorded as Cover′; where FG is the sequence number corresponding to the macroblocks selected to construct sequence C; Step A42: Modify the vertical component MVDx and horizontal component MVDy of the motion vector residual in all macroblocks in the slice according to the Cover′ sequence, and after the modification is completed, re-entropy encode the motion vector residual and write it back to the bitstream to complete the encoding of the slice.

Citation Information

Patent Citations

  • Adaptive H.264 compressed domain video watermark embedding and extracting method

    CN101951520A

  • Access unit based decoding method and device for SVC

    KR1020120072718A