文档库 最新最全的文档下载
当前位置:文档库 › 【matlab编程代做】Fisher二元线性判别 Matlab源码

【matlab编程代做】Fisher二元线性判别 Matlab源码

【matlab编程代做】Fisher二元线性判别 Matlab源码
【matlab编程代做】Fisher二元线性判别 Matlab源码

function [JudgeX W ] = fcFisherJudge(Class1,Class2,X)

% 依据求得的Fisher变换向量W,判定输入数据X(样本数据以列向量形式存储)的所属% 参考清华版《模式识别(第二版)》P90页(4.2章Fisher线性判别)

% 输入参数:

% Class1 第1类对应的训练数据信息矩阵,样本数据以列向量形式存储,维数m*n1

% m对应样本(列)向量维数,n1对应该类样本数目

% Class2 第1类对应的训练数据信息矩阵,样本数据以列向量形式存储,维数m*n2

% m对应样本(列)向量维数,n2对应该类样本数目

% X 待判定的数据,维数m*nX,样本数据以列向量形式存储

% 中间变量:

% CountC 存储了两类训练数据的样本数目,CountC=[n1 n2]

% MeanC1 第1类对应的均值(列)向量

% MeanC2 第2类对应的均值(列)向量

% avrC1 第1类均值(列)向量MeanC1经Fisher变换后的数值,avrC1=W'*MeanC1

% avrC2 第2类均值(列)向量MeanC2经Fisher变换后的数值,avrC2=W'*MeanC2

% Sw 总体的类内离散度矩阵,维数m*m,Sw = Sw_C1 +Sw_C2

% Sb 总体的类间离散度矩阵,维数m*m,Sb = (MeanC1-MeanC2)*(MeanC1-MeanC2)'

% Y 待判定数据X经Fisher变换后的数值,对于单组样本X有y=W'*X,对于样本矩阵X有Y(i)=W'*X(:,i)

% threY Fisher变换后的数值判别门限

% 对于y=W'*X:若y>threY,X∈Class1;若y

% 输出参数:

% JudgeX 待判定的数据X的所属,1表示属于Class1,0表示属于Class2

% 若nX>1(样本不止一列),输出结果Judge为由0/1组成的列向量

% W Fisher变换向量,维数m*1,W=inv(Sw)*(MeanC1-MeanC2)=Sw\(MeanC1-MeanC2)

% 对于新样本(列)向量X,有y=W'*X(列向量样本经变换后为1维常数)

% 初始化

[m,nX] = size(X);

JudgeX = zeros(nX,1);

% 计算Fisher判别参数

[ W MeanC1 MeanC2 Sw Sb CountC ] = fcFisherW(Class1,Class2);

avrC1 = W'*MeanC1;

avrC2 = W'*MeanC2;

%计算Fisher判别门限

threY = (CountC(1)*avrC1 + CountC(2)*avrC2)/(CountC(1) + CountC(2));

% 进行Fisher判别

if nX==1 %X为单组样本列向量

Y = W'*X; %此时Y为常数

if Y>=threY

JudgeX = 1; %若y>threY,X∈Class1

else

JudgeX = 0; %若y

else %X为多组样本组成的矩阵

Y = zeros(nX,1);

for i=1:nX

Y(i) = W'*X(:,i);

if Y(i)>=threY

JudgeX(i) = 1; %若Y(i)>threY,X∈Class1 else

JudgeX(i) = 0; %若Y(i)

end

end

% function [a,b]=fisher(A,B,X,h)

% %A,B表示A,B类的数据,X表示未知类别的数据。

% %A,B,X的列表示不同的指标,行表示一个个体。

% %h为显著性水平。

% average1=mean(A);

% average2=mean(B);

% m=size(A,1);

% n=size(B,1);

% p=size(A,2);

% for i=1:p

% A(:,i)=A(:,i)-average1(i);

% B(:,i)=B(:,i)-average2(i);

% end

% S1=A'*A;

% S2=B'*B;

% S=S1+S2;

% c=S\(average1-average2)';

% ya=average1*c;

% yb=average2*c;

% y0=(m*ya+n*yb)/(m+n);%临界值

% z=X*c;

% a=(z-y0)*(ya-y0);a=ge(a,0);%A类

% b=(z-y0)*(yb-y0);b=ge(b,0);%B类

% F=(m*n/(m+n)*(m+n-p-1)/p)*abs(ya-yb);

% Fh=finv(1-h,p,m+n-p-1);%计算置信水平下的F分布表

% if F>Fh

% disp('判别函数有效');

% else

% disp('判别函数无效');

% end

function [ W MeanC1 MeanC2 Sw Sb CountC] = fcFisherW(Class1,Class2)

% 朴素的Fisher分类器,参考清华版《模式识别(第二版)》P88-P90页(4.2章Fisher线性判别)

% 输入参数:

% Class1 第1类对应的训练数据信息矩阵,样本数据以列向量形式存储,维数m*n1

% m对应样本(列)向量维数,n1对应该类样本数目

% Class2 第1类对应的训练数据信息矩阵,样本数据以列向量形式存储,维数m*n2

% m对应样本(列)向量维数,n2对应该类样本数目

% 中间变量:

% Sw_C1 第1类的类内离散度矩阵,维数m*n1,Sw_C1=Σ(Class1(i)-MeanC1)*(Class1(i)-MeanC1)'

% Sw_C2 第2类的类内离散度矩阵,维数m*n2,Sw_C2=Σ(Class2(i)-MeanC2)*(Class2(i)-MeanC2)'

% 输出参数:

% W Fisher变换向量,维数m*1,W=inv(Sw)*(MeanC1-MeanC2)=Sw\(MeanC1-MeanC2)

% 对于新样本(列)向量X,有y=W'*X(列向量样本经变换后为1维常数)% MeanC1 第1类对应的均值(列)向量

% MeanC2 第2类对应的均值(列)向量

% Sw 总体的类内离散度矩阵,维数m*m,Sw = Sw_C1 +Sw_C2

% Sb 总体的类间离散度矩阵,维数m*m,Sb = (MeanC1-MeanC2)*(MeanC1-MeanC2)'

% CountC 存储了两类训练数据的样本数目,CountC=[n1 n2]

%初始化

[m1,n1] = size(Class1); %m=m1对应样本(列)向量维数,n1对应该类样本数目

[m2,n2] = size(Class2); %m=m2对应样本(列)向量维数,n2对应该类样本数目

if m1~=m2

disp('Input error!');

return;

end

m = m1;

CountC = [n1 n2];

%求取各类的均值列向量MeanC1、MeanC2,以及类内离散度矩阵

MeanC1 = mean(Class1,2); %样本数据以列向量形式存储

MeanC2 = mean(Class2,2);

STemp_C1 = zeros(m,n1);

STemp_C2 = zeros(m,n2);

for i=1:m

STemp_C1(i,:) = Class1(i,:) - MeanC1(i);

STemp_C2(i,:) = Class2(i,:) - MeanC2(i);

end

Sw_C1 = STemp_C1*STemp_C1'; %第1类的类内离散度矩阵,维数m*n1 Sw_C2 = STemp_C2*STemp_C2'; %第2类的类内离散度矩阵,维数m*n2 Sw = Sw_C1 +Sw_C2; %总类内离散度矩阵,维数m*m Sb = ( MeanC1 - MeanC2 )*( MeanC1 - MeanC2 )';

% 计算Fisher变换矩阵

W = Sw \ ( MeanC1 - MeanC2 );

数字图像处理MATLAB函数源代码

数字图像处理MATLAB函数源代码MATLAB函数源代码 function varargout = DIP(varargin) % DIP MATLAB code for DIP.fig % DIP, by itself, creates a new DIP or raises the existing % singleton*. % % Edit the above text to modify the response to help DIP % Last Modified by GUIDE v2.5 27-May-2012 11:43:05 gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @DIP_OpeningFcn, ... 'gui_OutputFcn', @DIP_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end

Fisher判别分析原理详解

Fisher判别分析原理详解 说起Fisher判别分析,不得不提到一个大神级人物! Ronald Aylmer Fisher (1890~1962) 英国统计学家和遗传学家 主要著作有:《根据孟德尔遗传方式的亲属间的相关》、《研究者用的统计方法》、《自然选择的遗传理论》、《试验设计》、《近交的理论》及《统计方法和科学推理》等。他一生在统计生物学中的功绩是十分突出的。 ?生平 1890年2月17日生于伦敦,1962年7月29日卒于澳大利亚阿德莱德。 1912年毕业于剑桥大学数学系,后随英国数理统计学家J.琼斯进修了一年统计力学。他担任过中学数学教师,1918年任罗坦斯泰德农业试验站统计试验室主任。 1933年,因为在生物统计和遗传学研究方面成绩卓著而被聘为伦敦大学优生学教授。 1943年任剑桥大学遗传学教授。

