声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2132|回复: 4

[图像处理] 基于核主成分分析的维纳滤波过程

[复制链接]
发表于 2015-4-26 16:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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)



回复
分享到:

使用道具 举报

发表于 2015-4-27 15:10 | 显示全部楼层
imshow(J, [])
 楼主| 发表于 2015-4-28 08:44 | 显示全部楼层

是我表达错了,不是说没有图像显示,而是结果不正常,应该是

Wn=inv(Q*Q');%480*480
Wn1=Wn*Q;%480*1
Wn2=Wn1'*img1(:,:);%1*480
计算滤波算子的部分不是很懂,按照文献写的只会生成一个列矩阵 我是自己改的生成了一个方阵,结果差别很大
  
发表于 2015-4-28 08:48 | 显示全部楼层
学习中,帮顶。
 楼主| 发表于 2015-4-28 14:26 | 显示全部楼层

别光顶啊 一起探讨下 给点建议
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 09:03 , Processed in 0.050937 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表