MATLAB简介+图像轮廓线提取+图像分割技术

MATLAB简介+图像轮廓线提取+图像分割技术
MATLAB简介+图像轮廓线提取+图像分割技术

MATLAB 软件使用简介

MATLAB 是一个功能强大的数学软件, 它不但可以解决数学中的数值计算问题, 还可以解决符号演算问题, 并且能够方便地绘出各种函数图形。MATLAB自1984年由美国的MathWorks公司推向市场,现已成为国际最优秀的科技应用软件之一。

一、MATLAB 的工作界面

启动MATLAB后, 出现MATLAB命令窗口,空白区域是MATLAB 的工作区, 在此可输入和执行命令。

二、 MATLAB 操作的注意事项

●在工作区输入MATLAB命令后, 按下Enter键才能执行命令。

●MATLAB 是区分字母大小写的。

●如果不想显示结果,只要在所输入命令的后面加上一个分号“;”即可。

如:x= 2 + 3↙ x=5

x = 2 + 3 ; ↙不显示结果5

●如果一个表达式一行写不下,可以在行尾键入“...”来换行。

如:q=5^6+sin(pi)+exp(3)+(1+2+3+4+5) ...

-5+1/2-567

●命令行与M文件中的百分号“%”标明注释。

三、MATLAB的变量与表达式

●MATLAB的变量名

MATLAB的变量名是用一个字母打头,后面最多跟19个字母或数字。应该注意不要用MATLAB中的内部函数或命令名作为变量名。列出当前工作空间中的变量命令为:

who 将内存中的当前变量以简单形式列出;

whos 列出当前内存变量的名称、大小、类型等信息;

clear 清除内存中的所有变量与函数。

● MATLAB 常用的预定义变量

ans :保存计算结果的缺省变量;Inf 或inf :无穷大; i 或j

pi :圆周率π。

● MATLAB 的运算符

数学运算符:+,-,*, \(左除), / (右除) , ^ (乘幂) 关系运算符:<, >, <=, >=, = =(等于), ~= (不等于) 逻辑运算符:&(逻辑与), |( 逻辑或), ~( 逻辑非)

● MATLAB 的表达式及语句

表达式由运算符、函数、变量名和数字组成的式子。MATLAB 语句由变量、表达式及MATLAB 命令组成,用户输入的语句由MATLAB 系统解释运行。MATLAB 语句的2种最常见的形式为:

形式1:表达式 形式2:变量=表达式

在第一种形式中,表达式运算后产生的结果如果为数值类型,系统自动赋值给变量ans ,并显示在屏幕上。

例1:用两种形式计算3

6sin 5e ++π算术运算结果。

解:形式1: 5^6+sin(pi)+exp(3) ↙

ans = 1.5645e+004

形式2: a=5^6+sin(pi)+exp(3) ↙

a =

1.5645e+004

例2:已知矩阵??????=??????=2211,2121B A ,对它们做简单的关系与逻辑运算 解:A=[1,2;1,2]; ↙

