形态学

OpenCV 形态学腐蚀

99封情书 提交于 2020-01-16 22:02:05
1、基本概念 腐蚀与膨胀是一对相反的操作,所以腐蚀就是求全局最小值的操作。 腐蚀(erode)是求局部最小值的操作。从数学角度讲,膨胀或腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。核B与图形卷积,即计算核B覆盖的区域的像素点的最小值,并把这个最小值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐减小,如图所示,这就是膨胀操作的初衷。 核可以是任何形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,核是一个小的,中间带有参考点和实心正方形或者圆盘。其实可以将核看作模板或者掩码。 公式为: 2、API函数讲解 C ++ : void erode ( InputArray src , OutputArray dst , InputArray kernel , Point anchor = Point( - 1 , - 1 ), int iterations = 1 , int borderType = BORDER_CONSTANT , const Scalar & borderValue = morphologyDefaultBorderValue ( ) ) ; 参数 1 : 输入图像 参数 2 : 目标图像,和原图像有相同的尺寸和类型 参数 3 : 腐蚀操作核。当为 NULL 时

形态学操作

China☆狼群 提交于 2020-01-07 12:17:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 膨胀和腐蚀 膨胀和腐蚀是相对于亮度区域而言的,膨胀操作即将亮度的区域进行扩展,腐蚀操作相反,是将亮度区域进行腐蚀掉。 #include <opencv2/opencv.hpp> #include <iostream> int main() { cv::Mat img = cv::imread("pic/dige.png"); if (img.empty()) { std::cout << "Read images failed!" << std::endl; return -1; } cv::namedWindow("src", CV_WINDOW_NORMAL); cv::imshow("src", img); cv::Mat elem = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(4,4)); //膨胀操作,将亮度区域扩张 cv::Mat dilate; cv::dilate(img, dilate, elem, cv::Point(), 1); cv::namedWindow("dilate", CV_WINDOW_NORMAL); cv::imshow("dilate", dilate); //腐蚀操作,将亮度区域腐蚀掉 cv::Mat

OpenCV-Python 形态学转换 | 十七

匆匆过客 提交于 2019-12-19 18:47:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。 我们将看到不同的功能,例如: cv.erode (), cv.dilate (), cv.morphologyEx ()等。 理论 形态变换是一些基于图像形状的简单操作。通常在二进制图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定 操作性质的结构元素 或 内核 。两种基本的形态学算子是侵蚀和膨胀。然后,它的变体形式(如“打开”,“关闭”,“渐变”等)也开始起作用。在下图的帮助下,我们将一一看到它们: 1. 侵蚀 侵蚀的基本思想就像土壤侵蚀一样,它侵蚀前景物体的边界(尽量使前景保持白色)。它是做什么的呢?内核滑动通过图像(在2D卷积中)。原始图像中的一个像素(无论是1还是0)只有当内核下的所有像素都是1时才被认为是1,否则它就会被侵蚀(变成0)。 结果是,根据内核的大小,边界附近的所有像素都会被丢弃。因此,前景物体的厚度或大小减小,或只是图像中的白色区域减小。它有助于去除小的白色噪声(正如我们在颜色空间章节中看到的),分离两个连接的对象等。 在这里,作为一个例子,我将使用一个5x5内核,它包含了所有的1。让我们看看它是如何工作的: import cv2 as cv import numpy as np img =

形态学操作--特征提取

匿名 (未验证) 提交于 2019-12-03 00:19:01
膨胀 与 腐蚀 ,使用不同的结构元素实现对输入图像的操作、得到想要的结果。 (1)二值图像与灰度图像上的腐蚀操作原理 (2)二值图像与灰度图像上的膨胀操作 原理 (3)结构元素,上述膨胀与腐蚀过程可以使用任意的结构元素(矩形、圆、直线) 操作步骤 (1)输入图像彩色图像 - imread () (4)定义结构元素 - getStructuringElement() (5)开操作 (腐蚀+膨胀)提取 水平与垂直线 (6)后处理 - bitwise_not() 源代码 #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; int main(int argc, char** argv) { Mat src, dst; src = imread("C:/Desktop/omd_Opencv/ms/2018-05-09_161301.png");//输入彩色图像 if (!src.data){ printf("could not load image...\n"); return -1; } char INPUT_WIN[] = "input image"; char OUTPUT_WIN[] = "result image"; namedWindow(INPUT_WIN,CV_WINDOW

OpenCV(Python3)_13(形态学变换)

匿名 (未验证) 提交于 2019-12-02 22:54:36
目标 在这一章当中 我们将学习不同的形态操作,如腐蚀,膨胀,开运算,闭运算等。 我们将看到不同的功能,如: , , 等 理论 形态学变换是基于图像形状所进行一些简单操作。 它通常是在二值化图像上进行处理。 它需要两个输入,一个是我们的原始图像,另一个是 决定操作性质的 结构元素 或 内核 。 两个基本的形态学算子是腐蚀和膨胀。 然后它的变体构成了开运算,闭运算,梯度等。我们会以下图为例进行逐一的介绍。 ͼƬ 1.侵蚀 腐蚀的基本思想就像土壤腐蚀一样,它腐蚀了前景物体的边界(前景一般为白色)。 那么它是怎么做到的呢? 内核在图像中滑动(如2D卷积)。 如果与卷积所对应的原图像的所有像素值都是1,那么中心元素就保持着原来的像素值,否则就变为零。 那么这会产生什么影响呢。根据卷积核的大小,靠近前景附近的所有像素都将被丢弃。 因此,前景物体的厚度或大小会减小,或者图像中的白色区域会减少。 这对于消除小的白噪声是有用的(正如我们在彩色空间章节看到的那样),同时也可以用来分离两个连接的物体等等。 在这里,作为一个例子,我将使用一个5x5的内核。 让我们看看它是如何工作的: 程序: import cv2 as cv import numpy as np img = cv.imread('j.png',0) kernel = np.ones((5,5),np.uint8) erosion = cv

