当前位置: 首页 > news >正文

图像预处理-形态学变换

针对二值化图像,其有两个输入,一个输出:输入为原图像、核(结构化元素),输出为形态学变换后的图像。基本操作有腐蚀和膨胀。

 一.核

联想到之前的卷积核,也是一种核。

此时的核就跟卷积核不太一样了,有自己的计算规则,对应元素相乘后不一定求和

下面是常见的几种核:

二.腐蚀

与卷积核一样的移动方式,核中心对应的就是目标元素,然后依次从左往右、从上往下移动。腐蚀操作,取的是核操作后的最小值,以达到“变瘦”的效果。

cv2.erode(src, kernel, iterations)

- src : 输入图像

- kernel : 核,基本是奇数大小的正方形矩阵

- iterations : 迭代次数,默认值为1,表示只进行一次腐蚀操作,大于1则再从头开始进行腐蚀。

# 养成好习惯,代码自己敲
import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY)# 进行腐蚀
kernel = np.ones((5, 5), np.uint8)
eroded = cv.erode(th, kernel, iterations=1)cv.imshow('binary', th)
cv.imshow('eroded', eroded)
cv.waitKey(0)
cv.destroyAllWindows()

三.膨胀

膨胀操作,取的是核操作后的最大值,以达到“变胖”的效果。

cv2.dilate(src, kernel, iterations)

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY)# 进行膨胀
kernel = np.ones((5, 5), np.uint8)
dilate = cv.dilate(th, kernel, iterations=1)cv.imshow('binary', th)
cv.imshow('dilate', dilate)
cv.waitKey(0)
cv.destroyAllWindows()

四.开运算(cv2.MORPH_OPEN)

开运算是先腐蚀后膨胀,其作用是消除噪点,去除小的干扰块,而不影响原来的图像

它和下面的运算用的都是同一种函数,只不过传入的方法不一样。

cv.morphologyEx(src, method, kernel)

- src : 输入图像

- method : 运算的方法

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY)# 开运算
kernel = np.ones((5, 5), np.uint8)
opening = cv.morphologyEx(th, cv.MORPH_OPEN, kernel)cv.imshow('binary', th)
cv.imshow('open', opening)
cv.waitKey(0)
cv.destroyAllWindows()

五.闭运算(cv2.MORPH_CLOSE)

先膨胀后腐蚀,作用是消除“闭合”物体里面的孔洞

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY_INV)# 闭运算
kernel = np.ones((5, 5), np.uint8)
closing = cv.morphologyEx(th, cv.MORPH_CLOSE, kernel)cv.imshow('binary', th)
cv.imshow('close', closing)
cv.waitKey(0)
cv.destroyAllWindows()

六.顶帽运算(cv2.MORPH_TOPHAT)

原图像与“开运算“的结果图之差,得到白色噪点。

用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用礼帽运算进行背景提取

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY)# 顶帽运算
kernel = np.ones((5, 5), np.uint8)
top = cv.morphologyEx(th, cv.MORPH_TOPHAT, kernel)cv.imshow('binary', th)
cv.imshow('top', top)
cv.waitKey(0)
cv.destroyAllWindows()

七.黑帽运算

原图像与“闭运算“的结果图之差,得到黑色噪点。

用来分离比邻近点暗一些的斑块

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY_INV)# 黑帽运算
kernel = np.ones((5, 5), np.uint8)
black = cv.morphologyEx(th, cv.MORPH_BLACKHAT, kernel)cv.imshow('binary', th)
cv.imshow('black', black)
cv.waitKey(0)
cv.destroyAllWindows()

八.形态学梯度

通过比较原图像与膨胀图腐蚀图之间的差异来突出图像边缘特征。对于图像中的每个像素点,其形态学梯度值是该像素点在膨胀后的图像值与其在腐蚀后的图像值之差

通常能够强化图像的边缘信息,并且对噪声有一定的抑制作用

import numpy as np
import cv2 as cv# 直接灰度化
img = cv.imread('../images/huofu.png', cv.IMREAD_GRAYSCALE)# 二值化
ret, th = cv.threshold(img, 127, 255, cv.THRESH_BINARY)# 形态学梯度
kernel = np.ones((5, 5), np.uint8)
xtx = cv.morphologyEx(th, cv.MORPH_GRADIENT, kernel)cv.imshow('binary', th)
cv.imshow('xtx', xtx)
cv.waitKey(0)
cv.destroyAllWindows()

相关文章:

  • React-Native项目矢量图标库(react-native-vector-icons)以及如何使用
  • 强化学习机器人路径规划——Sparrow复现
  • adb常用的20个命令
  • splitchunk(如何将指定文件从主包拆分为单独的js文件)
  • Python+Selenium+Pytest+Allure PO模式UI自动化框架
  • 文章记单词 | 第48篇(六级)
  • 关于Android Studio的Gradle各项配置2
  • 优化无头浏览器流量:使用Puppeteer进行高效数据抓取的成本降低策略
  • 微深节能 平板小车运动监测与控制系统 格雷母线
  • java_基础Java 转义字符学习笔记
  • Kaamel白皮书:IoT设备安全隐私评估实践
  • 【MCP Node.js SDK 全栈进阶指南】中级篇(6):MCP与Web框架集成
  • 网络安全漏洞现状与风险管理分析
  • OceanBase数据库-学习笔记1-概论
  • C# 类的基本概念(声明类)
  • RAGFlow解决Docker Compose include 报错问题
  • 计算机网络学习笔记 4-6章
  • RAG(Retrieval-Augmented Generation,检索增强生成)
  • Vue2 与 Vue3 深度对比与技术解析
  • 文章记单词 | 第49篇(六级)
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 海南儋州市委副书记任延新已赴市人大常委会履新
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了
  • 体坛联播|利物浦提前4轮夺冠,安切洛蒂已向皇马更衣室告别
  • 伊朗南部港口火势蔓延,部分集装箱再次发生爆炸
  • 央媒谈多地景区试水“免费开放”:盲目跟风会顾此失彼