B=[1,1;2,2]; ↙ C=(A

C=

0 0

0 0

四、MATLAB 的数据显示格式

虽然在MATLAB 系统中数据的存储和计算都是双精度进行的,但MATLAB 可以利用菜单或format 命令来调整数据的显示格式。Format 命令的格式和作用如下:

● format|format short 5位定点表示 ● format long 15位定点表示 ● format short e 5位浮点表示 ● format long e 15位浮点表示

● format short g 系统选择5位定点和5位浮点中更好的表示 ● format long g 系统选择15位定点和15位浮点中更好的表示 ● format rat 近似的有理数的表示 ● format hex 十六进制的表示

● format bank 用元 角分(美制)定点表示 ● format compact 变量之间没有空行 ● format loose 变量之间有空行

例3:对数7sin 5+=a 用五位定点、十五位定点以及有理数形式表示出来。 解: a=5+sin(7),format short,a ↙

a = 5.6570 format rat,a ↙ a =

3117/551 format long,a ↙ a =

5.65698659871879

五、MATLAB 中的常用函数

数学上的函数,MATLAB基本上都有。

表5.1 常用的三角函数

表5.2 常用的计算函数

六、矩阵的操作

MATLAB的基本单位是矩阵,它是的MATLAB精髓,掌握矩阵的输入、各种数值运算以及矩阵函数的使用是以后能否学好MATLAB的关键。

矩阵的输入

(1) 直接输入创建矩阵

整个矩阵以“[”和“ ]”作为首尾,同行的元素用“,”或空格隔开,不同行的元素用“;”或按Enter键来分隔;矩阵的元素可以为数字也可以为表达式,如果进行的是数值计算,表达式中不可包含未知的变量。

例4:直接输入创建矩阵

解:A = [1,2,3; 4,15,60; 7,8,9] ↙

(2) 用矩阵函数来生成矩阵

MATLAB 提供了大量的函数来创建一些特殊的矩阵。

表5.3 常用的矩阵函数

例5:输入矩阵。

解:ones(3) ↙ %生成元素都为1的3阶方阵

例6:输入矩阵

解:zeros(2,5) ↙ %生成元素都为0的2行5列零矩阵

例7:生成3阶魔方矩阵。

解:magic(3) ↙

●操作符“:”的说明

j:k 表示步长为1的等差数列构成的数组:[j, j+1, j+2,…, k] j:i:k 表示步长为i的等差数列构成的数组:[j,j+i,j+2*i,…, k] A(i:j) 表示A(i),A(i+1),…,A(j)

例8:操作符冒号”:”的应用

解:1:5 ↙ %步长为1的等差数列。

1:2:7 ↙ %步长为2的等差数列。

8:-2:0 ↙ %步长为-2的等差、递减数列。

●对矩阵元素的操作

A(i,j) 表示矩阵A的第i行第j列元素。

A(:,j) 表示矩阵A的第j列。

A(i,:) 表示矩阵A的第i行。

A(:,:) 表示A的所有元素构造2维矩阵

A(:) 表示以矩阵A的所有元素按列做成的一个列矩阵。

A(i) 表示矩阵A(:)的第i个元素。

[ ] 表示空矩阵

●元素的抽取与赋值

例9:已知矩阵,抽取与修改矩阵A的一些元素

解:A=[1 23 56;sin(3) 7 9;log(2) 6 1] ↙ %输入矩阵A。

A(2,3) ↙ %求矩阵A的第二行第三列元素。

A(4) ↙ %求矩阵A的第四个元素。

A(2:4) ↙ %取矩阵A的A(2),A(3),A(4)。

A(1,:) ↙ %取矩阵A的第一行。

A(:,3) %取矩阵A的第三列

a=A(1,3) ↙ %把矩阵A的第一行第三列元素赋值给变量a。

A(2,1)=100 ↙ %把矩阵A的第二行第一列元素修改为100。●矩阵的扩充

例10:已知矩阵

?

?

?

?

?

?

=

?

?

?

?

?

?

=

8

5

1

,

9

6

3

1

B

A

,利用A与B生成矩阵

13100

690

C

??

= ?

??,

() D A B =,

A

AA

B

??

= ?

??。

解:A=[1,3;6,9]; %输入矩阵A

C= A↙

C(1,3)=100; %把矩阵A扩充为1行3列矩阵B=[1,5;0,8]; ↙ %输入矩阵B

D=[A,B] ↙ %由矩阵A与B合成矩阵D

AA=[A,zeros(2);zeros(2),B] ↙ %由矩阵A与B合成分块矩阵AA

●矩阵的部分删除

例11:已知矩阵,删除矩阵A的第一行。

解:A=[1 23 56;sin(3) 7 9;log(2) 6 1]; ↙

A(1,:)=[] ↙ %删除矩阵A的第一行

●矩阵的运算

A+B: 矩阵加法 A-B: 矩阵减法

A*B: 矩阵乘法 A\B: 矩阵的左除

A/B: 矩阵的右除 transpose(A)或A’:A的转置

A

k*:数k乘以A det(A): A的行列式:

rank(A):A的秩

七、数组

数组就是一行或者一列的矩阵,前边介绍的对矩阵输入、修改、保存都适用于数组,同时MATLAB 还提供了一些创建数组的特殊指令。

● 特殊数组的创建

linspace(a,b,n) 给出区间[a,b]的n 个等分点数据

logspace(a,b,n) 给出区间]10,10[b

a

的n 个等比点数据,公比为1

10b a n --。

例12:linspace(0,1,6) ↙ %给出区间[0,1] 的6个等分点数据

logspace(0,1,6) ↙ %给出区间]10,10[1

0的6个等比点数据

● 数组运算

除了作为1×n 矩阵应遵循矩阵的运算规则外,MATLAB 还为数组提供了一些特殊的运算: 乘法为:.* ,左除为:.\ ,右除为:./ ,乘幂为:.^

设数组[]n a a a ,,, 21=α,[]n b b b ,,, 21=β,则对应的运算具体为:

[]n n b a b a b a ,,,*. 2211=βα

[]

k n k k a a a k ,,,.^ 21=α ?

??

???=n n b a b a b a ,,,/. 2211βα ???

???=n n a b a b a b ,,,\. 2

211βα

例13:数组运算例题

a=1:5 ↙ %定义数组a b=3:2:11 ↙ %定义数组b

a.^2↙ %数组a 的每一个元素求平方

a.*b ↙ %数组a 的每一个元素乘以对应的数组b 的元素

例14:计算

sin(),2,1,0

2

k

k π

=±±的值。

解:x=-pi:pi/2:pi; ↙ %定义自变量x

y=sin(x) ↙ %求自变量x 的每一个元素对应的正弦值

八、M 文件

M 文件有两种形式:命令文件和函数文件。它们都是由若干MATLAB 语句或命令组成的文件。两种文件的扩展名都是.m 。若程序为命令文件,则程序执行完以后,中间变量仍予以保留;若程序为函数文件,则程序执行完以后,中间变量被全部删除。

● 文件的操作

在MATLAB 中新建M 文件的操作是在命令窗口中选择File|New|M-File ,然后用鼠标单击M-File ,就可以打开MATLAB 自带的M 文件编辑器。也可以对已经存在的M 文件进行编辑、存储、修改和读取。

● 命令文件

M 文件有两种运行方式:一是在命令窗口直接写文件名,按Enter 键; 二是在编辑窗口打开菜单Tools ,再单击Run 。M 文件保存的路径一定要在搜索路径上,否则M 文件不能运行。以下例题中如果不做特别说明,都是以第一种方式运行的。

例15:用M 命令文件画出衰减振荡曲线t e y t 3sin 3

-=及其它的包络线3

0t e y -=。

t 的取值范围是]4,0[π。

解: 1.打开M 文件编辑窗口; 2.在编辑窗口逐行写下列语句;

t=0:pi/50:4*pi; y0=exp(-t/3);

y=exp(-t/3).*sin(3*t);

plot(t,y,'-r',t,y0,':b',t,-y0,':b')

3.保存M 文件,并且保存在搜索路径上,文件名为a1.m;

4.运行M 文件。

● M函数文件

M函数文件的一般形式为:

function <因变量>=<函数名>(<自变量>)

M函数文件可以有多个因变量和多个自变量,当有多个因变量时用[]括起来。

例16:设可逆方阵为A,编写同时求

'

,

,

,1

2A

A

A

A-的M函数文件。

解:1.打开M文件编辑窗口;

2.在编辑窗口逐行写下列语句;

function [da,a2,inva,traa]=comp4(x)

%M函数文件comp4.m同时求矩阵x的四个值

%da为矩阵x的行列式

%a2为矩阵x的平方

%inva为矩阵x的逆矩阵

%traa为矩阵x的转置

da=det(x)

a2=x^2

inva=inv(x)

traa=x'

3. 保存M函数文件,并且保存在搜索路径上,文件名为comp

4.m;

4.命令窗口执行下列语句:

A=[1,2;5,8];↙ %输入矩阵A。

comp4(A)↙ %调用comp4.m函数计算矩阵A的

'

,

,

,1

2A

A

A

A-。

九、程序设计语句

●for循环

for i=范围表达式

可执行语句 end

例17:利用for循环求1 100的整数之和。

解:(1). 建立命令文件exam1.m。

%利用for循环求1~100的整数之和

sum=0;

for i=1:100

sum=sum+i;

end

sum

(2) 执行命令文件exam1.m。

exam1↙

例18:利用for循环找出100~200 之间的所有素数。

解: (1).建立命令文件exam2.m。

%利用for循环找出100~200 之间的所有素数

disp('100~200 之间的所有素数为:')

for m=100:200

k=fix(sqrt(m)); %求m的算术平方根然后取整. for i=2:k+1

if rem(m,i)==0 %求整数m与i的余数

break;

end

end

if i>=k+1

disp(int2str(m)) %以字符串的形式显示素数.

end

end

(2) 执行命令文件exam2.m。

while循环

while 逻辑表达式

循环体语句

end

例19:利用while循环来计算1!+2!+ +50!的值。

解: (1).建立命令文件exam3.m

%利用while循环来计算1!+2!+...+50!的值

sum=0;

i=1;

while i<51

prd=1;

j=1;

while j<=i

prd=prd*j;

j=j+1;

end

sum=sum+prd;

i=i+1;

end

disp(‘1!+2!+...+50!的和为:’)

sum

(2) 执行命令文件exam3.m

if-else-end分支

(1)if 逻辑表达式

执行语句

end

功能: 如果表达式的值为真,就执行语句,否则执行end后面的语句.

(2) if 逻辑表达式

执行语句1

else

执行语句2

end

功能:如果表达式的值为真,就执行语句1,否则执行语句2.

(3) if 逻辑表达式1

执行语句1

elseif 逻辑表达式2

执行语句2

else

语句n

end

功能:如果表达式1的值为真,就执行语句1,然后跳出if执行语句;否则判断表达式2,如果表达式2的值为真,就执行语句2,然后跳出if执行语句.否则依此类推,一直进行下去.如果所有的表达式的值都为假,就执行end后面的语句.

例19:编一函数计算函数值:

?

?

?

?

?

?

?

>

+

<

-

-

<

=

30

ln

sin

30

10

11

3

10

1

1

2

1

)

