您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页数字图像处理课设基于MATLAB的复杂图像目标提取

数字图像处理课设基于MATLAB的复杂图像目标提取

来源:测品娱乐


数字图像处理课设基于的复杂图像目标提取

MATLAB

华北水利水电大学

North China University of Water Resources and Electric Power

数字图像处理课设

题目 基于MATLAB的复杂图像目标提取

课程名称 数字图像处理 学 院 信息工程学院 专 业 通信工程

指导老师 许丽 完成时间 2017.10.27

- 1 -

目录

一、 设计要求 ..................................................... 1 二、 设计原理和方案 ............................................... 1

1、 图像直方图 ............................................. 1 2、 图像灰度 ............................................... 2 3、 低通滤波 ............................................... 2 4、 边缘检测 ............................................... 2

三、 设计步骤及结果 ............................................... 3

1、 图像的读取的存储 ........................................ 3 2、 彩色图像的灰度化 ........................................ 3 3、 图像的滤波 ............................................. 3 4、 图像的边缘检测.......................................... 4 5、 不同颜色目标图像的提取 .................................. 5 6、 相同颜色的目标图像的提取 ................................ 5

四、 问题解决及体会 ............................................... 7 五、 参考文献 ..................................................... 8

- 2 -

附录 .............................................................. 8

摘要

在我们日常生活中,由于工作等各种需要,我们往往会对图像进行各种处理,其中就包括对复杂图像目标提取,当然有很多的处理方法本次主要是在用MATLAB对图像做基本的处理来提取目标图像特征。

本次课设用MATLAB处理时,首先对图片进行基础的处理,包括彩色图像转化为灰色图像的处理、二值处理、直方图的分析、滤波处理以及利用各种算法对图像进行边缘化处理等操作。然后采用合适的方法对图像目标做最终的提取。

在本次课设中,我采用的是利用MATLAB生成图片的直方图,然后从直方图上得出不同颜色所对应的灰度,再灰度对不同颜色的图像分别进行提取。但是此方法有一个很大的局限性,就是无法处理相同颜色的目标图像,因此经过对资料的查阅和老师的帮助,我找到了解决方法,对相同颜色的图像进行区域划分,然后再对处于不同区域的目标图像分别进行提取。

关键词:图像目标提取 MATLAB 灰度 区域提取

- 3 -

一、

- 1 -

二、设计要求

自选一幅图像,确定要选择的目标区域,编写合适的程序,然后用MATLAB或VC+Opencv对目标图形进行提取,要求对图像做基础的处理,包括图像的读取,存储,去噪,边缘检测等触及处理。

三、设计原理和方案

在实际图像处理中,一般情况下我们只是注意到图像中那些我们感兴趣的目标,因为只有这部分也就是我们注意到的有用的目标物才能为我们提供高效、有用的信息。而这些目标一般又都对应着图像中某些特定的、具有独特性质的区域。为了把这些有用的区域提取出来供我们人类使用,我们对图像的提取做了很多的研究。

本次课设采用的原理主要是用MATLAB处理,首先对图片进行基础的处理,包括彩色图像转化为灰色图像的处理、二值处理、直方图的分析、滤波处理以及利用各种算法对图像进行边缘化处理等操作。然后采用合适的方法对图像目标做最终的提取。采用的是利用MATLAB生成图片的直方图,然后从直方图上得出不同颜色所对应的灰度,再灰度对不同颜色的图像分别进行提取。对相同颜色的图像进行区域划分,然后再对处于不同区域的目标图像分别进行提取。从而达到课设要求

1、图像直方图

图像直方图能很直观的反映出图像的特征,灰度,强度等,并且在处理

时很容易实现,且具有图像平移、旋转、缩放不变性等众多优点,在很多方面都得到了广泛地应用,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度,范围为[0~255]之间,对于RGB的彩色图像可以显示三种颜色的强度直方图。强度直方图是用来寻找灰度图像二值化阈值常用的方法。若一幅灰度图像的直方图显示为两个波峰,则二值化阈值应该是这两个波峰之间的某个灰度值。同时强度直方图是调整图像对比度的重要依据直方图实

