matlab图像处理——距离变换
matlab图像处理——距离变换

V ol. , No Month year.卷 第 期 年 月距离变换的应用(选自陆宗骐的论文)粘连区域的分割需要解决的问题有两个,即在何处分割以及如何进行分割。
文献[4]介绍了一种较为简单、直观的粘连区域分割方法——等值线跟踪法。
此方法对二值图象作距离变换,根据局部极大的特点搜索区域核心代替极限腐蚀,用等值线跟踪代替条件膨胀,利用跟踪过程中前后两次周长的跃变发现两区域合并的时间,从而确定分割点的位置,最后用作区域连接段骨架垂线的方法进行粘连部分的分割。
此方法不仅处理速度快,所得分割区域的形状也大为改观,见图1(d)。
当然,确定分割点也并非一定要采用等值线跟踪才行。
也可根据粘连区域连接段象素的特点,设计相应的分析算法不经跟踪直接寻得。
本文在完成了一幅存在粘连的钢筋端面图象分割的基础上,总结得出若干分割原则。
限于篇幅,本文只介绍象素属性分析法中分割位置的搜索算法,后续分割部分参见文献[4]。
2 术语定义2.1 三个检测环为了识别象素的属性,需要考察该象素所在邻域内相关象素的状态,本分割方法中需使用三个检测环。
它们是以当前待测象素为中心的3×3、5×5点,见图2。
它们分别称为内环、中环与外环。
图中,中心象素用星号表示,内环用数字1~8表示,中环用小写字母a~p 表示,外环用大写字母A~Z 和数字1~6表示。
主要用以测试环上数据的跳变,以及数值的大小关系与某类象素数目的多少等。
2.2 象素类型为行文方便起见,对不同类型的象素与数据定义若干专用名词。
·边界点:图象中距离值为1的点。
·背景点:图象中距离值为0的点。
·(粘连区域)连接线:连接粘连两区域的(单点宽或双点宽)骨架,它们应取同一距离值。
·当前点:处于邻域中央,考察其是否在连接线上的那个象素。
·等值点:指在检测邻域内数值等于当前点的距离值的那些象素,连接线上的点必须是等值点。
matlab计算两个区域的最小距离函数

一、概述MATLAB是一种流行的数学软件,用于进行数值计算和数据可视化。
在许多科学和工程领域,MATLAB都被广泛地应用。
其中一个非常有用的功能就是计算两个区域的最小距离函数。
这个功能在图像处理、计算几何学和机器人学等领域都有着广泛的应用。
二、MATLAB中的最小距离函数在MATLAB中,可以使用内置函数或编写自定义函数来计算两个区域的最小距离。
下面我们将介绍MATLAB中计算最小距离的几种常见方法。
1. 使用内置函数MATLAB提供了一些内置函数来计算两个区域之间的最小距离,比如pdist2函数和bwdist函数。
pdist2函数可以用来计算两个不同数据集之间的距离,而bwdist函数则可以计算二进制图像中每个像素到最近的非零像素的距离。
这两个函数都是非常高效、准确的计算最小距离的工具。
2. 编写自定义函数除了使用内置函数,我们还可以编写自定义函数来计算两个区域的最小距离。
这种方法可以根据具体的问题需求进行灵活的定制,但是需要一定的编程能力。
通常可以使用广度优先搜索、最短路径算法或者动态规划等方法来编写自定义函数。
三、最小距离函数的应用最小距离函数在许多领域都有着重要的应用。
下面将介绍一些常见的应用场景。
1. 图像处理在图像处理中,最小距离函数可以用来计算图像中不同物体或区域之间的距离。
比如在医学图像中,可以用最小距离函数来计算肿瘤与周围组织的距离,以辅助医生进行诊断。
2. 计算几何学在计算几何学中,最小距离函数可以用来计算两个几何体之间的最短距离,比如计算两个多边形之间的最小距离。
这对于设计和制造工程师来说是非常重要的。
3. 机器人学在机器人学中,最小距离函数可以用来规划机器人的路径,以避免障碍物或与其他机器人发生碰撞。
这对于自动驾驶车辆和工业机器人来说有着重要的意义。
四、总结在MATLAB中,计算两个区域的最小距离函数是非常有用的功能,它可以用来解决许多现实生活中的问题。
通过内置函数或编写自定义函数,我们可以轻松地实现这一功能。
图像的等距变换,相似变换,仿射变换,射影变换及其matlab实现

