图像形态学

图像的形态学 二值化后的膨胀操作,腐蚀操作,开运算、闭运算以及得到图片处理之后的噪声边缘等 阅读详情
# 在绘图中显示中文字体,而非乱码
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
import cv2
import matplotlib.pyplot as plt
import numpy as np

1、导入一张图像,对其进行二值化,然后实现二值图像的腐蚀和膨胀运算,并观察和记录连续执行腐蚀和膨胀运算后,二值图像的变化过程。

# 第一题代码部分
img = cv2.imread(你的图片, cv2.IMREAD_GRAYSCALE)
img1 = 255 - img
e, img_thre = cv2.threshold(img1, 160, 255, cv2.THRESH_BINARY)
title_list = ["原始图像", "二值图像"]
img_list = [img, img_thre]
for i in range(2):
    plt.subplot(1, 2, i+1)
    plt.imshow(img_list[i], 'gray')
    plt.title(title_list[i])
    plt.xticks([])
    plt.yticks([])
plt.show()
#开运算
kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (11, 11))
eroded11 = cv2.erode(img_thre, kernel1,1)
dilated11 = cv2.dilate(eroded11, kernel1,1)
title_list1 = ["结构矩形元素", "腐蚀图像", "腐蚀后膨胀图像"]
img_list1 = [ kernel1, eroded11, dilated11]
for i in range(3):
    plt.subplot(1, 3, i+1)
    plt.imshow(img_list1[i], 'gray')
    plt.title(title_list1[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

#闭运算
kernel4 = cv2.getStructuringElement(cv2.MORPH_RECT, (11, 11))
dilated41 = cv2.dilate(img_thre, kernel4,1)
eroded41 = cv2.erode(dilated41, kernel4,1)
title_list4 = ["结构矩形元素", "膨胀图像", "膨胀后腐蚀图像"]
img_list4 = [ kernel4, dilated41, eroded41]
for i in range(3):
    plt.subplot(1, 3, i+1)
    plt.imshow(img_list4[i], 'gray')
    plt.title(title_list4[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

#开闭运算
kernel3 = cv2.getStructuringElement(cv2.MORPH_RECT, (11, 11))
eroded31 = cv2.erode(img_thre, kernel3,1)
dilated31 = cv2.dilate(eroded31, kernel3,1)
dilated32 = cv2.dilate(dilated31, kernel3,1)
eroded32 = cv2.erode(dilated32, kernel3,1)
title_list3 = ["结构矩形元素", "腐蚀图像", "腐蚀后膨胀图像","膨胀2","腐蚀2"]
img_list3 = [ kernel3,eroded31,dilated31,dilated32,eroded32]
for i in range(5):
    plt.subplot(2, 3, i+1)
    plt.imshow(img_list3[i], 'gray')
    plt.title(title_list3[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

第一题文字部分:

对二值图像而言:

腐蚀:腐蚀操作会消除二值图像中前景对象的细小突出部分,缩小对象的大小,并且消除小的噪声点。

膨胀:膨胀操作会扩大二值图像中前景对象的边界,填补对象内部的小孔,并且连接相邻的对象

开运算:开运算是先腐蚀后膨胀的组合,可以用来消除小的噪声点,并且分离相距较近的对象。开运算会移除二值图像中小的白色区域(噪声),并且平滑较大白色区域的边界。

闭运算:闭运算是先膨胀后腐蚀的组合,可以用来填充前景对象内部的小孔和裂缝,并且消除小的黑色区域(空洞)。闭运算会填补二值图像中白色区域的小洞,并且平滑黑色区域的边界。

开闭运算:开闭运算可以是先进行闭运算再进行开运算,或者相反。开闭运算可以平滑图像的边界,同时减少噪声。开闭运算会使得二值图像的边界更加平滑,小的噪声点被去除,小的空洞被填补,但不会改变对象的整体形状和大小。

2、导入一幅图像,综合运用本章所学内容,对其进行图像分割(需涉及形态学相关运算),并简要叙述代码编写思路。

# 第二题代码部分
img = cv2.imread(你的图片)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
thresh=255-thresh
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)
sure_bg = cv2.dilate(opening, kernel, iterations=2)
sure_fg = cv2.erode(opening, kernel, iterations=2)
unknown = cv2.subtract(sure_bg, sure_fg) 
dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
cv2.normalize(dist_transform, dist_transform, 0, 1.0, cv2.NORM_MINMAX)
ret, sure_fg = cv2.threshold(dist_transform, 0.5*dist_transform.max(), 255, 0)
sure_fg = np.uint8(sure_fg)
unknown = cv2.subtract(sure_bg,sure_fg)
ret, markers = cv2.connectedComponents(sure_fg)
markers = markers+1
markers[unknown==255] = 0
markers_copy = markers.copy()
markers_copy[markers==0] = 150 
markers_copy[markers==1] = 0  
markers_copy[markers>1] = 255 
markers_copy = np.uint8(markers_copy)
markers = cv2.watershed(img, markers)
img[markers==-1] = [0,0,255] 
title_list = ["二值图像", "距离图像", "确定前景", "确定背景", "不确定部分", "分割结果"]
img_list = [thresh, dist_transform, sure_fg, sure_bg, unknown, markers]
for i in range(6):
    plt.subplot(1, 6, i+1)
    plt.imshow(img_list[i], 'gray')
    plt.title(title_list[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

第二题文字部分:

1.读取图像后,转变为二值图像,然后进行降噪处理,创建一个3x3的矩形结构元素,使用cv2.morphologyEx函数进行开运算,以消除噪声和平滑较大白色区域的边界。随后确定背景和前景区域,分别使用cv2.dilate函数和cv2.erode函数对开运算后的图像进行膨胀/腐蚀,以分别确定背景和前景区域。

2.使用距离变换函数距离cv2.distanceTransform对开运算后的图像获取每个像素点到最近前景像素的距离,然后使用cv2.normalize函数将距离变换后的图像进行规范化,使其值在0到1.0之间。

3.使用分水岭算法cv2.connectedComponents函数对确定的前景区域进行连通域分析,得到标记图像。随后对标记图像进行处理,将背景标记为0,前景标记为255,未知区域标记为150使用cv2.watershed函数分割前景和背景。

Halcon图像形态学算法和原理 介绍 图像形态学原理都一样这里介绍Halcon图像处理中关于形态学的介绍 在形态学中,不论使灰度图像形态学还是区域形态学,所有的形态学算子运算都是针对于亮点像素(light)的操作,因此,开运算opening、闭运算clsoing、腐蚀erosion、膨胀dilation这四个基本运算都会使亮点像素(light)减少或者增加。所以当一张图片确定了total总像素点,则亮点像素增加,则暗的像素就... 阅读详情

相关推荐

opencv基础篇 ——(六)图像形态学

图像形态学

零落年华的专栏 2064

数字图像处理第九章——形态学图像处理

数字图像处理第九章数字图像处理---形态学图像处理(一)预备知识1.1 预备知识1.1.1 集合理论中的基本概念1.2 二值图像、集合及逻辑算子(二)膨胀和腐蚀2.1 膨胀2.2 结构元的分解2.3 strel函数2.4 腐蚀(三) 膨胀与腐蚀的结合3.1 开操作和闭操作3.2 击中或击不中变换3.3 运用查询表3.4 bwmorph函数(四)标记连通分量(五)形态学重建5.1 通过重建进行开...

Dujing2019的博客 2万+

数字图像处理9:形态学图像处理 III 基于形态学的粒度测定 基于形态学的纹理分割

基于形态学的粒度测定 设计思路 在图像处理方面,粒度测定属于判断图像中颗粒的尺寸分布的领域。 其原理十分简单。对比比背景亮并且具有规则形状的颗粒,该方法由使用逐渐增大的结构元对图像执行开操作组成。 基本思想是,某个特殊尺寸的开操作应该对包含类似尺寸的颗粒的输人图像的区域具有最大的影响。对于每次开操作,计算该开操作中像素值的和。该和有时称为表面区域,它会随着结构元的增大而减小,因为开操作会降低亮特征的灰度。该过程会得到一个这样的数字的一维阵列,阵列中的每个元素等于对应于阵列中该位置的结构元素的大小的开操作中的

wcx0602的博客 5480

图像形态学处理

转自 https://www.cnblogs.com/tornadomeet/archive/2012/03/20/2408086.html Matlab DIP(瓦)ch9形态学图像处理 本章的练习主要是形态学的一些基本概念和技术,这些构成了一组提取图像特征的有力工具,针对二值图像和灰度图像的腐蚀、膨胀和重构的基本操作可以组合使用,以执行非常宽泛的任务。其练习代码和结果如下:...

zhuimengshaonian66的博客 4080

14. 图像的形态学操作

数学形态学的数学基础是集合论,因此数学形态学有完备的数学基础,这位数学形态学用于图像分析和处理奠定了坚实的基础。数学形态学运算是由一组形态学的代数运算子组成,其基本思想是用具有一定形态的结构元素找到图像中的对应形状以达到图像分割识别的目的,基本的操作有膨胀、腐蚀、开启和关闭。基于这些基本操作可以推到出数学形态学的很多实用算法,从而进行进一步的图像处理。将数学形态学应用于图像处理可以简化图像数据,保

技术提高效率 2万+

形态学图像处理——图像膨胀&图像腐蚀

一、准备知识1——概念介绍 1.形态学是什么 形态学在数字图像处理中表示的是图像的数学形态里的内容,将数学形态学作为工具从图像中提取区域图像形状的有用的图像分量,如边缘、骨架,区域分割等。 如例: 如例: 如例: 2、数学形态学的语言是集合论。这个集合表示的是图像中的对象。 3、有哪些对象呢? 在二值图像中,每一个像素点都是一个对象,像素点的值只有0,1之分,所

weixin_40202230的博客 6134

OpenCV图像形态学详解

图像形态学(Image Morphology)是数字图像处理领域的一个重要分支,主要研究基于形状的图像处理技术。它最初源于对生物体形态的研究,后来被引入到图像分析中,成为提取图像中有用形状特征的有效工具。在OpenCV中,形态学操作主要基于二值图像(黑白图像)进行处理,通过结构元素(kernel)与图像进行特定操作来实现各种效果,广泛应用于边缘检测、噪声去除、形状分析等领域。OpenCV中的形态学操作是图像处理中极为强大的工具,通过合理组合基本操作可以解决许多实际问题。理解结构元素对结果的影响。

zdx2585503940的博客 1506

使用cubeMX生成USB HID设备

本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。

专注音频,高效工作,快乐生活! 970

图像处理(5) : 形态学处理

​ 形态学是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。 形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。 一、腐蚀与膨胀 在经阈值处理提取出目标区域的二值图像之后,区域边缘可能并不理想,这时可以使用...

QtHalcon 2万+

(Linux)DHCP 超级作用域和中继代理(超难受做了超久)

DHCP服务器在192.168.159.0 可以实现分配IP的功能,现在要跨网段分配IP 就需要用到DHCP中继代理。中继代理有两张网卡分别eth0:IP 192.168.159.2 ;eth1: IP:192.168.200.2 。现在要实现192.168.200.0网段的客户机可以获取DHCP服务器的IP。中继代理其实是相当于一个路由器的作用 DHCP服务器的IP地址 :192.168.159...

DJ_joker的博客 2224

Dify + mem0插件实战:如何让AI记住你的饮食习惯(附完整代码)

本文通过Dify平台与mem0插件实战,详细演示了如何为AI助手构建长期记忆系统,使其能记住并理解用户的复杂饮食习惯(如过敏源、饮食偏好)。文章提供了完整的工作流配置与Python代码示例,帮助开发者实现跨会话的个性化饮食建议,解决AI对话中的“健忘”问题。

lg888的博客 1093

形态学图像处理

画出差值的图像,曲线中的峰值就会指明图像中主要大小颗粒的分布。对于内含多个连通分量的图像A,从仅为连通分量A1内部的某个像素B开始,用3*3的结构元不断进行膨胀。随着集合B的不断膨胀,B的区域不断生长,但又被限制在连通分量A1的内部,最终就会充满整个连通分量A1,从而实现对连通分量A1的提取。一种简单的可视化方法是,用直(连续的)欧几里得线段连接其边界点,如果只有前景点包含于由这些线段形成的集合,那么集合是凸的。类似地,当b的反射的原点是(x,y)时,平坦结构元b在(x,y)处对图像f的膨胀,定义为。

qq_45632142的博客 1897

从芯片选型到光学集成:手持激光测距仪硬件设计全解析

本文全面解析手持激光测距仪的硬件设计,从芯片选型到光学集成,详细介绍了相位法测距技术的核心原理与方案选择。通过模块化设计、信号链路优化及PCB布局技巧,实现毫米级精度。文章还分享了量产化关键控制点,帮助工程师规避常见设计陷阱,提升产品可靠性。

weixin_30425949的博客 445

图像形态学操作

图像形态学操作 微信公众号:幼儿园的学霸 个人的学习笔记,关于OpenCV,关于机器学习, … 问题或建议,请公众号留言; 看到一段话,深有感触 作为软件开发者,我们曾经写过的或者正在写的每一行代码都对我们的渐进式互联世界负有重要的责任。它在很大程度上改变了人类的命运。我们应该为自己所做的事情感到自豪,并且必须将责任进行到底,因为整个世界都在期待我们创造更多的魔力,实现更多的创新。 ...

leonardohaig的博客 5182

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现

本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。

sqshining的专栏 2137

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

图像形态学变换

1

工作笔记 1万+

复现报告:《多回路人机控制系统仿真及II型PIO分析》方法复现与代码实现

本文复现了谭文倩硕士论文《多回路人机控制系统仿真及II型PIO分析》中的关键方法,重点实现了频域驾驶员模型辨识和参数灵敏度分析。通过数字化提取论文图表数据,构建了结构驾驶员模型传递函数,并验证了参数变化对系统特性的影响。采用MATLAB实现了描述函数计算、模型参数辨识和灵敏度分析算法,为后续神经网络模型辨识和II型PIO研究奠定了基础。由于缺乏原始实验数据,部分结果通过数值模拟获得,但仍有效重现了论文的核心分析方法。~~~~~

huanghm88的专栏 175

图像处理中的形态学方法

形态学图像处理(简称形态学)是指一系列处理图像形状特征的图像处理技术。形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。形态学方法的基础是集合论。形态学方法由J. Serra 于1964年提出。

imNingyuan的博客 7301

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基于Matlab的形态学图像处理学习笔记

第12章 形态学图像处理 形态学是一种应用于图像处理和模式识别领域的新的方法,是一门建立在严格的数学理论基础上而又密切联系实际的科学。由于形态学具有完备的数学基础,这为形态学用于图像分析和处理等奠定了坚实的基础。本章详细的介绍利用MATLAB软件进行形态学图像处理,主要内容包括基本运算、组合形态学运算以及二值图像的其他形态学运算等内容。 12.1 基本的形态学运算 数学形态学可以看作是一种特殊的数字图像处理方法和理论,主要以图象的形态特征为研究对象。它通过设计一整套运算、概念和算法,用以描述图象的..

qq_32809093的博客 7386

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

图像处理——形态学

什么是形态学 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。 数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。 其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。 膨胀与腐蚀 最基本的

weixin_44080849的博客 1966

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

什么叫做形态学图像处理_形态学图像处理

形态学,即数学形态学(mathematical Morphology),是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质〈最具区分能力-most discriminative)的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。本文主要包...

weixin_39827304的博客 1905
上一篇: 图像的频域处理实验作业
下一篇: 图像分割1
zhanghongyi_cpp
博客等级 码龄4年 2458粉丝 413原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值