- 1 -

现方法:对一幅灰度图像从上到下,从左到右扫描每个像素值,在每个灰度值上计算像素数目,不同的灰度值,并以这些数据为基础完成图像直方图的绘制。从而得出目标图像的特征。

2、图像灰度

把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度共分为256

阶。并且在应用中我们通常采用的是用灰度表示的图像称作灰度图,因为从灰度图像上我们可以很清晰地看出图像的各种特征。

图像通常是由红色绿色蓝色三个通道组成的。并且这三种颜色使用以灰度显示的,用不同的灰度色阶来表示各颜色在图像中的比重。灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以表示任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。并且在实验中对灰度图像的处理可以很大程度上提高运算的速率以及效果。

3、低通滤波

图像的滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,在图像的处理中占据非常重要的地位,因为它的处理将直接影响到后续图像处理和分析的有效性和可靠性。

而本次试验中采用的是中值滤波法对图像进行处理。

中值滤波自产生便被广泛应用于各种对噪声的处理中。中值滤波器是基于次序统计完成信号恢复的一种典型的非线性滤波器,其基本原理是把图像或序列中心点位置的值用该域的中值替代,并且具有运算简单、速度快、除噪效果好等优点。并且在应用中中值滤波于得到了发展和改进,便是现在所称的标准中值滤波,标准中值滤波算法的基本思想是将滤波窗口内的最大值和最小值均视为噪声,用滤波窗口内的中值代替窗口中心像素点的灰度,在一定程度上抑制了噪声。实际上在一定邻域范围内具有最大或最小灰度值这一特性的,除了

- 2 -

噪声点,还包括图像中的边缘点、线性特征点等。因此很大程度上提高了图像处理和分析的有效性和可靠性。

4、边缘检测

综合分析本次实验采取的是Prewitt算子边缘检测,Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

对数字图像f(x,y),Prewitt算子的定义如下:

G(i)=|[f(i-1,j-1)+f(i-1,j)+f(i-1,j-1)]-[f(i+1,j-1)+f(i++f(i+1,j)+1)]|