1957年退休。 1959年去澳大利亚,在联邦科学和工业研究组织的数学统计部作研究工作。 大神解决的问题 ?Fisher 线性判别函数的提出: 在用统计方法进行模式识别时,许多问题涉及到维数,在低维空间可行的方法,在高维空间变得不可行。因此,降低维数就成为解决实际问题的关键。Fisher 的方法,就是解决维数压缩问题。 对xn的分量做线性组合可得标量 yn=wTxn,n=1,2,…,Ni 得到N个一维样本yn组成的集合。从而将多维转换到了一维。 考虑把d维空间中的数据点投影到一条直线上去的问题,需要解决的两个问题: (1)怎样找到最好的投影直线方向;(2)怎样向这个方向实现投影,这个投影变 换就是要寻求的解向量w*。这两个问题就是Fisher方法要解决的基本问题。?判别分析的一些基本公式 Fisher判别分析用于两类或两类以上间的判别,但常用于两类间判别。 Fisher判别函数表达式(多元线性函数式): 判别函数的系数是按照组内差异最小和组间差异最大同时兼顾的原则来确定判别函数的。 Fisher判别准则: 判别临界点: Fisher判别分析思想: 1. 类间差异大,类内变异小, 最大 2. 方差分析的思想:以下值最大 ?Fisher判别的原理 分析w1方向之所以比w2方向优越,可以归纳出这样一个准则,即向量w的方向选择应能使两类样本投影的均值之差尽可能大些,而使类内样本的离散程度尽可能小。这就是Fisher准则函数的基本思路。如下图:

模式识别最近邻和fisher分类matlab实验报告

