河 南 农 业 大 学
《数字图像处理》
题 目: 图像特征提取
学 院:专 业: 班 级: 学 号: 姓 名:指导教师: 成 绩:
时 间: 年 月 日至
一、目的与要求
图像特征提取的目的让计算机具有认识或者识别图像的能力,即图像识别。特征选择是图像识别中的一个关键问题。特征选择和提取的基本任务是如何从众多特征中找出最有效的
特征。根据待识别的图像,通过计算产生一组原始特征,称之为特征形成。原始特征的数量很大,或者说原始样本处于一个高维空间中,通过映射或变换的方法可以将高维空间中的特征描述用低维空间的特征来描述,这个过程就叫特征提取 。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征提取最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。
二、设计的内容
能对图像文件(进bmg 、 jpg、 tiff、 gif等) 进行打开、保存、另存、打印、退出等功能操作;
(一) 图像预处理功能:
数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)。 (二) 图像特征提取
区域图的面积、周长的统计;区域单元的个数统计等。
三、总体方案设计
(一) 图像特征提取的算法
我们知道一幅图像可定义为一个二维函数f (x,y), 这里x 和y 是空间坐标,而在任何一对空间坐标(x,y) 上的幅值f 称为该图像的强度或灰度。当x ,y 和幅值f 为有限的离散数值时,称该图像为数字图像。而图像的特征提取主要有以下几种方法:边界特征法,傅里叶形状描述符法,几何参数法,形状不变矩法等。
而区域的周长及面积的算法如下:
(1)面积S :图像中的区域面积S 可以用同一标记的区域内像素的个数总和来表示。
按上述表示法区域R 的面积S=41。区域面积可以通过扫描图像,累加同一标记像素得到,或者是直接在加标记处理时计数得到。
假设区域的边界链码为 ,每个码段ai 所表示的线段长度为 ,那么该区域边界的周长为
a 1a 2 a n 式中ne 为链码序列中偶数码个数;n 为链码序列中码的总个数。
i =1
周长L 的计算有很多方法。常用的有两种:
∆l i
n
周长L :区域周长L P =∑∆l i =n e +(n -n e ) 2
一种计算方法是采用欧式距离,在区域的边界像素中,设某像素与其水平或垂直方向
上相邻边缘像素间的距离为1,与倾斜方向上相邻边缘像素间的距离为 2 。周长就是这些像素间距离的总和。这种方法计算的周长与实际周长相符,因而计算精度比较高。 另一种计算方法是采用8邻域距离,将边界的像素个数总和作为周长。也就是说,只要累加边缘点数即可得到周长,比较方便,但是,它与实际周长间有差异。根据这两种计算周长的方式,以区域R 的面积和周长图为例,区域的周长是22。 计算区域的面积
对x 轴的积分S 就是面积。式中 是初始点的纵坐标,ai0和ai2分别是
1链码第环的长度在k=0(水平),S =a (y k=2+a )
∑
i =1
n
i 0i -1
2
i 2
点坐标相同),y0能任意选择。按顺时针方向编码,根据面积计算公式得到链码所代表的包围区域的面积。
y i =y i -1+a i 2
四、各个功能模块的主要实现程序
五、测试和调试
下面是根据设计要求做出的其matlab 程序 直方图:
I=imread('2.jpg'); J=rgb2gray(I);
subplot(2,2,1);imshow(I);title('原图象'); subplot(2,2,2);imshow(J);title('转化为灰度图象'); imhist(J)
I=imread('2.jpg'); subplot(2,2,1); image(I);
title('原始图象');
J=imadjust(I,[0.3 0.8],[0 1],1); subplot(2,2,2); image(J);
title('灰度线形变换后的图象'); subplot(2,2,3); imhist(I);
title('原始图象的直方图'); subplot(2,2,4); imhist(J);
title('变换后的图象的直方图'); I=imread('2.jpg');
imshow(I);
J=im2bw(I,0.5); figure;
imshow(J)
i=imread('2.jpg');
subplot(1,2,1);
image(i);
j=rgb2gray(i);
subplot(1,2,2);
imshow(j);
I=imread('2.jpg'); J=rgb2gray(I); J1=histeq(J); subplot(2,2,1); imshow(J); subplot(2,2,2); imshow(J1); subplot(2,2,3); imhist(J); subplot(2,2,4); imhist(J1);
运行程序,得到结果如下:
空间域平滑算法中的中值滤波: I=imread('2.jpg');
J1=imnoise(I,'gaussian',0,0.02); J2=imnoise(I,'salt & pepper',0.02); J3=imnoise(I,'speckle',0.02);
subplot(2,2,1),imshow(I),title('原图像'); subplot(2,2,2),imshow(J1),title('加高斯噪声'); subplot(2,2,3),imshow(J2),title('加椒盐噪声'); subplot(2,2,4),imshow(J3),title('加乘性噪声'); 运行程序,结果如下:
区域图的面积和周长的程序: I = imread('2.jpg');
BW = im2bw(I); % 转化为二值图像
[L,N] = bwlabel(BW,4); % 标注二进制图像中已连接的部分 X=1;%默认图像中只有一个连同区域.
[i j]=find(L==X);%将标注的区域放到一个数组中. bwi=bwselect(L,i,j,4); p=bwperim(bwi); perm=sum(sum(p));%周长.
area=size(i);%面积. 标注区域像素点数就为物体面积. imshow(BW);
pa=['图像面积为:' num2str(area) '像素点']; pp=['图像周长为:' num2str(perm) '像素']; xxx=[pa,pp];
title(xxx);
程序运行结果如下:
六、课程设计总结与体会
设计利用matlab 来对其进行复杂图像的特征提取, 图像的特征提取是在图像处理非常重要的。特征提取是图象处理中的一个初级运算,也就是说它是对一个图像进行的第一个运算处理。它检查每个像素来确定该像素是否代表一个特征。假如它是一个更大的算法的一部分,那么这个算法一般只检查图像的特征区域。作为特征提取的一个前提运算,输入图像一般通过高斯模糊核在尺度空间中被平滑。此后通过局部导数运算来计算图像的一个或多个特征。有时,假如特征提取需要许多的计算时间,而可以使用的时间有限制,一个高层次算法可以用来控制特征提取阶层,这样仅图像的部分被用来寻找特征。由于许多计算机图像算法
使用特征提取作为其初级计算步骤,因此有大量特征提取算法被发展,其提取的特征各种各样,它们的计算复杂性和可重复性也非常不同。因此图像的特征提取很重要。 这次的课程设计,我受益颇多!让我们明白了matlab 这款软件的强大, 通过这几天的探究,我明白要想把一个东西做好,必须下足功夫,必须专心致志,必须去亲自动手。这几天的学习,让我知道了怎么样更好的利用自身优势,怎么样去完成一份课程设计。
七、参考文献
[1]李弼程, 彭天强, 彭波. 智能图像处理技术[M].北京:电子工业出版社,2004 [2]于殿涨. 图像检测与处理技术[M].西安:西安电子科技大学出版社,2006 [3]杨淑莹.VC+十图像处理程序设计[M].北京:北方交通大学出版社,2003 [4]孙家广. 计算机图形学[M].北京:清华大学出版社,2002 [5] 王新梅. 纠错码与差错控制. 北京:人民邮电出版社[M],1989.
河 南 农 业 大 学
《数字图像处理》
题 目: 图像特征提取
学 院:专 业: 班 级: 学 号: 姓 名:指导教师: 成 绩:
时 间: 年 月 日至
一、目的与要求
图像特征提取的目的让计算机具有认识或者识别图像的能力,即图像识别。特征选择是图像识别中的一个关键问题。特征选择和提取的基本任务是如何从众多特征中找出最有效的
特征。根据待识别的图像,通过计算产生一组原始特征,称之为特征形成。原始特征的数量很大,或者说原始样本处于一个高维空间中,通过映射或变换的方法可以将高维空间中的特征描述用低维空间的特征来描述,这个过程就叫特征提取 。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征提取最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。
二、设计的内容
能对图像文件(进bmg 、 jpg、 tiff、 gif等) 进行打开、保存、另存、打印、退出等功能操作;
(一) 图像预处理功能:
数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)。 (二) 图像特征提取
区域图的面积、周长的统计;区域单元的个数统计等。
三、总体方案设计
(一) 图像特征提取的算法
我们知道一幅图像可定义为一个二维函数f (x,y), 这里x 和y 是空间坐标,而在任何一对空间坐标(x,y) 上的幅值f 称为该图像的强度或灰度。当x ,y 和幅值f 为有限的离散数值时,称该图像为数字图像。而图像的特征提取主要有以下几种方法:边界特征法,傅里叶形状描述符法,几何参数法,形状不变矩法等。
而区域的周长及面积的算法如下:
(1)面积S :图像中的区域面积S 可以用同一标记的区域内像素的个数总和来表示。
按上述表示法区域R 的面积S=41。区域面积可以通过扫描图像,累加同一标记像素得到,或者是直接在加标记处理时计数得到。
假设区域的边界链码为 ,每个码段ai 所表示的线段长度为 ,那么该区域边界的周长为
a 1a 2 a n 式中ne 为链码序列中偶数码个数;n 为链码序列中码的总个数。
i =1
周长L 的计算有很多方法。常用的有两种:
∆l i
n
周长L :区域周长L P =∑∆l i =n e +(n -n e ) 2
一种计算方法是采用欧式距离,在区域的边界像素中,设某像素与其水平或垂直方向
上相邻边缘像素间的距离为1,与倾斜方向上相邻边缘像素间的距离为 2 。周长就是这些像素间距离的总和。这种方法计算的周长与实际周长相符,因而计算精度比较高。 另一种计算方法是采用8邻域距离,将边界的像素个数总和作为周长。也就是说,只要累加边缘点数即可得到周长,比较方便,但是,它与实际周长间有差异。根据这两种计算周长的方式,以区域R 的面积和周长图为例,区域的周长是22。 计算区域的面积
对x 轴的积分S 就是面积。式中 是初始点的纵坐标,ai0和ai2分别是
1链码第环的长度在k=0(水平),S =a (y k=2+a )
∑
i =1
n
i 0i -1
2
i 2
点坐标相同),y0能任意选择。按顺时针方向编码,根据面积计算公式得到链码所代表的包围区域的面积。
y i =y i -1+a i 2
四、各个功能模块的主要实现程序
五、测试和调试
下面是根据设计要求做出的其matlab 程序 直方图:
I=imread('2.jpg'); J=rgb2gray(I);
subplot(2,2,1);imshow(I);title('原图象'); subplot(2,2,2);imshow(J);title('转化为灰度图象'); imhist(J)
I=imread('2.jpg'); subplot(2,2,1); image(I);
title('原始图象');
J=imadjust(I,[0.3 0.8],[0 1],1); subplot(2,2,2); image(J);
title('灰度线形变换后的图象'); subplot(2,2,3); imhist(I);
title('原始图象的直方图'); subplot(2,2,4); imhist(J);
title('变换后的图象的直方图'); I=imread('2.jpg');
imshow(I);
J=im2bw(I,0.5); figure;
imshow(J)
i=imread('2.jpg');
subplot(1,2,1);
image(i);
j=rgb2gray(i);
subplot(1,2,2);
imshow(j);
I=imread('2.jpg'); J=rgb2gray(I); J1=histeq(J); subplot(2,2,1); imshow(J); subplot(2,2,2); imshow(J1); subplot(2,2,3); imhist(J); subplot(2,2,4); imhist(J1);
运行程序,得到结果如下:
空间域平滑算法中的中值滤波: I=imread('2.jpg');
J1=imnoise(I,'gaussian',0,0.02); J2=imnoise(I,'salt & pepper',0.02); J3=imnoise(I,'speckle',0.02);
subplot(2,2,1),imshow(I),title('原图像'); subplot(2,2,2),imshow(J1),title('加高斯噪声'); subplot(2,2,3),imshow(J2),title('加椒盐噪声'); subplot(2,2,4),imshow(J3),title('加乘性噪声'); 运行程序,结果如下:
区域图的面积和周长的程序: I = imread('2.jpg');
BW = im2bw(I); % 转化为二值图像
[L,N] = bwlabel(BW,4); % 标注二进制图像中已连接的部分 X=1;%默认图像中只有一个连同区域.
[i j]=find(L==X);%将标注的区域放到一个数组中. bwi=bwselect(L,i,j,4); p=bwperim(bwi); perm=sum(sum(p));%周长.
area=size(i);%面积. 标注区域像素点数就为物体面积. imshow(BW);
pa=['图像面积为:' num2str(area) '像素点']; pp=['图像周长为:' num2str(perm) '像素']; xxx=[pa,pp];
title(xxx);
程序运行结果如下:
六、课程设计总结与体会
设计利用matlab 来对其进行复杂图像的特征提取, 图像的特征提取是在图像处理非常重要的。特征提取是图象处理中的一个初级运算,也就是说它是对一个图像进行的第一个运算处理。它检查每个像素来确定该像素是否代表一个特征。假如它是一个更大的算法的一部分,那么这个算法一般只检查图像的特征区域。作为特征提取的一个前提运算,输入图像一般通过高斯模糊核在尺度空间中被平滑。此后通过局部导数运算来计算图像的一个或多个特征。有时,假如特征提取需要许多的计算时间,而可以使用的时间有限制,一个高层次算法可以用来控制特征提取阶层,这样仅图像的部分被用来寻找特征。由于许多计算机图像算法
使用特征提取作为其初级计算步骤,因此有大量特征提取算法被发展,其提取的特征各种各样,它们的计算复杂性和可重复性也非常不同。因此图像的特征提取很重要。 这次的课程设计,我受益颇多!让我们明白了matlab 这款软件的强大, 通过这几天的探究,我明白要想把一个东西做好,必须下足功夫,必须专心致志,必须去亲自动手。这几天的学习,让我知道了怎么样更好的利用自身优势,怎么样去完成一份课程设计。
七、参考文献
[1]李弼程, 彭天强, 彭波. 智能图像处理技术[M].北京:电子工业出版社,2004 [2]于殿涨. 图像检测与处理技术[M].西安:西安电子科技大学出版社,2006 [3]杨淑莹.VC+十图像处理程序设计[M].北京:北方交通大学出版社,2003 [4]孙家广. 计算机图形学[M].北京:清华大学出版社,2002 [5] 王新梅. 纠错码与差错控制. 北京:人民邮电出版社[M],1989.