随笔分类 -  图像处理与模式识别

摘要:有幸参加了微软OpenHack挑战赛,虽然题目难度不大,但是很有意思,学到了很多东西,还有幸认识了微软梁健老师,谢谢您的帮助!同时还认识同行的很多朋友,非常高兴,把这段难忘的比赛记录一下~~也分享一下代码,给那些没有参加的朋友, 数据集(文末链接) 首先每支队伍会收到一个数据集,它是一个登山公司提供 阅读全文
posted @ 2019-05-18 00:16 汉泽的家 阅读(705) 评论(3) 推荐(5) 编辑
摘要:faster-RCNN是目标检测中非常好用的一种算法,它能够识别多个目标,对目标分类并标注位置,非常好用,就是速度太慢了哈。 它的输入样本是标注好的图片,输出是一个hdf5模型。 我用台标样本实践了一把,能够识别出很细微的差别,分类准确率非常高,准确率基本都不低于0.99,而且能够适应台标的缩放,无 阅读全文
posted @ 2018-06-09 19:23 汉泽的家 阅读(1078) 评论(2) 推荐(1) 编辑
摘要:输入:离散的采样点坐标和高度值(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) 输出:等高线图,如下所示 wiki上的Marching squares算法对此有很好的说明,我也是按照wiki上面的步骤来实现这个算法的,下面对该算 阅读全文
posted @ 2014-07-16 19:48 汉泽的家 阅读(14158) 评论(12) 推荐(2) 编辑
摘要:如果你的照片看上去灰蒙蒙的,缺少生机,那么hsv拉伸也许可以帮你的忙。hsv拉伸是一种可以提高图像鲜艳程度的图像增强方法,它能够让图像的颜色更加鲜活、艳丽,而且它的处理结果看上去很自然,比如源图中较暗的红色会变的鲜红,而不会像拉伸对比度那样把图像弄的难看失真,暗红色变的发紫发黑。来个例子: 其基本原理如下:1、 将源图像的(rgb)颜色空间映射到(hsv ),什么是HSV?2、 对图像的s和v通道进行一次min-max normalize,h通道不变所谓min-max normalize是指: dst(x,y) = [src(x,y) – min(src(x,y)) ] / [ (max(sr 阅读全文
posted @ 2013-12-06 22:07 汉泽的家 阅读(2641) 评论(2) 推荐(2) 编辑
摘要:實在出乎我的意料!OpenCV竟然連這么簡單的功能都沒有封裝!還要讓本大爺自己動手寫!強烈要求OpenCV下一個版本添加本功能! 函數功能和這個網頁一樣,只不過這個作者寫的太糟了,我把它變得簡潔了一點 ^_^ 阅读全文
posted @ 2013-09-20 19:39 汉泽的家 阅读(1571) 评论(0) 推荐(0) 编辑
摘要:每次下载opencv的新版本时,都需要重新写头文件,更改链接库配置,很麻烦有木有?下面这个头文件是我在别人的代码中淘出来的,很不错,与大家分享~(具体作者忘记了,不好意思啊) 作者很巧妙地利用Opencv的版本信息定义了一个宏,无论你的Opencv是243还是246都能够完美支持,以后再不用担心更新版本带来的问题了,另:对于比较老的Opencv版本可能有个别lib的名称不对,修改一下就可以了stdafx.h#pragma once#include "targetver.h"#include #include #include #include #include #defin 阅读全文
posted @ 2013-09-08 13:19 汉泽的家 阅读(10481) 评论(2) 推荐(1) 编辑
摘要:Image Watch(下载)是OpenCV的一款最新工具,它能够即时显示出矩阵的内容,即memory中Mat的信息,方便程序的调试,非常好用。不过目前该插件只支持VS2012,而且不能保存调试信息。本人对这个插件测试了一下,感觉不错,话不多说了,直接上图: 上图中,src_3u是一幅3通道uchar类型的源图像,src_1u是其灰度化后的结果,blur_3u是源图像模糊后的结果,从右侧Image Watch的临时调试窗口可以清晰的看到这3张图片,选中某一张图片还可以放大查看细节。img_1ss, img_1d, img_1s, img_1f是四张单通道图片,它们的类型分别是short ... 阅读全文
posted @ 2013-06-03 14:26 汉泽的家 阅读(3056) 评论(0) 推荐(0) 编辑
摘要:在用opencv编程时,经常需要可视化地查看某个矩阵在运算过程中的状态如何,而opencv中的imshow函数只能以灰度显示单通道uchar或float类型的图像,其可视化效果不尽人意,为此,我写了一个矩阵可视化工具包,其中包含了一个类似于matlab中的imagesc的函数,能够以不同的颜色显示矩阵中不同大小的值,这个函数在查看矩阵时非常方便,这里贡大家参考。VisualizationTool.hView Code //http://www.cnblogs.com/easymind223#pragma once#ifndef _VISUALIZATION_TOOL_H_#define _VI 阅读全文
posted @ 2013-03-31 16:22 汉泽的家 阅读(4711) 评论(4) 推荐(1) 编辑
摘要:一个网友收集的运动目标检测,阴影检测的标准测试视频http://blog.csdn.net/sunbaigui/article/details/6363390很权威的change detection检测视频集,里面有将近20种主流算法在这个测试集上的运行结果和ROC,PRA曲线http://changedetection.net/VIVID Tracking Evaluation Web Sitehttp://vision.cse.psu.edu/data/vividEval/datasets/datasets.htmlcvpapers的数据集,包括人脸检测,人脸识别,猫脸检测,行人检测,显著 阅读全文
posted @ 2013-02-26 14:40 汉泽的家 阅读(31050) 评论(0) 推荐(1) 编辑
摘要:近几个月我在一家公司的研发部做模式识别实习生,学习了很多OCR相关的知识和技术,在此谢谢陆老师,孙老师以及其它各位老师的指导,我很喜欢这里,你们让我收获了很多 OCR(OpticalCharacterRecognition)光学字符识别是一种获取图像中的字符信息的处理技术,用通俗一点的话说,就是把带有文字信息的图像数据变成文本数据的一种技术。在我们的生活中很多地方都有它的身影,如高速路上的电子眼(车牌识别),有道词典(图像单词识别)等等。 OCR的识别过程大致有以下几个步骤:字符检测,去噪,倾斜校正,版面分析,文字切割,字符识别,修正,后处理等。Strokefilter正是一种用于OC... 阅读全文
posted @ 2013-02-14 11:15 汉泽的家 阅读(3952) 评论(12) 推荐(2) 编辑
摘要:在我以前的这篇文章中,曾经介绍过Mandelbrot集,并给出了c++的实现方法。当时的我编程水平有限,用了很多笨办法,最终的效果图也不是很美观。主要问题有两个:第一,我以前的着色方法是把每个坐标点的模值映射到一个RGB值,然后画出来。这样做带来了一个很大的问题,那就是分形图案的发散速度是非常快的, 阅读全文
posted @ 2013-01-19 15:25 汉泽的家 阅读(5853) 评论(2) 推荐(3) 编辑
摘要:各种目标检测方法介绍(懒人可以直接略过) 目标检测是一个老话题了,在很多算法当中都有它的身影。目标检测要做的就两件事:检测当前图片中有没有目标?如果有的话,在哪?按照先验知识和背景运动来划分的话,目标检测方法大概可以分为两大类: 第一,已知目标的先验知识。在这种情况下检测目标有两类方法,第一类方... 阅读全文
posted @ 2012-12-30 00:26 汉泽的家 阅读(13948) 评论(39) 推荐(2) 编辑
摘要:这个项目大概是在2年前了,因为要用嵌入式编程,所以无法用opencv的库函数,一切算法纯靠手写(是不是很坑爹?),其中一部分程序需要计算Haar特征,于是就有了下面的故事: 在模式识别领域,Haar特征是大家非常熟悉的一种图像特征了,它可以应用于许多目标检测的算法中。与Haar相似,图像的局部矩形内 阅读全文
posted @ 2012-11-13 19:48 汉泽的家 阅读(9728) 评论(8) 推荐(5) 编辑
摘要:聚类分析是一种静态数据分析方法,常被用于机器学习,模式识别,数据挖掘等领域。通常认为,聚类是一种无监督式的机器学习方法,它的过程是这样的:在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法,前者的算法是先把所有样本视为一类,然后不断从这个大类中分离出小类,直到不能再分为止;后者则相反,首先所有样本自成一类,然后不断两两合并,直到最终形成几个大类。 常用的聚类方法主要有以下四种: //照搬的wiki,比较懒...Connectivity based clustering ... 阅读全文
posted @ 2012-10-30 22:45 汉泽的家 阅读(31792) 评论(6) 推荐(4) 编辑
摘要:最近这些日子,我在中科院实习了一段时间,收获了很多宝贵的知识和经验,也认识了一些朋友,在这里感谢老师们对我的指导和建议。作为一名图像处理专业的数学Geek,我很喜欢做关于图像方面的算法研究,在这里把近几年的角点特征匹配方法做个总结,和大家分享一下。 图像匹配能够应用的场合非常多,如目标跟踪,检测,识别,图像拼接等,而图像匹配最核心的技术就要属角点匹配了,所谓角点匹配是指寻找两幅图像之间的特征像素点的对应关系,从而确定两幅图像的位置关系。 角点匹配可以分为以下四个步骤: 1.提取检测子:在两张待匹配的图像中寻找那些最容易识别的像素点(角点),比如纹理丰富的物体边缘点等。 2.... 阅读全文
posted @ 2012-10-02 18:15 汉泽的家 阅读(20273) 评论(19) 推荐(2) 编辑
摘要:前言 模板匹配和相关系数法是目标跟踪的经典方法,它的优点有很多:简单准确,适用面广,抗噪性好,而且计算速度快。缺点是不能适应剧烈光照变化和目标剧烈形变。 所谓模板匹配法,就是指在一帧图像内寻找目标模板的位置,和模板最像的地方就是目标了。只要把全图的所有子区域和目标模板比较一下,找到最像目标模板的子区域,它就是目标的位置。如何度量子区域和目标模板的相似程度呢?最简单的办法就是计算这二者的相关系数。相关系数 相关系数(r)是一种数学距离,可以用来衡量两个向量的相似程度。它起源于余弦定理:cos(A)=(a2+c2-b2)/2bc.如果两个向量的夹角为0度(对应r=1),说明它们完全相似,如果... 阅读全文
posted @ 2012-08-14 14:54 汉泽的家 阅读(13433) 评论(8) 推荐(4) 编辑
摘要:这是我在台湾交换生时所做的一个项目,其中涉及到了医学影像分割。用简单的话描述一下这个项目:在给定的人脑MR影像中,把海马体(HIP)分割出来,以这部分的特征来判断病人是否患有阿滋海默症。医学影像分割最常用的方法就是snake和atlas map,对于感兴趣的器官的分割,通常的做法是利用图谱或医师的帮助把粗略位置找到,然后正规化,利用snake等方法分割目标,snake的初始轮廓由图谱来确定。但是这样做存在一个很大的问题,每个人的器官不可能长的一模一样,有人胖有人瘦,非洲人与亚洲人也会不一样,很难用一个标准图谱去概括评价所有的人。对于特殊身材的人这样做很可能会造成误判断。这个项目另外的一个难.. 阅读全文
posted @ 2012-07-26 10:45 汉泽的家 阅读(1285) 评论(8) 推荐(0) 编辑
摘要:ps里面的魔棒工具非常好用,是图像处理中非常常用的一个工具,它现在已经是我的c++工具箱中很重要的一员了,我会在以后的时间里把我的工具箱逐渐介绍给大家。 魔棒工具的核心算法是RegionGrow区域成长法,它的概念很简单,首先在要处理的图片上选取一个种子点,然后以此点为起点,向四周辐射形成一个区域。最初成长区域只有种子点这一个点,然后不断把周围的点归并入该成长区域,条件是该点的值与成长区域边界点的值之差小于阈值。当成长区域不能再继续扩大时,算法停止。算法说明: 区域成长法的思想很好理解,代码实现对于初学者有一定难度。对于满足条件的像素点,函数会把它们一个个的压入队列的尾部,然后从队列的... 阅读全文
posted @ 2012-07-04 22:39 汉泽的家 阅读(4306) 评论(4) 推荐(1) 编辑
摘要:常用Photoshop的玩家都知道Unsharp Mask(USM)锐化,它是一种增强图像边缘的锐化算法,原理在此处,如果你想使用这个算法,强烈推荐看一下。本文进行一下简单的介绍,USM锐化一共分为三步,第一步生成原始图片src的模糊图片和高对比度图片,记为blur和contrast.第二,把src和blur作差,得到一张差分图片,记为diff,它就是下图的UnsharpMask。然后把src和contras按一定的比例相加,这个比例由diff控制,最终得到锐化图片。USM有一个缺点,锐化后最大和最小的像素值会超过原始图片,如下图红色虚线和白色实线所示。代码如下:void MyTreasu.. 阅读全文
posted @ 2012-07-03 20:11 汉泽的家 阅读(6966) 评论(2) 推荐(0) 编辑
摘要:一句话一幅图理解meanshift算法: 对于集合中的每一个元素,对它执行下面的操作:把该元素移动到它邻域中所有元素的特征值的均值的位置,不断重复直到收敛。 准确的说,不是真正移动元素,而是把该元素与它的收敛位置的元素标记为同一类。对于图像来说,所有元素程矩阵排列,特征值便是像素的灰度值。 Mean 阅读全文
posted @ 2012-07-03 16:01 汉泽的家 阅读(10550) 评论(6) 推荐(0) 编辑