一、Fisher 线性判别 Fisher 线性判别是统计模式识别的基本方法之一。它简单,容易实现,且计算量和存储量小,是实际应用中最常用的方法之一。Fisher 判别法Fisher 在1936年发表的论文中首次提出的线性判别法。Fisher 判别法的基本思想是寻找一个最好的投影,当特征向量x 从d 维空间映射到这个方向时,两类能最好的分开。这个方法实际上涉及到特征维数的压缩问题。 一维空间的Fisher 线性判别函数为: 2 1212 ()()F m m J w S S -= + (1) i m = ∑x N 1,i=1,2 (2) 2,1,)()(=--=∑∈i m x m x S T i x i i i ξ (3) 其中,1m 和2m 是两个样本的均值,1S ,2S 分别为各类样本的的类内离散度。投影方向w 为: )(211 m m S w w -=- (4) 12w S S S =+ (5) 在Fisher 判决函数中,分子反应了映射后两类中心的距离平方,该值越大,类间可分性越好;分母反应了两类的类内的离散度,其值越小越好;从总体上讲,()F J w 的值越大越好,在这种可分性评价标准下,使()F J w 达到最大值的w 即为最佳投影方向。

1.1、 Fisher线性判别实验流程图

1.2 Fisher线性判别mtalab代码 data=importdata('C:\Users\zzd\Desktop\data-ch5.mat'); data1=data.data; data2=https://www.wendangku.net/doc/8d16071168.html,bel; sample1=data1(1:25,:); sample2=data1(51:75,:); sample=[sample1 sample2]; sp_l=data2(26:75); test1=data1(26:50,:); test2=data1(76:100,:); test=[test1 test2]; lth=zeros(50,50); sample_m1=mean(sample1); sample_m2=mean(sample2); m1=sample_m1'; m2=sample_m2'; sb=(m1-m2)*(m1-m2)'; s1=zeros(2); for n=1:25 temp = (sample1(n,:)'-m1)*(sample1(n,:)'-m1)'; s1=s1+temp; end; s2=zeros(2); for n=1:25 temp = (sample2(n,:)'-m2)*(sample2(n,:)'-m2)'; s2 = s2+temp; end; sw=s1+s2; vw=inv(sw)*(m1-m2); a_m1 = vw'*m1; a_m2 = vw'*m2; w0 = (a_m1+a_m2)/2;

数字图像处理及matlab实现源代码【1】

% *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* %{ % (一)图像文件的读/写 A=imread('drum.jpg'); % 读入图像 imshow(A); % 显示图像 imwrite(A,'drum.jpg'); info=imfinfo('drum.jpg') % 查询图像文件信息 % 用colorbar函数将颜色条添加到坐标轴对象中 RGB=imread('drum.jpg'); I=rgb2gray(RGB); % 把RGB图像转换成灰度图像 h=[1 2 1;0 0 0;-1 -2 -1]; I2=filter2(h,I); imshow(I2,[]); colorbar('vert') % 将颜色条添加到坐标轴对象中 % wrap函数将图像作为纹理进行映射 A=imread('4.jpg'); imshow(A); I=rgb2gray(RGB); [x,y,z]=sphere; warp(x,y,z,I); % 用warp函数将图像作为纹理进行映射 %} % subimage函数实现一个图形窗口中显示多幅图像 RGB=imread('drum.jpg'); I=rgb2gray(RGB); subplot(1,2,1); subimage(RGB); % subimage函数实现一个图形窗口中显示多幅图像subplot(1,2,2),subimage(I); % *-*--*-*-*-*-*-*-*-*-*-*-*图像处理*-*-*-*-*-*-*-*-*-*-*-* % (二)图像处理的基本操作 % ----------------图像代数运算------------------ %{ % imadd函数实现两幅图像的相加或给一幅图像加上一个常数 % 给图像每个像素都增加亮度 I=imread('4.jpg'); J=imadd(I,100); % 给图像增加亮度 subplot(1,2,1),imshow(I);title('原图'); subplot(1,2,2),imshow(J);title('增加亮度图'); % % imsubtract函数实现将一幅图像从另一个图像中减去或减去一个常数I=imread('drum.jpg'); J=imsubtract(I,100); % 给图像减去亮度 subplot(1,2,1),imshow(I);

Fisher判别分析

对案例中小企业的破产模型做Fisher判别分析 江义114113001059 一问题:对企业的运行状态利用Fisher判别进行分类 选取四个经济指标用于判断企业处于破产状态还是正常运行状态,具体数据如下,其中类别1表示破产状态,类别2表示正常运行状态 X1总负债率X2收益率指 标 X3短期 支付能 力 X4生产 效率指 标 类别 -0.45 -0.41 1.09 0.45 1 -0.56 -0.31 1.51 0.16 1 0.06 0.02 1.01 0.4 1 -0.07 -0.09 1.45 0.26 1 0.38 0.11 3.27 0.55 2 0.19 0.05 2.25 0.33 2 0.32 0.07 4.24 0.63 2 0.04 0.01 1.5 0.71 2 -0.06 -0.06 1.37 0.4 1 0.07 -0.01 1.37 0.34 2 -0.13 -0.14 1.42 0.44 1 0.15 0.06 2.23 0.56 2 0.16 0.05 2.31 0.2 2 0.29 0.06 1.84 0.38 带测定 0.54 0.11 2.33 0.48 带测定 二、程序如下:(R语言) > data=read.table("E:/bac/qiye.txt",header=T) > data1=c(rep(1,6),rep(2,7)) > data2=as.factor(data1) > data$class=data2 > attach(data) > names(data) [1] "X1" "X2" "X3" "X4" "class" > library(MASS) > data.lda=lda(class~X1+X2+X3+X4) > data.lda Call: lda(class ~ X1 + X2 + X3 + X4) Prior probabilities of groups: 1 2 0.4615385 0.5384615 Group means:

机器学习实验1-Fisher线性分类器设计

一、实验意义及目的 掌握Fisher分类原理,能够利用Matlab编程实现Fisher线性分类器设计, 熟悉基于Matlab算法处理函数,并能够利用算法解决简单问题。 二、算法原理 Fisher准则基本原理:找到一个最合适的投影周,使两类样本在该轴上投影之间的距离尽可能远,而每一类样本的投影尽可能紧凑,从而使分类效果为最佳。 内容: (1)尝试编写matlab程序,用Fisher线性判别方法对三维数据求最优方向w的通用函数(2)对下面表1-1样本数据中的类别w1和w2计算最优方向w (3)画出最优方向w 的直线,并标记出投影后的点在直线上的位置 (4)选择决策边界,实现新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类 三、实验内容 (1)尝试编写matlab程序,用Fisher线性判别方法对三维数据求最优方向w的通用函数程序清单: clc clear all %10*3样本数据 w1=[-0.4,0.58,0.089;-0.31,0.27,-0.04;-0.38,0.055,-0.035;-0.15,0.53,0.011;- 0.35,.47,0.034;0.17,0.69,0.1;-0.011,0.55,-0.18;-0.27,0.61,0.12;-0.065,0.49,0.0012;- 0.12,0.054,-0.063]; w2=[0.83,1.6,-0.014;1.1,1.6,0.48;-0.44,-0.41,0.32;0.047,-0.45,1.4;0.28,0.35,3.1;- 0.39,-0.48,0.11;0.34,-0.079,0.14;-0.3,-0.22,2.2;1.1,1.2,-0.46;0.18,-0.11,-0.49]; W1=w1';%转置下方便后面求s1

数字图像处理_旋转与幅度谱(含MATLAB代码)

数字图像处理实验一 15生医 一、实验内容 产生右图所示图像 f1(m,n),其中图像大小为256 ×256,中间亮条为128×32,暗处=0,亮处=100。 对其进行FFT: ①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图; ②若令f2(m,n)=(-1)^(m+n)f1(m,n),重复 以上过程,比较二者幅度谱的异同,简述理由; ③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的 幅度谱,并与FFT(f2)的幅度谱进行比较; ④若将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系; ⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。 二、运行环境 MATLAB R2014a 三、运行结果及分析 1.同屏显示原图f1(m,n)和FFT(f1)的幅度谱图:

50100150200250 100150200250 50100150200250 100150200250 2.令f2(m,n)=(-1)^(m+n )f1(m,n),对其进行FFT ,比较f2与f1幅度谱的异同,简述理由: 50100150200250 100150200250 50100150200250 100150200250 异同及理由:①空域:f2由于前边乘了系数(-1)^(m+n ),导致灰度值有正有负,而在MATLAB 的imshow 函数中默认把负值变为0(有些情况是取反),所以形成了如左图所示的黑白花纹。②频域:FFT(2)

matlab图像处理代码

附录 MATLAB图像处理命令  1.applylut  功能: 在二进制图像中利用lookup表进行边沿操作。 语法: A = applylut(BW,lut) 举例 lut = makelut('sum(x(:)) == 4',2); BW1 = imread('text.tif'); BW2 = applylut(BW1,lut); imshow(BW1) figure, imshow(BW2) 相关命令: makelut 2.bestblk  功能: 确定进行块操作的块大小。 语法: siz = bestblk([m n],k) [mb,nb] = bestblk([m n],k) 举例 siz = bestblk([640 800],72) siz = 64 50 相关命令: blkproc 3.blkproc  功能:

MATLAB 高级应用——图形及影像处理 320 实现图像的显式块操作。 语法: B = blkproc(A,[m n],fun) B = blkproc(A,[m n],fun,P1,P2,...) B = blkproc(A,[m n],[mborder nborder],fun,...) B = blkproc(A,'indexed',...) 举例 I = imread('alumgrns.tif'); I2 = blkproc(I,[8 8],'std2(x)*ones(size(x))'); imshow(I) figure, imshow(I2,[]); 相关命令: colfilt, nlfilter,inline 4.brighten  功能: 增加或降低颜色映像表的亮度。 语法: brighten(beta) newmap = brighten(beta) newmap = brighten(map,beta) brighten(fig,beta) 相关命令: imadjust, rgbplot 5.bwarea  功能: 计算二进制图像对象的面积。 语法: total = bwarea(BW) 举例 BW = imread('circles.tif'); imshow(BW);

Fisher线性判别分析实验(模式识别与人工智能原理实验1)

实验1 Fisher 线性判别分析实验 一、摘要 Fisher 线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。 Fisher 线性判别分析,就是通过给定的训练数据,确定投影方向W 和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。 二、算法的基本原理及流程图 1 基本原理 (1)W 的确定 各类样本均值向量mi 样本类内离散度矩阵i S 和总类内离散度矩阵 w S [ 12w S S S =+ 样本类间离散度矩阵b S 在投影后的一维空间中,各类样本均值T i i m '= W m 。样本类内离散度和总类内离散度 T T i i w w S ' = W S W S ' = W S W 。样本类间离散度T b b S ' = W S W 。 Fisher 准则函数满足两个性质: ·投影后,各类样本内部尽可能密集,即总类内离散度越小越好。 ·投影后,各类样本尽可能离得远,即样本类间离散度越大越好。 根据这个性质确定准则函数,根据使准则函数取得最大值,可求出W : -1w 12W = S (m - m ) 。 (2)阈值的确定 实验中采取的方法:012y = (m ' + m ') / 2。 \ T x S (x m )(x m ), 1,2 i i i i X i ∈= --=∑T 1212S (m m )(m m )b =--

(3)Fisher线性判别的决策规则 对于某一个未知类别的样本向量x,如果y=W T·x>y0,则x∈w1;否则x∈w2。 2 流程图 方差标准化(归一化处理) 一个样本集中,某一个特征的均值与方差为: 归一化: 三、实验要求 寻找数据进行实验,并分析实验中遇到的问题和结论,写出实验报告。

数字图像处理matlab代码

一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。 1、不同滤波器的频域降噪 1.1 理想低通滤波器(ILPF) I1=imread('eight.tif'); %读取图像 I2=im2double(I1); I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1); imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2); imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像'); s=fftshift(fft2(I4)); %将灰度图像的二维不连续Fourier 变换的零频率成分 移到频谱的中心 [M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 d0=40; %初始化d0 for i=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况 h=1; %通带变换函数 else %点(i,j)在阻带内的情况 h=0; %阻带变换函数 end s(i,j)=h*s(i,j); %ILPF滤波后的频域表示

end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复 数的实部转化为无符号8位整数 subplot(1,3,3); %创建图形图像对象 imshow(s); %显示ILPF滤波后的图像 title('ILPF滤波后的图像(d=40)'); 运行结果: 1.2 二阶巴特沃斯低通滤波器(BLPF) I1=imread('eight.tif'); %读取图像 I2=im2double(I1); I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1); imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2); imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像'); s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分 移到频谱的中心 [M,N]=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值

