OpenCV图像处理篇之腐蚀与膨胀】的更多相关文章

转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最主要的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算. 腐蚀和膨胀的应用非常广泛,并且效果还非常好: 腐蚀能够切割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作非常easy去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像切割 等等...(在文后给出一则简单有用…
OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 OpenCV中相关源码 试试身手 3种边缘检测算子 灰度或结构等信息的突变位置是图像的边缘,图像的边缘有幅度和方向属性,沿边缘方向像素变化缓慢,垂直边缘方向像素变化剧烈.因此,边缘上的变化能通过梯度计算出来. 一阶导数的梯度算子 对于二维的图像,梯度定义为一个向量, Gx对于x方向的梯度,Gy对应y方向的梯…
腐蚀与膨胀是形态学滤波.其中,腐蚀是最小值滤波,膨胀是最大值滤波,即分别选取内核中的最小值与最大值赋值给锚点.若内核为 N×1 或 1×N 形状,可用于横纵方向直线检测. 膨胀:dilate 函数 void dilate (InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, co…
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src = imread("f:/images/shuang001.jpg"); Mat gray, binary; cvtColor(src, gray, COLOR_BGR2GRAY); threshol…
阈值操作类型 这5种阈值操作类型保留opencv tutorials中的英文名称.依次为: Threshold Binary:即二值化,将大于阈值的灰度值设为最大灰度值.小于阈值的值设为0. Threshold Binary, Inverted:将大于阈值的灰度值设为0.大于阈值的值设为最大灰度值. Truncate:将大于阈值的灰度值设为阈值.小于阈值的值保持不变. Threshold to Zero:将小于阈值的灰度值设为0,大于阈值的值保持不变. Threshold to Zero, In…
图像平滑算法 图像平滑与图像模糊是同一概念,主要用于图像的去噪.平滑要使用滤波器.为不改变图像的相位信息,一般使用线性滤波器,其统一形式例如以下: %20\Large%20g(i,j)=\sum_{k,l}f(i+k,j+l)h(k,l)" data-bd-imgshare-binded="1" style="margin: 0px; padding: 0px; border: 0px; max-width: 100%;" alt=""…
3种边缘检測算子 灰度或结构等信息的突变位置是图像的边缘,图像的边缘有幅度和方向属性.沿边缘方向像素变化缓慢,垂直边缘方向像素变化剧烈.因此,边缘上的变化能通过梯度计算出来. 一阶导数的梯度算子 对于二维的图像.梯度定义为一个向量. %20\nabla%20f(x,y)=\begin{pmatrix}G_x%20\\%20G_y\end{pmatrix}=\begin{pmatrix}%20\frac{\partial%20f}{x}%20\\%20\frac{\partial%20f}{y}%…
腐蚀与膨胀 膨胀(求局部最大值)(dilate函数) #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> //-----------------------------------[命名空间声明部分]--------------------------…
本篇文章中,我们一起探究了图像处理中,最基本的形态学运算--膨胀与腐蚀.浅墨在文章开头友情提醒,用人物照片做腐蚀和膨胀的素材图片得到的效果会比较惊悚,毁三观的,不建议尝试.......... 一.理论与概念讲解--从现象到本质 1.1 形态学概述 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构,而我们图像处理中指的形态学,往往表示的是数学形态学,下面一起来了解数学形态学的概念. 数学形态学(Mathematical morphology)是一门建立在…
摘要:本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法. 本文分享自华为云社区<[Python图像处理] 八.图像腐蚀与图像膨胀>,作者: eastmount . 本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法,基础性知识希望对您有所帮助. 1.基础理论 2.图像腐蚀代码实现 3.图像膨胀代码实现 一. 基础知识 (注:该部分参考作者论文<一种改进的Sobel算子及区域择优的身份证智能识别方法>) 图像的膨胀(Dilation)和腐…
腐蚀与膨胀(Eroding and Dilating) 目标 本文档尝试解答如下问题: 如何使用OpenCV提供的两种最基本的形态学操作,腐蚀与膨胀( Erosion 与 Dilation): erode dilate 原理 Note 以下内容来自于Bradski和Kaehler的大作: Learning OpenCV . 形态学操作 简单来讲,形态学操作就是基于形状的一系列图像处理操作.通过将 结构元素 作用于输入图像来产生输出图像. 最基本的形态学操作有二:腐蚀与膨胀(Erosion 与 D…
转自:OpenCV 教程 另附:计算机视觉:算法与应用(2012),Learning OpenCV(2009) 平滑图像:滤波器 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法.平滑处理的用途有很多, 但是在本教程中我们仅仅关注它减少噪声的功用 (其他用途在以后的教程中会接触到).平滑处理时需要用到一个 滤波器 .最常用的滤波器是 线性 滤波器.不妨把 滤波器 想象成一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,就把这个窗口滑过图像. 归一化滤波器 (Normalized…
原创文章,欢迎转载,转载请注明出处 首先什么是图像形态学?额,这个抄下百度到的答案.基本思想:    用具有一定形态的结构元素去度量和提取图像中的对应形状已达到对图像分析和识别的目的,形态学图像处理表现为一种领域运算方式(这个和前面的模糊运算是一样的运算方式),效果取决于结构元素(就是前面smooth里面的核)的大小,内容以及逻辑运算的性质.看了这些定义是不是很晕,对很晕...我比较关心的是它的用途和怎么计算.    用途是:简化图像数据,保持他们基本的形状特性,并出去不相干的结构.    基本…
腐蚀和膨胀是最基本的形态学运算. 腐蚀和膨胀是针对白色部分(高亮部分)而言的. 膨胀就是对图像高亮部分进行"领域扩张",效果图拥有比原图更大的高亮区域:腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域. 膨胀 膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小. #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using namespa…
建议大家看看网络视频教程:http://www.opencvchina.com/thread-886-1-1.html    腐蚀与膨胀都是针对灰度图的形态学操作,比如下面的一副16*16的灰度图. 它每个像素对应的值为(每个像素值范围都在0-255之间)为:       我们定义一个5*5的结构元素,该结构元素用5*5的矩阵表示,其中为1的单元,表示该单元在结构元素中有效,另外还定义一个锚点,坐标为(2,2),在单元格中用蓝色表示. 腐蚀/膨胀的操作就是用结构元素的锚点位置对齐图像的像素,然后…
顺便又复习了一下cvcopy如何进行图像拼接(最近觉得打开多幅图像分别看不如缩小掉放拼接到一幅图像上对比来的好) 首先把拼接的目标图像设置兴趣区域ROI,比如我有一个total,要把a.b.c分别从左到右拼接到total上,那就分三次对total设置敢兴趣区域ROI(注意不是对a.b.c设置),然后再用cvcopy复制过去,如果要加文字可以在复制之前预先把文字加到a.b.c上 然后就是图像的腐蚀和膨胀,可以自定义一个kernel 代码: #include<cv.h> #include<h…
腐蚀和膨胀属于形态学操作. 腐蚀和膨胀 腐蚀是指:将卷积核B滑过图像A,找出卷积核区域内最小像素值作为锚点像素值.这一操作可以扩大低像素值区域. 膨胀是指:将卷积核B滑过图像A,找出卷积核区域内最大像素值作为锚点像素值.这一操作可以缩小低像素值区域. 通过前面的卷积可以看出,膨胀相当于"最大值"滤波器,腐蚀相当于"最小值"滤波器.滤波器的形状我们可以自己定义. 其他形态学操作 开运算 先对图像腐蚀,再膨胀 \[ \texttt{dst} = \mathrm{open…
腐蚀:去除图像表面像素,将图像逐步缩小,以达到消去点状图像的效果:作用就是将图像边缘的毛刺剔除掉 膨胀:将图像表面不断扩散以达到去除小孔的效果:作用就是将目标的边缘或者是内部的坑填掉 使用相同次数的腐蚀和膨胀,可以使目标表面更平滑:但也有场景限制,就是如果去噪不干净的话,会出现意想不到的结果,尽量别使用 大概的效果,适合降噪比较干净的图 // 图像腐蚀/膨胀处理 public void erodeImg() { Mat outImage = new Mat(); // size 越小,腐蚀的单位…
1.图像的腐蚀 图像的腐蚀和膨胀都是相对于像素值高(白色方向)说的,腐蚀简单的说就是白色”被腐蚀“了,也就是像素值低(黑色方向)的变多,白色变少. 腐蚀的原理是利用一个内核对图像进行卷积(扫描),内核中有一个点被定义为锚点,然后提取内核覆盖区域的像素最小值(黑色方向)来替换锚点位置的像素值,所以扫描过后黑色变多. 代码: Mat img = imread("img.jpg"); imshow("src", img); Mat erodeElement = getSt…
一.高斯平滑(模糊) def gaussian_blur(image): # 设置ksize来确定模糊效果 img = cv.GaussianBlur(image, (5, 5), 0) cv.imshow('img', img) # 不通过ksize来设置高斯核大小,通过设置高斯分布公式中的sigma img2 = cv.GaussianBlur(image, (0, 0), 1) cv.imshow('img2', img2) 在高斯平滑中,高斯核中所有数字加起来应该为1,这样才能保证图片只…
背景知识 腐蚀与膨胀基本原理:就是用一个特定的结构元素来与待处理图像按像素做逻辑操作:可以理解成拿一个带孔的网格板(结构元素矩阵中元素为1的为孔)盖住图像的某一部分,然后按照各种不同的观察方式来确定操作类型. 比如:腐蚀操作就是拿这个结构元素的中心位置(假设参与逻辑计算的元素对应与二维矩阵中元素为1的点,即网格板上的孔),在图像上移动时,如果透过所有的孔都能看到底下的图像,那么这个中心点处的图像就保留,否则去除. 腐蚀 图像腐蚀运算定义 二值图像腐蚀运算的数学表达式为 g(x,y)=erode[…
我在两年前的博客里曾经写过 SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法  一文,通过SSE的优化把矩形核心的腐蚀和膨胀做到了不仅和半径无关,而且速度也相当的快,当时在被博文的评论里有博友提出了如下的问题: #1楼 -- : | 胡一谭 博主的思路很巧妙,只是这个算法本身还是不够快,优化效果与商业软件还是有比较大差距,4096X8192大小的的灰度图商业软件(halcon)只需要33ms, 本文需要250ms,考虑到商业软件采用多核优化,我测试机器是4核…
腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RECT,交叉形MORPH_CROSS,椭圆形MORPH_ELLIPSE.Matlab中会有更多一点的模板. 例如: Mat element = getStructuringElement(MORPH_RECT,Size(,)); erode(srcImage,dstImage,element); im…
因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度数据用时约 20ms,并且算法和核心的大小是无关的,即所谓的o(1)算法. 在实现本算法之前,也曾经参考何凯明在暗通道去雾时提出的一篇参考论文中的算法: STREAMING MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER ELEMENT ,这篇文章所描述的过程也是o(…
因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度数据用时约 20ms,并且算法和核心的大小是无关的,即所谓的o(1)算法. 在实现本算法之前,也曾经参考何凯明在暗通道去雾时提出的一篇参考论文中的算法: STREAMING MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER ELEMENT ,这篇文章所描述的过程也是o(…
1.OpenCV4环境搭建 VS2017新建一个控制台项目 配置包含目录 配置库目录 配置链接器 配置环境变量 重新启动VS2017 2.第一个图像显示程序 main.cpp #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src = imread("D:/images…
了解过之前老版本OpenCV的童鞋们都应该清楚,对于OpenCV1.0时代的基于 C 语言接口而建的图像存储格式IplImage*,如果在退出前忘记release掉的话,就会照成内存泄露.而且用起来超级麻烦,我们往往在debug的时候,很大一部分时间在纠结手动释放内存的问题.虽然对于小型的程序来说手动管理内存不是问题,但一旦我们写的代码变得越来越庞大,我们便会开始越来越多地纠缠于内存管理的问题,而不是着力解决你的开发目标. 这,就有些舍本逐末的感觉了. 而浅墨在这篇文章开头想说,自从OpenCV…
形态学操作其实就是改变物体的形状,比如腐蚀就是"变瘦",膨胀就是"变胖",看下图就明白了: 形态学操作一般作用于二值化图(也可直接作用于原图),来连接相邻的元素或分离成独立的元素.腐蚀和膨胀是针对图片中的白色部分! 腐蚀 腐蚀的效果是把图片"变瘦",其原理是在原图的小区域内取局部最小值.因为是二值化图,只有0和255,所以小区域内有一个是0该像素点就为0: 这样原图中边缘地方就会变成0,达到了瘦身目的 OpenCV中用cv2.erode()函数进…
参考文献:数字图像处理(第三版) 何东健 西安电子科技大学出版社 二值形态学中的运算对象是集合, 但实际运算中, 当涉及两个集合时并不把它们看作是互相对等的. 一般设A为图像集合, S为结构元素, 数学形态学运算是用S对A进行操作. 结构元素本身也是一个图像集合, 不过通常其尺寸要比目标图像小得多. 对结构元素可指定一个原点, 将其作为结构元素参与形态学运算的参考点. 原点可包含在结构元素中, 也可不包含在结构元素中, 但运算的结果常不相同. 以下用黑点代表值为1的区域, 白点代表值为0的区域,…
在上一节中,已经完成了OPENCV的配置,在本节接触几个Opencv图像处理相关的程序,看看opencv用简洁的代码能够实现哪些有趣的图像效果. 1.第一个程序:图像显示 #include<opencv2/opencv.hpp> using namespace cv;//包含cv命名空间 void main() { Mat srcImage = imread("D:\\FOR_SLAM\\lena.jpg"); imshow("原始图",srcImage…