爱玩科技网
您的当前位置:首页Matlab图像处理工具箱使用简介

Matlab图像处理工具箱使用简介

来源:爱玩科技网


三天三夜72小时:(2015.9.11~13)

读懂题目-》查找文献资料-》选择题目-》重查找文献

资料-》

精读其中几篇-》查找资料的资料。。。。(资料查找+现学现用) 要想竞赛获奖,所写论文中需要亮点和特色。

参考资料:

《Matlab图像处理与应用》 高成主编,2007.04 校超星数字图书馆可阅读。

Matlab图像处理工具箱使用简介

基本概念:

数字图像指的是一个被采样和量化后的二维函数,采用等距离矩形网格采样,对幅度进行等间量化而成。至此,一幅数字图像是一个被量化的采样数值的二维矩阵。

将一幅二维的图像通过有限个离散点来表示就成为了数字图像,其中的每个点称为图像元素,即像素。

数字图像处理

图像处理:图像输入→图像增强/复原/编码等→图像输出 图像识别:图像输入→图像预处理→图像分割→特征提取→图像分类→识别结果输出

图像理解:图像输入→图像预处理→图像描述→图像分析和理解→图像解释

图像处理算法被认作数学建模十大算法之一。

计算机图像处理与分析是集光学、数学、计算机科学、电子

学、信息论、控制论、物理学、心理学和生理学等学科的一门综合性边缘科学。随着计算机科学的迅猛发展,以及与近代发展的新理论如小波分析、马尔柯夫随机场、分形学、数学形态学、人工智能和人工神经网络等的结合,计算机图像处理与分析近年来获得了长足的进展,呈现出强大的生命力。已在科学研究、工农业生产、军事技术、医疗卫生、教育等许多领域得到广泛应用,产生了巨大的经济和社会效益,对推动社会发展,改善人们生活水平都起到了重要的作用。

计算机图像处理的应用领域

计算机图像处理和计算机、多媒体、智能机器人、专家系统等技术的发展紧密相关。近年来计算机识别、理解图像的技术发展很快,也就是图像处理的目的除了直接供人观看(如医学图像是为医生观看作诊断)外,还进一步发展了与计算机视觉有关的应用,如邮件自动分检,车辆自动驾驶等。下面罗列—些典型应用实例,而实际应用更广。

1.在生物医学中的应用

主要包括显微图像处理;DNA显示分析;红、白血球分析计数;虫卵及组织切片的分析;癌细胞识别;染色体分析;心血管数字减影及其他减影技术;内脏大小形状及异常检测;微循环的分析判断;心脏活动的动态分析;热像、红外像分析;x光照片增强、冻结及伪彩色增强;超声图像成像、冻结、增强及伪彩色处理;CT、MRI、γ射线照相机、正电子和质子CT的应用;专家系统如手术PLANNING规划的应用;生物进化的图像分析等。

2.遥感航天中的应用

军事侦察、定位、导航、指挥等应用;多光谱卫星图像分析,地形、地图、国土普查;地质、矿藏勘探;森林资源探查、分类、防火;水利资源探查,洪水泛滥监测;海洋、渔业方面如温度、 渔群的监测、预报;农业方面如谷物估产、病虫害调查;自然灾害、环境污染的监测,气象、天气预报图的合成分折预报;天文、太空星体的探测及分析;交通、空中管理、铁路选线等。 3.工业应用

CAD和CAM技术用于模具、零件制造、服装、印染业;零件、产品无损检测,焊缝及内部缺陷检查,流水线零件自动检测识别(供装配流水线用);邮件自动分检、包裹分检识别;印制板质量、缺陷的检出;生产过程的监控;交通管制、机场监控;纺织物花型、图案设计;金相分析;光弹性场分析;标识、符号识别如超级市场算账、火车车皮识别;支票、签名、文件识别及辨伪;运动车、船的视觉反馈控制;密封元器件内部质量检查等。 4.军事领域中的应用

巡航导弹地形识别;指纹自动识别;罪犯脸形的合成;侧视雷达的地形侦察;遥控飞行器RPV的引导;目标的识别与制导;警戒系统及自动火炮控制;反伪装侦察,手迹、人像、印章的鉴定识别;过期档案文字的复原;集装箱的不开箱检查等。 5.其他应用

图像的远距离通信;多媒体计算机系统及应用,电视电话;服装试穿显示;电视会议;办公自动化、现场视频管理等。

2001年全国大学生数学建模竞赛题目 A题 血管的三维重建

断面可用于了解生物组织、器官等的形态。例如,将样本染色后切成厚约1m m的切片,在显微镜下观察该横断面的组织形态结构。如果用切片机连续不断地将样本切成数十、成百的平行切片, 可依次逐片观察。根据拍照并采样得到的平行切片数字图象,运用计算机可重建组织、器官等准确的三维形态。

假设某些血管可视为一类特殊的管道,该管道的表面是由球心沿着某一曲线(称为中轴线)的球滚动包络而成。例如圆柱就是这样一种管道,其中轴线为直线,由半径固定的球滚动包络形成。