(

x

x

x

x

x

x

x

x

x

x

f

解: (1).建立M函数文件yx.m。

function y=yx(x)

if x<1

y=x

elseif x>=1 & x<=10

y=2*x-1

elseif x>10 & x<=30

y=3*x-11

else

y=sin(x)+log(x) end

(2).调用M 函数文件计算)10(),30(),2(),2.0( f f f f 。 result=[yx(0.2),yx(2),yx(30),yx(10*pi)]↙

switch-case-end 分支 s witch 表达式 case 常量表达式1 语句块1 case 常量表达式2 语句块2

case {常量表达式n ,常量表达式n+1,…} 语句块n

otherwise

语句块n+1

end

功能:switch 语句后面的表达式可以为任何类型;每个case 后面的常量表达式可以是多个,也可以是不同类型;与if 语句不同的是,各个case 和otherwise 语句出现的先后顺序不会影响程序运行的结果。

例20: 编一个转换成绩等级的函数文件,其中成绩等级转换标准为考试成绩分数在[90,100]分显示优秀;在[80,90)分显示良好;在[60,80)分显示及格;在[0,60)分显示不及格。 解:(1).建立M 函数文件ff.m function result=ff(x)

n=fix(x/10); switch n case {9,10} disp('优秀')

case 8

disp('良好')

case {6,7}

disp('及格')

otherwise

disp('不及格')

end

(2).调用M函数文件判断99分,56分,72分各属于哪个范围.。

ff(99) ↙ %优秀

ff(56) ↙ %不及格

ff(72) ↙ %及格

十、 Matlab绘图

1.plot(y)

功能:画一条或多条折线图。其中y是数值向量或数值矩阵。

说明:当y是数值向量时,plot(y)在坐标系中顺序的用直线段连接顶点(i,y(i))画出一条折线图;当y是数值矩阵时,Matlab为矩阵的每一列画出一条折线,绘图时,以矩阵y每列元素的相应行下标值为横坐标,以y的元素为纵坐标绘制的连线图。

例21:画出向量[1,3,2,9,0.5]折线图。

解: y=[1,3,2,9,0.5]; ↙

plot(y) ↙

2. plot(x,y)

功能:画一条或多条折线图。其中x可以是长度为n的数值向量或是n?m的数值矩阵,y 也可以是长度为n的数值向量或是n?m的数值矩阵。

说明:

当x ,y 都是长度为n的数值向量时,plot(x,y)在坐标系中顺序的用直线段连接顶点(x(i),y(i))画出一条折线图;

?当x 是长度为n的数值向量且y是n?m的数值矩阵时,plot(x,y)用向量x分别与矩阵y的每一列匹配, 在同一坐标系中绘出m条不同颜色的折线图;

?当x 和y都是n?m的数值矩阵时,plot(x,y)分别用矩阵x的第i列与矩阵y 的第i列匹配,在同一坐标系中绘出m条不同颜色的折线图。

注:plot(x,y)命令可以用来画通常的函数f(x)图形, 此时向量x常用命令x=a:h:b的形式获得f(x)函数在绘图区间[a,b]上的自变量点向量数据,对应的函数向量值取为y= f(x)。步长h可以任意选取,一般,步长越小,曲线越光滑,但是步长太小,会增加计算量,运算速度要降低。通常步长h取为0.1可以达到较好的绘图效果。如果想在图形中标出网格线,用命令:plot(x,y),grid on即可。

例22:画出函数y = sin x2在-5 ≤ x ≤ 5 的图形。

解: x=-5:.1:5;↙%取绘图横坐标向量点x

y=sin(x.^2); ↙

plot(x,y), grid on↙

例23:画出椭圆

1

2

52

2

2

2

=

+

y

x

的曲线图。

解: 对于这种情形,首先把它写成参数方程

)

2

0(

sin

2

cos

5

π

?

?

?

=

=

t

t

y

t

x

t=0:pi/50:2*pi; ↙

x=5*cos(t); ↙

y=2*sin(t); ↙

plot(x,y) ,grid on

3. plot(x1,y1,x2,y2,x3,y3…)

功能:在同一图形窗口画出多条不同颜色曲线,曲线关系为:

.

),

3

(

3

),

2

(

2

),

1

(

1

x

f

y

x

f

y

x

f

y=

=

=。

例24:在同一图形窗口画出三个函数y = cos 2x ,y = x 2 ,y = x的图形。解: x=-2:.1:2; ↙

plot(x,cos(2*x),x,x.^2,x,x) ↙

legend('cos(2x)','x^2','x') ↙

4.ezplot(F,[xmin,xmax])

功能: 画出符号函数F在区间[xmin,xmax]内的图像

说明: F是只含有一个变量的函数。如果区间[xmin,xmax]缺省,默认区间为[-2pi,2pi]

例25:绘制

t

e

y

t

2

3

cos

3

2

2

-

=

在]

*

