微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 项目篇:第二篇_LSB数据获取

项目篇:第二篇_LSB数据获取

时间:10-02 整理:3721RD 点击:
注:本帖不对CCS软件安装、DSP工程建立及相关配置介绍。
上篇就如何掩藏信息作以介绍,本篇将对掩藏的信息提取做说明。
做隐藏时候,我们是将信息嵌入到最不重要位LSB上,当然其他位也可以,但是越接近最重要位的隐藏,人眼是很容易察觉的,对图片毁损比较大;我们采取LSB清0,填值,提取也就相似,取得的数据与2除,余数为1,那么嵌入数据就为1,反之就为0。编写的LsbGet函数如下:

  1. void LsbGet(bmp *m, int *goaltext)
  2. {
  3.         int i, j;
  4.         int bmpWidth;                // 图像的宽
  5.         int bmpHeight;                // 图像的高
  6.         int biBitCount;                // 图像类型,每像素位数
  7.         int lineByte;
  8.         int temp;

  9.         // 获取图像宽、高、每像素所占位数等信息
  10.         bmpWidth = m->info.biWidth;
  11.         bmpHeight = m->info.biHeight;
  12.         biBitCount = m->info.biBitcount;

  13.         // 定义变量,计算图像每行像素所占的字节数(必须是4的倍数)
  14.         lineByte=(bmpWidth * biBitCount / 8 + 3) / 4 * 4;

  15.         int t = 0;
  16.         int p = 112;
  17.         for(i = 0; i imgBuf + i * lineByte + j));
  18.                     int maxlen = i*bmpWidth +j;
  19.                         if(p>= maxlen )
  20.                         {
  21.                                 goaltext[t] = temp & 1;
  22.                                 t ++;
  23.                         }
  24.                         else
  25.                                 return;
  26.                 }
  27.         }
  28. }

复制代码



与嵌入数据

  1. const int text[] = {
  2. 1,1,1,0,1,0,0,
  3. 1,1,1,0,0,1,0,
  4. 1,1,1,1,0,0,1,
  5. 0,1,0,1,1,1,0,
  6. 1,1,0,0,1,0,1,
  7. 1,1,0,1,1,0,0,
  8. 1,1,0,0,1,0,1,
  9. 1,1,0,0,0,1,1,
  10. 1,1,0,0,1,1,0,
  11. 1,1,0,0,0,0,1,
  12. 1,1,0,1,1,1,0,
  13. 1,1,1,0,0,1,1,
  14. 0,1,0,1,1,1,0,
  15. 1,1,0,0,0,1,1,
  16. 1,1,0,1,1,1,1,
  17. 1,1,0,1,1,0,1,
  18. };

复制代码


比较,完全吻合。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top