现有某管道的相继100张平行切片图象,记录了管道与切片的交。图象文件名依次为0.bmp、1.bmp、…、 99.bmp,格式均为BMP,宽、高均为512个象素(pixel)。为简化起见,假设:管道中轴线与每张切片有且只有一个交点;球半径固定;切片间距以及图象象素的尺寸均为1。

取坐标系的Z轴垂直于切片,第1张切片为平面Z=0,第100张切片为平面Z=99。Z=z切片图象中象素的坐标依它们在文件中出现的前后次序为

(-256,-256,z),(-256,-255,z),…(-256,255,z), (-255,-256,z),(-255,-255,z),…(-255,255,z), ……

( 255,-256,z),( 255,-255,z),…(255,255,z)。 试计算管道的中轴线与半径,给出具体的算法,并绘制中轴线在

XY、YZ、ZX平面的投影图。

第2页是100张平行切片图象中的6张,全部图象请从网上下载。 关于BMP图象格式可参考:

1. 《Visual C++数字图象处理》第12页2.3.1节。何斌等编著,人民邮电出版社,2001年4月。

2. http://www.dcs.ed.ac.uk/home/mxr/gfx/2d/BMP.txt

Z=98 Z=99 Z=49 Z=50 Z=0 Z=1

\"百张切片动态叠加演示(flash)\" \"三维模型演示(matlab)\"

Matlab图像处理工具箱介绍 MATLAB图像文件格式 pcx / bmp / tif etc. MATLAB图像类型

MATLAB中,—幅图像可能包含—个数据矩阵,也可能包含一个颜色映射表矩阵。MATLAB中有4种基本的图像类型:

索引图像:索引图像是一种把像素值直接作为RGB调色板下标的图像。

imshow trees.tif A=getimage; isind(A)

[X,map]=imread('trees.tif'); figure;imshow(X,map)

灰度图像:灰度数字图像是每个像素只有一个从黑到白采样颜色的图像

imshow rice.png

A=getimage; isgray(A)

X=imread('rice.png'); figure;imshow(X)

RGB图像:每一个像素,都用 R G B 的不同比例来表示 imshow greens.jpg A=getimage; isrgb(A)

X=imread('greens.jpg'); figure;imshow(X);

二值图像:也称二进制图像,二值图像是指将图像上的每一个像素只有两种可能的取值

或灰度等级状态

imshow logo.tif A=getimage; isbw(A)

X=imread(' logo.tif '); imshow(A)

MATLAB图像文件的读写 info=imfinfo('文件名'[,文件格式]) [...]=imread('filename')

imwrite(A,[map,]'filename'[,文件格式])

MATLAB的二进制图像操作

二进制图像是一种所有像素值只能在2个可能的离散值中取其一的图像。本质上,这两个可取的像素值分别对应于关闭(off)和打开(on)。MATLAB中以这种方式来操作图像可以更加容易地识别出图像的结构特征。例如,在二进制图像中,我们可以非常容易地从图像背景中识别MATLAB对象。

在MATLAB的图像处理工具箱中,二进制图像保存在一个0(表征off关闭像素)和1(表征on打开像素)的二维矩阵中。在二进制图像中,on像素处于前景,而off像素则处于背景。

二进制图像操作只返回与二进制图像的形式或结构有关的信息。如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制图像格式(例如,可以利用MATLAB提供的im2bw函数)。 图像的形态操作

MATLAB中的形态操作是处理基于形状二进制图像的常用方法。形态操作将二进制图像作为输入,同时返回二进制图像作为其输出。其中输出图像中每个像素的值是由输入图像的相应像素及其边沿像素的值确定的。通过适当选择边沿像素的组成,我们可以构建一些对输入图像中特定形状比较敏感的形态操作。 图像的放大和腐蚀

%对cameraman.tif的二值化图像进行膨胀操作 I=imread('cameraman.tif'); figure,imshow(I) J=im2bw(I);

figure,imshow(J) SE=ones(6,2); BW1=imdilate(J,SE); figure,imshow(BW1) %%%%%

I=imread('cameraman.tif'); figure,imshow(I) J=im2bw(I); figure,imshow(J)

BW1= bwmorph(J,'dilate'); figure,imshow(BW1)

%对cameraman.tif的二值化图像进行腐蚀操作 I=imread('cameraman.tif'); figure,imshow(I) J=im2bw(I); figure,imshow(J) SE=eye(5);

BW1=imerode(J,SE); figure,imshow(BW1)

%%%%%%%%

I=imread('cameraman.tif'); figure,imshow(I) J=im2bw(I);

figure,imshow(J)

BW1= bwmorph(J,'erode'); figure,imshow(BW1)

%开闭的效果 I=imread('circbw.tif'); figure,imshow(I) SE=ones(40,30); BW1=imerode(I,SE); figure,imshow(BW1) BW2=imdilate(BW1,SE); figure,imshow(BW2)

I=imread('circbw.tif'); figure,imshow(I) BW1= bwmorph(I,'open'); figure,imshow(BW1) 边界提取