4,0[pi间的图形。

解ezplot('2/3*exp(-t/2)*cos(3/2*t)',[0,4*pi]) ↙

5.二维特殊图形

除了plot指令外,Matlab还提供了许多其它的二维绘图指令,这些指令大大扩充了Matlab的曲线作图指令,可以满足用户的不同需要。

表2.4绘制二维图形的指令

例26:练习指令bar,stairs,pie,pie3,stem,area.

解: x=1:5;

subplot(2,3,1),bar(x),title('直方图')↙ subplot(2,3,2),stairs(x),title('阶梯图')↙ subplot(2,3,3),stem(x,'rp'),title('火柴棍图')↙ subplot(2,3,4),pie(x),title('饼图')↙ subplot(2,3,5),pie3(x),title('三维饼图')↙ subplot(2,3,6),area(x),title('面积图')↙

6.三维网格命令mesh

由函数meshgrid 生成格点矩阵后,就可以求出各格点对应的函数值,然后利用三维网格命令mesh 与三维表面命令surf 画出空间曲面。函数mesh 用来生成函数的网格曲面。函数mesh 有如下三种形式:

mesh(X,Y,Z) X,Y,Z 是同维数的矩阵 mesh(x,y,Z) x,y 是向量,而Z 是矩阵。

等价于??

?=),,(),(],[Z Y X mesh y x meshgrid

Y X

mesh(Z) 若提供参数x,y,等价于mesh(x,y,Z),

否则默认x=1:n,y=1:m,其中n m Z ?

例27:画出函数)sin sin(y x z +=在-3 ≤ x ,y ≤ 3及2

22y x z -=在-10 ≤ x,y ≤ 10

上的图形。

解: (1)建立命令文件me.m

%函数 z=sin(x+siny) t1=-3:.1:3;

[x1,y1]=meshgrid(t1); %生成格点矩阵 z1=sin(x1+sin(y1)); %计算格点处的函数值 subplot(1,2,1),mesh(x1,y1,z1),title('sin(x+siny)') %马鞍面z=x^2-2y^2 t2=-10:.3:10;

[x2,y2]=meshgrid(t2);z2=x2.^2-2*y2.^2;

subplot(1,2,2),mesh(x2,y2,z2),title('马鞍面')

(2)执行命令文件me.m

数学实验课程公共邮箱帐号:publicmatlab@https://www.360docs.net/doc/5a8105639.html,密码:matlab

实验2 图像轮廓线提取技术

一、实验目的与要求:

1、能熟练应用matlab去分析问题、解决问题;

2、熟悉对matlab的图像处理的功能,掌握基本的图像处理的若干命令;

3、在应用matlab进行图像处理方面具备一定的编程能力。

4、掌握figure,imread,image,colormap,imshow,imwrite,subplot,title,

rgb2gray,imfinfo等语句的基本使用方法。

5、掌握图像轮廓线提取的简单方法并上机实现。

6、掌握matlab自带的一些常用边界检测算子的使用,提高对复杂图像处理的能

力。

二、问题描述

“图像轮廓线提取”是数字图像处理中对图像进行处理和分析之前的一项非常重要的工作。指的是从原始图像中,以手动或自动的方法,将图片中的人物、动物、植物或者其他任何对象的(特征)轮廓线提取出来,使之成为一幅独立的黑白线条图。从而达到将物体与背景分开,物体与物体分开的效果。提取轮廓线被应用于许多方面,例如人脸检测和跟踪。它结合了认知科学、图象处理、计算机图形学、机器视觉和模式识别等多个研究领域。

三、问题分析

既然“图像轮廓线提取”的黑白线条图所在位置往往是图像中两区域交界位

置,则可以通过图像特征(如形状、颜色、纹理等)变化情况来检测两区域交界处。最简单的方法就是采用阈值检测法,即将当前检测点的特征与周围点的特征进行比较,若发现有较大的差异,则认为当前检测点属于两区域的交界点,否则,认为同一区域内的点。

四、背景知识介绍

首先介绍几种基本的图像格式,再介绍一下matlab中常见的图像处理命令及其用法。

常见图像格式

1.二值图

单色图像则是带有颜色的图像中比较简单的格式,它一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。

2.灰度图

我们也可以用8个比特(一个字节)表示一个像素,相当于把黑和白等分为256个级别,“0”表示为黑,“255”表示为白,该字节的数值表示相应像素值的灰度值或亮度值,数值越接近“0”,对应像素点越黑,相反,则对应像素点越白,此种图像我们一般称之为灰度图像。单色图像和灰度图像又统称为黑白图像。3.彩色图

与黑白图像对应,就存在着彩色图像,这种图像要复杂一些,表示图像时,常用的图像彩色模式有RGB模式、CMYK模式和HIS模式,一般情况下我们只使用RGB模式,R对应红色,G对应绿色,B对应蓝色,它们统称为三基色,这三中色彩的不同搭配,就可以搭配成各种现实中的色彩,此时彩色图像的每一个像素都需要3个样本组成的一组数据表示,其中每个样本用于表示该像素的一个基本颜色。基于三刺激理论(Tristimulus Theory),我们的眼睛通过三种可见光对视网膜的锥状细胞的刺激来感受颜色。这些光的波长为630nm(红色)、530nm(绿色)和450nm(蓝色)时的刺激达到高峰。通过光源中的强度比较,我们感受到光的颜色。这种视觉理论是使用三种颜色基色:红、绿和蓝在视频监视器上显示彩色的基础,称为RGB颜色模型。以一个常见的例子来说明:Windows 环境下主要的图像格式之一,BMP灰度图像,以其格式简单,适应性强而倍受欢迎。这种文件格式就是每一个像素用8bit表示,显示出来的图像是黑白效果,最黑的像素的灰度(也叫作亮度)值为“0”,最白的像素的灰度值为“255”,整个图像各个像素的灰度值随机的分布在“0”到“255”的区间中,越黑的像素,其灰度值越接近于“0”,越白(既越亮)的像素,其灰度值越接近于“255”;与此对应的是在该文件类型中的颜色表项的各个RGB分量值是相等的,并且颜色表项的数目是256个。每一个像素颜色由其红、绿、蓝三色的强度值联合决定。4.

基于Matlab的彩色图像分割

用Matlab来分割彩色图像的过程如下: 1)获取图像的RGB颜色信息。通过与用户的交互操作来提示用户输入待处理的彩色图像文件路径; 2)RGB彩色空间到lab彩色空间的转换。通过函数makecform()和applycform()来实现; 3)对ab分量进行Kmean聚类。调用函数kmeans()来实现; 4)显示分割后的各个区域。用三副图像分别来显示各个分割目标,背景用黑色表示。Matlab程序源码 %文件读取 clear; clc; file_name = input('请输入图像文件路径:','s'); I_rgb = imread(file_name); %读取文件数据 figure(); imshow(I_rgb); %显示原图 title('原始图像'); %将彩色图像从RGB转化到lab彩色空间 C = makecform('srgb2lab'); %设置转换格式 I_lab = applycform(I_rgb, C); %进行K-mean聚类将图像分割成3个区域 ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量 nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; %分割的区域个数为3 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次 pixel_labels = reshape(cluster_idx,nrows,ncols); figure(); imshow(pixel_labels,[]), title('聚类结果'); %显示分割后的各个区域 segmented_images = cell(1,3); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors color = I_rgb; color(rgb_label ~= k) = 0; segmented_images{k} = color;

基于MATLAB的图像分割方法及应用

安徽财经大学 (《图像处理》课程论文) 题目:图像分割算法研究——基于分水岭分割法的彩色图像分割学院:管理科学与工程学院 专业:电子信息工程 姓名:万多荃 学号:20123712 电话: 任课教师:许晓丽 论文成绩: 2015年10月

