09信计数学实验.docx

上传人:b****3 文档编号:6249468 上传时间:2023-05-09 格式:DOCX 页数:12 大小:918.43KB
下载 相关 举报
09信计数学实验.docx_第1页
第1页 / 共12页
09信计数学实验.docx_第2页
第2页 / 共12页
09信计数学实验.docx_第3页
第3页 / 共12页
09信计数学实验.docx_第4页
第4页 / 共12页
09信计数学实验.docx_第5页
第5页 / 共12页
09信计数学实验.docx_第6页
第6页 / 共12页
09信计数学实验.docx_第7页
第7页 / 共12页
09信计数学实验.docx_第8页
第8页 / 共12页
09信计数学实验.docx_第9页
第9页 / 共12页
09信计数学实验.docx_第10页
第10页 / 共12页
09信计数学实验.docx_第11页
第11页 / 共12页
09信计数学实验.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

09信计数学实验.docx

《09信计数学实验.docx》由会员分享,可在线阅读,更多相关《09信计数学实验.docx(12页珍藏版)》请在冰点文库上搜索。

09信计数学实验.docx

09信计数学实验

 

课程名称:

数学软件与实验成绩:

 

彩色图像分割

 

课程号:

090032

课序号:

02

*******

班级:

2009信计

学号:

**********

填写日期:

2012.05.12

 

彩色图像分割

2009信息与计算科学2009431046

一、实验问题:

任给一张彩色图片,自动完成图像分割。

二、符号说明:

Roberts、Sobel、Prewitt、LOG、Canny:

均为图像边缘检测算法

三、问题分析与建模:

<1>问题分析:

图像分割是一个将一幅数字图像划分成不交叠的、连通的像素集的过程,其中一个对应于背景,其他的则对应于图像中的各个物体。

图像分割的目标是重点根据图像中的物体将图像的像素分类,并提取感兴趣目标图像。

<2>数学建模:

由于彩色图像分割的方法有很多种,难以逐一进行举例,在此我仅就两种方法进行分割,一种是图像的边缘检测方法,另一种是聚类分割算法。

而边缘检测方法又有五种不同的算子,Roberts、Sobel、Prewitt、LOG、Canny,因此我将先对五种算子进行比较,选出最好的一个再借此进行分割。

第二步再详细介绍聚类分析算法。

四、Matlab求解:

<1>边缘检测方法

1、下面我们先将图像边缘检测不同方法比较。

将Roberts、Sobel、Prewitt、LOG、Canny算子等经典图像分割算法对灰度图像分割的结果进行比较。

(1)Matlab代码如下:

clc;

clearall;

closeall;

f=imread('g:

hello.jpg');

figure

(1);

imshow(f);title('原彩色图');

H=rgb2gray(f);

figure

(2);

imshow(H);title('灰度图');

figure(3)

subplot(2,3,1);

imshow(H);title('灰度图');

e=edge(H,'roberts');

subplot(2,3,2);

imshow(e);title('Roberts算子');

a=edge(H,'sobel');

subplot(2,3,3);

imshow(a);title('Sobel算子');

b=edge(H,'prewitt');

subplot(2,3,4);

imshow(b);title('Prewitt算子');

c=edge(H,'log');

subplot(2,3,5);

imshow(c);title('LOG算子');

d=edge(H,'canny');

subplot(2,3,6);

imshow(d);title('Canny算子');

(2)运行结果:

2、比较'roberts','sobel','prewitt','log','canny'算子的检测效果:

Robert算子:

根据任一相互垂直方向上的差分都用来估计梯度,Robert算子采用对角方向相邻像素只差

Sobel算子:

其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值,缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,即Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。

Prewitt算子:

该算子与Sobel算子类似,只是权值有所变化,但两者实现起来功能还是有差距的,据经验得知Sobel要比Prewitt更能准确检测图像边缘。

log算子:

log算法是一种基于灰度值的二阶导数来进行边缘检测的,通过检测零点来进行边缘检测。

Canny算子:

优点:

使用两种不同的阈值分别检测强、弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。

该方法不易受噪声干扰,能够在噪声和边缘间取得较好的平衡,检测到真正的弱边缘。

3、因此我得到edge函数提供的最有效的边缘检测方法是canny方法。

接下来我用此算法来实例分割一个彩图。

1、代码:

Clc;

Clearall;

Closeall;

I=imread('e:

1.jpg');

figure

(1);

imshow(I);title('彩色图');

H=rgb2gray(I);

figure

(2);

imshow(H),title('灰度图');

bw=edge(H,'sobel');

figure(3);

imshow(bw),title('边缘图');

2.运行结果:

 

 

<2>聚类分割方法:

1、实验代码:

clc,clear;

I=imread('g:

12074.jpg');

I1=I(:

:

1);

I2=I(:

:

2);

I3=I(:

:

3);

[y,x,z]=size(I);

d1=zeros(y,x);

d2=d1;

myI=double(I);

I0=zeros(y,x);

fori=1:

x

forj=1:

y

d1(j,i)=sqrt((myI(j,i,1)-10)^2+(myI(j,i,2)-10)^2+(myI(j,i,3)-10)^2);

d2(j,i)=sqrt((myI(j,i,1)-180)^2+(myI(j,i,2)-180)^2+(myI(j,i,3)-180)^2);

ifd1(j,i)>=d2(j,i)

I0(j,i)=1;

end

end

end

figure

(1);

subplot(221);imshow(I);title('a原始图像');

subplot(222);imshow(I1);title('bR分量');

subplot(223);imshow(I2);title('cG分量');

subplot(224);imshow(I3);title('dB分量');

figure

(2);

subplot(131);imhist(I1);title('R分量直方图');

subplot(132);imhist(I2);title('G分量直方图');

subplot(133);imhist(I3);title('B分量直方图');

figure(3);

subplot(221);imshow(I0);title('聚类分割后的图像');

RGB2=imadjust(I,[0.60.8],[01],0.8);

figure

(1);

subplot(221);imshow(I);

subplot(222);imshow(RGB2);

I=rgb2gray(RGB2);

figure

(2);

subplot(221);imshow(I);title('a灰度图像');

subplot(222);imhist(I);title('b直方图');

[mn]=size(I);

fori=1:

m%进行灰度变化

forj=1:

n

ifI(i,j)<=10

I(i,j)=0;

elseifI(i,j)<=80

I(i,j)=(255-0)/(80-10)*(I(i,j)-10)+10;

else

I(i,j)=255;

end

end

end

%ÏÔʾ±ä»»ºóµÄ½á¹û

subplot(223);imshow(I);title('c灰度变化');

I=im2double(I);

subplot(224);imhist(I);title('d变换后直方图');

J=imadjust(I,[0.20.8],[01],0.8);

figure(3);

subplot(221);imshow(J);title('a对比度调整');

I2=medfilt2(J,[55]);

subplot(222);imshow(I2);title('b中值滤波');

I3=decorrstretch(I2);

subplot(223);imshow(I3);title('c去相关拉伸');

[mn]=size(I2);

fori=1:

m

forj=1:

n

ifI2(i,j)>0.001&I2(i,j)<0.95I2(i,j)=1;

elseI2(i,j)=0;

end

end

end

subplot(224);imshow(I2);title('d图像二值化');

2、运行结果:

 

 

五、总结体会:

通过本次实验,我学会了边缘检测的Matlab实现方法,掌握了Matlab区域操作函数的使用和图像分析和理解的基本方法,并对用'roberts','sobel','prewitt','canny','log'算子对图像进行边缘检测的不同效果有了更直观的认识,而且我还加深了对图像聚类分割的理解。

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

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2