%在嵌入水印后的图像中取出嵌入部分进行水印提取,取正方形区域嵌入,结果仍然不正确,对不起!
clear all
clc
%function num = imSelect1(image1)
%[im1, des1, loc1] = sift(image1);
[im1, des1, loc1] = sift('cameraman.tif');
I=imread('cameraman.tif'); %获得图像的像素
imshow(I)
ch=5;
jtemp=1;
counttemp=0;
for i=1:size(loc1,1)
if (loc1(i,3)>2) && (loc1(i,3)<10) && ((loc1(i,4)>2) || (loc1(i,4)<-2)) %【2】Bell D E,LaPadula L J.Secure Computer Systems:Mathematical
% Foundations[R].MITRE Corporation,Tech.Rep.:MTR-2547, 1973.
loc2(jtemp,:)=loc1(i,:);
jtemp=jtemp+1;
counttemp=counttemp+1;
end
end
sprintf('Found %d matches.\n', counttemp)
A=loc2(:,[1 2]);
Y=pdist(A);
Z = squareform(Y);
for i=1:counttemp
for j=1:counttemp
if Z(i,j)<(loc2(i,3)+loc2(j,3))*ch
Z(i,j)=0 ; %距离赋值为零
end
end
end
[q,p]=size(Z);
for i= 1:p
a=find(Z(i,:)==0); b(i)= max(loc2(a,3)); %找出互相相交的圆中的最大尺度
end
for i=1:p-1
for j=i+1:p
if b(i)==b(j) b(j)=0;
end
end
end
o=find(b); %将b中相同的元素去掉
r=1; %loc3
for j=1:size(o,2)
for i=1:size(loc2,1)
if (b(o(j))==loc2(i,3)) loc3(r,:)=loc2(i,:);r=r+1;
end
end
end
B=pdist(loc3);
Z1 = squareform(B);
kt=1;
for i=1:size(loc3,1)-1
for j=i+1:size(loc3,1)
if Z1(i,j)<(loc3(i,3)+loc3(j,3))*ch*sqrt(2)
if loc3(i,3)<loc3(j,3) loc4(kt,:)=loc3(i,:);kt=kt+1;
else loc4(kt,:)=loc3(j,:); kt=kt+1;
end
end
end
end
for i=1:size(loc4,1)
for j=i+1:size(loc4,1)
if loc4(i,:)==loc4(j,:) loc4(j,:)=0;
end
end
end
for i=1:size(loc3,1)
for j=1:size(loc4,1)
if loc3(i,:)==loc4(j,:) loc3(i,:)=0;
end
end
end
j=1;
for i=1:size(loc3,1)
if loc3(i,:)~=0 loc5(j,:)=loc3(i,:);j=j+1;
end
end
% hold on;
% axis equal
% for i=1:size(loc5,1) %在图片中画圆
% x0 =loc5(i,1);
% y0=loc5(i,2);
% R0=ch*loc5(i,3);
% [x,y]=size(I); %m为原图
% [X,Y]=meshgrid(1:x,1:y); %生成网格
% Q{i}=double(I).*double(((X-x0).^2+(Y-y0).^2)<=R0^2)'; %(x0,y0)是圆心坐标
% size(Q{i});
% %imshow(Q{i}) 空间画圆
% % Theta=linspace(2*pi,0,1000);
% % x =x0+cos(Theta)*R0;
% % y =y0+sin(Theta)*R0;
% % line(x,y,'Color','red','LineWidth',0.5);
%
% end
% IK(size(I,1),size(I,2))=0;
% K=0;
% for i=1:size(loc5,1)
% K=K+Q{i};
% end
% imshow(K,[])
% for i=1:size(I,1)
% for j=1:size(I,2)
% IK(i,j)=I(i,j)-K(i,j);
% end
% end %报错?Integers can only be combined with integers of the same class, or scalar doubles.可将图片相减
IQ(1:256,1:256)=0;
IQQ(1:256,1:256)=0;
xs=10;
nn=size(loc5,1);
A=imread('12.bmp');
[xx1,yy1]=size(A);
aa1=ceil((xx1*yy1)/(nn*10))*10;
jj1=1;
for i=1:nn %画圆的外接正方形
x1 =floor(loc5(i,1)-loc5(i,3)*ch);
y1 =floor(loc5(i,2)-loc5(i,3)*ch);
w=ceil(loc5(i,3)*ch*2);
P{i}=imcrop(I,[y1,x1,w,w]);
[xx,yy]=size(P{i});
IQ(x1:xx+x1-1,y1:yy+y1-1)=IQ(x1:xx+x1-1,y1:yy+y1-1)+double(P{i}(1:end,1:end));
end
IQQ=double(I)-IQ;
for i=1:(nn-1)
BB=A(jj1:jj1+aa1-1);
CC=reshape(BB,[aa1/10 10]);
x1 =floor(loc5(i,1)-loc5(i,3)*ch);
y1 =floor(loc5(i,2)-loc5(i,3)*ch);
PP{i}=dct2(P{i});
PP{i}=double(PP{i});
[xx,yy]=size(P{i});
DD=double(imresize(CC,[xx,yy]));
PP1{i}=PP{i}(1:xx,1:yy)+xs*DD(1:xx,1:yy); %嵌入水印后读入原图片中
PP3{i}=idct2(PP1{i});
if x1<1 x1=1; end
if y1<1 y1=1; end
IQQ(x1:xx+x1-1,y1:yy+y1-1)=IQQ(x1:xx+x1-1,y1:yy+y1-1)+PP3{i}(1:end,1:end);
% xxx1=imresize(PP3{i},1/4,'bicubic'); %加入噪声
% xxx2=imresize(xxx1,4,'bicubic');
% I_marked=double(xxx2);
% PP2=dct2( I_marked);
% PP2=dct2(PP3{i});
% EE=(PP2(1:xx,1:yy)-PP{i}(1:xx,1:yy))/xs;
% FF=imresize(EE,[aa1/10 10]);
% RR(jj1:jj1+aa1-1)=reshape(FF,1,aa1);
% jj1=jj1+aa1;
end
BB=A(jj1:end);
CC=reshape(BB,[((xx1*yy1-jj1+1)/10) 10]);
x1 =floor(loc5(nn,1)-loc5(nn,3)*ch);
y1 =floor(loc5(nn,2)-loc5(nn,3)*ch);
w=ceil(loc5(nn,3)*ch*2);
%P{nn}=imcrop(I,[y1,x1,w,w]);
PP{nn}=dct2(P{nn});
PP{nn}=double(PP{nn});
[xxx,yyy]=size(PP{nn});
DD=double(imresize(CC,[xxx,yyy]));
PP1{nn}=PP{nn}(1:xxx,1:yyy)+xs*DD(1:xxx,1:yyy);
PP3{nn}=idct2(PP1{nn});
IQQ(x1:xxx+x1-1,y1:yyy+y1-1)=IQQ(x1:xxx+x1-1,y1:yyy+y1-1)+PP3{nn}(1:end,1:end);
% xxx1=imresize(PP3{nn},1/4,'bicubic'); %加入噪声
% xxx2=imresize(xxx1,4,'bicubic');
% I_marked=double(xxx2);
% PP2=dct2( I_marked);
% PP2=dct2(PP3{nn});
% find(PP2~=PP1{nn})
% EE=(PP2(1:xxx,1:yyy)-PP{nn}(1:xxx,1:yyy))/xs;
% FF1=imresize(EE,[((xx1*yy1-jj1+1)/10) 10]);
% RR(1351:1600)=reshape(FF1,1,(xx1*yy1-1350));
% RR1=reshape(RR,40,40);
% RR1(RR1(:,:)>=0.5)=1;
% RR1(RR1(:,:)<0.5)=0;
% for i=1:size(loc5,1) %在图片中画圆
% x0 =loc5(i,1);
% y0=loc5(i,2);
% R0=ch*loc5(i,3);
% [x,y]=size(I); %m为原图
% [X,Y]=meshgrid(1:x,1:y); %生成网格
% ZZ{i}=double(IQ).*double(((X-x0).^2+(Y-y0).^2)<=R0^2)'; %(x0,y0)是圆心坐标
% end
% for i=1:size(loc5,1)
% IQQ=IQQ+ZZ{i};
% end
% %imshow(K,[])
%IK=IK+IQQ;
%在嵌入水印后的图像中取出嵌入部分进行水印提取,取正方形区域嵌入,结果仍然不正确,对不起!
jj1=1;
for i=1:nn-1
x1 =floor(loc5(i,1)-loc5(i,3)*ch);
y1 =floor(loc5(i,2)-loc5(i,3)*ch);
w=ceil(loc5(i,3)*ch*2);
Pp{i}=imcrop(IQQ,[y1,x1,w,w]);
[xx,yy]=size(Pp{i});
PPp{i}=dct2(Pp{i});
[xx,yy]=size(PPp{i});
EE=(PPp{i}(1:xx,1:yy)-PP{i}(1:xx,1:yy))/xs;
FF=imresize(EE,[aa1/10 10]);
RR(jj1:jj1+aa1-1)=reshape(FF,1,aa1);
jj1=jj1+aa1;
end
x1 =floor(loc5(nn,1)-loc5(nn,3)*ch);
y1 =floor(loc5(nn,2)-loc5(nn,3)*ch);
w=ceil(loc5(nn,3)*ch*2);
Pp{nn}=imcrop(IQQ,[y1,x1,w,w]);
PPp{nn}=dct2(Pp{nn});
EE=(PPp{nn}(1:xxx,1:yyy)-PP{nn}(1:xxx,1:yyy))/xs;
FF1=imresize(EE,[((xx1*yy1-jj1+1)/10) 10]);
RR(1351:1600)=reshape(FF1,1,(xx1*yy1-1350));
RR1=reshape(RR,40,40);
subplot(121)
imshow(I,[])
subplot(122)
imshow(IQQ,[])
figure;
subplot(121)
imshow(A,[])
subplot(122)
imshow(RR1,[])
%嵌入后将像素存成图片
NC=nc(A,RR1)
PSNR=psnr(IQQ,I)
静态图像的sift域水印嵌入
4星 · 超过85%的资源 需积分: 9 121 浏览量
2010-07-14
19:38:42
上传
评论 1
收藏 59KB RAR 举报
baobaonanpo
- 粉丝: 2
- 资源: 2
最新资源
- CocosDashboard-v2.1.3-win-042311.exe
- 基于yolov5和deepsort算法的车辆检测项目源码+数据集(高分项目).zip
- 基于YOLOv5+Deepsort实现车辆行人追踪和计数(完整源码+说明文档+数据).zip
- 150360364459673Pex10_9.py
- 74ls138译码器Multisim仿真设计
- 深度学习在图像分类任务中的应用
- 华为OD资源整理-包含华为OD概述,招聘流程等
- 基于BP神经网络的供热管道压力和温度预测(代码完整,数据齐全)
- 架空电力线弧垂计算公式
- 基于BP神经网络的四分类预测,基于RBF的四分类预测,基于GRNN的四分类预测,基于PNN的四分类预测
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