目录 摘要 图像分割技术是非常重要的图像处理技术之一,无语是在理论研究还是在实际应用中人们都非常的重视。图像分割有许多的种类和方式,一些分割运算能够直接应用于任何图像,而另外一些却只适用于特别种类的图像。图像分割技术是从图像处理技术,再到后期的图像分析的关键步骤,图像分割结果的好坏,可以说对图像的理解有直接影响。

本文根据图像分割原理及人眼视觉的基本理论,研究图像的彩色模型及图像分割的常用方法,比较各方法的特点,并选择合适的方法对图像进行分割。本文采用MATLAB软件对图像进行彩色坐标变换及阈值分割,计算简单,具有较高的运行效率,分割的结果是使图像更符合人眼的视觉特性,获得比较好的效果。 关键字:图像处理;图像分割;人类视觉;MATLAB 1.前言 1.1图像分割技术 图像分割技术是非常重要的图像处理技术之一,无语是在理论研究还是在实际应用中人们都非常的重视。图像分割有许多的种类和方式,一些分割运算能够直接应用于任何图像,而另外一些却只适用于特别种类的图像。图像分割技术是从图像处理技术,再到后期的图像分析的关键步骤,图像分割结果的好坏,可以说对图像的理解有直接影响。 图像数据的模糊和噪声的干扰是分割问题的两大难题。到目前为止,还没有一个完美的图像分割方法,可以根据人的意愿精确地分割任何一种图像。现实图像中景物情况各种不同,具体问题需具体分析,按照实际情况选择得当的方法。分割成果的好坏或正确与否,到现在为止,尚无一个统一的评价和判断标准,分割的好坏务必从分割的效果和现实应用的场合来判断。然而,在人类研究图像的历史长河中,仍然积累了许多经典的图像分割方法。固然这些分割方法不可以适应全部种类的图像分割,可是这些方法却是图像分割方法进一步发展的根基。实际上,当代一些分割算法恰巧是从经典的图像分割方法中产生出来的。图像分割法大致可以分为三个种:边缘检测法,阈值分割法和基于区域的图像分割法。 2研究目的 视觉是人类最高级的感知器官,所以图像在人类感知中承担着非常重要的角色,这是毋庸置疑的。 本文的主要研究目的是对图像的分割方法进行研究,选择适合本论文的设计方法,然后通过对图像的分割,以达到人眼的最佳视觉效果。 本课题主要是通过对人眼的视觉系统研究,然后选择与人眼视觉系统密切相关的颜色模型进行颜色空间模型之间的相互转换,再对图像分割方法进行比较选择合适的分割方法,通过MATLAB平台实现彩色图像分割,最后对分割后的图像进行比较来获得到最佳的视觉效果。

基于MATLAB的图像阈值分割技术

基于MATLAB 的图像阈值分割技术 摘要:本文主要针对图像阈值分割做一个基于MATLAB 的分析。通过双峰法,迭代法以及OUTS 法三种算法来实现图像阈值分割,并且就这三种算法做了一定的分析和比较,在加椒盐的图片上同时进行三种实验,做出比较,最终得出实践结论。 关键词:图像分割 MATLAB 阈值分割 算法 引言:图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准,图像阈值分割即是其中的一种方法。 阈值分割技术因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术,已被应用于很多的领域,在很多图像处理系统中都是必不可少的一个环节。 1、阈值分割思想和原理 若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T 进行分割。这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。 在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的 设图像为f(x,y),其灰度集范围是[0,L],在0和L 之间选择一个合适的灰度阈值T ,则图像分割方法可由下式描述: 这样得到的g(x,y)是一幅二值图像。 (一)原理研究 图像阈值分割的方法有很多,在这里就其中三种方法进行研究,双峰法,迭代法,以及OUTS 法。 方法一:双峰法 T y x f T y x f y x g ≥<),(),(10){,(

部分图像分割的方法(matlab)

部分图像分割的方法(matlab)

大津法: function y1=OTSU(image,th_set) image=imread('color1.bmp'); gray=rgb2gray(image);%原图像的灰度图 low_high=stretchlim(gray);%增强图像,似乎也不是一定需要gray=imadjust(gray,low_high,[]); % subplot(224);imshow(gray);title('after adjust'); count=imhist(gray); [r,t]=size(gray); n=r*t; l=256; count=count/n;%各级灰度出现的概率 for i=2:l if count(i)~=0 st=i-1; break end end %以上循环语句实现寻找出现概率不为0的最小灰度值 for i=l:-1:1 if count(i)~=0; nd=i-1; break end end %实现找出出现概率不为0的最大灰度值 f=count(st+1:nd+1); p=st;q=nd-st;%p和分别是灰度的起始和结束值 u=0; for i=1:q; u=u+f(i)*(p+i-1); ua(i)=u; end

程序二: clc; clear; cd 'D:\My Documents\MATLAB' time = now; I = imread('qr4.bmp'); figure(1),imshow(I),title('p1_1.bmp'); % show the picture I2 = rgb2gray(I); figure(2),imshow(I2),title('I2.bmp'); %?D?μ??2¨ J = medfilt2(I2); figure(3),imshow(J); imwrite(J,'J.bmp'); [M N] = size(J); J1 = J(1:M/2,1:fix(N/2)); J2 = J(1:M/2,fix(N/2)+1:N); J3 = J(M/2+1:M, 1:fix( N/2)); J4 = J(M/2+1:M, fix(N/2)+1:N); % figure(4), img = J1; T1 = test_gray2bw( img ); % figure(5), img = J2; T2 = test_gray2bw( img ); % figure(6), img = J3; T3 = test_gray2bw( img ); % figure(7), img = J4; T4 = test_gray2bw( img ); T = [T1,T2;T3,T4]; figure,imshow(T) % T1 = edge(T,'sobel'); % figure,imshow(T1); % BW = edge(T,'sobel'); % f igure,imshow(BW); function [bw_img] = test_gray2bw( img ) %大津法 [row_img col_img ] = size( img ) all_pix = row_img * col_img % get probability of each pixel(????). count_pix = zeros(1,256) % pro_pix = [] for i = 1 : 1 : row_img for j = 1 : 1 : col_img count_pix(1,img(i,j)+1) = count_pix(1,img(i,j)+1) + 1 %í3??′?êy end en d pro_pix = count_pix / all_pix % choose k value; max_kesi = -1 T = 0 for k = 1 : 1 : while( i <= k ) wa = wa + pro_pix(1,i+1) %?°k??i£?????????μ??ò?è???ê£????êoí ua = ua + i * pro_pix(1,i+1) i = i + 1 end

基于Matlab的彩色图像分割

3 Matlab编程实现 3.1 Matlab编程过程 用Matlab来分割彩色图像的过程如下: 1)获取图像的RGB颜色信息。通过与用户的交互操作来提示用户输入待处理的彩色图像文件路径; 2)RGB彩色空间到lab彩色空间的转换。通过函数makecform()和applycform()来实现; 3)对ab分量进行Kmean聚类。调用函数kmeans()来实现; 4)显示分割后的各个区域。用三副图像分别来显示各个分割目标,背景用黑色表示。3.2 Matlab程序源码 %文件读取 clear; clc; file_name = input('请输入图像文件路径:','s'); I_rgb = imread(file_name); %读取文件数据 figure(); imshow(I_rgb); %显示原图 title('原始图像'); %将彩色图像从RGB转化到lab彩色空间 C = makecform('srgb2lab'); %设置转换格式 I_lab = applycform(I_rgb, C); %进行K-mean聚类将图像分割成3个区域 ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量 nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 3; %分割的区域个数为3 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次 pixel_labels = reshape(cluster_idx,nrows,ncols); figure(); imshow(pixel_labels,[]), title('聚类结果'); %显示分割后的各个区域 segmented_images = cell(1,3); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors

