图像运算和图像增强三

图像运算和图像增强三

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()

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值