FISHER线性判别MATLAB实现

Fisher线性判别上机实验报告 班级: 学号: 姓名:

一.算法描述 Fisher 线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,同时变换后的一维数据满足每一类内部的样本尽可能聚集在一起,不同类的样本相隔尽可能地远。 Fisher 线性判别分析,就是通过给定的训练数据,确定投影方向W 和阈值w0, 即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。 线性判别函数的一般形式可表示成0)(w X W X g T += 其中 ????? ??=d x x X 1 ?????? ? ??=d w w w W 21 Fisher 选择投影方向W 的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。 如下为具体步骤: (1)W 的确定 样本类内离散度矩阵i 和总类内离散度矩阵w S 12w S S S =+ T x S (x m )(x m ), 1,2 i i i i X i ∈= --=∑

样本类间离散度矩阵b S 在投影后的一维空间中,各类样本均值T i i m '= W m 样本类内离散度和总类内离散度 T T i i w w S ' = W S W S ' = W S W 样本类间离散度T b b S ' = W S W Fisher 准则函数为 max 22 212 21~~)~~()(S S m m W J F +-= (2)阈值的确定 w 0 是个常数,称为阈值权,对于两类问题的线性分类器可以采用下属决策规则: 令) ()()(2 1 x x x g g g -=则: 如果g(x)>0,则决策w x 1∈;如果g(x)<0,则决策w x 2∈;如果g(x)=0,则可将x 任意分到某一类,或拒绝。 (3)Fisher 线性判别的决策规则 Fisher 准则函数满足两个性质: 1.投影后,各类样本内部尽可能密集,即总类内离散度越小越好。 2.投影后,各类样本尽可能离得远,即样本类间离散度越大越好。 根据这个性质确定准则函数,根据使准则函数取得最大值,可求出 W :-1w 12W = S (m - m ) 。 这就是Fisher 判别准则下的最优投影方向。 最后得到决策规则 若 P P m m w w w x x g T ) ()(2112 log ))(21()(大于或小于+-=,则 {1 2w w x ∈ T 1212S (m m )(m m ) b =--

图像处理实例(含Matlab代码)

信号与系统实验报告——图像处理 学院:信息科学与工程学院 专业:2014级通信工程 组长:** 组员:** 2017.01.02

目录 目录 (2) 实验一图像一的细胞计数 (3) 一、实验内容及步骤 (3) 二、Matlab程序代码 (3) 三、数据及结果 (4) 实验二图像二的图形结构提取 (5) 一、实验内容及步骤 (5) 二、Matlab程序代码 (5) 三、数据及结果 (6) 实验三图像三的图形结构提取 (7) 一、实验内容及步骤 (7) 二、Matlab程序代码 (7) 三、数据及结果 (8) 实验四图像四的傅里叶变化及巴特沃斯低通滤波 (9) 一、实验内容及步骤 (9) 二、Matlab程序代码 (9) 三、数据及结果 (10) 实验五图像五的空间域滤波与频域滤波 (11) 一、实验内容及步骤 (11) 二、Matlab程序代码 (11) 三、数据及结果 (12)

实验一图像一的细胞计数 一、实验内容及步骤 将该图形进行一系列处理,计算得到途中清晰可见细胞的个数。 首先,由于原图为RGB三色图像处理起来较为麻烦,所以转为灰度图,再进行二值化化为黑白图像,得到二值化图像之后进行中值滤波得到细胞分布的初步图像,为了方便计数对图像取反,这时进行一次计数,发现得到的个数远远多于实际个数,这时在进行一次中值滤波,去掉一些不清晰的像素点,剩下的应该为较为清晰的细胞个数,再次计数得到大致结果。 二、Matlab程序代码 clear;close all; Image = imread('1.jpg'); figure,imshow(Image),title('原图'); Image=rgb2gray(Image); figure,imshow(Image),title('灰度图'); Theshold = graythresh(Image); Image_BW = im2bw(Image,Theshold); Reverse_Image_BW22=~Image_BW; figure,imshow(Image_BW),title('二值化图像'); Image_BW_medfilt= medfilt2(Image_BW,[3 3]); figure,imshow(Image_BW_medfilt),title('中值滤波后的二值化图像'); Reverse_Image_BW = ~Image_BW_medfilt; figure,imshow(Reverse_Image_BW),title('图象取反'); Image_BW_medfilt2= medfilt2(Reverse_Image_BW,[20 20]); figure,imshow(Image_BW_medfilt2),title('第二次中值滤波的二值化图像'); [Label, Number]=bwlabel(Image_BW_medfilt,8);Number [Label, Number]=bwlabel(Image_BW_medfilt2,8);Number

图像处理matlab源程序

图像处理matlab源程序

1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1); %图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on; %显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]); axis on; %显示坐标系 J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1]