G(j)=|[f(i-1,j+1)+f(i,j+1)+f(i+1j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+,j-1]|

则 P(i,j)=max[G(i),G(j)]或 P(i,j)=G(i)+G(j) 四、设计步骤及结果 1、图像的读取的存储 相关程序:

M=imread('G:\\3.png');

subplot(2,3,1);imshow(M,[]);title('原彩色图'); imwrite(M,'G:\\4.png');

- 3 -

2、彩色图像的灰度化 相关程序: M=rgb2gray(M);

3、图像的滤波 相关程序:

H=fspecial('average',5); F{1}=double(filter2(H,M));

subplot(2,3,2);imshow(F{1},[]);title('均值低通滤波');

4、图像的边缘检测 相关程序:

M=imread('G:\\3.png'); K=rgb2gray(M);

subplot(2,3,3),imhist(K);

- 4 -

M1=[-1,-1,-1;0,0,0;1,1,1]; M2=[-1,0,1;-1,0,1;-1,0,1]; N1=filter2(M1,K); N2=filter2(M2,K); K1=double(N1); K2=double(N2); M=(abs(K1) +abs(K2)); figure,imshow(uint8(M)) title('Prewitt算子边缘检测');

5、不同颜色目标图像的提取

相关程序:123 201 196 218分别为彩色图像的绿色、粉色、黄色以及橙黄的灰度值。

num=[123 201 196 218]; [m,n]=size(N);

- 5 -

for I1=1:4 D=zeros(m,n); D=D+255; for i=1:m for j=1:n

if N(i,j)==num(I1) D(i,j)=N(i,j); end end end

subplot(2,2,I1) imshow(D,[]); end

6、相同颜色的目标图像的提取

- 6 -

采用对目标区域进行划分,然后依据不同的区域对目标图像进行提取。

图像读取:

图像划分区域:

图像提取:

- 7 -

五、问题解决及体会

通过这次课程设计,知道自己在这一课程上存在的不足,另外也从这个课程设计中学到了很多东西,通过对程序的编写以及MATLAB的具体操作,提高了自己编写程序的能力,并且对MATLAB的操作更加熟练,以及一些对图片处理的基本操作,包括彩色图像转化为灰色图像的处理、二值处理、直方图的分析、滤波处理以及利用各种算法对图像进行边缘化处理等操作。自己的能力和知识面都得到了很大的提高。

但是在整个过程中遇到了一些困难,查阅了资料,也得到了老师和同学的帮助,不过每一次的问题的解决都是一个大的进步,对于参数的选取最让我觉得困难,首先是闭运算的矩阵的选取,还有根据图像对灰度的估计与精确从而利用不同颜色的灰度进行目标图像的提取,还有我之前设想的是根据不同颜色的图像的不同灰度进行目标图像的提取,实验也得到了很好的结果,但是面对同学提出的对于相同颜色的图像该如何进行提取的问题。我发现了问题所在,但由于时间的,所以只能在源程序上进行修改,在老师的帮助下,我试着编写程序将相同的图像进行分区域,编号,然后再对不同区域的目标图像进行提取。最后成功的解决了问题。

此次的课程设计是一个让自己得到很大提高的一个课程,可以让自己丛中学到很多,在课程设计过程中不免会出现不少问题,如果对这些知识足够了解

- 8 -

就能很到找到问题原因,并且轻松解决,所以掌握一定的知识很重要,另外也要多实践,在实践中检验自己,提高自己的动手能力,课程设计使我充分体会到了解决问题得到结果后的那种喜悦。也从中收获到了很多知识,也为接下来的学习打下了良好的基础。

六、参考文献

【1】姚敏,数字图像处理,机械出版社 【2】李俊辉,数字图像处理,清华大学出版社

【3】贺兴华,周媛媛,王继阳,MATLAB图像处理,人民邮电出版社 【4】刘卫国,MATLAB程序设计及应用 高等教育出版社

附录:

不同颜色目标图像的提取总程序:

clc clear all;

M=imread('G:\\3.png');

subplot(2,3,1);imshow(M,[]);title('原彩色图');

- 9 -

M=rgb2gray(M); N=M;

imwrite(M,'G:\\4.png');

H=fspecial('average',5); F{1}=double(filter2(H,M));

subplot(2,3,2);imshow(F{1},[]);title('均值低通滤波');

M=imread('G:\\3.png'); K=rgb2gray(M);

subplot(2,3,3),imhist(K); M1=[-1,-1,-1;0,0,0;1,1,1]; M2=[-1,0,1;-1,0,1;-1,0,1]; N1=filter2(M1,K); N2=filter2(M2,K); K1=double(N1); K2=double(N2); M=(abs(K1) +abs(K2)); figure,imshow(uint8(M)) title('Prewitt算子边缘检测'); figure

num=[123 201 196 218]; [m,n]=size(N);

- 10 -

for I1=1:4 D=zeros(m,n); D=D+255; for i=1:m for j=1:n

if N(i,j)==num(I1) D(i,j)=N(i,j); end end end

subplot(2,2,I1) imshow(D,[]); end

相同颜色的目标图像的分区域提取总程序:clc clear close all

M= imread('G:\\5.png'); M=im2bw(M); figure(1); imshow(M); M=~M; figure(2); imshow(M);

- 11 -

[L, num] = bwlabel(M);

STATS1=regionprops(L,'Perimeter'); ahe=size(STATS1); m1=ahe(1,1); m=zeros(2,m1); for i=1:m1

% 计算目标区域中心,用于显示编号的位置 [p,q]=find(L==i); temp=[p,q]; [x,y]=size(temp); m(1,i)=sum(p)/x; m(2,i)=sum(q)/x; end for i=1:m1 figure(2);

text(m(2,i),m(1,i),int2str(i),'color','red') end

L(L~=2)=0; figure(3); imshow(~L);

- 12 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务