哪个网站专门做灵异文,网络营销的定义与特点,个人如何免费建网站,珠海网站策划形态学 形态学图像全局二值化自适应阈值腐蚀操作膨胀开运算闭运算形态学梯度顶帽操作黑帽操作 形态学
从图像中提取对表达和描绘区域形状有意义的图像分量
图像全局二值化
import cv2
import numpy as np图像全局二值化--0与255
二值化的主要目的是通过… 形态学 形态学图像全局二值化自适应阈值腐蚀操作膨胀开运算闭运算形态学梯度顶帽操作黑帽操作 形态学
从图像中提取对表达和描绘区域形状有意义的图像分量
图像全局二值化
import cv2
import numpy as np图像全局二值化--0与255
二值化的主要目的是通过简化图像信息、增强对比度、分割目标物体、提取特征信息、去除噪声以及压缩存储和快速处理等方式使图像更容易被计算机处理和分析
最好是灰度图img cv2.imread(./img/cat.jpeg)
# 二值操作对灰度图像操作先把图像变为灰度图像
gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化 127:阈值, 255最大值, cv2.THRESH_BINARY操作类型
# 返回两个值一个是阈值一个是二值化处理后的图片
thresh, dst cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)cv2.imshow(cat, np.hstack((gray, dst)))自适应阈值 自适应阈值二值化,全局二值化在全图中只能采用一个阈值不同的部分具有不同的亮度阈值应该不同# 255最大值, cv2.ADAPTIVE_THRESH_GAUSSIAN_C计算阈值的方法有两个选择这个是最好的 cv2.THRESH_BINARY操作类型
# 3为计算阈值的区域大小 0为一个常数阈值等于平均值或者加权平均值减去这个常数
dst1 cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 3, 0)腐蚀操作 腐蚀操作--通过消除图像中的边界点来使图像沿着边界向内收缩。这种操作可以用于消除图像中的小型噪点、细小物体或者断开相连的物体。选择一个结构元素也称为腐蚀核结构元素是一个小的二维数组用于定义腐蚀操作的运算方式。其大小和形状决定了腐蚀的强度和效果。
逐像素比较将结构元素放置在图像的某个像素位置上然后对于结构元素和图像重叠的区域检查结构元素内的所有像素是否都与图像内的对应像素匹配。
更新像素值如果结构元素内的所有像素都与图像内的对应像素匹配则该像素保持不变否则将该像素置为背景值通常是0或黑色。
遍历整个图像重复上述步骤直到遍历完整个图像。简单点说就是在全黑的背景图里面有一些白色字体如果腐蚀核在背景图中的重叠区域全是白色则结果为白色但只要有一点黑色则全为黑色
所以腐蚀核的大小很重要# 腐蚀核是全1的 iterations迭代次数即腐蚀次数次数越多效果越好
kernel np.opnes((3, 3), np.uint8)
dst2 cv2.erode(img, kernel, iterations2)# 但每次腐蚀核需要自己写很麻烦我们可以自动获取
# 获取形态学腐蚀核 cv2.MORPH_RECT形状 MORPH_RECT长方形 MORPH_ELLIPSE椭圆, MORPH_CROSS十字架
# (5, 5)大小
kernel1 cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))膨胀 膨胀--通过将图像中的像素值进行扩展或“增肥”使得图像的边界向外扩张
和腐蚀相反dst3 cv2.dilate(img, kernel, iterations1)开运算 开运算 腐蚀 膨胀
开运算可以去除图形外的噪点
真实使用时注意调节核大小和迭代次数kernel2 cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dst4_1 cv2.erode(img, kernel, iterations1)
dst4_2 cv2.dilate(img, kernel, iterations1)# OpenCV提供了开运算(cv2.MORPH_OPEN)的api, 噪声比较多的情况下kernel选择大一点
dst4_3 cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel, iterations2)闭运算 闭运算 膨胀 腐蚀
闭运算可以去除图形内部的噪点
这里仅展示api方法同上
真实使用时注意调节核大小和迭代次数dst5 cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations2)形态学梯度 形态学梯度 原图 - 腐蚀
即得到腐蚀掉的部分--边缘
真实使用时注意调节核大小和迭代次数# cv2.MORPH_GRADIENT 形态学梯度
dst6 cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel, iterations2)顶帽操作 顶帽操作 原图 - 开运算
开运算可以去除图形外的噪点顶帽操作得到去除的噪点
真实使用时注意调节核大小和迭代次数# cv2.MORPH_TOPHAT 顶帽操作
dst7 cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel, iterations2)黑帽操作 黑帽操作 原图 - 闭运算
得到图形内部的噪点
真实使用时注意调节核大小和迭代次数dst8 cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel, iterations2)cv2.waitKey(0)
cv2.destroyAllWindows()