www.pudn.com > SVM.rar > svrtest.m
function [I]=svrtest(OriginalI,IntI,A,B,C,D)
%计算SVR,输入原始图像和一维化后的水印图像,输入出随机训练矩阵下标和测试矩阵下标以,输出训练值替换的图像
%clear
%close all
%---------------------------------------------------
% 产生训练样本与测试样本
I=im2double(OriginalI);
IP=I;
m=size(IntI,1);
xm=100;
for i=1:xm
x1=I(A(1,i),B(1,i));
n1=[I(A(1,i)-1,B(1,i)-1) I(A(1,i)-1,B(1,i)) I(A(1,i)-1,B(1,i)+1) I(A(1,i),B(1,i)-1) I(A(1,i),B(1,i)+1) I(A(1,i)+1,B(1,i)-1) I(A(1,i)+1,B(1,i)) I(A(1,i)+1,B(1,i)+1)]';
for j=1:8
xx(1,i)=x1;
nx(j,i)=n1(j,1);
end
end
%while((C==A)&&(D==B))
% C=randint(1,100,[0,511]);
% D=randint(1,100,[0,511]);
%end
for i=1:m
x2=I(C(1,i),D(1,i));
n2=[I(C(1,i)-1,D(1,i)-1) I(C(1,i)-1,D(1,i)) I(C(1,i)-1,D(1,i)+1) I(C(1,i),D(1,i)-1) I(C(1,i),D(1,i)+1) I(C(1,i)+1,D(1,i)-1) I(C(1,i)+1,D(1,i)) I(C(1,i)+1,D(1,i)+1)]';
for j=1:8
xy(1,i)=x2;
ny(j,i)=n2(j,1);
end
end
xn_train = nx; % 训练样本,每一列为一个样本
dn_train = xx; % 训练目标,行向量
xn_test = ny; % 测试样本,每一列为一个样本
dn_test = xy; % 测试目标,行向量
%---------------------------------------------------
% 参数设置
trnX = xn_train';
trnY = dn_train';
tstX = xn_test';
tstY = dn_test';
global p1 ;
ker = 'rbf'; % 核函数 k = exp(-(u-v)*(u-v)'/(2*p1^2))
p1 = 10; % p1 is width of rbfs (sigma)基函数宽度
C1 = 1; % 折衷系数,惩罚因子
%---------------------------------------------------
% 训练与测试
[nsv,beta,bias] = svr(trnX,trnY,ker,C1); % 训练
tstY1 = svroutput(trnX,tstX,ker,beta,bias); % 测试
%---------------------------------------------------
% 结果作图
figure,plot(1:length(tstY),tstY,'r+:',1:length(tstY1),tstY1,'bo:')
title('+为真实值,o为预测值')
for i=1:m
I(C(1,i),D(1,i))=tstY1(i,1);
end
%imshow(I);
%psnr=PSNR(IP,I);