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

图像运算和图像增强三

图像运算和图像增强三

1.图像形态学处理之腐蚀和膨胀

(1)形态学理论知识
常见的图像形态学运算:腐蚀、开运算(Opening Operation)、闭运算(Closing Operation)、梯度运算(Morphological
Gradient)、顶帽运算(Top Hat)、黑帽运算(Black Hat)
dst = cv2.morphologyEx(src, model, kernel)
(2)图像腐蚀(去噪A-B)
图像的腐蚀(Erosion)和膨胀(Dilation)是两种基本的形态学运算,主
要用来寻找图像中的极小区域和极大区域。将图像中的高亮区域或白色部分进行缩减细化,其运行结果比原图的高亮区域更小。
dst = cv2.erode(src, kernel, iterations)
src原始图像,kernel卷积核,interations迭代次数1

import cv2
import numpy as np
# 读取图片
src=cv2.imread('test01.jpg',cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel=np.ones((5,5),np.uint8)
#图像腐蚀处理
erosion=cv2.erode(src,kernel)
#显示图像
cv2.imshow('src',src)
cv2.imshow('result',erosion)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()

在这里插入图片描述
(3)图像膨胀
图像膨胀是腐蚀操作的逆操作,类似于“领域扩张”,它将图像中的高亮区域或白色部分进行扩张,其运行结果比原图的高亮区域更大。图像被腐蚀处理后,它将去除噪声,但同时会压缩图像,而图像膨胀操作可以去除噪声并保持原有形状。
在这里插入图片描述

import cv2
import numpy as np
# 读取图片
src=cv2.imread('指纹.jpg',cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel=np.ones((5,5),np.uint8)
#图像腐蚀处理
erosion=cv2.dilate(src,kernel)
#显示图像
cv2.imshow('src',src)
cv2.imshow('result',erosion)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()

在这里插入图片描述

2.图像形态学处理之开运算、闭运算和梯度运算

(1)开运算、闭运算
开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出。闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
图像开运算是图像依次经过腐蚀、膨胀处理的过程,图像被腐蚀后将去除噪声,但同时也压缩了图像,接着对腐蚀过的图像进行膨胀处理,可以在保留原有图像的基础上去除噪声。
图像闭运算是图像依次经过膨胀、腐蚀处理的过程,先膨胀后腐蚀有助于过滤前景物体内部的小孔或物体上的小黑点。

import cv2 
import numpy as np 
#读取图片
src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
#读取图片
src1 = cv2.imread('test02.png', cv2.IMREAD_UNCHANGED)

#设置卷积核,卷积核越大图像处理越越干净
kernel = np.ones((5,5), np.uint8)
kernel1 = np.ones((10,10), np.uint8)

#图像开运算
result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
#图像闭运算
result1 = cv2.morphologyEx(src1, cv2.MORPH_CLOSE, kernel1)

#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
cv2.imshow("src1", src1)
cv2.imshow("result1", result1)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述
(2)图像梯度运算
图像梯度运算是图像膨胀处理减去图像腐蚀处理后的结果,从而得到图像的轮廓,主要调用 morphologyEx()实现
在这里插入图片描述

import cv2 
import numpy as np 
#读取图片
src = cv2.imread('test03.png', cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((10,10), np.uint8)
#图像梯度运算
result = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

3.图像形态学处理之顶帽运算和底帽运算

(1)图像顶帽运算
图像顶帽运算是用一个结构元通过开运算从一幅图像中删除物体,顶帽运算用于暗背景上的亮物体,它的一个重要用途是校正不均匀光照的影响。dst = cv2.morphologyEx(src,cv2.MORPH_TOPHAT, kernel)
在这里插入图片描述

import cv2 
import numpy as np 
#读取图片
src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((10,10), np.uint8)
#图像顶帽运算
result = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
(2)图像底帽运算
图像底帽运算是用一个结构元通过闭运算从一幅图像中删除物体,常用于校正不均匀光照的影响。dst=cv2.morphologyEx(src,cv2.MORPH_BLACKHAT, kernel)
在这里插入图片描述

import cv2 
import numpy as np
#读取图片
src = cv2.imread('test02.png', cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((10, 10), np.uint8)
#图像黑帽运算
result = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

相关文章:

  • 没网站可以做seo吗/互联网平台推广
  • 北京网站建设团队/青岛网络优化厂家
  • wordpress 搜索栏目/电子技术培训机构
  • 做房产信息互联网网站需要什么资质/百度热搜广告位
  • 网站代码 公告栏 php/sem竞价课程
  • iis6.1添加网站/免费聊天软件
  • [Spring boot] Spring boot 实现Excel批量导入数据并将文件保存到本地
  • Kafka
  • 【云原生丨K8s系列20】 RBAC 的配置⽅法演示(上):创建⼀个只能访问某个 namespace 的⽤户
  • Vue中created和mounted详解
  • 第五章 trans数据流转换(算子)
  • 【命令】进程常用命令
  • Linux--权限
  • 【C语言】文件操作scanf,fscanf,sscanf(第二弹)
  • 广义表基础
  • 【数据结构】------ 堆
  • 踩内存问题定位手段汇总
  • 高中物理基础学习笔记一