大作业数字图像处理.docx

上传人:b****5 文档编号:4573675 上传时间:2022-12-06 格式:DOCX 页数:10 大小:308.62KB
下载 相关 举报
大作业数字图像处理.docx_第1页
第1页 / 共10页
大作业数字图像处理.docx_第2页
第2页 / 共10页
大作业数字图像处理.docx_第3页
第3页 / 共10页
大作业数字图像处理.docx_第4页
第4页 / 共10页
大作业数字图像处理.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

大作业数字图像处理.docx

《大作业数字图像处理.docx》由会员分享,可在线阅读,更多相关《大作业数字图像处理.docx(10页珍藏版)》请在冰豆网上搜索。

大作业数字图像处理.docx

大作业数字图像处理

计算机科学与通信工程学院

 

课程报告

 

课程

实验题目

学生姓名

学号

专业班级

 

摘要在生产生活中可以利用matlab函数将苹果从纷杂的大量水果中分离出来,也可根据果径和果面缺陷实现水果的等级划分。

从而提高生产方的工作效率。

进而降低水果的生产成本迎合市场需求。

1.引言

近年来,随着人们生活水平的提高,人们对于水果的品质要求也不断提高。

实行水果的分级销售似乎成为当前市场的一个趋势。

在传统的水果等级评判主要依靠人工操作。

但我们也知道,人对图像的感知是十分主观的。

因此每个人的评价指标不同,而且人工的费用较高。

在劳动成本越发提升的今天显然这是十分落后的。

即便应用了计算机作为辅助道具,使用基于matlab的识别与检测仍旧是其中成本较为低廉的一种。

对于果农等生产方来讲这就显得尤为重要。

同样这也能让消费者从中获利。

显然这是一种很好的方式,但实际操作起来仍旧有很大的难度。

因此,利用计算机图像处理的技术研究客观、方便、高效并且便宜的水果品质检测方法越来越受到人们的重视。

2.基本知识

需要掌握图像的分割技术和图像的识别技术,并利用相应的函数将所需要显示的部位从背景中提取出来。

我们日常所获得的便是RGB彩色图像。

在处理过程中基本思路都是首先将图像处理为灰度图像,接下来处理为二值图像。

进而利用其它函数处理。

2.1RGB图像

RGB图像被用来表示彩色图像。

与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。

它的每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个MxN的二维矩阵分别表示各个像素的R、G、B三个颜色分量。

RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。

2.2灰度图像

灰度图像矩阵元素的取值范围通常为[0,255]。

因此其数据类型一般为8位无符号整数的(int8),这就是所谓256灰度图像。

“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。

2.3二值图像

二值图像的二维矩阵则是仅由0、1两个值构成。

“0”代表黑色,“1”代白色。

由于每一像素取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。

二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

2.4图像分割

图像分割是数字图像处理中的关键技术之一。

它将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。

虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。

因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。

2.5图像描述

图像描述是图像识别和理解的必要前提。

作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。

2.6图像识别

图像识别属于模式识别的范畴,其主要内容是图像经过某些预处理后,进行图像分割和特征提取,从而进行判决分类。

3.功能分析及设计

在本题中,苹果的形状与其它水果是不同的,因此可以利用这一特点将其从混杂的水果中寻找出来,也可以根据它的形状进而使用直径这一特性来描述它的大小。

苹果表面上的伤痕拥有与苹果本身不同的色泽,其形状虽然不规则但是也多为圆形。

也可以根据类似的方式来进行设计。

首先可以考虑将苹果从各种水果中识别出来。

%读取原图,并处理成二值图像