部分图像分割的方法(matlab)

大津法: function y1=OTSU(image,th_set) image=imread('color1.bmp'); gray=rgb2gray(image);%原图像的灰度图 low_high=stretchlim(gray);%增强图像,似乎也不是一定需要gray=imadjust(gray,low_high,[]); % subplot(224);imshow(gray);title('after adjust'); count=imhist(gray); [r,t]=size(gray); n=r*t; l=256; count=count/n;%各级灰度出现的概率 for i=2:l if count(i)~=0 st=i-1; break end end %以上循环语句实现寻找出现概率不为0的最小灰度值 for i=l:-1:1 if count(i)~=0; nd=i-1; break end end %实现找出出现概率不为0的最大灰度值 f=count(st+1:nd+1); p=st;q=nd-st;%p和分别是灰度的起始和结束值 u=0; for i=1:q; u=u+f(i)*(p+i-1); ua(i)=u; end

%计算图像的平均灰度值 for i=1:q; w(i)=sum(f(1:i)); end %计算出选择不同k的时候,A区域的概率 d=(u*w-ua).^2./(w.*(1-w));%求出不同k值时类间方差[y,tp]=max(d);%求出最大方差对应的灰度级 th=tp+p; if thth) y1(i,j)=x1(i,j); else y1(i,j)=0; end end end %上面一段代码实现分割 % figure,imshow(y1); % title('灰度门限分割的图像');

基于MATLAB的图像分割算法研究毕业设计

基于MA TLAB的图像分割算法研究 基于MATLAB的图像分割算法研究 摘要 本文从原理和应用效果上对经典的图像分割方法如边缘检测、阈值分割技术和区域增长等进行了分析。对梯度算法中的Roberts算子、Sobel算子、Prewitt算子、拉普拉斯(Laplacian)算子、LoG(Laplacian-Gauss)算子、坎尼(Canny)算子的分割步骤、分割方式、分割准则相互比较可以看出根据坎尼(Canny)边缘算子的3个准则得出的边缘检测结果最满意。而阈值分割技术的关键在于阈值的确定,只有阈值确定好了才能有效的划分物体与背景,但这种方法只对于那些灰度分布明显,背景与物体差别大的图像的分割效果才明显。区域增长的基本思想是将具有相似性质的像素集合起来构成新区域。与此同时本文还分析了图像分割技术研究的方向。 关键词:图像处理图像分割 Abstract This article analyses the application effect to the classics image segmentation method like the edge examination, territory value division technology, and the region growth and so on.For comparing the Roberts operator, Sobel operator, Prewitt operator, the operator of Laplacian and the operator of LoG(Laplacian-Gauss),Canny operator in gradient algorithm,the step, the way and the standard of the image segmentation,we can find out the three standard of Canny edge operator the edge detection result of reaching most satisfy. And the key point of threshold segmentation lie in fixing the threshold value, it is good to have only threshold value to determine it then can be effective to divide object and background,but this kind of method is good to those gray scales,the big difference image effect between the background and obiect. The basic idea of area is to form the new region from similar nature.And also, this paper analyses the research direction of image segmentation technology at the same time. Key words: image processing image segmentation operator

两个matlab实现最大熵法图像分割程序

%两个程序,亲测可用 clear all a=imread('moon.tif'); figure,imshow(a) count=imhist(a); [m,n]=size(a); N=m*n; L=256; count=count/N;%%每一个像素的分布概率 count for i=1:L if count(i)~=0 st=i-1; break; end end st for i=L:-1:1 if count(i)~=0 nd=i-1; break; end end nd f=count(st+1:nd+1); %f是每个灰度出现的概率 size(f) E=[]; for Th=st:nd-1 %%%设定初始分割阈值为Th av1=0; av2=0; Pth=sum(count(1:Th+1)); %%%第一类的平均相对熵为 for i=0:Th av1=av1-count(i+1)/Pth*log(count(i+1)/Pth+0.00001); end %%%第二类的平均相对熵为 for i=Th+1:L-1 av2=av2-count(i+1)/(1-Pth)*log(count(i+1)/(1-Pth)+0.00001); end E(Th-st+1)=av1+av2; end position=find(E==(max(E))); th=st+position-1

for i=1:m for j=1:n if a(i,j)>th a(i,j)=255; else a(i,j)=0; end end end figure,imshow(a); %%%%%%%%%%%%%%%%%%%%%2-d 最大熵法(递推方法) %%%%%%%%%%% clear all; clc; tic a=imread('trial2_2.tiff'); figure,imshow(a); a0=double(a); [m,n]=size(a); h=1; a1=zeros(m,n); % 计算平均领域灰度的一维灰度直方图 for i=1:m for j=1:n for k=-h:h for w=-h:h; p=i+k; q=j+w; if (p<=0)|( p>m) p=i; end if (q<=0)|(q>n) q=j; end a1(i,j)=a0(p,q)+a1(i,j); end end a2(i,j)=uint8(1/9*a1(i,j)); end

基于MATLAB的图像分割处理

学号:2011 —2012学年第 1 学期 专业综合课程设计报告 课题:基于MATLAB的图像分割处理 专业:通信工程 班级: 姓名: 指导教师: 成绩: 电气工程系 2011年11月16日

课程设计任务书 学生班级学生姓名:学号: 设计课题:基于MATLAB的图像分割处理 起止日期:2011.11.06—2011.11.16 指导教师: 设计要求: 本设计对图像分割中的小波变换进行了较为详细的综述。简要介绍医学图像分割的研究目的和意义,给出医学图像分割的基本方法及步骤。在对医学图像分割问题的起源、发展和研究现状进行简要综述的基础上,介绍该领域当前的研究热点及论文的主要研究内容。

