![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV[Morphology]
yeqiu712
这个作者很懒,什么都没留下…
展开
-
粗化—lhMorpThick
<br />函数:lhMorpThick<br />说明:形态学粗化运算<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type变换中击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY 0<br />#define L转载 2011-05-09 16:18:00 · 659 阅读 · 0 评论 -
击中-击不中变换—lhMorpHMT击中-击不中变换(约束)—lhMorpHMTC
函数:lhMorpHMTC说明:形态学约束击中-击不中变换,当为二值图像时,结果与lhMorpHMTB相同。参数:src 输入图像,灰度或二值图像dst 输出图像sefg 前景结构元素sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反源码:void lhMorpHMTC(const IplImage* src, IplImage* dst, IplConvKernel* sefg, IplConvKernel* sebg =NU转载 2011-05-05 16:19:00 · 910 阅读 · 0 评论 -
击中-击不中变换(非约束)—lhMorpHMTU
<br />函数:lhMorpHMTU<br />说明:形态学非约束击中-击不中变换,当为二值图像时,结果与lhMorpHMTB相同。<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />源码:<br />void lhMorpHMTU(const IplImage* src, IplImage* dst, IplConvKernel* sefg,转载 2011-05-05 16:17:00 · 857 阅读 · 0 评论 -
击中-击不中变换(二值)—lhMorpHMTB
<br />函数:lhMorpHMTB<br />说明:形态学二值击中-击不中变换<br />参数:<br />src 输入图像,二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />源码:<br />void lhMorpHMTB(const IplImage* src, IplImage* dst, IplConvKernel* sefg, IplConvKernel* sebg =NULL)<br转载 2011-05-05 16:01:00 · 922 阅读 · 0 评论 -
图像开和闭操作
<br />图形形态学之开运算和闭运算:<br />开运算:去除较小的明亮区域<br />闭运算:消除低亮度值的孤立点<br /> <br /> #include "cv.h"#include "highgui.h"#include "highgui.h"int main(int argc, char ** argv){ cvNamedWindow("image"); IplImage * src = cvLoadImage(argv[1], 0); IplImage *转载 2011-05-04 14:52:00 · 6031 阅读 · 0 评论 -
openCV第五章/图像处理 -- 阈值化(自适应)
<br />改进了的阈值技术,其中阈值本身就是一个变量。<br />void cvAdaptiveThreshold(<br /> CvArr* src,<br /> CvArr* dst,<br /> double max_val,<br /> int adaptive_method = CV_ADAPTIVE_THRESH_MEAN_C,<br /> int threshold_type = CV_THRESH_BINARY,<br /> int block_size = 3,<br /> double转载 2011-05-04 13:47:00 · 1419 阅读 · 0 评论 -
结构元素的扩展操作
<br />在介绍新的扩展形态学变换函数之前,介绍一组结构元素的扩展操作,包括结构元素的拷贝、取反和取映射操作。这些操作将在后面的形态学变换中经常出现。<br /> <br />函数:lhStructuringElementCopy<br />功能:获得形态学结构元素的拷贝<br />参数:se 输入结构元素<br />返回:se的拷贝,注意:在不使用时需要用cvReleaseStructuringElement释放<br />源码:<br />IplConvKernel* lhStructuringEle转载 2011-05-03 20:57:00 · 669 阅读 · 0 评论 -
形态学自补顶帽运算
<br />函数:lhMorpQTopHat<br />说明:形态学自补顶帽运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpQTopHat(const IplImage* src, IplImage* dst, IplConvKernel* se=NULL, int iterations=1)<br />{<br /> assert(src转载 2011-05-04 15:08:00 · 957 阅读 · 0 评论 -
形态学黑顶帽运算
<br />函数:lhMorpBlackTopHat<br />说明:形态学黑顶帽运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpBlackTopHat(const IplImage* src, IplImage* dst, IplConvKernel* se=NULL, int iterations=1)<br />{<br /> a转载 2011-05-04 15:07:00 · 2388 阅读 · 0 评论 -
击中-击不中变换—lhMorpHMT
<br />函数:lhMorpHMT<br />说明:形态学击中-击不中变换<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type 击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY 0<br />#define L转载 2011-05-09 15:52:00 · 1859 阅读 · 0 评论 -
击中-击不中开—lhMorpHMTOpen
<br /><br /> <br />函数:lhMorpHMTOpen<br />说明:形态学击中-击不中开变换<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type 击中-击不中开变换中击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY转载 2011-05-09 15:57:00 · 1097 阅读 · 0 评论 -
H极大值—lhMorpHMax
<br /><br /> 函数:lhMorpHMax<br />说明:形态学H极大值<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpHMax(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src != NUL转载 2011-05-09 16:37:00 · 716 阅读 · 0 评论 -
区域极小值—lhMorpRMin
<br /><br />函数:lhMorpRMin<br />说明:形态学区域极小值<br />参数:<br />src 输入图像<br />dst 输出图像<br />se 结构元素<br />源码:<br />void lhMorpRMin(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL)<br />{<br /> assert(src != NULL && dst != NULL && src != dst )转载 2011-05-09 16:31:00 · 858 阅读 · 3 评论 -
测地腐蚀和腐蚀重建—lhMorpRErode
<br />函数:lhMorpRErode<br />说明:形态学测地腐蚀和腐蚀重建运算<br />参数:<br />src 输入图像<br />msk 掩模图像<br />dst 输出图像<br />se 结构元素<br />iterations测地腐蚀的次数,当默认为-1时,为腐蚀重建运算<br />源码:<br />void lhMorpRErode(const IplImage* src, const IplImage* msk, IplImage* dst, IplConvKernel* se转载 2011-05-09 16:25:00 · 2265 阅读 · 1 评论 -
细化匹配—lhMorpThinFit
<br /><br />函数:lhMorpThinFit<br />说明:形态学细化匹配变换<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type变换中击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY 0<br /转载 2011-05-09 16:03:00 · 522 阅读 · 0 评论 -
扩展极大值—lhMorpEMax
<br /><br />函数:lhMorpEMax<br />说明:形态学扩展极大值<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpEMax(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src != NUL转载 2011-05-09 17:07:00 · 818 阅读 · 0 评论 -
测地自对偶和自对偶重建—lhMorpRSelfDual
<br />函数:lhMorpRSelfDual<br />说明:形态学测地自对偶和自对偶重建运算<br />参数:<br />src 输入图像<br />msk 掩模图像<br />dst 输出图像<br />se 结构元素<br />iterations测地自对偶运算的次数,当默认为-1时,为自对偶重建运算<br />源码:<br />void lhMorpRSelfDual(const IplImage* src, const IplImage* msk, IplImage* dst, IplCon转载 2011-05-09 16:27:00 · 544 阅读 · 0 评论 -
测地变换粗化不匹配—lhMorpThickMiss
<br />函数:lhMorpThickMiss<br />说明:形态学粗化不匹配运算<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type变换中击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY 0<br />#d转载 2011-05-09 16:22:00 · 847 阅读 · 0 评论 -
细化—lhMorpThin
<br /><br />函数:lhMorpThin<br />说明:形态学细化变换<br />参数:<br />src 输入图像,灰度或二值图像<br />dst 输出图像<br />sefg 前景结构元素<br />sebg 背景结构元素,如为空,则默认为前景结构元素sefg的取反<br />type变换中击中-击不中变换的类型,二值 0 非约束 1 约束 2<br />定义如下:<br />#define LH_MORP_TYPE_BINARY 0<br />#def转载 2011-05-09 16:00:00 · 697 阅读 · 0 评论 -
内梯度—lhMorpGradientIn
<br /><br />函数:lhMorpGradientIn<br />说明:形态学内梯度运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpGradientIn(const IplImage* src, IplImage* dst, IplConvKernel* element=NULL, int iterations=1)<br />{<br /转载 2011-05-04 09:43:00 · 1218 阅读 · 0 评论 -
闭运算—lhMorpClose
<br /><br /> 函数:lhMorpClose<br />说明:形态学闭运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />se 结构元素指针<br />iterations 闭运算中膨胀和腐蚀次数<br />源码:<br />void lhMorpClose(const IplImage* src, IplImage* dst, IplConvKernel* se=NULL, int iterations=1)<br />{<br /> cvDilate转载 2011-05-03 21:05:00 · 835 阅读 · 0 评论 -
腐蚀[cvErode]
<br /><br /> <br />cvErode为Intel OpenCV中提供的函数,定义如下。<br />函数名:cvErode<br />void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );<br />src <br />输入图像,可以是二值,灰度或多通道彩色图像。<br />dst <br />输出图像,与输入图像格式、尺寸相同。 <br />Element<br转载 2011-05-03 16:11:00 · 2069 阅读 · 0 评论 -
前言
准备了很久,最终决定在163上开设这个计算机视觉方面的专业博客。最初的动机是把形态学和OpenCV的学习笔记和代码放上来,一方面督促自己坚持学习,另一方面希望和志同道合的朋友们一起学习交流,共同进步。 形态学英文名称为Morphology,在数字图像处理中是一个重要的分支。在数字图像处理初期的学习中往往由于被大家认为是最易学最易掌握的内容而一笔带过,只皮毛的学习了一下腐蚀、膨胀、开、闭等基本操作,在实际应用中也常常仅限于如去除噪声、填充空洞等基本的应用。但经过一段时间研究和学习转载 2011-05-03 15:57:00 · 546 阅读 · 0 评论 -
基于OpenCV的形态学开源库 V0.2
<br />在这几年研究和应用形态学方法的过程中,发现OpenCV中的与形态学相关的内容远远不能满足图像分析应用中的需求,而且在使用cvMorphologyEx的过程中发现了一些问题,所以萌生了建立一个形态学算法库的想法。<br /> 经过了一段时间的准备,这个形态学分析的算法库已经有了一定的规模。在这里把这个库的源代码公布出来,希望得到广大爱好者的意见和建议。同时提供了测试用的一个简单的程序,希望对初学者学习OpenCV有所帮助。<br /> 源代码和测试程序下载: 源代码转载 2011-05-09 17:14:00 · 1687 阅读 · 0 评论 -
扩展极小值—lhMorpEMin
<br /><br />函数:lhMorpEMin<br />说明:形态学扩展极小值<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpEMin(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src != NUL转载 2011-05-09 17:05:00 · 737 阅读 · 0 评论 -
H凹变换—lhMorpHConcave
<br /><br />函数:lhMorpHConcave<br />说明:形态学H凹变换<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpHConcave(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src转载 2011-05-09 16:41:00 · 723 阅读 · 0 评论 -
测地膨胀和膨胀重建—lhMorpRDilate
<br />函数:lhMorpRDilate<br />说明:形态学测地膨胀和膨胀重建运算<br />参数:<br />src 输入图像<br />msk 掩模图像<br />dst 输出图像<br />se 结构元素<br />iterations测地膨胀的次数,当默认为-1时,为重建运算<br />源码:<br />void lhMorpRDilate(const IplImage* src, const IplImage* msk, IplImage* dst, IplConvKernel* se转载 2011-05-09 16:24:00 · 3973 阅读 · 0 评论 -
H凸变换—lhMorpHConvex
<br /><br />函数:lhMorpHConvex<br />说明:形态学H凸变换<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpHConvex(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src !转载 2011-05-09 16:43:00 · 751 阅读 · 0 评论 -
区域极大值—lhMorpRMax
<br /><br />函数:lhMorpRMax<br />说明:形态学区域极大值<br />参数:<br />src 输入图像<br />dst 输出图像<br />se 结构元素<br />源码:<br />void lhMorpRMax(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL)<br />{<br /> assert(src != NULL && dst != NULL && src != dst )转载 2011-05-09 16:33:00 · 719 阅读 · 0 评论 -
标准梯度—lhMorpGradient
<br /><br />函数:lhMorpGradient<br />说明:形态学基本梯度运算,通过结构元素的改变,可以进行厚梯度,方向梯度等形态学计算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpGradient(const IplImage* src, IplImage* dst, IplConvKernel* element=NULL, int转载 2011-05-03 21:49:00 · 1801 阅读 · 0 评论 -
外梯度—lhMorpGradientOut
<br /><br />函数:lhMorpGradientOut<br />说明:形态学外梯度运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpGradientOut(const IplImage* src, IplImage* dst, IplConvKernel* element=NULL, int iterations=1)<br />{<br转载 2011-05-04 09:45:00 · 881 阅读 · 0 评论 -
开运算—lhMorpOpen
<br /><br />函数:lhMorpOpen<br />说明:形态学开运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />se 结构元素指针<br />iterations 开运算中膨胀和腐蚀次数<br />源码:<br />void lhMorpOpen(const IplImage* src, IplImage* dst, IplConvKernel* se=NULL, int iterations=1)<br />{<br /> cvErode( sr转载 2011-05-03 21:02:00 · 962 阅读 · 0 评论 -
cvMorphologyEx —不推荐使用
<br />在OpenCV中某些高级形态学变换用cvMorphologyEx函数完成,包括开运算,闭运算,标准形态梯度,白顶帽,黑顶帽运算。但是本博主不推荐使用该函数。<br /> 通过查看cvMorphologyEx的源代码,可以发现,在执行开、闭等运算,在进行第二步形态学腐蚀和膨胀时,该函数仍然采用与第一步相同的结构元素进行。这种方法在针对一般对称的结构元素情况是正确的,但是当结构元素为自定义的非对称结构元素时,结果图像会发生错误的偏移。<br /> 正确的方法是,如前面在开、闭运算的介绍中,执转载 2011-05-03 20:54:00 · 1221 阅读 · 0 评论 -
OpenCV中的结构元素IplConvKernel及操作
<br />在OpenCV中,定义了一个结构用于描述形态学中的结构元素。该结构定义如下:<br />typedef struct _IplConvKernel<br />{<br /> int nCols;<br /> int nRows;<br /> int anchorX;<br /> int anchorY;<br /> int *values;<br /> int nShiftR;<br />}<br />IplConvKernel;<br />在这里,转载 2011-05-03 20:46:00 · 11055 阅读 · 2 评论 -
形态学对比度增强—lhMorpEnhance
<br /><br /> <br /> 函数:lhMorpEnhance<br />说明:形态学对比度增强运算<br />参数:<br />src 输入图像<br />dst 输出图像<br />element结构元素<br />iterations膨胀和腐蚀次数<br />源码:<br />void lhMorpEnhance(const IplImage* src, IplImage* dst, IplConvKernel* se=NULL, int iterations=1)<br />{<br />转载 2011-05-04 15:27:00 · 1240 阅读 · 0 评论 -
白帽,黑帽
<br />#include "cv.h"#include "highgui.h"#include "highgui.h"int main(int argc, char ** argv){ cvNamedWindow("image"); IplImage * src = cvLoadImage(argv[1], 0); IplImage * temp = cvCreateImage(cvGetSize(src), 8,1); IplImage * img=cvCre转载 2011-05-04 15:05:00 · 1647 阅读 · 0 评论 -
图像的梯度
<br /><br /> <br /> <br />可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导: <br />图像梯度: G(x,y) = dx i + dy j; <br />dx(i,j) = I(i+1,j) - I(i,j); <br />dy(i,j) = I(i,j+1) - I(i,j); <br />其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。 <br />图像梯度一般也可以用中值差分: <br />dx(i,j) = [I(i+1,j) - I(原创 2011-05-04 09:34:00 · 33926 阅读 · 5 评论 -
图像形态学 漫水填充算法
<br />FloodFill<br />用指定颜色填充一个连接域 <br />void cvFloodFill( CvArr* image, CvPoint seed_point, CvScalar new_val,<br />CvScalar lo_diff=cvScalarAll(0), CvScalar up_diff=cvScalarAll(0),<br />CvConnectedComp* comp=NULL, int flags=4, CvArr* mask=NULL );<br />#def转载 2011-05-04 14:42:00 · 4997 阅读 · 0 评论 -
图像形态学-图像金字塔
<br />图像金字塔被广泛应用于各种视觉应用中。图像金字塔是一个图像集合,集合中图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样。(当然,降为一个像素肯定是中止条件) --学习OpenCV中文版<br />PyrDown<br />图像的下采样 <br />void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );<br />src <br />输入图像. <br /转载 2011-05-04 14:38:00 · 1809 阅读 · 0 评论 -
H极小值—lhMorpHMin
<br />函数:lhMorpHMin<br />说明:形态学H极小值<br />参数:<br />src 输入图像<br />dst 输出图像<br />h 深度或动态范围阈值<br />se 结构元素<br />源码:<br />void lhMorpHMin(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL)<br />{<br /> assert(src != NULL &&转载 2011-05-09 16:40:00 · 835 阅读 · 0 评论