哈工程模式识别实验

  • 格式:doc
  • 大小:693.00 KB
  • 文档页数:24

实验一、 图像的贝叶斯分类一、实验目的将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。

二、实验仪器设备及软件HP D538、MA TLAB 三、实验原理阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。

并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。

此过程中,确定阈值是分割的关键。

对一般的图像进行分割处理通常对图像的灰度分布有一定的假设,或者说是基于一定的图像模型。

最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。

而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。

类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。

上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。

这时如用全局阈值进行分割必然会产生一定的误差。

分割误差包括将目标分为背景和将背景分为目标两大类。

实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。

这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。

图像的直方图可以看成是对灰度值概率分布密度函数的一种近似。

如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。

如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。

假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可以使用模式识别中的最小错分概率贝叶斯分类器来解决。

以1p 与2p 分别表示目标与背景的灰度分布概率密度函数,1P 与2P 分别表示两类的先验概率,则图像的混合概率密度函数可用下式表示1122()()()p x P p x P p x =+式中1p 和2p 分别为2121()21()x p x μσ--=2222()22()x p x μσ--=121P P +=1σ、2σ是针对背景和目标两类区域灰度均值1μ与2μ的标准差。

若假定目标的灰度较亮,其灰度均值为2μ,背景的灰度较暗,其灰度均值为1μ,因此有12μμ<现若规定一门限值T 对图像进行分割,势必会产生将目标划分为背景和将背景划分为目标这两类错误。

通过适当选择阈值T ,可令这两类错误概率为最小,则该阈值T 即为最佳阈值。

把目标错分为背景的概率可表示为12()()TE T p x dx -∞=⎰把背景错分为目标的概率可表示为21()()TE T p x dx +∞=⎰总的误差概率为2112()()()E T P E T PE T =+为求得使误差概率最小的阈值T ,可将()E T 对T 求导并令导数为零,可得1122()()P p T P p T =代换后,可得221212222111()()ln 22P T T P σμμσσσ---=-此时,若设12σσσ==,则有2122121ln 2P T P μμσμμ⎛⎫+=+ ⎪-⎝⎭若还有12P P =的条件,则122T μμ+=这时的最优阈值就是两类区域灰度均值1μ与2μ的平均值。

上面的推导是针对图像灰度值服从正态分布时的情况,如果灰度值服从其它分布,依理也可求出最优阈值来。

一般情况下,在不清楚灰度值分布时,通常可假定灰度值服从正态分布。

因此,本课题中亦可使用此方法来求得最优阈值,来对实验图像进行分割。

1.3.2 最优阈值的迭代算法在实际使用最优阈值进行分割的过程中,需要利用迭代算法来求得最优阈值。

设有一幅数字图像(,)f x y ,混有加性高斯噪声,可表示为(,)(,)(,)g x y f x y n x y =+此处假设图像上各点的噪声相互独立,且具有零均值,如果通过阈值分割将图像分为目标与背景两部分,则每一部分仍然有噪声点随机作用于其上,于是,目标1(,)g x y 和2(,)g x y 可表示为11(,)(,)(,)g x y f x y n x y =+ 22(,)(,)(,)g x y f x y n x y =+迭代过程中,会多次地对1(,)g x y 和2(,)g x y 求均值,则111{(,)}{(,)(,)}{(,)}E g x y E f x y n x y E f x y =+= 222{(,)}{(,)(,)}{(,)}E g x y E f x y n x y E f x y =+=可见,随着迭代次数的增加,目标和背景的平均灰度都趋向于真实值。

因此,用迭代算法求得的最佳阈值不受噪声干扰的影响。

利用最优阈值对实验图像进行分割的迭代步骤为: (1)确定一个初始阈值0T ,0T 可取为min max02S S T +=式中,min S 和max S 为图像灰度的最小值和最大值。

(2)利用第k 次迭代得到的阈值将图像分为目标1R 和背景2R 两大区域,其中1{(,)|(,)}k R f x y f x y T =≥ 2{(,)|0(,)}k R f x y f x y T =<<(3)计算区域1R 和2R 的灰度均值1S 和2S 。

(4)计算新的阈值1k T +,其中1212k S S T ++=(5)如果1||k k T T +-小于允许的误差,则结束,否则1k k =+,转步骤(2)。

利用迭代法求得最优阈值后,仍需进行一些人工调整才能将此阈值用于实验图像的分割,这是因为,这种最优阈值仍然属于全局阈值,它利用了图像中所有像素点的信息,但当光照不均匀时,图像中部分区域的灰度值可能差距较大,造成计算出的最优阈值分割效果不理想,此时,可设一人工经验因子进行校正。

