当前位置:首页 > 大作业数字图像处理
计算机科学与通信工程学院
课程报告
课
程
实验题目 学生姓名 学
号
专业班级
摘 要 在生产生活中可以利用matlab函数将苹果从纷杂的大量水果中分离出来,也可根据果
径和果面缺陷实现水果的等级划分。从而提高生产方的工作效率。进而降低水果的生产成本迎合市场需求。
1. 引言
近年来,随着人们生活水平的提高,人们对于水果的品质要求也不断提高。实行水果的分级销售似乎成为当前市场的一个趋势。在传统的水果等级评判主要依靠人工操作。但我们也知道,人对图像的感知是十分主观的。因此每个人的评价指标不同,而且人工的费用较高。在劳动成本越发提升的今天显然这是十分落后的。
即便应用了计算机作为辅助道具,使用基于matlab的识别与检测仍旧是其中成本较为低廉的一种。对于果农等生产方来讲这就显得尤为重要。同样这也能让消费者从中获利。显然这是一种很好的方式, 但实际操作起来仍旧有很大的难度。
因此,利用计算机图像处理的技术研究客观、方便、高效并且便宜的水果品质检测方法越来越受到人们的重视。
2. 基本知识
需要掌握图像的分割技术和图像的识别技术,并利用相应的函数将所需要显示的部位从背景中提取出来。我们日常所获得的便是RGB彩色图像。在处理过程中基本思路都是首先将图像处理为灰度图像,接下来处理为二值图像。进而利用其它函数处理。 2.1 RGB图像
RGB图像被用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。它的每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的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',[40 30]); % 结构定义 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);
%得到各个图像的边界像素的数组
共分享92篇相关文档