【OpenCV】(七)形态学

opencv基础篇 ——(六)图像形态学 图像形态学 阅读详情

系列内容:OpenCV概述与环境配置,OpenCV基础知识和绘制图形,图像的算数与位运算,图像视频的加载和显示,图像基本变换,滤波器,形态学,图像轮廓,图像直方图,车辆统计项目,特征检测和匹配,图像查找和拼接,虚拟计算器项目,信用卡识别项目,图像的分割与修复,人脸检测与车牌识别,目标追踪,答题卡识别判卷与文档ocr扫描识别,光流估计

(一)形态学概述

什么是形态学

  1. 指一系列处理图像形状特征的图像处理技术。
  2. 形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。
  3. 这些处理方法基本是对二进制图像进行处理, 即黑白图像
  4. 卷积核决定着图像处理后的效果

形态学常用基本操作有:

  1. 膨胀和腐蚀
  2. 开运算
  3. 闭运算
  4. 顶帽
  5. 黑帽

(二)图像全局二值化

二值化: 将图像的每个像素变成两种值, 比如0, 255.

threshold(src, thresh, maxval, type[, dst])

  • src 最好是灰度图
  • thresh: 阈值
  • maxval: 最大值, 最大值不一定是255
  • type: 操作类型, 常见操作类型如下图7.1所示:
7.1-常见操作类型

示例代码,图像全局二值化

#形态学
import cv2
import numpy as np

#导入图片
img=cv2.imread('dog1.jpg')

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#返回两个结果,一个是阈值,另一个是处理后的图片

ret,dst=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)

