马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
大四汪毕业设计,根本没学过图像处理,参考网上程序编的,最后一部分是按公式自己写的滤波算子计算过程,没有逻辑错误但是没有图像,求大神指导
程序如下:
clc;
close all;
%---------------图像读取录入------------------
img1(:,:)=double(imread('C:\Users\Administrator.PC-20141106WOFG\Documents\MATLAB\lena.jpg'));
img2(:,:)=imnoise(img1,'gaussian',0.003);
cov_size=size(img1,1);
train_num=cov_size;
%---------------核的选择----------------------
for i=1:cov_size
for j=1:cov_size
%kernel1(i,j)=sum(sum(img1(i,:).*img1(j,:)'));
K(i,j) =(img1(i,:)*img1(j,:)'+1)^0.7;
K(j,i) = K(i,j);
%kernel1(i,j)=exp(-((i-n1)^2)+(j-n1)^2)/(4*alf)/(4*pi*alf);%高斯核函数
end
end
unit = ones(cov_size, cov_size)/cov_size;
K_n = K - unit*K - K*unit + unit*K*unit;
[v,e]=eig(K_n); %求取特征值和特征向量
e=real(diag(e));
v=v'; %此时每一行对应的是特征向量
[l1,l2]=sort(-1*e'); %按数值大小排列
e=l1*(-1);
v=v(:,l2);
for i=1:cov_size,
v(:,i) = v(:,i)/(sqrt(e(i)));
end
%贡献值
dsum = sum(v);
dsum_extract = 0;
p = 0;
while( dsum_extract./dsum < 0.9)
p = p + 1;
dsum_extract = sum(v(1:p));
end
max_ev=p;
Q = zeros(1, max_ev);
Q = K_n * v(:,max_ev);
Wn=inv(Q'*Q);
Wn1=Wn*Q';
J=Q*Wn1;
imshow(J)
|