I=imread('d:

\50.jpg');

I2=rgb2gray(I);

BW=im2bw(I2,0.9);

total=bwarea(~BW);

figure,subplot(1,3,1),imshow(I),title('原始图像');

subplot(1,3,2),imshow(I2),title('灰度图像');

subplot(1,3,3),imshow(BW),title('二值图像');

%进行边缘检测得到了不连续的图形边界(采用sobel算子或区域增长)

%得到各个图形的连续边界

SE=strel('rectangle',[4030]);%结构定义

J2=imopen(BW,SE);%开启运算

figure,imshow(J2),title('对二值图像进行开运算后的结果图像');

SE=strel('square',5);%定义3×3腐蚀结构元素

J=imerode(~J2,SE);

BW2=(~J2)-J;%检测边缘

figure,imshow(BW2),title('3*3腐蚀运算后的图像边界轮廓');

%填充了已有的检测的连续形状边界

B=imfill(BW2,'holes');

B=bwmorph(B,'remove');

figure,imshow(B),title('提取出的边界图像');

%将不同的图形进行分别标记,num表示连接的图形对象的个数

[Label,num]=bwlabel(B,8);

%得到各个图像的边界像素的数组

%计算各个图形单元的周长用连接像素点或数边界像素点个数的方法numPoints数组表示各个图形边界的像素个数(即用个数来表示周长)

%num=max(max(Label));

fori=1:

num

Premeter(i)=0;

end

[row,col]=size(Label);

fori=1:

row

forj=1:

col

if(Label(i,j)>0)

Premeter(Label(i,j))=Premeter(Label(i,j))+1;%计算标记后的各块图形边界中像素的个数的总数

end

end

end

%5计算各个图形单元的面积

FilledLabel=imfill(Label,'holes');%填充打过标记的边界线中间围成的图形区域

figure,imshow(FilledLabel),title('打过标记后并已被填充的结果图像');

fori=1:

num

Area(i)=0;

end

[row,col]=size(FilledLabel);

fori=1:

row

forj=1:

col

if(FilledLabel(i,j)>0)

Area(FilledLabel(i,j))=Area(FilledLabel(i,j))+1;%通过统计像素点个数的方式来求各形状的面积

end

end

end

%计算各个图形单元的圆度

fori=1:

num

Ecllipseratio(i)=4*pi*Area(i)/Premeter(i)^2;

end

%识别苹果

%构建苹果的分类器,在二维特征空间对各个图像进行类别区分

apple=0;

fori=1:

num

if((Ecllipseratio(i)<1.25)&&(Ecllipseratio(i)>1.0))%分类器识别苹果的准则:

判断各个图形中圆度居于1.0与1.25之间的的为苹果

apple=i;

end

end

%对分出来的类别分别构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作

appleHSV=HSV;

forj=1:

row

fork=1:

col

if(FilledLabel(j,k)~=apple)

appleHSV(j,k,3)=0;

end

end

end

%变换生成最终的结果图像,图像中显示的结果即对应分类器中指定的类别

applematrix=hsv2rgb(appleHSV);%转换为RGB彩图,彩图中已经滤去了其余水果,只剩下苹果

figure,imshow(applematrix),title('水果类别:

苹果');

接下来可以考虑计算苹果的直径。

因为对于苹果来讲,不同的大小价格是不同的。

检测思路为:

将图片灰度化、二值化后,利用regionprops函数计算二值化图像的最小外接矩形大小,外接矩形框长度和宽度中的最大值即为苹果最大横切面直径。

此时的数值为像素值,通过与照片的长、宽像素值进行比较,结合图片的实际长、宽值,即可求出果径的实际长度。

具体函数如下:

rgb=imread('d:

\apple.png');

rgb1=im2double(rgb);

r=rgb1(:

:

1);

g=rgb1(:

:

2);

b=rgb1(:

:

3);

I=(r+g+b)/3;

tmp1=min(min(r,g),b);

tmp2=r+g+b;

tmp2(tmp2==0)=eps;

S=1-3.*tmp1./tmp2;

tmp1=0.5*((r-g)+(r-b));

tmp2=sqrt((r-g).^2+(r-b).*(g-b));

theta=acos(tmp1./(tmp2+eps));

H=theta;

H(b>g)=2*pi-H(b>g);

H=H/(2*pi);

H(S==0)=0;

I=(r+g+b)/3;

%Combineallthreeresultsintoanhsiimage.

hsi=cat(3,H,S,I);

S=im2bw(S,0.2);

imshow(S)

求取外接最小矩形框,并利用regionprops函数计算图像区域的属性信息,并读取矩形的长、宽数据,以长、宽中的最大值为果径的数值。

这里的数值为像素值。

[l,m]=bwlabel(S,8);

status=regionprops(l,'BoundingBox');

x=status(2,1).BoundingBox;%读取矩形的长宽

X=max(x);%取最大值

取得果径的像素值后,与图片的长(宽)像素值相比。

由于图片的像素、实际长宽等数值已预先设定并保持不变,因此根据果径像素与图片像素的比值可求出果径的实际数值。

接下来可以考虑检测水果表面的缺陷。

果面的缺陷主要包括压伤、碰伤、虫蛀伤亦或是裂开等,但所有表面可见的伤痕都表现为正常果面色泽、质地不一致。

因此可通过提取果面的图像特征,检测缺陷情况。

首先,读入图像后用rgb2gray函数对受检苹果进行灰度化,并用imadjust函数调整灰度图像的强度值。

I=imread(d:

\'apple3.jpg');

I2=rgb2gray(I);

J=imadjust(I2,[0.10.2],[]);

利用im2bw函数将调整后的灰度图像转换为二值图像,level值取1。

为方便检测,对二值图像进行取反处理。

Y=im2bw(J,1);Y=~Y。

与计算果径的方法相同,求病斑区域的外接矩形框,并利用regionprops函数计算图像区域的属性信息。

[l,m]=bwlabel(Y,8);

status=regionprops(l,'BoundingBox');

imshow(Y);

holdon;

fori=1:

m

rectangle('position',status(i).BoundingBox,'edgecolor','r');

end

holdoff;

由于病斑的不规则,且一个果面可能会有多个病斑,图像区域中会有多个外接矩形框,因此需要对每个矩形框的大小进行判定,选取面积最大的矩形框。

[x,y]=size(status);%读取图片信息

fori=1:

x%共有x个矩形框

X(i)=max(status(i).BoundingBox);%取矩形框最大值

end

x2=status(i,1).BoundingBox;%读取矩形框的长、宽

x2

(1)

x2

(2)

在这里,以最大矩形框的面积近似为病斑的面积。

通过矩形框尺寸的像素值与照片长、宽像素值的比值,以及照片实际尺寸,进而确定病斑实际面积。

4.实验结果与分析

识别原图:

经过识别之后所得到苹果的图像:

苹果直径检测原图:

S分量二值化之后的苹果图像

有缺陷的苹果原图:

缺陷检测之后所识别的苹果表面伤痕:

变质区域的外接矩形框

根据伤痕的图形,可以用它的最大外接矩形框面积来近似确定实际面积。

5.总结与体会

实验初步实现了利用MATLAB技术对苹果的分离、苹果的大小(最大横切面直径)、苹果表面病斑面积等评定指标的检测判定,达到了预期目的。

无论是在计算伤痕的实际面积还是苹果的大小时都采取了近似外接矩形框面积的方法,这样是存在一定误差的。

实验的确相当复杂,但同样的在学习过程中也学到了很多东西。

MATLAB的强大功能只在我们的面前展现出了冰山一角,相信在未来的学习中我会学到更多的东西。

6.参考文献

[1]张宏编著.图像处理与分析.北京:

机械工业出版社.2016.

[2]杨高波,杜青松编著.MATLAB图像/视频处理应用及实例.北京:

电子工业出版社.2010.

[3]杨杰主编.数字图像处理及MATLAB实现.北京:

电子工业出版社.2010.

[4]沈庭芝.数字图像处理及模式识别.北京理工大学出版社,1998

[5]章毓晋.图像处理和分析.清华大学出版社,1999

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1