精华内容
下载资源
问答
  • 形态学骨架提取

    千次阅读 2018-11-23 15:00:10
    下面我来介绍一下关于形态学中的骨架提取,并在MATLAB中实现: 1、打开MATLAB软件,在其主界面的编辑器中写入下列程序: I=imread('G:\MATLAB\bm.bmp'); %读取当前路径下的图片 subplot(2,2,1),imshow(I); title...

    下面我来介绍一下关于形态学中的骨架提取,并在MATLAB中实现:

    1、打开MATLAB软件,在其主界面的编辑器中写入下列程序:

    I=imread('G:\MATLAB\bm.bmp');  %读取当前路径下的图片
    subplot(2,2,1),imshow(I);
    title('原始图像');
    axis([50,250,50,200]);
    axis on;                 
    I1=im2bw(I);
    subplot(2,2,2),imshow(I1);
    title('二值图像');
    axis([50,250,50,200]);
    axis on;                
    I2=bwmorph(I1,'skel',1);
    subplot(2,2,3),imshow(I2);
    title('1次骨架提取');
    axis([50,250,50,200]);
    axis on;                 
    I3=bwmorph(I1,'skel',2);
    subplot(2,2,4),imshow(I3);
    title('2次骨架提取');
    axis([50,250,50,200]);
    axis on;   

    2、命名保存好之后,直接点击运行按钮,结果如下所示:

    至此,关于形态学骨架提取的介绍基本完毕,请大家继续关注!!

    展开全文
  • opencv2形态学骨架提取

    2016-06-07 22:45:46
    基于opencv2实现的形态学骨架提取,可供初学者参考。
  • 改进的形态学骨架提取算法 图像处理相关可以参考
  • opencv2实现形态学骨架提取

    万次阅读 2016-06-07 21:49:05
    因为opencv2中没有形态学骨架提取算法的实现,于是准备在opencv2上实现一个。 首先介绍下骨架提取算法,冈萨雷斯的书上已经说的很清楚了,我再重复一下。 集合A的骨架可以用腐蚀和开操作来表达, 即骨架可以表示为 ...

    因为opencv2中没有形态学骨架提取算法的实现,于是准备在opencv2上实现一个。

    首先介绍下骨架提取算法,冈萨雷斯的书上已经说的很清楚了,我再重复一下。

    集合A的骨架可以用腐蚀和开操作来表达, 即骨架可以表示为

    其中,

    式中,B是一个结构元,而    表示对A的连续k次腐蚀:

    K是A被腐蚀为空集前的最后一次迭代步骤。换句话说,

    其中AB表示用B结构原腐蚀A,   

    表示开运算


    实现步骤:opencv2中已经有了腐蚀函数, 开运算函数,而骨架提取可以表示为有限次腐蚀,开运算操作,只需按照公式码上去就行了,过程比较简单。

    这里,我借用了opencv2这些操作,另外要注意的是求集合并集时,可以直接使用Mat 重载后的运算 “|”操作 ,集合相减时也可直接使用Mat的“-”操作。


    Mat a, b, c;
    a = imread("src1.jpg");
    b = imread("src2.jpg");
    c = a - b;
    c = a | b;

     
    

    下面是使用3*3正方形模板提取的骨架


    当我换成3*3十字模板就变成下面这样了


    下面两幅图是“真正”的骨架提取



    下面是完整的代码下载地址

    http://download.csdn.net/detail/dingjiansw101/9544038

    展开全文
  • 形态学方法提取骨架线

    热门讨论 2009-09-07 21:17:52
    形态学方法提取骨架线的matlab源程序,可在matlab6.5版本及以上调试通过,作为形态学学习者的参考资料。
  • 运用数学形态学的方法,给出了文字图像骨架提取算法,并进行了实验,算法具有可实现性
  • 二值形态学 形态学起源于法国巴黎高等矿业学院,因为人家是搞地质的。 可见一斑,形态学的精要就是在于将图像看作是等高线组成的地形图,他的基本操作就是动土,平高填低等等。 当然,这是哲学层面的抽象概念,太玄...

    图像处理总结3

    文末有代码链接。
    二值形态学
    形态学起源于法国巴黎高等矿业学院,因为人家是搞地质的。
    可见一斑,形态学的精要就是在于将图像看作是等高线组成的地形图,他的基本操作就是动土,平高填低等等。
    当然,这是哲学层面的抽象概念,太玄,还是整点实际的。
    需要注意的是,这里处理的图片都是二值图片(0 or 1)。


    基本操作

    结构元素(SE)
    就是你要动土的那块地方多大,以及要怎么动土。

    腐蚀(Erosion):
    先看公式: E ( F , k ) = F ⨀ k = ⋂ ( {

    展开全文
  • //根据上述细化算法,在OpenCV中采用3×3结构元素的细化代码如下: //函数名称:Mat thinning() //基本功能:对二值图像进行细化运算 //参数说明:待细化二值图像,该图像中背景色为0,前景色(目标)为255 ...
    //根据上述细化算法,在OpenCV中采用3×3结构元素的细化代码如下:
    //函数名称:Mat thinning()
    //基本功能:对二值图像进行细化运算
    //参数说明:待细化二值图像,该图像中背景色为0,前景色(目标)为255
    //返回值:返回细化后二值图像
    Mat thinning(Mat & binaryImg)
    {
    	int i, j, k;
    	uchar p[11];
    	int pos[9][2] = { {0,0},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1, -1},{0, -1},{-1, -1} };
    	int condl, cond3, cond4,cond2=0, counter = 0;
    	bool pointsDeleted = true;
    	Mat mask, dstImg;
    	dstImg = binaryImg / 255; //转化为0.1二值图像
    	while (pointsDeleted) //若存在可删除像素点,执行迭代
    	{
    		mask = Mat::zeros(dstImg.size(), CV_8UC1); //初始化模板为全0
    		pointsDeleted = false;
    		for (i = 1;i < dstImg.rows - 1;i++)
    		{
    			for (j = 1;j < dstImg.cols - 1;j++)
    				// 获取3×3结构元素pl~p9对应像素值,其中pl为中心点
    			{
    				for (k = 1;k < 10;k++)
    				{
    					p[k] = dstImg.at<uchar>(i + pos[k - 1][0], j + pos[k - 1][1]);
    				}
    				if (p[1] == 0)continue;      //若中心点为背景色(黑色),跳过
    				condl = 0;           //计算中心点周囤所有像素值之和
    				for (k = 2;k < 10;k++)condl += p[k]; //计算p2~p9从0到1变化的次数
    				cond2 = 0;
    				p[10] = p[2]; //用于处理k=8,p[k+2]越界情况
    				for (k = 2;k < 10;k += 2)
    					cond2 += ((p[k] == 0 && p[k + 1] == 1) + (p[k + 1] == 0 && p[k + 2] == 1));
    				if (counter % 2 == 0) //偶数次选代判断条件
    				{
    					cond3 = p[2] * p[4] * p[6];
    					cond4 = p[4] * p[6] * p[8];
    				}
    				else //奇数次迭代判断条件
    				{
    					cond3 = p[2] * p[4] * p[8];
    					cond4 = p[2] * p[6] * p[8];
    				}
    				//若同时满足条件1~条件4
    				if ((2 <= condl && condl <= 6) && (cond2 == 1) && (cond3 == 0) && (cond4 == 0))
    				{
    					pointsDeleted= true;
    					mask.at<uchar>(i,j) = 1; // 写入待删除的像素点至模板
    				}
    			}
    		}
    		dstImg &= ~mask; //通过逻辑与操作删除目标像素点(白色)
    		counter ++; // 记录迭代次数
    	}
    	dstImg *= 255; //恢复为0 255 二值图像
    	return dstImg;
    	
    }
    
    void Thinning()
    {
    	//原图像名称
    	string Img_name = "C:/opencv/image/lena_gray8bit.bmp";
    	//载入源图像
    	Mat Src = imread(Img_name);
    	Mat src = Src.clone();
    	//灰度化
    	cvtColor(src, src, COLOR_RGB2GRAY);
    	Mat Img;
    	//二值化
    	threshold(src, Img, 128, 255, THRESH_BINARY_INV);
    	namedWindow("原始二值化图像", 0);
    	imshow("原始二值化图像", Img);
    	Mat dst=thinning(Img);
    	namedWindow("细化图像", 0);
    	imshow("细化图像", dst);
    
    	waitKey(0);
    	return;
    }
    

    二值图
    细化图
    代码来源:数字图像处理第三版(何东健)随书代码

    展开全文
  • python骨架提取算法

    2021-04-15 10:17:53
    python骨架提取算法
  •  开始正题,形态学基本操作:腐蚀和膨胀,进而演化出了开操作和闭操作,后来有演化出了一些其他操作,能够应用于各种不同的场景,比如最简单的边界提取,稍微复杂的孔洞填充,与空洞填充类似的连通分量提取,凸壳不...
  • 骨架提取可以通过选定合适的结构元素B,对X进行连续腐蚀和开运算来求得。 算法步骤: 一、获得原图像的首地址及图像的宽和高,并设置循环标志1 二、用结构元素腐蚀原图像,并保存腐蚀结果 三、设置循环标志为0,如果...
  • 形态学骨架化及重建 形态学骨架化及重建 1. 前言 2. 形态学骨架化及重建描述 3. 代码实现 1. 前言 数学形态学(Mathematical Morphology)是分析几何形状和结构的数学方法,是建立在集合代数基础上,用集合...
  • 形态学--骨架

    2021-04-18 09:36:16
    区域骨架提取 1、提取骨架定义: 1、提取骨架定义: 提取骨架定义: 对提取的骨架进行重构。 骨架的定义: 在二值图像的内部任意给定一点,如果以该点为圆心存在一个最大圆盘,其整个盘体都在图像的内部, 且至少有...
  • Python学习19_骨架提取与分水岭算法

    千次阅读 2017-07-26 15:42:21
    骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 1、骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子模块...
  • 骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。morphology子模块提供了两个函数...
  • 仅使用两个基本的形态学运算来计算形态骨架:扩张和侵蚀。在伪代码中,该算法的工作方式如下: img = ...; while (not_empty(img)) { skel = skel | (img & !open(img)); img = erosion(img); } 在每次...
  • 原文:Win8 Metro(C#)数字图像处理--2.65形态学轮廓提取算法  [函数名称]  形态学轮廓提取函数  WriteableBitmap MorcontourextractionProcess(WriteableBitmap src) ...
  • 骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 一 骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子...
  • 形态学一般是使用二值图像,进行边界提取,骨架提取,孔洞填充,角点提取,图像重建。  基本的算法:膨胀腐蚀,开操作,闭操作,击中击不中变换  边界提取主要涉及腐蚀和求补集操作 代码如下: int ...
  • 骨架提取算法应用

    千次阅读 2020-01-16 10:22:11
    为了更好的提取图像骨架,必要时需要对图像进行相应的预处理(比如去噪、滤波、形态学变换等)。 我的应用主要集中在对一些包含线条型的零件检测,除此之外,骨架提取的应用特别广泛,比如文字的检测/识别、道路观测...
  • 形态学骨架例程一

    2018-03-03 12:22:34
    ImageRegionConnectedRegoinsSelectedRegoins1SkeletonEndPointsJuncPointsRegionDifferenceConnectdRegionsSelectedRegions2RegionLines
  • 骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 1、骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子...
  • 基于形态学眼底血管提取

    千次阅读 热门讨论 2020-05-05 21:20:25
    形态学是一种比较新的图像处理方法,它可以以一种特定的形态和结构元素作为样本提取出对应的形状,从而得到我们所需要的结构,且它包含有四种基本操作:膨胀、腐蚀、以及开闭操作。基于这些操作,我们可以实现对...
  • OpenCV—python 图片细化(骨架提取)二

    千次阅读 多人点赞 2020-07-14 10:10:31
    骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 morphology子模块提供了两个函数用于骨架提取,分别是Skeletonize()函数和medial_axis()函数。 在模块:skimage.morphology.skeleto
  • 一种新的基于形态学编码的地形骨架特征选择方法,张慧杰,刘亚鑫,鉴于剖面识别骨架特征提取方法准确性差、不能提取特殊地形等问题,提出了一种结合形态学的剖面识别骨架特征选择方法。在该方法中
  • 骨架提取与分水岭算法也属于形态学处理范畴,都放在morphology子模块内。 1、骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子...
  • 形态学图像处理——骨架抽取

    千次阅读 2019-12-30 20:47:45
    2.所谓骨架,可以理解为图像的中轴,一个长方形的骨架,是它的长方形上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。 骨架的获取主要有两种方法: (1)基于烈火模拟 设想在同一时刻,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,287
精华内容 514
关键字:

形态学骨架提取