图像运算和图像增强三
图像运算和图像增强三
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()