模式识别 大作业

发布 2021-03-07 07:21:28 阅读 3466

姓名; 学号: 班级:

对于高斯低通滤波器: (其中),证明其拉普拉斯算子的均值为零(即)。

e(h)=

u=ru’=1

v’=-r v=-

所以e(h)= r|)+

-r|)=0

1. 256x256大小的灰度图像lena (lena_每个像素的灰度用8bit量化(即量化为256个灰度级),现将每像素灰度改用4bit(即用16个灰度级)量化,给出重新量化后的图像和灰度分布直方图,及其均衡化后的图像和直方图(并matlab**)。

matlab**如下:

>a=imread(‘f:\大 3\模式识别\本科学习资料\patternrecognition\第一讲\lena_256’,’tif’);

读入lena_256**。

>[m,n]=size(a求lena**的大小(指的是**矩阵的行数和列数)

>b=zeros(m,n生成一个m*n零矩阵。

>b=(a-rem(a,16))/16; %量化计算。

>imshow(b显示4bit量化的lena**。

>imhist(b16级的lena**的灰度直方图。

>g=hesteq(b,16均衡化。

>imshow(g显示均衡化的**。

>imhist(b把4级**均衡化以后的灰度分布直方图。

图1: 4bit 量化(跟8bit图对比)

图2: 4bit 量化后图像的灰度分布直方图。

图3:4bit 量化后均衡化的图像。

图4: 4bit 量化后图像均衡化的灰度分布直方图。

2. 给出图像“的频谱图像及用高斯高通滤波器滤波后的图像,及matlab实现**(d0分别取30和100)。

matlab**如下:

求频谱图**如下;

>a=imread('f:\大 3\模式识别\本科学习资料\patternrecognition\第一讲\a','tif');

>[u,v]=size(a读取读入的图像矩阵行数和列数。

> f=fft2(a,u,v计算所读入的图像的二维dft

> figure,imshow(log(1+abs(fftshift(f输出计算后得出的图像。

图5: 读入的图像的频谱图。

用高斯高通滤波器来滤波图像过程的**:

为了滤波定义几个函数(在m-file 编辑器里执行)

函数paddedsize定义。

function pq=paddedsize(ab,cd,param)

if nargin==1

pq=2*ab;

elseif nargin==2&~ischar(cd)

pq=ab+cd-1;

pq=2*ceil(pq/2);

elseif nargin==2

m=max(ab);

p=2^nextpow2(2*m);

pq=[p,p];

elseif nargin==3

m=max([ab cd]);

p=2^nextpow2(2*m);

pq=[p,p];

elseerror('wrong number of inputs.')

end函数dftfilt定义。

function g=dftfilt(f,h)

f=fft2(f,size(h,1),size(h,2));

g=real(ifft2(h.*f));

g=g(1:size(f,1),1:size(f,2));

函数dftuv定义。

function [u,v]=dftuv(m,n)

u=0:(m-1);

v=0:(n-1);

idx=find(u>m/2);

u(idx)=u(idx)-m;

idy=find(v>n/2);

v(idy)=v(idy)-n;

v,u]=meshgrid(v,u);

函数hpfilter定义。

function h=hpfilter(type,m,n,d0,n)

if nargin==4

n=1;end

hlp=lpfilter(type,m,n,d0,n);

h=1-hlp;

函数lpfilter定义。

function[h,d]=lpfilter(type,m,n,d0,n)

u,v]=dftuv(m,n);

d=sqrt(u.^2+v.^2);

switch type

case 'ideal'

h=double(d<=d0);

case 'btw'

if nargin==4

n=1;end

h=1./(1+(d./d0).^2*n));

case'gaussian'

h=exp(-(d.^2)./2*(d0^2)))

otherwise

error('unknown filter type.')

end主要滤波过程**如下。

f=imread('f:\大 3\模式识别\本科学习资料\patternrecognition\第一讲\a','tif’);

pq=paddedsize(size(f));

u,v]=dftuv(pq(1),pq(2));

d0=30;

h=hpfilter('gaussian',pq(1),pq(2),d0);

g=dftfilt(f,h);

imshow(g,

d0=100;

h=hpfilter('gaussian',pq(1),pq(2),d0);

g=dftfilt(f,h);

imshow(g,

图6: d0=30 时候滤波效果图7: d0=100 时候滤波效果。

3. 对x射线胸部**“给出你认为高频强调滤波处理后最好的实验结果及matlab实现**。

matlab**如下。

函数gscale的定义如下。

function g=gscale(f,varargin)

if length(varargin)==0

method='full8';

else method=varargin;

endif strcmp(class(f),'double')&max(f(:)1 | min(f(:)0)

f=mat2gray(f);

endswitch method

case 'full8'

g=im2uint8(mat2gray(double(f)))

case 'full16'

g=im2uint16(mat2gray(double(f)))

case 'minmax'

low = varargin;high = varargin;

if low>1 | low<0 |high>1 | high<0

error('parameters low and high must be in the range [0,1]')

endif strcmp(class(f),'double')

low_in=min(f(:)

high_in=max(f(:)

elseif strcmp(class(f),'uint8')

low_in=double(min(f(:)255;

high_in=double(max(f(:)255;

elseif strcmp(class(f),'uint16')

low_in=double(min(f(:)65535;

high_in=double(max(f(:)65535;

endg=imadjust(f,[low_in high_in],[low high]);

otherwise

error('unknown method')

end我选择了 d0=50;

主要运算过程**如下:

f=imread('d:\my documents\模式识别\')

pq=paddedsize(size(f));

d0=50;

hbw=hpfilter('btw',pq(1),pq(2),d0,2);

h=.5+2*hbw;

gbw=dftfilt(f,h);

gbw=gscale(gbw);

imshow(gbw);

图8: 实验结果。

模式识别大作业

一。问题重述。利用fisher线性判别法和最近邻算法对sonar数据进行分类,并得出正确率。二。fisher线性判别法思路。用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值t,带入测试样本得到投影点y,将y与t相比,即可进行分类判别。2.1 fisher准则函数中的基本...

模式识别大作业

作业1 用身高和 或体重数据进行性别分类 一 基本要求 用和的数据作为训练样本集,建立bayes分类器,用测试样本数据对该分类器进行测试。调整特征 分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。具体做法 1 应用单个特征进行实验 以 a 身高或者 b 体重数...

模式识别大作业

一 题目。对sonar和wdbc中数据 如表1所示 进行分类,并将实验结果填入表2。不降维方法用邻近法,降维用fisher判别 表1 实验数据。表2实验结果 准确率 二 fisher线性判别法。fisher线性判别分析的基本思想 通过寻找一个投影方向 线性变换,线性组合 将高维问题降低到一维问题来解...