3.形态学

匿名 (未验证) 提交于 2019-12-02 22:51:30
#导入工具包 from imutils import * Erosion腐蚀 其原理是在原图的小区域内取局部最小值,其函数是cv2.erode()。这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成不同形状的结构元素,比如: # 矩形 kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5)) print(kernel1) [[1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1]] # 椭圆 kernel2 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)) print(kernel2) [[0 0 1 0 0] [1 1 1 1 1] [1 1 1 1 1] [1 1 1 1 1] [0 0 1 0 0]] # 十字形 kernel3 = cv2.getStructuringElement(cv2.MORPH_CROSS, (5,5)) print(kernel3) image = imread('image.jpg') show(image) 1 erosion = cv2.erode

图像处理基础——形态学

橙三吉。 提交于 2019-11-30 00:01:07
文章目录 形态学基础前提知识 腐蚀与膨胀 腐蚀 膨胀 闭运算与开运算 闭运算 开运算 击中与击不中 顶帽与黑帽 顶帽 黑帽 一些其他的形态学操作 形态学梯度 形态学基础前提知识 B ’ 为B关于中心对称的集合 (B) z 为B在集合Z中移动 腐蚀与膨胀 腐蚀 作为元素集Z中的集合A和B 则B对A的腐蚀定义为: 集合B在Z内移动若移动后B为A的子集则保留当前位置。 公式为: 也可以表示为下式(前提是A集合不等于Z集合,也就是A的补集不能为空): 膨胀 A和B是Z中的集合,则B对A的膨胀定义为: B关于中心对称与A取交集若不为空,则保留此元素。 公式为: 也可以表示为: 闭运算与开运算 闭运算 先膨胀后腐蚀 可以按照下图来简单理解闭运算 集合B在A外边缘滑动形成的最小外接集合 开运算 先腐蚀后膨胀 可以按照下图来简单理解开运算 集合B在A中滑动形成的最大内接集合 击中与击不中 形态学击中击不中是检测特定形状的工具, 在下图中找到D集合 只需要设定一个比D大一些的W集合 得出W-D集合,再计算出W-D对A C 的腐蚀(边缘需要进行拓展,计算结算后恢复),再计算D对A的腐蚀,再将二个集合取交集最终得出来的点便是D的位置中心,匹配成则为击中,反之,击不中。 顶帽与黑帽 顶帽 原图像减去开运算结果 result = src - open 黑帽 闭运算结果减去原图像 result = close

形态学相关算子

点点圈 提交于 2019-11-28 22:19:54
腐蚀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为1,则结果图像的该像素为1,否则为0。(收缩图像) 膨胀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为0,则结果图像的该像素为0,否则为1。(扩大图像) 1.gen_disc_se 功能:创建椭圆形结构元素,用于图像的腐蚀膨胀 2.gray_erosion 功能:使用结构元素对图像做腐蚀操作 3.gray_dilation 功能:使用结构元素对图像做膨胀操作 4.erosion_circle 功能:使用圆形结构元素对区域region做腐蚀操作 5.erosion_rectangle1 功能:使用矩形结构元素对区域region做腐蚀操作 6.dilation_circle 功能:使用圆形结构元素对区域region做膨胀操作 7.dilation_rectangle1 功能:使用矩形结构元素对区域region做膨胀操作 8.erosion1 功能:使用结构元素对区域region做迭代腐蚀操作 9.erosion2 功能:使用结构元素对区域region做迭代腐蚀操作(可设置结构元素原点) 10.dilation1 功能:使用结构元素对区域region做迭代膨胀操作 11.dilation2 功能:使用结构元素对区域region做迭代膨胀操作

图像算法——形态学滤波(待完善)

隐身守侯 提交于 2019-11-27 03:11:01
形态学通常表示生物学的一个分支,研究动植物的形态和结构。图像中的形态学是数学形态学。简单来讲就是基于形状的一系列图像处理操作。 基本运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度。 膨胀与腐蚀 功能: 消除噪声; 分割出独立的图像元素,在图像中链接相邻的元素; 寻找图像中明显的极大值和极小值区域; 求图像的梯度; 膨胀 求局部最大值的操作。 核可以是任何形状,有一个单独定义的参考点,锚点。 膨胀就是计算核覆盖的区域的像素点的极大值,把这个极大值赋值给参考点指定的像素,使图像的高亮区域逐渐增长。 函数:void dilate 腐蚀 与膨胀相反,求局部最小值的操作。 函数:void erode 开运算、闭运算、形态学梯度、顶帽、黑帽 形态学的高级形态,都是建立在腐蚀和膨胀这两个基本操作之上的。 开运算 先腐蚀后膨胀,用来消除小物体,在纤细点出分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。 闭运算 先膨胀后腐蚀,排除小型黑洞(黑色区域) 形态学梯度 膨胀图和腐蚀图之差,对二值图像操作能将团块的边缘突出出来。 顶帽 原图像与开运算的结果图之差,由于开运算放大了裂缝或者局部低亮度的区域,因此原图中减去开运算后的图