Pergunta

Broadly speaking there are 4 steps involved in embedding a message using DCT:

  1. Divide the image into 8x8 blocks
  2. Transform each block using DCT mathematical operations
  3. Quantitize each DCT block (lossy compression)
  4. Embed the message bits from the quantitized coefficients (avoid 0, 1, -1, and the AC)

Thats ok, but I am not sure how to extract the data back out. Are you suppose to go through steps 1-3 to quantitize each block in order to extract the LSB of each coefficient?

If that's the case, would you not be losing (possible the embedded data) data because it is a lossy technique?

Also when I tried to quantitize each block, I am left with the same coefficients from the previous image (as in the LSB change had no effect) ??

Could someone enlighten me on this problem?

Thanks

Foi útil?

Solução

The embedding of the message occurs after the lossy compression -- there's no possibility of losing the message, because the steps which lose data have already been performed (other than the actual embedding, which loses only image data, replacing it with your message). Ideally you then extract the message directly from the coefficients themselves -- that is, decompression is not involved in the extraction.

Outras dicas

When you multiply DCT block back by quantization matrix, you would most probably get very big numbers for big spatial frequencies - picture would become noisy. But then you need to normalize the coefficients, so that any value of any pixel does not exceed [0..1] bounds ( [0..255] ) After normalization you could loose some info.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top