阿基米德原理:流体静力学的一个重要原理,它指出,浸入静止流体中的物体受到一个浮力,其大小等于该物体所排开的流体重量,方向竖直向上并通过所排开流体的形心。这结论是阿基米德首先提出的,故称阿基米德原理。结论对部分浸入液体中的物体同样是正确的。同一结论还可以推广到气体。
科普
知识
前言
又是一期再见时,上周我们学习了图像处理知识里面的翻转和缩放技术,然后通过代码的方式进行了实践,相信大家已经掌握了,今天,我们继续来学习图像处理的有一个知识--图像腐蚀与膨胀。
一、图像腐蚀
图像腐蚀是图像形态学处理中其中一种方式而已,数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。 腐蚀在于消除一些孤立点, 消除一些边界点. 使边界向内收缩. 我们可以借用腐蚀来消除无意义的小点,因此当图像中出现白色的噪点时就可以采用这样的方式。
1.1 原始图片
(出自一位书法家之手:道法自然)
1.2 代码实践
#coding:utf-8
import cv2
import numpy as np
# 读取图片
src_img = cv2.imread("img1.jpg", flags=cv2.IMREAD_GRAYSCALE)
# 定义腐蚀核
fushi_kernel = np.ones((5,5), np.uint8)
# 调用腐蚀函数
fushi_image = cv2.erode(src_img, fushi_kernel, iterations=1)
# 显示腐蚀后的图像
cv2.imshow('fushi_image', fushi_image)
# 显示原始图像,与处理后的图像作比较。
cv2.imshow("src_img",src_img)
cv2.waitKey(0)
代码解读:可以看到,我们的代码十分简洁明了,主要函数在于cv2.erode(),一共三个参数,第一个为需要腐蚀的原始图像,第二个为腐蚀框(核)的大小,并不是越大或者越小越好,而是要实际测试,选择最合适的,第三个参数为迭代次数,也就是重复腐蚀的次数,这个也可以自己定义。
1.3 效果展示
如上图所示,我们可以看到腐蚀后的图像相较于原始图像,黑色的区域变得更加多了,而白色的区域相对变得减少了(黑多白少)。
二、膨胀
图像的膨胀操作也是属于图像形态学处理技术的一种,膨胀与腐蚀其实刚好是一对相反的操作,膨胀会将自身中出现的小黑点变换为白色区域(白多黑少),当图像中出现小黑点不好去除时,一般采用膨胀的方式。
2.1 原始图像
(孙中山先生亲自书写,表达了他一生奋斗所向:天下为公)
2.2 代码实践
#coding:utf-8
import cv2
import numpy as np
# 读取图片
src_img = cv2.imread("img2.jpg", flags=cv2.IMREAD_GRAYSCALE)
# 定义腐蚀核
PZ_kernel = np.ones((3,3), np.uint8)
# 调用膨胀函数
PZ_image= cv2.dilate(src_img, PZ_kernel, iterations=1)
# 显示腐蚀后的图像
cv2.imshow('PZ_image', PZ_image)
# 显示原始图像,与处理后的图像作比较。
cv2.imshow("src_img",src_img)
cv2.waitKey(0)
代码解读:上段代码中,我们需要注意的函数是cv2.dilate(函数),opecv包中的膨胀函数,包含三个参数,同上面一样,第一个为需要膨胀的原始图像,第二个为膨胀框的大小,第三个为迭代次数,这里设置为1 ,粉丝们可以自行设置哦。
2.3 效果演示
如上图所示,我们可以看到,原始图片中黑色区域变少了,白色区域相对增加了(黑少而白多)。
结语
好了,本期的知识就分享到这里了,腐蚀和膨胀都是图像处理的基本技术哦,请大家下去一定实践哦,我们会在后期分享一个目标追踪的实例,当中就会用到今天的技巧。
编辑:玥怡居士|审核:小圈圈居士
▼
往期精彩回顾
▼
【图像篇】OpenCV图像处理(七)---图像平移VS图像旋转
【图像篇】OpenCV图像处理(六)---图像混合VS按位运算
扫码关注更多精彩
点亮在看,你最好看!