Note|OpenCV学习笔记(一)【图像的基本处理/形态学部分操作】

1.图像融合:

#相当于% 256 (img_cat + img_cat2)[:5,:,0] #越界取255 cv2.add(img_cat,img_cat2)[:5,:,0]

2.滤波
LPF低通滤波器:消除噪声,使图像模糊
  • 平均滤波器
  • 高斯模糊
  • 中值模糊
  • 双边滤波器
HPF高通滤波器:强化噪音,有利于在图像中找到边缘
  • 拉普拉斯变换?
# 均值滤波 # 简单的平均卷积操作 blur = cv2.blur(img, (3, 3)) cv2.imshow('blur', blur) cv2.waitKey(0) cv2.destroyAllWindows()# 方框滤波 # 基本和均值一样,可以选择归一化 box = cv2.boxFilter(img,-1,(3,3), normalize=True) cv2.imshow('box', box) cv2.waitKey(0) cv2.destroyAllWindows()# 方框滤波 # 基本和均值一样,可以选择归一化,容易越界 box = cv2.boxFilter(img,-1,(3,3), normalize=False) cv2.imshow('box', box) cv2.waitKey(0) cv2.destroyAllWindows()# 高斯滤波 # 高斯模糊的卷积核里的数值是满足高斯分布,相当于更重视中间的 aussian = cv2.GaussianBlur(img, (5, 5), 1) cv2.imshow('aussian', aussian) cv2.waitKey(0) cv2.destroyAllWindows()# 中值滤波 # 相当于用中值代替 median = cv2.medianBlur(img, 5)# 中值滤波 cv2.imshow('median', median) cv2.waitKey(0) cv2.destroyAllWindows()# 展示所有的 res = np.hstack((blur,aussian,median))#v\h控制方向 #print (res) cv2.imshow('median vs average', res) cv2.waitKey(0) cv2.destroyAllWindows()

3.腐蚀、膨胀操作
通常用于二值运算,kernel越大,越有可能被腐蚀。
腐蚀=变瘦,膨胀=变胖。局部最大最小值?
注意:腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。
膨胀与腐蚀能实现多种多样的功能,主要如下:
  • 消除噪声
  • 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
  • 寻找图像中的明显的极大值区域或极小值区域
  • 求出图像的梯度
#腐蚀 kernel = np.ones((3,3),np.uint8) erosion = cv2.erode(img,kernel,iterations = 1)#膨胀 kernel = np.ones((3,3),np.uint8) dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1)

4.开运算与闭运算
开还是闭,看最后一个操作就行了。
开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。 (消除外部噪音)
闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。(消除内部噪音)
https://blog.csdn.net/hanshanbuleng/article/details/80657148
# 开:先腐蚀,再膨胀 kernel = np.ones((5,5),np.uint8) opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)# 闭:先膨胀,再腐蚀 kernel = np.ones((5,5),np.uint8) closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

5.梯度运算
梯度=膨胀-腐蚀
可以得到边界信息
# 梯度=膨胀-腐蚀 pie = cv2.imread('pie.png') kernel = np.ones((7,7),np.uint8) dilate = cv2.dilate(pie,kernel,iterations = 5) erosion = cv2.erode(pie,kernel,iterations = 5)

6.礼帽与黑帽
【补充】形态学梯度
Note|OpenCV学习笔记(一)【图像的基本处理/形态学部分操作】
文章图片

基本梯度 = 膨胀 - 腐蚀
礼帽 = 原始输入 - 开运算
黑帽 = 闭运算 - 原始输入
礼帽是通过原图片减去开操作后的图像,得到暗其中的多于的细小部分(字边上的白色细线)。
黑帽是通过闭操作后的图像减去原图像,得到亮其中的细小泄漏部分(字中间的黑色细线)。
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) blackhat= cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)

【Note|OpenCV学习笔记(一)【图像的基本处理/形态学部分操作】】Note|OpenCV学习笔记(一)【图像的基本处理/形态学部分操作】
文章图片

图及部分笔记源:https://www.cnblogs.com/leokale-zz/p/11346993.html

    推荐阅读