图像的等距变换,相似变换,仿射变换,射影变换及其matlab实现第二次写CSDN文档,上一篇的排版实在太烂了,于是决定认真学习一下markdown的语法。
好了,废话不多说,今天,我们学习一下图像(2维平面)到图像(2维平面)的四种变换,等距变换,相似变换,仿射变换,投影变换首先介绍它的原理,最后介绍matlab的实现1.数学基础射影变换矩阵H属于射影群PL(n)中的一个,仿射群是由PL(3)中最后一行为(0,0,1)的矩阵组成的子群,包括仿射群,欧式群,其中欧式群是仿射群的子群,其左上角的矩阵是正交的,当它的行列式为1是称为定向欧式群,距离是欧式群的不变量,但不是相似群的不变量,而夹角是这两个群的不变量。
听了这么多群,不变量的数学概念,可能有点晕,下面我用最直观的语言解释。
线性空间中的线性变换可以用矩阵来描述,因此我们用矩阵来刻画这四种变换。
我们以数学系的经典代数入门教材北大版的《高等代数》为例,研究这些变换是如何进行的2. 等距变换等距变换(isometric transform),保持欧式距离不变,当图像中的点用齐次坐标表示时,变换矩阵如下所示:???x′y′1???=???εcos(θ)εsin(θ)0?εsin(θ)?εcos(θ)0txty1??? ???xy1???当ε=1是保向的,ε=?1是逆向的,等距变换可以更简单的写成x′=HEx=(R0t1)x其中R是旋转矩阵。
t是平移矢量,有3个自由度(1旋转角θ+两个平移tx,ty),需要2组点4个方程求解,等距变换的不变量是:长度,角度,面积。
用matlab实现等距变换如下:clear;close all;clcI=imread('book1.jpg');figure,imshow(I);[w,h]=size(I);theta=pi/4;t=[100,100];s=0.5;% test Eucludian transformH_e=projective2d([cos(theta) -sin(theta) t(1);sin(theta) cos(theta) t(2);0 0 1]');newimg=imwarp(I,H_e);figure,imshow(newimg); 12345678910111213141234567891011121314可以看出,等距变换就是对图像的旋转+平移3. 相似变换相似变换(similarity transform):等距变换+均匀缩放,当图像中的点用齐次坐标表示时,变换矩阵如下所示:???x′y′1???=???scos(θ)ssin(θ)0?ssin(θ)?scos(θ)0txty1?? ????xy1???当s=1是保向的,s=?1是逆向的,相似变换可以更简单的写成x′=HSx=(sR0t1)x其中R是旋转矩阵。
数字图像处理距离变换

中国地质大学课程设计课程名称数字图像处理教师姓名傅华明学生姓名学生学号学生班级数字图像处理报告——基于matlab 实现1.实验要求:按照公式(8.3.9)对图象p6-05求取距离变换图象,并显示处理后图象距离变换是把任意图形转换成线性图最有效的方法之一。
它是求二值图形中各1像素到0像素的最短距离的处理。
对二值图像f (i ,j ),距离变换k 次的图像为g k (i ,j ),当f (i ,j )=1时,g 0(i ,j )=C (非常大);当f (i ,j )≈0时,g 0(i ,j )=0。
对图像f (i ,j )进行如下处理:⎪⎩⎪⎨⎧≈=+++++-+-=+0),(01),(}1)1,(,1),1(,1),1(,1)1,(),,(min{),(1j i f j i f j i g j i g j i g j i g j i g j i g k k k k k k对全部i ,j ,有gk +1(i ,j )=gk (i ,j )时,gk 便是所求的距离变换图像。
2.实验代码:clear;close all ;I=imread('p6-05.tif');imshow(I);title('原图');[m n]=size(I);m=double(m);n=double(n);Min=double(min(I(:)));w = strel('square',4);g=zeros(m,n);while sum(I(:))~=m*n*Min %不断腐蚀再腐蚀图像不会有变化为止for i=1:mfor j=1:nif I(i,j)~=Ming(i,j)=g(i,j)+1; %记录这个点腐蚀多少次才到最小值endendendI=imerode(I,w);% figure(1)% imshow(I);endfigure;imshow(mat2gray(g));title('距离变换后图像');3.实验结果如下:在经过距离变换后,最大值点的集合就形成骨架,及位于图形中心部分的线状得集合。
基于MATLAB图像处理的非接触式测距

存 在数据矩 阵 中。 由 图 4 可 知经 过 图像处理后 的 图片激 光 点仍 然 由许多像 素 点组 成 , 所 以 需要对 每 个激 光 点进
行局 部 放大 。
我 们注 意到 导 出 后 的 图 像仍 为 R G B 图像 但 是 已
经处 理 后 , 图像 此 时 已 经 二 值 化 R[
,G
编号
理论值 / 溯
实际测量值 / 溯
相对误 差 %
.
.
.
1
2 67 9
26 4 3
1 36
.
.
.
2
4 25 3
4 10 7
3 55
.
.
.
3
4 55 2
4 30 7
5 69
.
.
.
4
104 4
10 0 0
4 40
.
.
.
5
2 97 1
2 84 3
4 50
从数据看可 以用 本方 法 求 出 的数据误差较小在 6 % 以下 , 为 了实 验方 便 照片 都 是用 手机 拍 摄 。 实验 误 差 的
R 一s q u a r e :
.
0 99 4 5
A dj u s t e d
R 一s q u a r e :
.
0 99 18
RM
SE :
.
1 4 84
用 m at al b 进 行 求 解 最 小 值 的 拟 合 结 果 得 到 为
2
6
.
7
ge
m。
我们又 随机测 量了其他 的数据 , 具体如下 :
距 离 公 式 即可 算 出两 点 间 在 图片 中 的 距 离。 已 知
如何进行MATLAB图像配准和变换

如何进行MATLAB图像配准和变换引言图像配准和变换是数字图像处理中一项重要任务,它能够将不同空间、不同感知角度或不同时间采集的图像进行对齐,从而实现图像像素之间的准确匹配。
MATLAB作为一种常用的科学计算软件,提供了丰富的图像处理函数和工具箱。
本文将介绍如何使用MATLAB进行图像配准和变换,以帮助读者更好地理解和应用这些功能。
一、图像配准基础1. 图像配准定义图像配准是指将两幅或多幅图像通过某种变化,使得它们的像素点对齐。
这种对齐可以通过平移、旋转、缩放等几何变换来实现。
2. 图像配准应用图像配准在许多领域都有广泛的应用,如医学图像处理、遥感图像处理、计算机视觉等。
例如,在医学领域,图像配准可以用于将不同时间拍摄的磁共振图像对齐,以便医生更好地观察患者的病情变化。
二、MATLAB图像配准函数MATLAB提供了几个常用的图像配准函数和工具箱,方便用户进行图像配准和变换。
下面将介绍一些常用的函数和工具箱。
1. imregister函数imregister函数是MATLAB中一个常用的图像配准函数,它能够将两幅图像进行几何变换以实现图像配准。
该函数基于最大互信息和归一化互相关等算法实现,能够自动处理旋转、平移、缩放和扭曲等运动畸变。
2. cpselect工具箱cpselect工具箱是MATLAB中用于图像配准的一个交互式工具箱。
它能够通过用户交互的方式,选择两幅图像中的对应点,计算并输出变换矩阵。
用户可以通过可视化的界面进行点选,并查看配准效果。
三、图像配准步骤基于MATLAB提供的函数和工具箱,进行图像配准的一般步骤如下:1. 加载图像使用imread函数加载待配准的图像,将其转换为灰度图像或彩色图像,存储为变量img1和img2。
2. 预处理图像根据具体情况,对图像进行预处理操作,如去噪、平滑、增强等。
这一步骤可以提高后续配准的准确性和稳定性。
3. 选择对应点使用cpselect工具箱,通过交互方式选择两幅图像中的对应点。
距离变换算法原理

距离变换算法原理距离变换是图像处理中的一种重要算法,主要用于分析和测量图像中不同对象之间的距离。
距离变换算法可以将图像中的每一个像素点转化为该点到最近背景像素点的距离,从而实现对图像中不同对象的距离测量和分析。
距离变换算法的原理基于两个基本假设:第一,物体的边缘和内部的像素点应该被区分开来;第二,距离越近的像素点应该被赋予更小的值。
基于这两个假设,距离变换算法将图像中的每一个像素点分为两类:前景像素点和背景像素点。
前景像素点指的是对象的像素点,背景像素点指的是非对象的像素点。
距离变换算法分为两种方式:欧几里得距离和曼哈顿距离。
欧几里得距离指的是两点之间的直线距离,而曼哈顿距离则是两点之间的曼哈顿距离,即两点在水平和垂直方向上的距离之和。
两种距离方式都可以实现距离变换,但是在某些情况下,需要根据实际需求选择合适的距离方式。
距离变换算法的实现过程包括以下三个步骤:1. 对图像进行二值化处理,将图像中的前景和背景像素点分离出来。
2. 对二值化后的图像进行距离变换,将每个前景像素点转化为到最近背景像素点的距离。
3. 对距离变换后的图像进行归一化处理,使得距离值在0和255之间,从而便于后续处理。
距离变换算法可以应用于不同领域的图像处理,例如医学图像分析、机器视觉、目标跟踪等领域。
在医学图像分析领域中,距离变换算法可以用于分析肿瘤的大小和形状,从而实现对肿瘤的诊断和治疗。
在机器视觉领域中,距离变换算法可以用于物体的定位和跟踪,从而实现对物体的自动识别和分析。
距离变换算法是一种重要的图像处理算法,可以用于分析和测量图像中不同对象之间的距离。
距离变换算法的实现过程包括二值化、距离变换和归一化处理三个步骤,可以应用于不同领域的图像处理。
图像处理距离变换算法

图像处理距离变换算法距离定义满⾜以下函数条件D(p,q)>=0,当且仅当p=q时D(p,q)=0;D(p,q)=D(q,p)D(p,r)<=D(p,q)+D(q,r)欧式距离D[(i,j),(k,h)]=((i-k)^2+(j-h)^2)^(1/2);城市街区距离只允许横向以及纵向的移动D[(i,j),(k,h)]=|i-k|+|j-h|;棋盘距离允许横向、纵向以及对⾓线上的移动D[(i,j),(k,h)]=max{|i-k|,|j-h|}算法实现步骤1.按照⼀种距离度量D,D是D4或D8,对⼤⼩为M*N的图像的⼀个⼦集S计算距离变换,建⽴⼀个M*N的数组F并作初始化:⼦集S中元素置为0,其他置为⽆穷。
2.按⾏遍历图像,从上到下,从左到右。
对于上⽅和左⾯的邻接像素设F(p)=min[F(p),D(p,q)+F(q)]。
3.按⾏遍历图像,从下到上,从右到左。
对于下⽅和右⾯的邻接像素设F(p)=min[F(p),D(p,q)+F(q)]。
4.数组F中得到的是⼦集S的斜切。
具体函数初始化函数void DistanceTransformD4(vector<vector<int>> &src, vector<vector<int>> &f){int cols = src[0].size();int rows = src.size();//初始化for (int i = 0; i < rows; ++i)for (int j = 0; j < cols; ++j)if (src[i][j] == 1)f[i][j] = 0;elsef[i][j] = INT_MAX - 2;//简单的防⽌溢出//按⾏遍历图像,从上到下,从左到右for (int i = 0; i < rows; ++i)for (int j = 0; j < cols; ++j)D4AL(i, j, rows, cols, f);//按⾏遍历图像,从下到上,从右到左for (int i = rows - 1; i >= 0; --i)for (int j = cols - 1; j >= 0; --j)D4BR(i, j, rows, cols, f);}左变换函数void D4AL(int i,int j, int rows, int cols, vector<vector<int>> &f){//上if (InArea(i - 1, j, rows, cols))f[i][j] = min(f[i][j], 1 + f[i - 1][j]);//左上if (InArea(i - 1, j - 1, rows, cols))f[i][j] = min(f[i][j], 2 + f[i - 1][j - 1]);//左if (InArea(i, j - 1, rows, cols))f[i][j] = min(f[i][j], 1 + f[i][j - 1]);//左下if (InArea(i + 1, j - 1, rows, cols))f[i][j] = min(f[i][j], 2 + f[i + 1][j - 1]);}右变换函数void D4BR(int i, int j, int rows, int cols, vector<vector<int>> &f) {//下if (InArea(i + 1, j, rows, cols))f[i][j] = min(f[i][j], 1 + f[i + 1][j]);//右下if (InArea(i + 1, j + 1, rows, cols))f[i][j] = min(f[i][j], 2 + f[i + 1][j + 1]);//右if (InArea(i, j + 1, rows, cols))f[i][j] = min(f[i][j], 1 + f[i][j + 1]);//右上if (InArea(i - 1, j + 1, rows, cols))f[i][j] = min(f[i][j], 2 + f[i - 1][j + 1]);}判断是否出界函数bool InArea(int i, int j, int rows, int cols){if (i<0 || i>=rows)return false;if (j<0 || j>=cols)return false;return true;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V ol. , No Month year.
卷 第 期 年 月
距离变换的应用(选自陆宗骐的论文)
粘连区域的分割需要解决的问题有两个,即在何处分割以及如何进行分割。
文献[4]介绍了一种较为简单、直观的粘连区域分割方法——等值线跟踪法。
此方法对二值图象作距离变换,根据局部极大的特点搜索区域核心代替极限腐蚀,用等值线跟踪代替条件膨胀,利用跟踪过程中前后两次周长的跃变发现两区域合并的时间,从而确定分割点的位置,最后用作区域连接段骨架垂线的方法进行粘连部分的分割。
此方法不仅处理速度快,所得分割区域的形状也大为改观,见图1(d)。
当然,确定分割点也并非一定要采用等值线跟踪才行。
也可根据粘连区域连接段象素的特点,设计相应的分析算法不经跟踪直接寻得。
本文在完成了一幅存在粘连的钢筋端面图象分割的基础上,总结得出若干分割原则。
限于篇幅,本文只介绍象素属性分析法中分割位置的搜索算法,后续分割部分参见文献[4]。
2 术语定义
2.1 三个检测环
为了识别象素的属性,需要考察该象素所在邻域内相关象素的状态,本分割方法中需使用三个检测环。
它们是以当前待测象素为中心的3×3、5×5
点,见图2。
它们分别称为内环、中环与外环。
图中,中心象素用星号表示,内环用数字1~8表示,中环用小写字母a~p 表示,外环用大写字母A~Z 和数字1~6表示。
主要用以测试环上数据的跳变,以及数值的大小关系与某类象素数目的多少等。
2.2 象素类型
为行文方便起见,对不同类型的象素与数据定
义若干专用名词。
·边界点:图象中距离值为1的点。
·背景点:图象中距离值为0的点。
·(粘连区域)连接线:连接粘连两区域的(单点宽或双点宽)骨架,它们应取同一距离值。
·当前点:处于邻域中央,考察其是否在连接线上的那个象素。
·等值点:指在检测邻域内数值等于当前点的距离值的那些象素,连接线上的点必须是等值点。
·内点、外点:指在检测邻域内距离值分别大于、小于当前点的距离值的那些象素。
·角点:内环上只有两个与当前点等值的点,并且它们构成直角三角形时,称当前点为角点。
·图象的最大距离值:全图象素中最大的距离值,它大致等于图象中最大区域的等效半径。
图3给出了三个检测点及其所在邻域的例子,图中数据为象素的距离值。
为清楚起见,图中中心象素加粗后再加下划线,中环象素用粗体字表示。
在图3(a)中, 带下划线的7为当前点,中环上面水平线上的两个7为等值点,其间的8为内点,当前点周围的5、6为外点,而此时当前点7是一个角点。
3 分割点的特征
骨架上。
同时由于涉及区域间的连通关系,与象素的拓扑特性也有关。
这样便与图象处理中的一些基本概念联系了起来。
其中,骨架、梯度和距离值的跳变数等概念在本判别中起着关键的作用,本节先对这些基本概念作一些说明。
3.1 距离图象的骨架
距离图象有一个很好的特点,即其上的等值线绝大部分是单点宽的,它们层层嵌套排列很有规律,每层的距离值相差1,内大外小。
只有在区域核心部位与骨架上才有少量双点宽短线,如图3(b)中数值为2的象素为双点宽骨架。
距离图象的骨架在数值上大都取所在邻域的极大值。
3.2 中环梯度
因为距离图象上的骨架不仅仅分布在区域的瓶颈部位,区域内部也有不少。
对于单点宽骨架而言,若处于瓶颈部位时,其上象素的中环处前后左右接近对称,即该处的梯度值会比内部骨架处小些。
梯度值的计算,即求中环上下边界与左右边界平均差分的绝对值之和,再设置阈值予以区分。
图3中三个点的梯度值分别为10、7、8。
显然,图3 (a)不在连接线上,而(b)、(c)则在连接线上。
3.3 正跳变数
在图象细化处理中跳变数是一个非常重要的概念,它是指当前点所在的邻域中一个围绕中心象素的封闭曲线上0与1之间的跳变数,用于表示该点的拓扑特性,确定该点在细化时是否可以删除,如图4(a)中中心象素周围0至1的跳变数为3,表示中心处的直线有三个分支。
由于是二值图象,正、负跳变数相等,不用区分。
对于距离图情况稍有不同。
因为它不是二值图象,正跳变是指由邻域中心点数值向上的跳变,见图4(b)。
距离图中距离值内大外小,正跳变指向内部,负跳变指向外部,故正、负跳变数有不
同的含义。
现
在关心的是与
内部的联系。
所以,在分割
点的判别中需
要的是正跳
变,图4(b)中
的两图正跳变
都为2。
3.4 连接线象素的类型的象素分成三种类型,即双
连点、单连点与中连点[4],见图5。
图中当前象素用1表示,图中的其他1为等值点,2为内点,0为外点。
由图可见,双连点连接两个区域,它直接可作分割点用;单连点是连接线的端点,它与其中一个区域内部相连,还需要通过线条跟踪寻找另一个端点;中连点处于连接线上但并不与区域直接相连,故需要寻找连接线段的两个端点。
除了第一种情况外,后两种情况下,需要再根据连接线段的端点确定实际分割点。
在以它们为中心的3×3邻域中,它们分别有2、1、0个内点。
其中,双连点的邻域中的两个内点不能相邻接,见图5(a)。
不失一般性,当当前象素的距离值为N时,图5中的数据同时增加N-1,分类情况不变。
4 识别算法
由于文献[4]已解决了得到连接线上一个点后寻找整条连接线,进而确定实际分割点位置,最后将两个粘连区域切割开的问题。
本文仅介绍寻找粘连区域连接线上的象素的方法。
由于每条连接线上只需寻出一个点即可。
因此,所设条件是充分条件并非必要条件,为了便于将不符合条件的点剔除,这些条件有时也把连接线上的许多点筛选掉了。
条件的选择以便于处理,能得到可供使用的点,并且无有害遗漏为标准。
由于边界点的情况与内点有所不同,两者的识别分别进行。
4.1 边界上连接线象素的识别
⑴中环正跳变数必须为2,此为首要条件。
⑵第二条件——内环正跳变数分三种情况:
①正跳变数为2时即为分割点,此为类型1。
此点与所连两区域直接邻接。
②正跳变数为1时,内环边界点数应大于4,此为类型2。
其目的是使内环中不至混入太多背景点。
③正跳变数为0时,中环背景点数应小于7,此为类型3。
其目的是为了保证当前象素保持在粘连区域的瓶颈部位。
图6给出了这三类边界线分割点的例子。
上方为粘连区域图象,分割点在图象中央,下面数据为
陆宗骐,傅江桃: 根据像素属性确定粘连区域分割位置 3 所在邻域内象素的距离值。
1000000 0012345 0000122
4.2 内点中连接线象素的识别
⑴中环梯度必须小于规定阈值,此为首要条
件。
阈值分为两种情况:
①通常情况下中环梯度应小于8。
②内环正跳变数为2时,阈值可放宽1,即中
环梯度应小于9。
⑵第二条件——内环正跳变数分两种情况:
①正跳变数为2时即为分割点,此为类型4。
此点与所连两区域直接邻接。
②正跳变数非2时,内环上内点数应小于2(即
只能为0和1)。
此时又可分成两种情况:
•内环上等值点数非0非2时即为分割点,此为
类型5。
•内环上等值点数为2,当前点又不是角点,此
为类型6。
这时,加上作为当前点的中间象素,则
在内环的3×3邻域中它们应构成一条单点宽的短
线,它处于连接线的中段,故不能是角点。
⑶对于类型5与类型6的象素,外环上还必须
至少有一个内点。
用以割断图象中长的细线毛刺,
使区域边界更为光滑。
⑷为了避免把区域拦腰切开,分割点的距离值
需小于图象中最大距离值的一半。
图7给出了这三类分割点的例子。
图7(a)中的
分割点连接两个象素值为3的象素所在的区域。
图
7(b)中的分割点为连接段的一个起点,它连接左上
角象素值为6的象素所在的区域,在右下角即将与
另一区域相连。
图7(c) 中的分割点为连接段中间的
一个点,其左面可与象素值为5的象素所在的区域
相连接,连接线在右面还将延续下去。
4.3 后续处理
找出了以上各类分割点之后,根据不同情况确
定两区域间的连接线,进而确定实际的分割点,再
作分割两区域的分割线,具体分割步骤见文献[4]。
5543222 3221111
用以上算法实现了一幅粘连严重的钢筋图象的
完全分割,见图8。
分割所得轮廓非常光滑,远比
采用数学形态学方法
处理结果为好。
图象
分辨率为658×532,
图象的最大距离值为
17。
图中共有140根
钢筋,分成54个连通
区域,只有28根钢筋
无粘连,其中最大的
一个连通区域有15
根钢筋,有16处粘
连。
本文所介绍的方法是对一幅钢筋图象实现分割
后总结得出的。
因此,其适用范围还有很大的限制。
在应用于其他场合、不同类型图象时需作相应的调
整。
新的算法只有在得到广泛应用的条件下,才有
可能总结得出更加完备、可靠的识别方法。