cv2.imshow('dog',np.hstack((gray,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

图像全局二值化,如图7.2所示:

7.2-图像全局二值化

(三)自适应阈值二值化

在前面的部分我们使用是全局阈值,整幅图像采用同一个数作为阈值。当时这种方法并不适应与所有情况,尤其是当同一幅图像上的不同部分具有不同亮度时。这种情况下我们需要采用自适应阈值。此时的阈值是根据图像上的每一个小区域计算与其对应的阈值。因此在同一幅图像上的不同区域采用的是不同的阈值,从而使我们能在亮度不同的情况下得到更好的结果。

adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)

这种方法需要我们指定六个参数,返回值只有一个。

  • Adaptive Method - 指定计算阈值的方法。
  1. cv2.ADPTIVE_THRESH_MEAN_C:阈值取自相邻区域的平均值
  2. cv2.ADPTIVE_THRESH_GAUSSIAN_C:阈值取值相邻区域的加权和,权重为一个高斯窗口。
  • Block Size - 邻域大小(用来计算阈值的区域大小)。
  • C - 这就是一个常数,阈值就等于的平均值或者加权平均值减去这个常数。

示例代码,自适应阈值二值化

(1)图像自适应阈值二值化处理

import cv2
import numpy as np

#导入图片
img=cv2.imread('lena1.png')

# cv2.namedWindow('img',cv2.WINDOW_NORMAL)
# cv2.resizeWindow('img',1920,1080)

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

dst=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,9,0)

cv2.imshow('dog',np.hstack((gray,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

lena图像自适应阈值二值化处理,如图7.3所示:

7.3-lena图像自适应阈值二值化处理

(2)图像自适应阈值二值化处理对比

不图像自适应阈值二值化处理

#数学题例子
import cv2
import numpy as np

#导入图片
img=cv2.imread('math1.jpg')

cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',640,480)

#二值化操作是对灰度图片操作,把照片变成灰度图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#我们发现适应全局阈值二值化,对图片光线不好的地方效果不好
thresh,dst=cv2.threshold(gray,175,255,cv2.THRESH_BINARY)

print(thresh)
cv2.imshow('img',np.hstack((gray,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

数学题例子,不图像自适应阈值二值化处理,如图7.4所示:

7.4-数学题不图像自适应阈值二值化处理

数学题,使用图像自适应阈值二值化处理

#数学题例子
import cv2
import numpy as np

#导入图片
img=cv2.imread('math1.jpg')

cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',1080,720)

#二值化操作是对灰度图片操作,把照片变成灰度图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#适应全局阈值二值化
dst=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,5,0)

cv2.imshow('img',np.hstack((gray,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

数学题用图像自适应阈值二值化处理,如图7.5所示:

7.5-数学题用图像自适应阈值二值化处理

(四)腐蚀操作

腐蚀操作也就是用卷积核扫描图像,只不过腐蚀操作的卷积一般都是1,如果卷积核内所有的像素点都是白色,那么锚点即为白色.如图7.6所示:

7.6-腐蚀操作

大部分的时候,腐蚀操作都使用的是全为1的卷积核,如图7.7所示:

7.7-腐蚀操作全为1的卷积核

erode(src,kernel[,dst[,anchor[,iteration[,borderType[,borderValue]]]]])

iteration是腐蚀操作的迭代函数,次数越多,腐蚀操作执行的次数越多,腐蚀效果越明显

import cv2
import numpy as np

#导入图片
img=cv2.imread('erode1.png')

kernel=np.ones((3,3),np.uint8)

dst=cv2.erode(img,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

卷积核为1时,处理结果如图7.8所示:

7.8-卷积核为1时的结果

卷积核为2时,处理结果如图7.9所示:

7.9-卷积核为2时的结果

(五)获取形态学卷积核

OpenCV提供了获取卷积核的API,用户无需手工创建卷积核。

getStructuringElement(shape, ksize[, anchor])

shape参数用于指定卷积核的形状,它代表卷积核中1的排列形状,而非卷积核的长宽。

可选的卷积核形状包括:

  • MORPH_RECT:卷积核中的1呈矩形排列,这是常用的形状。
  • MORPH_ELLIPSE:卷积核中的1呈椭圆排列。
  • MORPH_CROSS:卷积核中的1呈十字形排列。

1.卷积核形状

(1)椭圆

import cv2
import numpy as np

kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print(kernel)

卷积核如图7.10所示:

7.10-获取形态学卷积核(MORPH_ELLIPSE)

(2)矩形

import cv2
import numpy as np

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel)

卷积核如图7.11所示:

7.11-获取形态学卷积核(MORPH_RECT)

(3)十字

import cv2
import numpy as np

kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print(kernel)

卷积核如图7.12所示:

7.12-获取形态学卷积核(MORPH_CROSS)

2.对字符"i"进行腐蚀

(1)矩形处理

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel)
#腐蚀
dst=cv2.erode(img,kernel)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

矩形处理结果如图7.13所示:

7.13-矩形腐蚀

(2)椭圆处理

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print(kernel)
#腐蚀
dst=cv2.erode(img,kernel)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

椭圆处理结果如图7.14所示:

7.14-椭圆腐蚀

(3)十字处理

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print(kernel)
#腐蚀
dst=cv2.erode(img,kernel)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

十字处理结果如图7.15所示:

7.15-十字腐蚀

(六)膨胀操作

膨胀是腐蚀的相反操作,基本原理是只要保证卷积核的锚点是非0值,周边无论是0还是非0值,都变成非0值.如图7.16所示:

7.16-膨胀操作

dilate(img,kernel,iterations=1)

(1)矩形膨胀

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel)
#腐蚀
dst=cv2.dilate(img,kernel,iterations=1)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()    

矩形膨胀操作结果,如图7.17所示:

7.17-矩形膨胀操作

(2)椭圆膨胀

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
print(kernel)
#腐蚀
dst=cv2.dilate(img,kernel,iterations=1)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

椭圆膨胀操作结果,如图7.18所示:

7.18-椭圆膨胀操作

(3)十字膨胀

import cv2
import numpy as np

#导入图片
img=cv2.imread('i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print(kernel)
#腐蚀
dst=cv2.dilate(img,kernel,iterations=1)
cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()   

十字膨胀操作结果,如图7.19所示:

7.19-十字膨胀操作

应用:腐蚀之后膨胀还原

import cv2
import numpy as np

#导入图片
img=cv2.imread('erode1.png')

kernel=np.ones((3,3),np.uint8)
#先腐蚀
dst1=cv2.erode(img,kernel,iterations=2)

#再膨胀
dst=cv2.dilate(dst1,kernel,iterations=2)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

腐蚀之后膨胀还原效果,如图7.20所示:

7.20-腐蚀之后膨胀还原

(七)开运算

开运算和闭运算都是腐蚀和膨胀的基本应用

开运算=腐蚀+膨胀

morphologyEx(img, MORPH_OPEN, kernel)

  • MORPH_OPEN 表示形态学的开运算
  • kernel如果噪点比较多,会选择大一点的kernel,如果噪点比较小,可以选择小点的kernel

实例,处理黑白噪声图片

import cv2
import numpy as np

#导入图片
img=cv2.imread('dogi.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

# #先腐蚀
# dst1=cv2.erode(img,kernel,iterations=2)

# #再膨胀
# dst=cv2.dilate(dst1,kernel,iterations=2)

dst=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

开运算处理黑白噪声图片,效果如图7.21所示:

7.21-开运算处理黑白噪声图片

(八)闭运算

闭运算=膨胀+腐蚀

morphologyEx(img, MORPH_CLOSE, kernel)

  • MORPH_CLOSE 表示形态学的开运算
  • kernel如果噪点比较多,会选择大一点的kernel,如果噪点比较小,可以选择小点的kernel

实例:白色内部有噪点

import cv2
import numpy as np

#导入图片
img=cv2.imread('dog1i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

# #先腐蚀
# dst1=cv2.erode(img,kernel,iterations=2)

# #再膨胀
# dst=cv2.dilate(dst1,kernel,iterations=2)

dst=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

闭运算处理黑白噪声图片,效果如图7.22所示:

7.22-闭运算处理黑白噪声图片

(九)形态学梯度

梯度=原图-腐蚀

腐蚀之后原图边缘变小了,原图-腐蚀可以得到腐蚀掉的部分,即边缘.

morphologyEx(img,cv2.MORPH_GRADIENT,kernel,iterations)

import cv2
import numpy as np

#导入图片
img=cv2.imread('i2.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

# #先腐蚀
# dst1=cv2.erode(img,kernel,iterations=2)

# #再膨胀
# dst=cv2.dilate(dst1,kernel,iterations=2)

dst=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

一次梯度,效果如图7.23所示:

7.23-一次形态学梯度

二次梯度,效果如图7.24所示:

7.24-二次形态学梯度

(十)顶帽操作

顶帽=原图-开运算

开运算的效果是去除图像外的噪点,原图-开运算就得到了去掉的噪点.

morphologyEx(img,cv2.MORPH_TOPHAT,kernel,iterations)

import cv2
import numpy as np

#导入图片
img=cv2.imread('dogi.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

dst=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

顶帽操作,效果如图7.25所示:

7.25-顶帽操作

(十一)黑帽操作

黑帽=原图-闭运算

闭运算的效果是去除图像内的噪点,原图-闭运算就得到了去掉的噪点.

morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations)

import cv2
import numpy as np

#导入图片
img=cv2.imread('dog1i.png')

kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

dst=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations=1)

cv2.imshow('img',np.hstack((img,dst)))

cv2.waitKey(0)
cv2.destroyAllWindows()

黑帽操作,效果如图7.26所示:

7.26-黑帽操作
六.OpenCv之形态学 6. 形态学 6.1 形态学概述 什么是形态学 指一系列处理图像形状特征的图像处理技术 形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。 这些处理方法基本是对二进制图像进行处理, 即黑白图像 卷积核决定着图像处理后的效果 形态学常用基本操作有: 膨胀和腐蚀 开运算 闭运算 顶帽 黑帽 6.2 图像全局二值化 二值化: 将图像的每个像素变成两种值, 比如0, 255. threshold(src, t 阅读详情

相关推荐

OpenCV形态学操作

OpenCV形态学操作

hggugfn的博客 3376

OpenCV学习——形态学

前言 继续学习图像里面的形态学知识——结构元、腐蚀、膨胀、开运算、闭运算、击中/不击中变换。以及部分基本形态学算法,包括边界提取、空洞填充、连通分量的提取、凸壳、细化、粗化、骨架、裁剪、形态学重建。 其实就是对冈萨雷斯的《数字图像处理》中第9章节《形态学处理》的简要理解。 如果你认为腐蚀是减小白色区域,膨胀是扩充白色区域,请务必看本博客,注意不同结构元的结果。 参考博客: OpenCV官方的形态学运算文档 冈萨雷斯的《数字图像处理》第9章 某位大佬的形态学总结 理论与实践 结构元 结构元实际就是一个自定义的

风翼冰舟的博客 2874

【OpenCV】第八章: 形态学操作

第八章: 形态学操作 什么是形态学操作? 形态学,morphology, 形态学最初是生物学中研究动物和植物结构的一个分支,被引入图像处理领域后,图像形态学就指以形态为基础对图像进行分析的一种方法或技术。 图像形态学操作的核心思想是:从图像中提取 用于表达或描绘图像形状 的信息。 图像形态学操作的目的是:使计算机更够更好的对图像进行识别和理解。因为图像形态学处理后可以简化图像数据,同时保存了它们基本的形状特性,去除了不相干的结构。 关键点:图像形态学操作主要是对二值图像

因为热爱所以坚持 3868

opencv之形态学

在图像处理领域,形态学是一种基于形状的图像分析技术,用于提取和处理图像的形态特征。这包括膨胀、腐蚀、开运算、闭运算等操作,广泛应用于边缘检测、图像分割和噪声去除等方面。形态学操作的核心概念是结构元(Structuring Element),这是一个定义形态学操作如何应用于图像的形状或模板。结构元可以是任意形状的,如方形、圆形、十字形等,应用于图像时,结构元素在图像上滑动,决定了哪些像素会被膨胀、腐蚀或其他形态学操作影响。

hola173841439的博客 3007

西门子S7-1200的PID应用(恒温热水器)

物料清单:1200PLC一台,模拟量输入模块SM1231(PLC自带的输入通道不支持4-20mA电流输入)一个,PT100一个,温度变送器,热得快,固态继电器。 第一步,硬件接线; 第二步,新建1200工程,添加PLC和模拟量输入模块,修改模块的模拟量输入类型为4-20mA,模拟量模块的IO地址为96-103(8个字); 第三步,新建循环组织块OB30,循环时间选择默认点1...

weixin_30835649的博客 6549

Nvidia Jetson AGX Orin 如何进入 Recovery Mode(刷机注意事项)

Jetson Orin 如何进入Recovery mode + 刷机注意事项

Pandako's Blog 1万+

[Opencv初探之七]:形态学处理

[Opencv初探之七]:形态学处理1. 膨胀和腐蚀1.1. 膨胀2.2 腐蚀2.开运算、闭运算、形态学梯度、顶帽、黑帽2.1 开运算2.2 闭运算2.3 形态学梯度2.4 顶帽2.5 黑帽 1. 膨胀和腐蚀 首先需要注意,腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被...

LbinBB的博客 398

开关电源环路学习笔记(1)-为啥要知道传递函数?

做硬件都会接触到开关电源,或多或少会接触到环路补偿。很多兄弟们也提出来让我说说这个,说明大家也都很关心,也说明这个好像有点难。 就我个人而言,我也想搞明白环路这一块,也查了一些资料,视频,不过说实话,一直都还是懵的,感觉很困难。 具体感觉就是,看资料或视频的时候,感觉好像是那么回事。但是撇开之后,就又云里雾里的感觉,总有一些想法没有找到答案。 问题 比如下面我想过的问题: 开关电源有开关,根本就不是一个线性系统,传递函数是咋弄出来的? 系统环路框图的输入量为什么不是Vin,而是参考电压V

weixin_42005993的博客 1万+

opencv基础(七)形态学操作

上一节,我们学习过图像的膨胀和腐蚀,简单地来说,以最大值代替中心像素则为膨胀,以最小值代替中心像素则为腐蚀,虽然这种说法不是很严谨,但是便于我们理解。这一节我们来学习一下,图像的形态学操作,它是基于膨胀和腐蚀的一种拓展。那主要包括哪些呢?包括开操作,闭操作,形态学梯度,顶帽,黑帽。 那下面我们一一来解释。 1、开操作:先腐蚀后膨胀。 假设对象是前景色,背景 是黑色,可以去掉小的对象。比如: ...

qq_34062754的博客 226

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

数据可视化—power bi 基础操作汇总

数据来源: https://pan.baidu.com/s/1U_Y7rKfhnSKbLmh4FcUD_Q 提取码: yq5v 目录 基本功能与视图 编辑与查询—修改column案例 建立关联性 新增column与DAX完成总价运算 习题练习1:建立可视化图表 产品销售统计图 column拖曳可视化 1.基本功能与视图 ①基础操作界面 ②获取数据—以打开excel为例 ③数据文件基本视图 可视化形式:柱状图、数据、关联性 2.编辑与查询—修改column ①编辑与查询—数据处理界面 .

weixin_52730784的博客 2682

Opencv 学习笔记(七)形态学操作

菜鸟一枚, 这是我的第六个博客, 刚刚入门opencv, 想将自己的学习过程分享给大家!!! 代码: #include "stdafx.h" #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> //Opencv highgui 模块 #include <opencv2/imgp...

qq_43765237的博客 246

Bootloader Design of PIC18 series MCU

注意:下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的,与bootloader与用户态程序交互的理论知识都已给出。包含内存组织,跳转,中断等必备功能的描述。

含光左卫的工作笔记集 1267

OpenCV学习笔记(七)——高级形态学操作

前言:    本文的主角是OpenCV的morphologyEX函数,它利用基本的膨胀和腐蚀技术,来实现更加高级的形态学变换,如开闭运算、形态学梯度、“顶帽”和“黑帽”等。    首先,我们需要知道,形态学的高级形态,往往都是建立在腐蚀和膨胀这两个基本操作之上的。而关于腐蚀和膨胀的概念和演示代码请参考上一节。有了腐蚀和膨胀的基础,再来学习高级形态学操作就不难了。一、morphologyEX函数  ...

行歌 3068

Ubuntu HackRF One、GNU Radio、Gqrx相关环境搭建

本文介绍Ubuntu HackRF One、GNU Radio、Gqrx相关环境搭建方法。

无线通信实验室 1万+

YOLOv8性能提升:基于SPD-Conv的高效空间深度转换卷积技术解析【YOLOv8】

SPD-Conv是一种结合了空间和深度信息的卷积技术。与传统卷积不同,SPD-Conv通过在卷积过程中动态调整空间维度和深度维度之间的关系,使得模型能够在较少的参数下捕捉到更多的空间细节。这种方法尤其适用于检测小目标和复杂场景中的细微特征。SPD-Conv的核心思想是通过引入一个空间深度转换矩阵,将输入特征图的空间信息有效地映射到更高维度的深度信息中。这种转换不仅可以保留输入图像的空间细节,还可以在卷积操作中增强特征的表达能力。空间深度转换:通过一个线性变换矩阵,将输入特征图的空间信息转换为深度信息。

博客 1809

python+OpenCV图像处理(七)图像的形态学处理

图像的形态学处理         数学形态学(Mathematical morphology)是一门 建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。         膨胀、腐蚀、开运算和闭运算是数学形态学的四个基本运算,它们在二值图...

Jumping boy 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pythonopencv图像形态_OpenCV-Python系列七:图像形态学

如果说滤波是在大的尺度空间来处理,图像形态学则对消除局部噪声信号十分有用,其目的是剔除二值图像中的干扰,更好的保留你的目标信息。最常使用的形态学处理包括腐蚀,膨胀,开运算,闭运算,opencv里面还提供有礼帽,黑帽运算,实质是在腐蚀、膨胀操作基础上进行几何运算。这里默认1(白色)为“目标”,0(黑色)为“背景”。腐蚀即会使得目标区域减少,膨胀会使得目标区域增加。【注:这里说白色是目标并不绝对,加以...

weixin_35867127的博客 277

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python-初学openCV——图像预处理(七)——亮度变换、形态学变换

由于操作图像为二值图,所以不是黑就是白,这就意味着,在卷积核覆盖的区域内,只要有白色(像素值为255),那么该区域的中心像素点必定为白色(255)。由于操作图像为二值图,所以不是黑就是白,这就意味着,在被核值为1覆盖的区域内,只要有黑色(像素值为0),那么该区域的中心像素点必定为黑色(0)。也就是从图像的左上角开始,滑动到图像的右下角,但与腐蚀恰恰相反,在滑动过程中,令核值为1的区域与被核覆盖的对应区域进行相乘,得到其最大值,图像都是由一个个像素值组成的,图像的亮度变换实际上还是图像像素值的变换。

bright_colo的博客 1166

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

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

OpenCV(七)形态学操作2--开运算与闭运算

目录 概述: morphologyEX函数 一、开运算(分开) 1、原理 2、代码 3、效果 二、闭运算(封闭) 1、原理 2、代码 3、效果 参考资料: 概述: 运算类型 操作 目的 开运算 先腐蚀再膨胀 可在纤细点出分离物体。有助于消除噪音 闭运算 先膨胀后腐蚀 用于排除前景对象中的小孔或...

great_yzl的博客 4356

OpenCV学习笔记之七——图像形态学处理(一)

首先感谢@浅墨_毛星云,本篇博文是小武通过学习@浅墨_毛星云的博客以及书籍《opencv3.0编程入门》整理的笔记及疑问心得,小武水平有限,欢迎交流。@浅墨_毛星云博文:https://blog.youkuaiyun.com/poem_qianmo/article/category/1923021一、形态学概述数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像...

小武的博客 417

OpenCV基础(七)---形态学基础:腐蚀与膨胀

形态学图像处理 形态学是研究动植物形态(form)的科学。这里我们使用同一术语表示数学形态学的内容。 数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科, 是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、 骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等...

weixin_30722589的博客 199

OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()

OpenCV学习笔记(七):形态学(morpholgy):enrode(),dilate() 代码 #include <opencv2/opencv.hpp> using namespace cv; using namespace std; Mat g_srcImage, g_dstImage; //原始图和效果图 int g_nTrackbarNumer = 1; ...

Leon_Chen的博客 1072

opencv 形态学处理

一、话说形态学图像形态学中的几个基本操作:腐蚀、膨胀、开操作、闭操作。1.1 腐蚀结构A被结构B腐蚀的定义为, A⨀B={z|(B)z⊆A}A⨀B={z|(B)z⊆A}可以理解为,移动结构B,如果结构B与结构A的交集完全属于结构A的区域内,则保存该位置点,所有满足条件的点构成结构A被结构B腐蚀的结果。 1.2 膨胀结构A被结构B膨胀的定义为, A⨁B={z|(B^)z⋂A≠∅}A⨁B={z|(B^...

zhangjunp3的博客 1万+

opencv 形态学变换

形态学变换(Morphological Transformations)是一种。形态学变换有两个输入,一个输出:输入为(结构化元素),输出为形态学**变换后的图像。**其基本操作有腐蚀和膨胀,这两种操作是相反的,即较亮的像素会被腐蚀和膨胀。下面我们来说一下核、腐蚀与膨胀的概念。

2401_87862479的博客 1594

OpenCV-图像形态学处理

OpenCV使用图像形态学操作,对图像进行处理

小白的学习笔记 1503
上一篇: 【OpenCV】(六)滤波器
下一篇: 【OpenCV】(八)图像轮廓
Cccp.123
博客等级 码龄3年 5粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值