石聪 2016-03-02T12:57:37+00:00 lzsc123@yahoo.com.cn 磁材表面缺陷视觉检测 2013-07-09T00:00:00+00:00 石聪 http://shiconghit.github.io//2013/07/magnetic-detection 《磁材表面缺陷视觉检测方法》作为研究生毕业设计,主要用于解决磁材形变以及表面缺陷的在线检测。主要创新点为:提出了一种金子塔的边缘模板匹配方法,研究了磁材纹理的提取和滤波,以及缺陷区域的分割、缺陷的描述以及分类。最后对算法进行优化,一帧图像(1292*964)检测时间150ms以内,满足工业产品实时检测的要求。 [论文链接]

当时做的PPT,也一并放出来吧链接


主要一些性能指标

  • 图像匹配时间在50ms;
  • 尺寸测量以及表面测量的时间为80ms;
  • 总共图像处理时间在150ms以内;
  • 尺寸检测的精度可达到100um;面积检测误差在100像素面积以内;
  • 重复检测误差小于1%;
  • 连续稳定运行时间在5小时以上;
  • 误检率小于2%;
  • 支持检测磁材的种类达9种以上;

最后贴上一个视频,展示一下整个软件的运行情况。

]]>
图片色彩校正 2013-03-25T00:00:00+00:00 石聪 http://shiconghit.github.io//2013/03/camera-calic 这次本科设计是一位好友的女朋友拜托的,涉及到图像色彩的校正。图像色彩变换本人觉得是所有图像处理中最简单的了,毫不犹豫就答应下来。

要求是这样的,相机将静物以及标准色板拍照成像,根据标准色板的颜色值校正相应的参数,使得图像的色彩更趋近于自然。很多厂商都有相应的相片校正程序,在此仅仅采用了最简单的最小二乘法进行校正。

值得注意的是,校正是在Lab色彩空间里面进行的。Lab色彩空间定义如下:

在Lab颜色空间中,一种颜色由L(亮度)、a颜色、b颜色三种参数表征.L表示照度(Luminosity),相当于亮度,L取值为0--100(纯黑--纯白)。a表示从红色至绿色的范围,a取值为+127--128(洋红--绿)。b表示从黄色至蓝色的范围,b取值为+127--128(黄--蓝).、正为暖色,负为冷色。

相对于前面提到的两种颜色模式, Lab模式有它的优势:

  1. Lab模式既不依赖光线,也不依赖于颜料。
  2. 处理速度与RGB模式同样快,比CMYK模式快很多。
  3. Lab模式在转换成CMYK模式时色彩没有丢失或被替换。因此,最佳避免色彩损失的方法是:应用Lab模式编辑图象,再转换为CMYK模式打印输出。
  4. Lab模式还弥补了前面两种色彩模式的不足。RGB在蓝色与绿色之间的过渡色太多,绿色与红色之间的过渡色又太少,CMYK模式在编辑处理图片的过程中损失的色彩则更多,而Lab模式在这些方面都有所补偿。 在表达色彩范围上,处于第一位的是Lab模式,第二位的是RGB模式,第三位是CMYK模式。

整个思路很简单

  1. 读取照片
  2. 找到标准色板区域
  3. 提取各个色块并算均值
  4. 转换到Lab色彩空间
  5. 最小二乘法与标准色块进行拟合,得出变换矩阵
  6. 将源图像转换到Lab空间并应用变换矩阵
  7. 将变换后的图像转换回RGB并显示。

难点就是色彩空间的转换,调试了一会才搞定。程序已经上传至我的Github中,在此直接贴上结果吧。左图为原图,右图为校正后的结果。第二张图片校正结果不是很理想,估计仅仅采用最小二乘法得到线性校正法还有不足,以后再考虑下怎么修改吧。

Imgur

Imgur

附:资源链接

]]>
百年不变的主题--人脑分割&三维重建 2013-03-20T00:00:00+00:00 石聪 http://shiconghit.github.io//2013/03/brain-seg 接到本科毕业设计请求,看了一下,人脑图像分割与三位建模,涉及的两个部分图像分割和三维重建,想想不是很难,就答应下了。

  • 图像分割,脑图像分割已经是老生常谈了,各种技术也都有应用,先给个流程图。

Imgur

网上的人脑分割代码也多如牛毛,在此列出一个自己修改版本的。里面列出了两种方法,分别是水平集分割法,以及模糊聚类方法,灵活采用2种方法可以完美将大脑白质灰质区域分割出来。还是老规矩,所有代码均开源并上传至Github,供大家学习和研究用。

关于水平集分割的理论概述文章

Imgur

在此再提供一种方法,基于区域生长法所做的图像分割。种子像素点默认选取为图片中心的点,后期种子点选取还有优化空间(如根据区域选取)。

Imgur

以上4幅图像分别为 原始图像; 种子生长后图像; 区域轮廓提取,以及最后分割加模糊c均值聚类结果。


  • 脑部三维重建。根据分割得到的图像,进行三维重建。流程图如下:

Imgur

Imgur

三维重建的代码很简单,相信大家很容易就能看懂,在此就不多加赘述。效果如下图,看起来还是不错的。

Imgur

附:资源链接

]]>
我也来玩平均脸 2013-02-15T00:00:00+00:00 石聪 http://shiconghit.github.io//2013/02/face-merge 来源

无聊查看学校研究生信息网源码时发现,照片信息竟然是绝对引用另一台数据服务器的地址,并且更严重的是照片是以学号命名的。我试着访问了相邻学号的同学照片,竟然很顺利的看到了。学生学号命名很有规律,11级别硕士,就是11S打头,后面跟着6位数字分别岱庙学院号,系代号以及具体班级号。哈哈,一个python脚本把我们同一届的研究生照片全部拉下来,再一试,08-10级的也都能得到,漏洞竟然已经存在了4年!!全部照片一共1w多张,师哥师姐偶对不住了,在此请大家原谅。以下是部分下载到的照片:

Imgur

灵感

若是一枚屌丝,看看美女也就罢了,但是我可是有志要做一名骨灰级屌丝的哇,这么好的资源岂能轻易放过。脑子各种东东开始闪现,Fashbook老大曾经做过facemash.com,后来效仿者华科脸pk也一炮成名Hust-facemash.com。想想技术也不难,无非就是前端一个网页,后端一个排序算法就可以搞定。把师哥师姐的照片放到网上也不是太人道,算了,还是回归老本行,图像处理搞起来~。

Imgur

想了半天,脸融合我还挺感兴趣,刚好以前有接触过人脸识别的相关内容。找了一下相关的论文以及前人实践的结果,南大的刘靖康曾经用7000张照片做了相应的脸融合,提到了用beyond-reality-face.com的库做特征点的提取,但是具体融合技术细节没有透露,后来他跟腾讯联合搞了个各个高校的平均脸。于是我决定,我这次做平均脸的程序将全部开源,算法细节将逐一呈现!那么该如何入手呢?

Imgur

过程

我的思路是这样,首先还是要提取出人脸的特征点,重要的如眼睛的、鼻子、嘴的位置、脸型的轮廓等。如下图所示。

Imgur

人脸特征点的提取几乎是所有人脸处理的第一步,所以这方面的库也比较多。我选用了一个简单的9特征点提取,包括两眼睛4点,鼻子3个点,以及嘴巴两个点。特征点提取的源代码没有仔细研究,有志青年可以仔细看看,其实现用到了opencv的库,算法方面则是采用了Viola&Jones的经典face detection。前人栽树,后人乘凉,有了提取到的特征点,可以说脸融合的工作已经完成了90%了。神马?剩下10%你还是不清楚,那请继续往下看。

Imgur

特征点得到后,我们需要用一个标准脸的模板,来将每个个体不同的点位加以线性变换(非线性变换将会扭曲脸型,最终得到的将不是平均脸,而是扭曲后的标准化脸),线性变换只是旋转以及比例缩放,对脸不会产生扭曲作用。那么采用什么方法来得到线性变换呢?

Tlinear = cp2tform(input_points,base_points,'linear conformal');

Matlab中使用的命令是cp2tform,该函数由输入的两幅图像的对应点生成变换结构,输入input_points就是由算法得到的9个点,base_points则是标定的基准点。

Imgur

得到线性变换的图像之后,直接采用语句

MergeImg(ii,jj,kk) = double(MergeImg(ii,jj,kk))+ double(imgTrans(ii,jj,kk));

结果

接下来就直接给结果啦,激动人心的时刻有木有!50张图片融合的结果。看看还是挺标致的哈。

Imgur

所有源代码以及测试程序我将上传至github。在此严正声明,所有照片仅仅供学习和研究使用!希望大家准守规则!资源链接

]]>
数学建模论文归档 2012-12-02T00:00:00+00:00 石聪 http://shiconghit.github.io//2012/12/math-competition 大学以来参加过不少数模竞赛,现整理归档如下,真心怀念大学那段忙碌的时光,感谢队友吴玉洁、朱振山、程明勉的鼓励与支持,所有文档均可以通过链接获得:

数学建模培训的论文有:

  1. 最优捕鱼策略 :微分方程建模,非线性规划,遗传算法求非线性极值。

  2. 体操阵容最优设计 :0 1规划模型,蒙特卡洛随机模拟。

  3. 南水北调问题 :模型规划,残差分析。

  4. 赛艇运动员成绩预测 :数据相关性分析,聚类分析,多元线性回归。

数模竞赛论文:

  1. 2010 全国大学生数学建模 B 题(省三等奖) :几何微分建模,遍历搜索。

  2. 美国大学生数模竞赛 B 论文(Honorable Mention) :图论,分布优化。

  3. 华中数模大赛B题论文 (一等奖 1/1000+ ) :数据挖掘,神经网络,聚类分析。

]]>
微信公众账号聊天机器人gongjiao123 2012-11-29T00:00:00+00:00 石聪 http://shiconghit.github.io//2012/11/gongjiao123 灵感

微信开通了公众账号的api,可以自定义恢复任何的消息,可以用来做些什么呢?在一篇公众平台教程中我找到些灵感。


  • 案例一:单词助手,微信号:dict123
  • 案例二:树洞微薄,微信号:ishudong
  • 案例三:班狸游戏,微信号:zuichaoxi

从单词助手中得到启示,用AppFog创建服务器。把处理过程的php挂载到服务器上。当有消息到来时,微信调用AppFog上的接口php进行处理,并返回处理结果。微信则将处理结果提交给用户。

具体实现

接下来的问题:

  1. 服务器上的处理函数如何与微信进行交互呢?
  2. 可以用来做点什么?

关于交互问题,在微信接口说明上我找到答案:

  • 消息推送。当普通微信用户向公众账号发消息时,公众平台将POST该消息到填写的Url上。
  • 消息回复。对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行相应操作(现支持回复文本消息、回复图文消息和星标操作)。

微信还很贴心的增加了示例PHP代码

在服务器PHP处理函数上,添加如下代码,即可以在一份PHP中处理Post和Get请求。

  if($SERVER['REQUEST_METHOD']=='GET')
    {
        $wechatObj->valid();
    }
    else if ($SERVER['REQUEST_METHOD']=='POST')
    { 
$wechatObj->responseMsg(); }

用来做什么?

既然最近一个人无聊,那就做个聊天机器人陪我说话吧。前不久看到一篇文章《聊天机器人Eugene赢得图灵测试挑战赛》,研究了一下Eugene聊天的接口,发现很简单,三行代码搞定。


    $text = urlencode($keyword);
    $url="http://www.princetonai.com/bot/botanswer.do?request=$text";
    $contentStr = file_get_contents($url);

于是一个新的聊天机器人诞生了,诸位可以搜gongjiao123,或者扫描下面的二维码,加聊天机器人作为好友,然后开始跟他聊天吧。(tips:他只能读懂英文=。=)

gongjiao123

无图无真相

gongjiao123

思考

接下来想做点更有挑战意义的事情,比如做一个公交查询系统什么的。

]]>
博客开通第一天 2012-11-28T00:00:00+00:00 石聪 http://shiconghit.github.io//2012/11/my-first-test 博客的第一天

唔,我的博客开张啦。第一眼见到这个简洁的博客模板就决定把博客安在这里了,捣鼓了一天终于弄好了,先来一篇开张日志~

小试身手

先上一张考拉。据说考拉没有天敌,每天睡觉22个小时,实在老得抓不住树了,掉下来,就结束了吃吃睡睡的一生。

可爱的考拉

一直很喜欢皮克斯的动画片,富有想象力的故事总是出乎我的意料。太过理性的我对感性唯美的东西完全没有抵抗力,沉浸在充满梦幻的世界是多么美妙的一件事呀。

代码支持

作为程序员的博客,少不了粘代码,下面几句话是常用的github维护命令。

git init                        #初始化
git checkout --orphan gh-pages  #添加一个branch
git add.                       #将文件夹内所有项目都加入工程中
git commit -m "评论内容"     #为项目添加注释
git remote add origin https://github.com/usrername/app.git  #远程创建一个项目
git push origin gh-pages       #推送文件命令

下面是一些基本语法测试


列出条目

  • 香蕉
  • 苹果
  • 菠萝
  • 李子

  1. 第一章
    • 小节1
    • 小节2
  2. 第二章
    • 小节1
    • 小节2
  3. 第三章
    • 小节1
    • 小节2

笑话一则

我想问一下玛雅人靠谱吗?要是靠谱我就不期末复习了。

回复:当初玛雅人就是这么想的,然后整个文明都挂掉了……

]]>