




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、所谓数字水印是向多媒体数据(如图像、声音、视频信号等)中添加某些数字信息以达到文件真伪鉴别、版权保护等功能。嵌入的水印信息隐藏于宿主文件中,不影响原始文件的可观性和完整性。LSB(LeastSignificant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。一、 理论基础对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行
2、一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。二、 实现步骤嵌入过程主要分为三步:1、将原始图像的空域像素值由十进制转换到二进制表;2、用二进制水印信息中的每一比特信息替换与之相对应在第数据的最低有效位;3、将得到的含水印的二进制数据转换为十进制像素值,从而获得含水印的图像。三、核心代码/打开宿主图像void CWaterMarkDlg:OnOpenFile() / TODO: Add your control notification handler code hereCFileDialog dlg(TRUE, , NULL, OFN_HIDEREADON
3、LY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, (*.bmp)|*.bmp|所有文件(*.*)|*.*|,AfxGetMainWnd();/读取图象的文件名CString filename;if(dlg.DoModal()=IDOK)POSITION pos = dlg.GetStartPosition();filename = dlg.GetNextPathName(pos);Bitmap2Data();/if(hwnd0!=NULL)hwnd0=NULL;if(hSrcDC0!=NULL)hSrcDC0=NULL;if(hDesDC0!=N
4、ULL)hDesDC0=NULL;hwnd0 = GetDlgItem(IDC_STATIC0);hDesDC0 = hwnd0-GetDC()-m_hDC;hSrcDC0 = CreateCompatibleDC(hDesDC0);filename=dlg.GetPathName();hBitmap0=(HBITMAP)LoadImage(AfxGetInstanceHandle(),filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);GetObject(hBitmap0, sizeof BITMAP, &bm0);S
5、electObject(hSrcDC0, hBitmap0);hwnd0-GetClientRect(&rect0);:SetStretchBltMode(hDesDC0,COLORONCOLOR); :StretchBlt(hDesDC0, rect0.left, rect0.top, rect0.right, rect0.bottom, hSrcDC0, 0, 0, bm0.bmWidth, bm0.bmHeight,+SRCCOPY);show0=TRUE;SetTimer(NULL,50,0);GetDlgItem(IDC_BUTTON2)-EnableWindow(TRUE);els
6、e/*GetDlgItem(IDC_STATIC0)-MoveWidow(rect(0,0,bm.bmWidth,bm.bmHeight);hwnd-MoveWidow(rect(0,0,bm.bmWidth,bm.bmHeight);m_pic.SetBitmap(hBitmap);this-RedrawWindow();*/TRACE(错误);if(pEdit!=NULL)pEdit=NULL;r.left=35;r.top=rect0.bottom+2;r.right=200+r.left;r.bottom=r.top+20;pEdit=new CEdit;pEdit-Create(ES
7、_CENTER|WS_VISIBLE|ES_READONLY,r,this,1);CFont * cFont=new CFont;cFont-CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH&FF_SWISS,Arial);pEdit-SetFont(cFont,TRUE);pEdit-SetWindowText(s2);/打开水印图像void CWaterMarkDlg:OnOpen
8、WaterMark() / TODO: Add your control notification handler code hereCFileDialog dlg1(TRUE,bmp,.bmp,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,位图文件(*.bmp)|*.bmp|JPEG 文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|);if(dlg1.DoModal()=IDOK)if(hwnd1!=NULL)hwnd1=NULL;if(hSrcDC1!=NULL)hSrcDC1=NULL;if(hDesDC1!=NULL)hDesDC1
9、=NULL;hwnd1 = GetDlgItem(IDC_STATIC1);hDesDC1 = hwnd1-GetDC()-m_hDC;hSrcDC1 = CreateCompatibleDC(hDesDC1);watermark=dlg1.GetPathName();hBitmap1=(HBITMAP)LoadImage(AfxGetInstanceHandle(),watermark,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);GetObject(hBitmap1, sizeof BITMAP, &bm1);SelectObj
10、ect(hSrcDC1, hBitmap1);hwnd1-GetClientRect(&rect1);:SetStretchBltMode(hDesDC1,COLORONCOLOR); :StretchBlt(hDesDC1, rect1.left, rect1.top, rect1.right, rect1.bottom, hSrcDC1, 0, 0, bm1.bmWidth, bm1.bmHeight,+SRCCOPY);show1=TRUE;if (bm0.bmHeight*bm0.bmWidth)EnableWindow(FALSE);Mark=TRUE;GetDlgItem(IDC_
11、BUTTON3)-EnableWindow(TRUE);/将宿主图象的转换为数据保存在二维数组m_tOriPixelArrayvoid CWaterMarkDlg:Bitmap2Data()int i,j;if(m_tOriPixelArray !=NULL)if(m_Ih!=0)for(i=0; im_Ih; i+)delete m_tOriPixelArrayi;elsefor(i=0; iOpen(filename);ImageWidth = m_dib-GetWidth();ImageHeight = m_dib-GetHeight();biBitCount = m_dib-GetBi
12、BitCount(); BYTE *colorTable;colorTable =(BYTE *) m_dib-m_pDibBits;int byteBitCount = m_dib-GetBiBitCount()/8;m_tOriPixelArray =new RGBQUAD*ImageHeight;for (int l=0;l=0; i-)for(j=0; jImageWidth; j+)m_tOriPixelArrayij.rgbBlue =colorTablecount+;m_tOriPixelArrayij.rgbGreen=colorTablecount+;m_tOriPixelA
13、rrayij.rgbRed =colorTablecount+;m_tOriPixelArrayij.rgbReserved = 0;count += byteBitCount-3;num+=1;count += (4-(ImageWidth*byteBitCount)%4)%4;show2=TRUE;/将水印图象的转换为数据保存在二维数组m_watermarkdatavoid CWaterMarkDlg:WaterBitmap2Data()int i,j;if(m_watermarkdata !=NULL)if(m_Wh!=0)for(i=0; iOpen(watermark);if(m_d
14、ib1-GetBiBitCount()8) MessageBox(目前仅对8位的水印信息有效);WaterWidth=m_dib1-GetWidth();WaterHeight=m_dib1-GetHeight();biBitCount1 = m_dib1-GetBiBitCount();BYTE *colorTable;colorTable =(BYTE *) m_dib1-m_pDibBits;int byteBitCount = m_dib1-GetBiBitCount()/8;m_watermarkdata =new RGBQUAD*WaterHeight;for (int l=0;l
15、=0; i-)for(j=0; jWaterWidth; j+)m_watermarkdataij.rgbBlue = colorTablecount+;m_watermarkdataij.rgbGreen = colorTablecount+;m_watermarkdataij.rgbRed = colorTablecount+;m_watermarkdataij.rgbReserved = 0;count += byteBitCount-3;num+=1; count += (4-(WaterWidth*byteBitCount)%4)%4;void CWaterMarkDlg:OnWat
16、erEmbed() / TODO: Add your control notification handler code hereRGBQUAD *m_copymater;/定义一个水印信息的数据副本m_copymater = new RGBQUAD WaterHeight*WaterWidth;int i,j;int count=0;BYTE m_r,m_b;if(m_waterEmbed !=NULL)/m_waterEmbed是水印嵌入后的位图数据全局变量if(m_Ih!=0)for(int l =0;lm_Ih;l+)delete m_waterEmbedl;/?m_waterEmbe
17、d = new RGBQUAD*ImageHeight;for(i=0;iImageHeight;i+)m_waterEmbedi = new RGBQUAD ImageWidth;for(i=0;iImageHeight;i+)/将原来的图象的数据复制到m_waterEmbed里for(j=0;jImageWidth;j+)m_waterEmbedij=m_tOriPixelArrayij;/将水印信息的数据复制到一维数组m_copymater水印信息的数据副本里for(i=0;iWaterHeight;i+) for(j=0;jWaterWidth;j+)m_copymateri*Wate
18、rHeight+j=m_watermarkdataij;count+;number=count;/记录嵌入的点数/int k=0;if (biBitCount=24)/Operate_Byte()嵌入水印信息位操作for(i=0;i0;i+)for(j=0;j0;j+,count-)m_r=m_waterEmbedij.rgbRed;m_b=m_waterEmbedij.rgbBlue;BYTE &a=m_r;BYTE &b=m_b;BYTE c=m_copymateri*ImageHeight+j.rgbGreen;Operate_Byte(a,b,c);m_waterEmbedij.rgbRed=m_r;m_waterEmbedij.rgbBlue=m_b;/TRACE(n%d,c);k+;PutInWaterMessage();/else return;CDC *dc=GetDC();/将象素打印出来RECT m_rect;float w,h,p,q;GetDlgItem(IDC_STATIC2)-GetClientRect(&m_rect);if(m_rect.rightImageWid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具企业并购重组购销合同3篇
- 合规承诺股东权益保障承诺书3篇
- 工程施工协调委托3篇
- 劳动合同延期补充协议版3篇
- 委托维修合同3篇
- 国际贸易规则与实务培训合同范本3篇
- 展会服务合同中的展会影响力3篇
- 工程索赔案例实践启示
- 互联网借款合同格式模板3篇
- 历史文化地形图测绘合同3篇
- 外研版(三起)(2024)三年级下册英语Unit 2 单元测试卷(含答案)
- 国开(内蒙古)2024年《创新创业教育基础》形考任务1-3终考任务答案
- 贷款资料真实性承诺书
- 中考英语补全对话135个必背句型
- 心理社会评估健康评估本科课件
- 结构化思维与表达课件
- 体育心理学(第三版)课件第八章运动技能的学习
- 深信服SDWAN产品介绍
- JT∕T 1431.3-2022 公路机电设施用电设备能效等级及评定方法 第3部分:公路隧道照明系统
- 行政事业单位公务卡使用管理办法模板
- 五年级奥数教程
评论
0/150
提交评论