图像分割是一种重要的图像分析技术。对图像分割的研究一直是图像技术 研究中的热点和焦点。图像分割是一个很关键的图像分析技术,是由图像处理 进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分割出来供 大家研究、处理和分析,一直都是图像技术研究中的热点。但是由于地域的差别,图像分割一直都没有一个比较通用的算法。 而对图像进行分割的方法有多种,阈值法是其中的一种简单实用的方法。本文主要对阈值法和matlab进行研究,并将它们结合起来以提高图像分割的准确性。本文的主要研究内容如下: 1) 分析了阈值分割方法近年来的新进展,并分析了图像阈值分割中的某些经典方法,如全局阈值方法、局部阈值方法、动态阈值方法等。2)讨论了matlab的主要应用及其特点。3) 将matlab应用于阈值分割,并做实验将其实现。 本次的设计报告首先介绍了双峰法以及最大类方差自动阈值法,然后重点介绍一种基于小波变换的图像分割方法,该方法先对图像的灰度直方图进行小波多尺度变换,然后从较大的尺度系数到较小的尺度系数逐步定位出灰度阈值。最后,对这几种算法的分割效果进行了比较。实验结果表明, 本设计能够实时稳定的对目标分割提取,分割效果良好。医学图像分割是医学图像处理中的一个经典难题。图像分割能够自动或半自动描绘出医学图像中的解剖结构和其它感兴趣的区域,从而有助于医学诊断。 关键词:小波变换;图像分割;阈值

图像分割技术与MATLAB仿真知识讲解

图像分割技术与M A T L A B仿真

中南民族大学 毕业论文(设计) 学院: 计算机科学学院 专业: 自动化年级:2012 题目: 图像分割技术与MATLAB仿真 学生姓名: 高宇成学号:2012213353 指导教师姓名: 王黎职称: 讲师 2012年5月10日

中南民族大学本科毕业论文(设计)原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名:年月日

目录 摘要 0 Abstract 0 引言 (2) 1 图像分割技术 (3) 1.1 图像工程与图像分割 (3) 1.2 图像分割的方法分类 (4) 2 图像分割技术算法综述 (5) 2.1 基于阈值的图像分割技术 (5) 2.2边缘检测法 (6) 2.3 区域分割法 (8) 2.4 基于水平集的分割方法 (9) 2.5 分割算法对比表格 (9) 3基于水平集的图像分割 (11) 3.1 水平集方法简介 (11) 3.2 水平集方法在图像分割上的应用 (12) 3.3 仿真算法介绍 (13) 3.4 实验仿真及其结果 (14) 结论 (22) 致谢 (23) 参考文献 (23)

图像分割技术研究及MATLAB仿真 摘要:作为一项热门的计算机科学技术,图像分割技术已经在我们生活中越来越普及。顾名思义这项技术的目的就是,将目标图像从背景图像中分离出去。由于这些被分割的图像区域在某些属性上很相近,因此图像分割与模式识别以及图像压缩编码有着密不可分的关系。完成图像分割所采用的方法各式各样,所应用的原理也不同。但他们的最终目的都是把图像中性质相似的某些区域归为一类,把性质差异明显的不同区域分割开来。通常在分割完成之后,我们就要对某些特定区域进行分析、计算、评估等操作,因而分割质量的好坏直接影响到了下一步的图像处理[1],因此图像分割是图像处理的一个关键步奏。图像分割技术在各个领域都有着及其重要的意义;在工业上有卫星遥感,工业过程控制监测等等;在医学方面,水平集的分割方法还可以通过医学成像帮助医生识别模糊的病变区域;在模式识别领域还可应用到指纹扫描、手写识别、车牌号识别等等。 本课题的研究内容是对图像分割技术的几种常用的方法进行综述和比较,并基于其中一种方法进行MATLAB仿真测试,给出性能分析比较结果。 关键字:图像分割,MATLAB仿真,模式识别 Image Segmentation and Matlab Simulation Abstract:Image segmentation is to image representation for the physically meaningful regional connectivity set, namely according to the prior knowledge of target and background, we on the image of target and background of labeling and localization, then separate the object from the

用matlab实现自适应图像阈值分割最大类方差法代码

%用matlab实现自适应图像阈值分割最大类方差法代码clear; warning off; SE = strel('diamond',4); BW1 = imread('cameraman.tif'); BW2 = imerode(BW1,SE); BW3 = imdilate(BW2,SE); BW4 = BW1-BW3; %rgb转灰度 if isrgb(BW4)==1 I_gray=rgb2gray(BW4); else I_gray=BW4; end figure,imshow(I_gray); I_double=double(I_gray);%转化为双精度 [wid,len]=size(I_gray); colorlevel=256; %灰度级 hist=zeros(colorlevel,1);%直方图 %threshold=128; %初始阈值 %计算直方图 for i=1:wid for j=1:len m=I_gray(i,j)+1; hist(m)=hist(m)+1; end end hist=hist/(wid*len);%直方图归一化 miuT=0; for m=1:colorlevel miuT=miuT+(m-1)*hist(m); end xigmaB2=0; for mindex=1:colorlevel threshold=mindex-1; omega1=0; omega2=0; for m=1:threshold-1 omega1=omega1+hist(m); end omega2=1-omega1; miu1=0; miu2=0; for m=1:colorlevel if m

基于MATLAB的数字图像分割的研究与实现

本科毕业论文(设计) 题目:基于MATLAB的数字图像分割的研究与实现 学院:计算机与信息工程学院学生: 学号: 专业: 年级: 完成日期:2012 年04 月 指导教师:

基于MATLAB的数字图像分割的研究与实现 摘要:视觉和听觉是我们认识和感知外部世界的主要途径,而视觉又是其中最重要的,因此要想更细致、全面地把握这些图像信息就需要对其进行必要的处理。在数字图像处理的研究和应用中很多时候我们只对图像的某些部分和特征感兴趣,此时就需要利用图像分割技术将所需的目标与图片的其他部分区分开,以供我们对图像进一步研究和分析。图像分割即通过一些必要的算法把图像中有意义的部分或特征提取出来,将图像分为若干有意义的区域,使得这些区域对应图像中的不同目标,进而能够对所感兴趣的区域进行研究。基于图像分割技术在图像处理之中的重要性,本研究在此对图像分割的一些经典算法进行了学习和对比,并通过MATLAB对其进行了实验,通过不同的算法对不同的图片进行处理,分析其优缺点,以便在进行图像分割时可以根据图片的特征选择合适的算法。 关键字:数字图像;分割;MATLAB

