2011年12月22日
摘要: 在许多应用中,需要去除所有与图像边界连接的目标。实际上,在进行目标特征计算时,这些小块往往是不完整的目标,特征的计算可能会有误差。利用输入图像作为掩模图像,输入图像与其边界交集作为标记图像,便可提取出与图像边界连接的目标。标记图像包含每一个与图像边界连接目标的种子,重建输出则为这些边界的目标。与图像边界连通目标的去除,可以扩展到灰度图像。二值图像 灰度图像 函数:lhMorpRemoveBoderObj说明:去除边界的连通区域参数:src 输入图像dst 输出图像源码:void lhMorpRemoveBoderObj(const IplImage* src, IplImage* dst).. 阅读全文
posted @ 2011-12-22 19:41 carekee 阅读(1677) 评论(0) 推荐(0) 编辑
摘要: 原始二值图像闭重建和黑顶帽重建(3*3RECT)函数:lhMorpRClose说明:形态学闭重建参数:src 输入图像dst 输出图像se 结构元素iterations产生标记图像所用的膨胀的次数源码:void lhMorpRClose(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL, int iterations=1){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cv 阅读全文
posted @ 2011-12-22 19:40 carekee 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 形态学方向梯度常用于探测目标的方向 原始二值网格图像 45度梯度垂直梯度(90度) 水平梯度(0度) 函数:lhMorpGradientDir 说明:形态学方向梯度参数:src 输入图像dst 输出图像angle线性结构元素的角度len线性结构元素的长度源码:void lhMorpGradientDir(const IplImage* src, IplImage* dst, unsigned int angle, unsigned int len ){ assert(src != NULL && dst != NULL && src != dst); IplCo 阅读全文
posted @ 2011-12-22 19:40 carekee 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-12-22 19:39 carekee 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 原始二值图像 开重建和白顶帽重建(3*3RECT)函数:lhMorpROpen说明:形态学开重建参数:src 输入图像dst 输出图像se 结构元素iterations产生标记图像所用的腐蚀的次数源码:void lhMorpROpen(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL, int iterations=1){assert(src != NULL && dst != NULL && src != dst );IplImage* temp = cvCreateImage(cvGet 阅读全文
posted @ 2011-12-22 19:39 carekee 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-12-22 19:38 carekee 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 原始二值图像 中值滤波和腐蚀效果:(9*9 RECT)函数:lhMorpRankFilterB说明:二值图像的形态学等级滤波,值得注意的是:腐蚀、膨胀、中值滤波是特殊的等级滤波参数:src 输入图像dst 输出图像se 结构元素(默认为3*3矩形)rank 等级(默认为0时,rank取SE基数的中值,此时相当于中值滤波)void lhMorpRankFilterB(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL, unsigned int rank = 0){ assert(src != NULL && 阅读全文
posted @ 2011-12-22 19:38 carekee 阅读(714) 评论(0) 推荐(0) 编辑
摘要: 在这几年研究和应用形态学方法的过程中,发现OpenCV中的与形态学相关的内容远远不能满足图像分析应用中的需求,而且在使用cvMorphologyEx的过程中发现了一些问题,所以萌生了建立一个形态学算法库的想法。 经过了一段时间的准备,这个形态学分析的算法库已经有了一定的规模。在这里把这个库的源代码公布出来,希望得到广大爱好者的意见和建议。同时提供了测试用的一个简单的程序,希望对初学者学习OpenCV有所帮助。源代码和测试程序下载: 源代码 测试程序版本0.2函数列表:结构元素的扩展操作lhStructuringElementCopy 结构元素的拷贝lhStructuringElementNot 阅读全文
posted @ 2011-12-22 19:37 carekee 阅读(605) 评论(1) 推荐(0) 编辑
摘要: 扩展极小值(5*5正方形 h=100 显示结果二值化) 函数:lhMorpEMin说明:形态学扩展极小值参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpEMin(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src) 阅读全文
posted @ 2011-12-22 19:35 carekee 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 扩展极大值 (5*5正方形 h=100 显示结果二值化) 函数:lhMorpEMax说明:形态学扩展极大值参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpEMax(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src 阅读全文
posted @ 2011-12-22 19:35 carekee 阅读(192) 评论(0) 推荐(0) 编辑
摘要: H凹变换(5*5正方形 h=100 显示结果二值化) 函数:lhMorpHConcave说明:形态学H凹变换参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpHConcave(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); lhMorpHMin(src, dst, h, se); cvSub(dst, 阅读全文
posted @ 2011-12-22 19:34 carekee 阅读(367) 评论(0) 推荐(0) 编辑
摘要: H凸变换(5*5正方形 h=100 显示结果二值化) 函数:lhMorpHConvex说明:形态学H凸变换参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpHConvex(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); lhMorpHMax(src, dst, h, se); cvSub(src, d 阅读全文
posted @ 2011-12-22 19:34 carekee 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-12-22 19:33 carekee 阅读(153) 评论(0) 推荐(0) 编辑
摘要: H极大值(h=100 5*5结构元素) 函数:lhMorpHMax说明:形态学H极大值参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpHMax(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src), 8, 1); 阅读全文
posted @ 2011-12-22 19:33 carekee 阅读(370) 评论(0) 推荐(0) 编辑
摘要: H极小值 (h=100) 函数:lhMorpHMin说明:形态学H极小值参数:src 输入图像dst 输出图像h 深度或动态范围阈值se 结构元素源码:void lhMorpHMin(const IplImage* src, IplImage* dst, unsigned char h, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src), 8, 1); cvAddS( 阅读全文
posted @ 2011-12-22 19:33 carekee 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 区域极小值 (5*5正方形,为了方便显示结果,处理结果二值化) 函数:lhMorpRMin说明:形态学区域极小值参数:src 输入图像dst 输出图像se 结构元素源码:void lhMorpRMin(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src), 8, 1); cvAddS(src, cvS 阅读全文
posted @ 2011-12-22 19:32 carekee 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 区域极大值 (5*5正方形,为了方便显示结果,处理结果二值化) 函数:lhMorpRMax说明:形态学区域极大值参数:src 输入图像dst 输出图像se 结构元素源码:void lhMorpRMax(const IplImage* src, IplImage* dst, IplConvKernel* se = NULL){ assert(src != NULL && dst != NULL && src != dst ); IplImage* temp = cvCreateImage(cvGetSize(src), 8, 1); cvSubS(src, cvS 阅读全文
posted @ 2011-12-22 19:32 carekee 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 函数:lhMorpRSelfDual说明:形态学测地自对偶和自对偶重建运算参数:src 输入图像msk 掩模图像dst 输出图像se 结构元素iterations测地自对偶运算的次数,当默认为-1时,为自对偶重建运算源码:void lhMorpRSelfDual(const IplImage* src, const IplImage* msk, IplImage* dst, IplConvKernel* se = NULL, int iterations=-1){ assert(src != NULL && msk != NULL && dst != NULL 阅读全文
posted @ 2011-12-22 19:31 carekee 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2011-12-22 19:31 carekee 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 函数:lhMorpRDilate说明:形态学测地膨胀和膨胀重建运算参数:src 输入图像msk 掩模图像dst 输出图像se 结构元素iterations测地膨胀的次数,当默认为-1时,为重建运算源码:void lhMorpRDilate(const IplImage* src, const IplImage* msk, IplImage* dst, IplConvKernel* se = NULL, int iterations=-1){ assert(src != NULL && msk != NULL && dst != NULL && s 阅读全文
posted @ 2011-12-22 19:30 carekee 阅读(1147) 评论(0) 推荐(0) 编辑