姓名; 学号: 班级:
对于高斯低通滤波器: (其中),证明其拉普拉斯算子的均值为零(即)。
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线性判别分析的基本思想 通过寻找一个投影方向 线性变换,线性组合 将高维问题降低到一维问题来解...