四 实验步骤及程序实验程序:I=imread('peppers.bmp'); ZMax=max(max(I)); ZMin=min(min(I)); TK=(ZMax+ZMin)/2; bCal=1; iSize=size(I); while (bCal) iForeground=0; iBackground=0; ForegroundSum=0; BackgroundSum=0; for i=1:iSize(1) for j=1:iSize(2) tmp=I(i,j); if (tmp>=TK)iForeground=iForeground+1;ForegroundSum=ForegroundSum+double(tmp); elseiBackground=iBackground+1;BackgroundSum=BackgroundSum+double(tmp);endendendZO=ForegroundSum/iForeground;ZB=BackgroundSum/iBackground;TKTmp=double((ZO+ZB)/2);if(TKTmp==TK)bCal=0;elseTK=TKTmp;endenddisp(strcat('µü´úºóµÄãÐÖµ£º',num2str(TK)));newI=im2bw(I,double(TK)/255);subplot(121),imshow(I)title('Ô-ͼÏñ')subplot(122),imshow(newI)title('·Ö¸îºóµÄͼÏñ')五实验结果与分析原图像分割后的图像图1-1迭代后的阈值:102.3649遥感:%% Àý12.2 ¶àÆ×Êý¾ÝµÄ±´Ò¶Ë¹·ÖÀà(ÏÔʾÁË´íÎóµã)clcclearf1 = imread('Fig1125(a)(WashingtonDC_Band1_512).tif');f2 = imread('Fig1125(b)(WashingtonDC_Band2_512).tif');f3 = imread('Fig1125(c)(WashingtonDC_Band3_512).tif');f4 = imread('Fig1125(d)(WashingtonDC_Band4_512).tif');B1 = roipoly(f1);B2 = roipoly(f1);B3 = roipoly(f1);B = B1|B2|B3;imshow(B)stack = cat(3,f1,f2,f3,f4);[X1,R1] = imstack2vectors(stack, B1);[X2,R2] = imstack2vectors(stack, B2);[X3,R3] = imstack2vectors(stack, B3);Y1 = X1(1:2:end,:);Y2 = X2(1:2:end,:);Y3 = X3(1:2:end,:);[C1,m1] = covmatrix(Y1);[C2,m2] = covmatrix(Y2);[C3,m3] = covmatrix(Y3);CA = cat(3,C1,C2,C3);MA = cat(2,m1,m2,m3);dY{1} = bayesgauss(Y1,CA,MA);dY{2} = bayesgauss(Y2,CA,MA);dY{3} = bayesgauss(Y3,CA,MA);IY{1} = find(dY{1} ~=1 );IY{2} = find(dY{2} ~=2 );IY{3} = find(dY{3} ~=3 );%------------------------------------ ѵÁ·Ä£Ê½QQ_training = zeros(3,5);for i = 1:3QQ_training(i,4) = length(dY{i});for j = 1:3QQ_training(i,j) = length(find(dY{i} == j ));endQQ_training(i,5) = 100*(1 - length(IY{i})/length(dY{i})); end% %------------------------------------ ¶ÀÁ¢Ä£Ê½% Y1 = X1(2:2:end,:);% Y2 = X2(2:2:end,:);% Y3 = X3(2:2:end,:);%% dY{1} = bayesgauss(Y1,CA,MA);% dY{2} = bayesgauss(Y2,CA,MA);% dY{3} = bayesgauss(Y3,CA,MA);%% IY{1} = find(dY{1} ~=1 );% IY{2} = find(dY{2} ~=2 );% IY{3} = find(dY{3} ~=3 );%% QQ_test = zeros(3,5);%% for i = 1:3% QQ_test(i,4) = length(dY{i});% for j = 1:3% QQ_test(i,j) = length(find(dY{i} == j ));% end% QQ_test(i,5) = 100*(1 - length(IY{i})/length(dY{i})); % endwww1 = R1(IY{1},:);for i=1:length(www1)B(www1(i,1),www1(i,2)) = 0;endwww2 = R2(IY{2},:);for i=1:length(www2)B(www2(i,1),www2(i,2)) = 0;endwww3 = R3(IY{3},:);for i=1:length(www3)B(www3(i,1),www3(i,2)) = 0;endimshow(B)图1-2 QQ_training =68 0 0 68 1000 150 0 150 1000 0 128 128 100实验2 K均值聚类算法一、实验目的将模式识别方法与图像处理技术相结合,掌握利用K均值聚类算法进行图像分类的基本方法,通过实验加深对基本概念的理解。