subplot(2,2,3),imshow(J); title('线性变换图像[0.1 0.5]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1] subplot(2,2,4),imshow(K); title('线性变换图像[0.3 0.7]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 3.非线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); I1=rgb2gray(I); subplot(1,2,1),imshow(I1); title('灰度图像'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 J=double(I1);

Fisher线性判别

3·4 Fisher线性判别 多维 T Fisher变换 T 利于分类的一维 对于线性判别函数 ( 3-4-1) 可以认为是矢量在以为方向的轴上的投影的倍。这里, 视作特征空间中的以为分量的一个维矢量 希望所求的使投影后,同类模式密聚,不同类模式相距较远。 求权矢量T 求满足上述目标的投影轴的方向和在一维空间中确定判别规则。 从另一方面讲,也是降维,特征提取与选择等问题的需要。(R.A.Fisher,1936) 下面我们用表示待求的。 图 (3-4-1) 二维模式向一维空间投影示意图 (1)Fisher准则函数 对两类问题,设给定维训练模式,其中有个和个模式分属 类和类。为方便,各类的模式又可分别记为和,于是,各类模式均值矢量为 ( 3-4-2) 各类类内离差阵和总的类内离差阵分别为 ( 3-4-3) ( 3-4-4) 我们取类间离差阵为

( 3-4-5) 作变换,维矢量在以矢量为方向的轴上进行投影 ( 3-4-6) 变换后在一维空间中各类模式的均值为 ( 3-4-7) 类内离差度和总的类内离差度为 ( 3-4-8) ( 3-4-9) 类间离差度为 ( 3-4-10) 我们希望经投影后,类内离差度越小越好,类间离差度越大越好,根据这个目标作准则函数 ( 3-4-11) 称之为Fisher准则函数。我们的目标是,求使最大。 (2)Fisher变换 将标量对矢量微分并令其为零矢量,注意到的分子、分母均为标量,利用二次型关于矢量微分的公式可得 ( 3-4-12) 令 可得 当时,通常是非奇异的,于是有

( 3-4-13) 上式表明是矩阵相应于本征值的本征矢量。对于两类问题,的秩为1,因此 只有一个非零本征值,它所对应的本征矢量称为Fisher最佳鉴别矢量。由式( 3-4-13)有 ( 3-4-14) 上式右边后两项因子的乘积为一标量,令其为,于是可得 式中为一标量因子。这个标量因子不改变轴的方向,可以取为1,于是有 ( 3-4-15) 此时的是使Fisher准则函数取最大值时的解,即是维空间到一维空间投影轴的最佳方向, ( 3-4-16) 称为Fisher变换函数。至此可以说解决了将维模式的分类转变为一维模式分类的问题。(3)Fisher判别规则 由于变换后的模式是一维的,因此判别界面实际上是各类模式所在轴上的一个点。可以根据训练模式确定一个阈值,Fisher判别规则为 ( 3-4-17) 判别阈值可取两个类心在方向上轴的投影的连线的中点作为阈值,即 ( 3-4-18) 容易得出 ( 3-4-19) 显然,这里是和连线的中点。 当考虑类的先验概率时,、应取下面的定义 ( 3-4-20)

matlab数字图像处理源代码

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响 到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果 l=imread('C:\Documents and 桌面\1.gif');% 读取图像

J=imnoise(l,'gaussian',0,0.005);% 加入均值为0 ,方差为 0.005 的高斯噪声subplot(2,3,1);imshow(l); title(' 原始图像'); subplot(2,3,2); imshow(J); ti tle('加入高斯噪声之后的图像’); %采用MATLAB 中的函数filter2 对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; % 模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5 K3=filter2(fspecial('average',7),J)/255; % 模板尺寸为7 K4= filter2(fspecial('average',9),J)/255; % 模板尺寸为9 subplot(2,3,3);imshow(K1); ti tle(' 改进后的图像1'); subplot(2,3,4); imshow(K2); title(' 改进后的图像2'); subplot(2,3,5);imshow(K3); title(' 改进后的图像3'); subplot(2,3,6);imshow(K4); title(' 改进后的图像4');

Fisher线性判别分析实验(模式识别与人工智能原理实验1)

实验1 Fisher 线性判别分析实验 一、摘要 Fisher 线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。 Fisher 线性判别分析,就是通过给定的训练数据,确定投影方向W 和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。 二、算法的基本原理及流程图 1 基本原理 (1)W 的确定 各类样本均值向量mi 样本类内离散度矩阵i S 和总类内离散度矩阵w S 12w S S S =+ 样本类间离散度矩阵b S 在投影后的一维空间中,各类样本均值T i i m '= W m 。样本类内离散度和总类内离散度 T T i i w w S ' = W S W S ' = W S W 。样本类间离散度T b b S ' = W S W 。 Fisher 准则函数满足两个性质: ·投影后,各类样本内部尽可能密集,即总类内离散度越小越好。 ·投影后,各类样本尽可能离得远,即样本类间离散度越大越好。 根据这个性质确定准则函数,根据使准则函数取得最大值,可求出W : -1w 12W = S (m - m ) 。 (2)阈值的确定 实验中采取的方法:012y = (m ' + m ') / 2。 (3)Fisher 线性判别的决策规则 对于某一个未知类别的样本向量x ,如果y=W T ·x>y0,则x ∈w1;否则x ∈w2。 x 1 m x, 1,2 i i X i i N ∈= =∑T x S (x m )(x m ), 1,2 i i i i X i ∈= --=∑T 1212S (m m )(m m )b =--

最常用的matlab图像处理的源代码

最常用的一些图像处理Matlab源代 码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白噪声和椒盐噪声的影响 #6:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 #7:采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 #8:图像的自适应魏纳滤波 #9:运用5种不同的梯度增强法进行图像锐化 #10:图像的高通滤波和掩模处理 #11:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理 #12:利用巴特沃斯(Butterworth)高通滤波器对受噪声干扰的图像进行平滑处理 1.数字图像矩阵数据的显示及其傅立叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f, 'notruesize'); F=fft2(f,256,256); % 快速傅立叶变换算法只能处矩阵维数为2的幂次,f矩阵不 % 是,通过对f矩阵进行零填充来调整 F2=fftshift(F); % 一般在计算图形函数的傅立叶变换时,坐标原点在 % 函数图形的中心位置处,而计算机在对图像执行傅立叶变换 % 时是以图像的左上角为坐标原点。所以使用函数fftshift进 %行修正,使变换后的直流分量位于图形的中心; figure,imshow(log(abs(F2)),[-1 5],'notruesize');

2 二维离散余弦变换的图像压缩I=imread('cameraman.tif'); % MATLAB自带的图像imshow(I); clear;close all I=imread('cameraman.tif'); imshow(I); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8], 'P1*x*P2',T,T'); Mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',Mask); % 此处为点乘(.*) I2=blkproc(B2,[8 8], 'P1*x*P2',T',T); figure,imshow(I2); % 重建后的图像 3.采用灰度变换的方法增强图像的对比度I=imread('rice.tif'); imshow(I); figure,imhist(I); J=imadjust(I,[0.15 0.9], [0 1]); figure,imshow(J); figure,imhist(J);

模式识别 Fisher线性判别实验

实验三 Fisher 线性判别实验 姓名:徐维坚 学号:2220103484 日期:2012/7/7 一、实验目的: 1)加深对Fisher 线性判别的基本思想的认识和理解。 2)编写实现Fisher 线性判别准则函数的程序。 二、实验原理: 1.基本原理: 一般情况下,我们总可以找到某个方向,使得这个方向的直线上,样本的投影能分开的最好,而Fisher 法所要解决的基本问题就是找到这条最好的、最易于分类的投影线。 先从d 维空间到一维空间的一维数学变换方法。假设有一集合X 包含N 个d 维样本 N x x x ,...,,21,其中1N 个属于1ω类的样本记为子集1X ,2N 个属于2ω类的样本记为2X 。 若对N x 的分量做线性组合可得标量 n T n x w y =,i N n ,...,2,1= 这样便得到N 个一维样本n y 组成的集合,并可分为两个子集1Y 和2Y 。w 的绝对值是无关紧要的,它仅使n y 乘上一个比例因子,重要的是选择w 的方向,从而转化为寻找最好的投影方向* w ,是样本分开。 2.基本方法: 先定义几个基本参量: (1)各类样本均值向量i m 2,1,1== ∑∈i x N m i X x i (2)样本类内离散度矩阵i S 和总类内离散度矩阵ωS 2,1,) )((=--= ∑∈i m x m x S i X x T i i i 21S S S +=ω (3)样本类间离散度矩阵b S T b m m m m S ))((2121--= 我们希望投影后,在低维空间里个样本尽可能的分开些,即希望两类均值)(21m m -越大越

好,同时希望各类样本内部尽量密集,即i S 越小越好。因此,我们定义Fisher 准则函数为 2 12 21)()(S S m m w J F +-= 但)(w J F 不显含w ,因此必须设法将)(w J F 变成w 的显函数。 由式子 i T X x i T X x T i Y y i i m w x N w x w N y N m i i i === = ∑ ∑∑∈∈∈)1( 11 w S w w m m m m w m w m w m m b T T T T T =--=-=-))(()()(2121221221 w S w w m x m x w m w x w m y S i T T i i T Y y i T T Y y i i i i =--=-=-=∑∑∈∈))(()()(22 从而得到 w S w w S w w J T b T F ω=)(, 采用Lagrange 乘子法求解它的极大值* w )(),(c w S w w S w w L T b T --=ωλλ 对其求偏导,得0**=-w S w S b ωλ,即 **w S w S b ωλ= 从而我们很容易得到 *21211 *1*)(,)()(w m m R R m m S w S S w T b -=-==--其中ωωλ )(211 *m m S R w -= -ωλ 忽略比例因子λ/R ,得 )(211 *m m S w -=-ω 这就是我们Fisher 准则函数)(w J F 取极大值时的解。 三、实验内容: 依据实验基本原理和基本方法,对下面表3-1样本数据中的类别1ω和2ω计算最优方向 w ,画出最优方向w 的直线,并标记出投影后的点在直线上的位置。选择决策边界,实现 新样本xx1=(-0.7,0.58,0.089),xx2=(0.047,-0.4,1.04)的分类。 设某新类别3ω数据如表3-2所示,用自己的函数求新类别3ω分别和1ω、2ω分类的投

相关文档
相关文档 最新文档