The Research and Implementation of Digital Image Segmentation Based on the MATLAB Abstract : Vision and auditory are the main ways which we use to understand and perceive the world outside, while vision is the most important. Therefore, it's require to process the image data to grasp them more painstaking and completely. In digital image processing of research and application we are only interested to some parts of the image and characteristic in many times, then you need to use the image segmentation technology to separate the goal and the picture for other parts for our further research and analysis of the image.Image segmentation is dividing the image into some significant areas through some necessary algorithms, then make these areas corresponding to different goals and we can do some research about the areas we are interested to. Based on the importance of image segmentation technology in image processing, I compared several classical algorithms of image segmentation. In the meanwhile, I used the MATLABto do some research and to process the various images with different algorithms so that it's convinent to find the advantages of these algorithms. Then, I can base on the characteristics of the images to choose the suitable algorithms when to make some digital image segmentation. Key words : D igital Image; Segmentation; MATLAB

车牌图像分割matlab代码

图像分割matlab代码 作者:佚名发布时间:2010-1-1 阅读次数:498 字体大小: 【小】【中】【大】 % This is a program for extracting objects from an image. Written for vehicle number plate segmentation and extraction % Authors : Jeny Rajan, Chandrashekar P S % U can use attached test image for testing % input - give the image file name as input. eg :- car3.jpg clc; clear all; k=input('Enter the file name','s'); % input image; color image im=imread(k); im1=rgb2gray(im); im1=medfilt2(im1,[3 3]); %Median filtering the image to remove noise% BW = edge(im1,'sobel'); %finding edges [imx,imy]=size(BW); msk=[0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 1 1 0; 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %Smoothing image to reduce the number of connected components L = bwlabel(B,8);% Calculating connected components mx=max(max(L)) % There will be mx connected components.Here U can give a value between 1 and mx for L or in a loop you can extract all connected components % If you are using the attached car image, by giving 17,18,19,22,27,28 to L you can extract the number plate completely. [r,c] = find(L==17); rc = [r c]; [sx sy]=size(rc);

数字图像灰度阈值的图像分割技术matlab

1.课程设计的目的 (1)使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各 种因素对分割效果的影响 (2)使用Matlab软件进行图像的分割 (3)能够进行自行评价各主要算子在无噪声条件下和噪声条件下的分割 性能 (4)能够掌握分割条件(阈值等)的选择 (5)完成规定图像的处理并要求正确评价处理结果,能够从理论上做出合 理的解释 2.课程设计的要求 (1)能对图像文件(bmp,jpg,tiff,gif)进行打开,保存,退出等功能操作 (2)包含功能模块:图像的边缘检测(使用不同梯度算子和拉普拉斯算子)(3)封闭轮廓边界 (4)区域分割算法:阈值分割,区域生长等

3.前言 3.1图像阈值分割技术基本原理 所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准]5[。 在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区域。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。 若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T进行分割。这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。 在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的

基于某matlab车牌地定位与分割识别程序

基于Matlab的车牌定位与分割 经典算法 I=imread('car.jpg'); %读取图像 figure(); subplot(3,2,1),imshow(I), title('原始图像'); I1=rgb2gray(I);%转化为灰度图像 subplot(3,2,2),imshow(I1),title('灰度图像'); I2=edge(I1,'robert',0.09,'both');%采用robert算子进行边缘检测

subplot(3,2,3),imshow(I2),title('边缘检测后图像'); se=[1;1;1]; %线型结构元素 I3=imerode(I2,se); %腐蚀图像 subplot(3,2,4),imshow(I3),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); 矩形结构元素 I4=imclose(I3,se);%图像聚类、填充图像subplot(3,2,5),imshow(I4),title('填充后图像');

I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I5),title('形态滤波后图像'); [y,x,z]=size(I5); I6=double(I5); Y1=zeros(y,1); for i=1:y for j=1:x

if(I6(i,j,1)==1) Y1(i,1)= Y1(i,1)+1; end end end [temp MaxY]=max(Y1); figure(); subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素'); %求的车牌的行起始位置和终止位置 PY1=MaxY; while ((Y1(PY1,1)>=50)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Y1(PY2,1)>=50)&&(PY2

MATLAB 软件使用简介 轮廓线提取 实验2 图像轮廓线提取技术 实验3 RGB向量空间中的图像分割技术 实

MATLAB 软件使用简介 MATLAB 是一个功能强大的数学软件, 它不但可以解决数学中的数值计算问题, 还可以解决符号演算问题, 并且能够方便地绘出各种函数图形。MATLAB自1984年由美国的MathWorks公司推向市场,现已成为国际最优秀的科技应用软件之一。 一、MATLAB 的工作界面 启动MATLAB后, 出现MATLAB命令窗口,空白区域是MATLAB 的工作区, 在此可输入和执行命令。 二、 MATLAB 操作的注意事项 ●在工作区输入MATLAB命令后, 按下Enter键才能执行命令。 ●MATLAB 是区分字母大小写的。 ●如果不想显示结果,只要在所输入命令的后面加上一个分号“;”即可。 如:x= 2 + 3↙ x=5 x = 2 + 3 ; ↙不显示结果5 ●如果一个表达式一行写不下,可以在行尾键入“...”来换行。 如:q=5^6+sin(pi)+exp(3)+(1+2+3+4+5) ... -5+1/2-567 ●命令行与M文件中的百分号“%”标明注释。 三、MATLAB的变量与表达式 ●MATLAB的变量名 MATLAB的变量名是用一个字母打头,后面最多跟19个字母或数字。应该注意不要用MATLAB中的内部函数或命令名作为变量名。列出当前工作空间中的变量命令为: who 将内存中的当前变量以简单形式列出; whos 列出当前内存变量的名称、大小、类型等信息;

clear 清除内存中的所有变量与函数。 ● MATLAB 常用的预定义变量 ans :保存计算结果的缺省变量;Inf 或inf :无穷大; i 或j pi :圆周率π。 ● MATLAB 的运算符 数学运算符:+,-,*, \(左除), / (右除) , ^ (乘幂) 关系运算符:<, >, <=, >=, = =(等于), ~= (不等于) 逻辑运算符:&(逻辑与), |( 逻辑或), ~( 逻辑非) ● MATLAB 的表达式及语句 表达式由运算符、函数、变量名和数字组成的式子。MATLAB 语句由变量、表达式及MATLAB 命令组成,用户输入的语句由MATLAB 系统解释运行。MATLAB 语句的2种最常见的形式为: 形式1:表达式 形式2:变量=表达式 在第一种形式中,表达式运算后产生的结果如果为数值类型,系统自动赋值给变量ans ,并显示在屏幕上。 例1:用两种形式计算3 6sin 5e ++π算术运算结果。 解:形式1: 5^6+sin(pi)+exp(3) ↙ ans = 1.5645e+004 形式2: a=5^6+sin(pi)+exp(3) ↙ a = 1.5645e+004 例2:已知矩阵 ?? ? ???=???? ??=22 11 ,2121B A ,对它们做简单的关系与逻辑运算 解:A=[1,2;1,2]; ↙ B=[1,1;2,2]; ↙ C=(A

相关文档
最新文档