1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5qUlJts
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
数字水印技术是一种基于内容的、非密码机制的计算机信息隐藏技术。它可以将一些标识信息直接嵌入数字载体当中,且不影响原载体的使用价值,也不容易被探知和再次修改,从而实现保护版权、信息隐藏的功能。数字水印按照特性可以分为鲁棒数字水印和脆弱数字水印。本部分重点研究脆弱数字水印的应用,同时分别分析三种水印算法的机理和效果。
4.部分源码
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Image=imread('lena.png');
% Water=imread('water.png');
global src_image;
global src_water;
Image=src_image;
Water=src_water;
[Iwm,Uw,Vw]=EmbedWatermark(Image,Water);
switch get(handles.popupmenu1,'value')
case 1
case 2
number2 = floor(get(handles.slider2,'value')*100);
if number2==0
number2 = number2+1;
end
Iwm = JPEG2000Attack(Iwm,number2);
case 3
number3 = floor(get(handles.slider3,'value')*100);
Iwm = JPEGAttack(Iwm,number3);
case 4
if get(handles.radiobutton1,'value') == 1
number4 = 1;
elseif get(handles.radiobutton2,'value') == 1
number4 = 2;
else
number4 = 3;
end
Iwm = noiseAttack(Iwm,number4);
case 5
if get(handles.radiobutton4,'value') == 1
number5 = 1;
elseif get(handles.radiobutton5,'value') == 1
number5 = 2;
else
number5 = 3;
end
Iwm = FilterAttack(Iwm,number5);
case 6
Iwm = SharpenAttack(Iwm);
case 7
Iwm = histeqAttack(Iwm);
end
[WaterR,WaterG,WaterB]=ExtractWatermark(Iwm,Image,Uw,Vw,Water);
axes(handles.axes4)
NCR=ncc(uint8(WaterR),Water);
NCG=ncc(uint8(WaterG),Water);
NCB=ncc(uint8(WaterB),Water);
a=[NCR,NCG,NCB];
[m,p]=max(a);
if p==1
imshow(uint8(WaterR))
elseif p==2
imshow(uint8(WaterG))
else
imshow(uint8(WaterB))
end
set(handles.text2,'String',num2str(NCR))
set(handles.text3,'String',num2str(NCG))
set(handles.text4,'String',num2str(NCB))
msg=msgbox('水印提取完成','完成');
A123