I1=imread('rice.png'); I2=im2bw(I1); figure,imshow(I2) I4= bwperim(I2); figure,imshow(I4) 对象标注

clear I(8,8)=0;

I(2:4,2:3)=1;I(5:7,4:5)=1;I(2,6)=1;I(2:3,7:8)=1; imshow(I) L=bwlabel(I,4); map=[0 0 0;jet(3)];

figure;imshow(L+1,map,'notruesize') %指定8-连接边沿约定 L=bwlabel(I,8); map=[0 0 0;jet(3)];

figure;imshow(L+1,map,'notruesize') 图像的特性度量 图像的面积

I=imread('circles.png'); imshow(I); area=bwarea(I) [m,n]=size(I) 欧拉数

在几何理论中,欧拉数是图像的一种拓扑度量。欧拉数等于图像中所有对象的总数减去这些对象中洞孔的数目。I=imread('circles.png'); imshow(I) bweuler(I) 细化与骨架提取

I1= imread('circles.png'); imshow(I1);

I2 = bwmorph(I1,'skel',Inf); figure;imshow(I2) I3= bwmorph(I1,'thin',Inf); figure;imshow(I3)

2001年赛题分析: 问题重述

为简化,假设:管道中轴线与每张切片有且只有一个交点; 球半径固定;切片间距以及图象象素的尺寸均为1。

取坐标系的Z轴垂直于切片,第1张切片为平面Z=0,第 100张切片为平面Z=99。Z=z切片图象中象素的坐标依它们 在文件中出现的前后次序为

(-256, -256, z),(-256, -255, z),…(-256,255,z), (-255,-256,z),(-255,-255,z),…(-255,255,z)…… ( 255,-256,z),( 255,-255,z),…(255,255,z)。 试计算管道的中轴线与半径,给出具体的算法,并绘制中轴 线在XY、YZ、ZX平面的投影图。 假设

1)血管的表面是由半径固定、球心沿着某一曲 线(称为中轴线)的球滚动而形成的包络面。

2)中轴线上任两点处的法截面圆不相交。 3)管道中轴线与每张切片平面有且只有一个交 点。

图象的矩阵表示

二值图象的象素矩阵为0-1矩阵,矩阵横 纵坐标对应原图象的直角坐标系位置,0和1分 别代表该位置上的黑或白象素。 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 问题分析

将管道看成是小球运动包络形成的,则管道的切片便是滚动的小球在平面z上的截圆形成的包络。

解决问题的关键在于发现

定理:在一条粗细均匀血管的任何横截面的图象内,其包含 的最大内切圆的圆心位于中轴线上,该圆的半径等于滚动球 的半径。 基于:

1)球的任意截面都是圆

2)经过球心的球截面当中半径最大的圆

建模方法思想 求滚动球半径r的方法 1)平均法 2)抽样法 3)极大似然法 4)叠加法 求出的半径在

28.5~30.5之间,为什么? 需考虑的细节

1)如何读入一个数字图象,即如何由bmp图象文件

(或其它格式的图象文件)得到象素矩阵? MATLAB函数imread ( ): m=imread('0.bmp ') 或把图象序列转换为三维数组 for b=0:99

m(:,:,b+1)=imread([int2str(b),'.bmp']); end

2)何谓边界点?

四邻域的概念 找边界点坐标的算法 也可用MATLAB函数:edge()

如:m=imread('c:\\0.bmp');bw=edge(m, 'sobel');

3)最大内切圆的圆心和半径须取小数和整数有区别吗? 4)取整方法:四舍五入(round),向上取整(ceil),向下取整(floor) 5)如何由切片图叠合作出血管的立体图? 方法1:利用plot3() for b=0:99

m1=imread([int2str(b),'.bmp']); m(:,:,b+1)=edge(m1,'sobel'); end for k=0:99 for i=1:512 for j=1:512 if (m(i,j,k+1)==1) plot3(i,j,k+1,'b-.');hold on end,end,end,end

rotate3d,hold off 方法2:利用patch() for b=0:99

m(:,:,b+1)=[imread([int2str(b),'.bmp'],'bmp')]'; end

m1=m(1:4:512,1:4:512,:); for i=1:size(m1,1) for j=1:size(m1,2) for k=1:size(m1,3) if m1(i,j,k)==0 m1(i, j, k)=88; else m1(i,j,k)=0; end, end, end,end ms=smooth3(m1);

hiso=patch(isosurface(ms,5),'FaceColor',[1,.75,.65],'EdgeColor','none');

hcap=patch(isocaps(m1,5),'FaceColor','interp','EdgeColor','none'); colormap('default') view(45,30), axis tight grid

daspect([1,1,.4])

lightangle(45,30); lighting phong isonormals(ms, hiso)

set(hcap,'AmbientStrength',.6)

set(hiso,'SpecularColorReflectance',0,'SpecularExponent',50) rotate3d

中轴线的建模:求中轴线Γ与各横断面的交点和曲线拟合、逼近。参赛者使用的方法主要有: 1)枚举法 2)平行切线法 3)外推法 4)滚球法 5)投影法 6)变换法 7)细化法

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