1、顶帽变换
顶帽变换是在原图像基础上做出的形态学变换 原图像
I
I
I,即用原图像减掉原图像的开运算。
类似地,底帽变换就是用原图像减掉原图像的闭运算。
代码实现具体例子:用顶帽变换实现对模糊文章的复原,具体包括如下几步:
1获取原图像,
2设计结构元,
3对原图像进行颜色翻转,
4对图像进行开运算,
5用图像减掉开运算后的图像,
6二值化后翻转颜色
I= cv.imread('pic/page760x900.jpg',0)
Ic=255-I #翻转颜色
K=np.ones((21,21),np.uint8)
Ic_open=cv.morphologyEx(Ic,cv.MORPH_OPEN,K)
Ic_tophat=cv.subtract(Ic,Ic_open)
_,Ic_bin=cv.threshold(Ic_tophat,25,255,0)
I_bin=255-Ic_bin
show(I_bin)
OpenCV具有自带的顶帽、底帽运算cv.morphologyEx(img,cv.MORPH_TOPHAT,K) #顶帽运算
I= cv.imread('pic/page760x900.jpg',0)
Ic=255-I #翻转颜色
K=np.ones((21,21),np.uint8)
Ic=cv.morphologyEx(img,cv.MORPH_TOPHAT,K) #顶帽运算
_,Ic_bin=cv.threshold(Ic_tophat,25,255,0)#二值化
I_bin=255-Ic_bin#颜色翻转
show(np.hstack([I,I_bin]))
2、击中击不中变换
击中击不中变换用于精确匹配目标。
击中击不中变换是同样是在原图像基础上做出的形态学变换 原图像
I
I
I,即用原原图像的腐蚀与互补图像(颜色相反)的腐蚀图像的交集。
下面具体例子匹配右下正方形的中心,具体步骤:
1 设计两个与匹配图像大小相同的结构元,这两个结构元互补。
2 获取原图像
3 使用结构元K对原图像进行腐蚀
4 对原图像取反集
5 对反集图像用结构元K2进行腐蚀
6 对两个腐蚀图像取交集已获得目标
代码如下:
I=cv.imread('pic/rectangle_find35.png',-1)
K=np.zeros((37,37),np.uint8)
K[1:36,1:36]=1
Iek=cv.erode(I,K)
Ic=255-I
Kc=1-K
IceKc=cv.erode(Ic,Kc)
hitmiss=cv.bitwise_and(Iek,IceKc)
结构元K为:
原图像与捕获图像: