基于增强现实手指识别图像显示技术的研究

mikel阅读(852)

基于增强现实手指识别图像显示技术的研究

1.手指的跟踪与检测

1.1 手指识别系统框架图

手指识别系统具有其独特的识别特点,手指识别不同于掌纹识别,手指识别相对于掌纹识别 而言,在算法上较简单一些。在一定意义上来说,手指识别是掌纹识别的前期。由于每个人的手型基本上是一样的,在特征库里需要放置的特征识别手势可以不用太 多,就可以实现普遍性性的手指识别。

特征库的建立首先要采集手势,包括分割手势和背景、定位、和图像的增强处理,然后进行 特征提取放入特征库。在系统运行阶段,通过摄像头采集得到彩色手势。系统通过位图转换(二值化),将彩色手势图片转换成灰度图,除去背景因素的影响。将转 换得到的灰度图与特征库里的特征手势进行特征匹配。匹配成功以后,系统将预设的虚拟物体进行渲染,并进行图像合成,显示在实时的画面当中。

 

11111

图2-1 手指识别系统框架图

1.2 手指识别系统手指检测算法分析

本文中的研究实验是在Window XP系统的visual studio 2005开发环境下以artoolkit为 基本实验环境的条件下进行的。在此节中主要对图像灰度化和图像模糊匹配算法进行分析。本次实验能达到提高识别效率和准确度的目的,主要是在这两方面进行了 研究并获得了成功。在系统的图形灰度化(二值化)阶段,传统都采用微分直方图法、灰度差直方图法、灰度期望值法等算法。但是这些算法执行效率普遍都比较 差,相对于前两种方法,灰度期望值法的执行效率有了较大的提高(参考文献(1)–)。此次实验中我们采用期望择优阈值法。需要声明的是,本方法是在灰度期望值法的基础上加以改进,使其执行效率进一步提高。图像灰度化(二值化)的执行过程如下图:

 

图2-2 原始图像

 

在不同的方法中,图像二值化的操作本质都是将图像信息转换成为数组或者矩阵(即数字图 像)存储在电脑中。在数字图像中,每一个像素值均属于一个有限数字集,这个有限数字集就是可能的灰度级。有限数字集中取不同的数据,也就形成了不同的图 像。在此基础上,我们可以用概率分布来描述图像的灰度分布情况。

假设图像的尺寸为W*L,则其灰度的可能取值为M1,M2,M3…ML。用随机变量N表示图像中任一像素Rxy,则x∈(1,W),y∈(1,L)即为N的取值范围。此时,图像的分布可以用概率分布来描述,每个灰度级出现的概率是不同的,其各自出现的概率为:

P1=P(M1), p2=P(M2),…,pn=P(ML);

并且

P(M1)+P(M2)+…+P(ML)=1

对于以上随机变量,可用以下密度矩阵进行描述:

222

对于不同的图像,其密度矩阵也是不同的。

对图像二值化效果的好坏关键在于对于阈值的确定。不同的算法对于阈值的确定的方法是不 同的。本文中的期望阀值法则采用全局选取阈值的方法。而在于对于阈值的选取上,本算法相对于灰度期望值法的改进之处在于,在进行阈值选取的阶段,本算法紧 根据密度矩阵选取,灰度级概率相对较大(大于某一概率)灰度级作为阈值。概率较小的则予以舍弃,不进行考虑。这样在一定程度上大大减少了系统的计算量,使 执行效率得到了较大幅度的提高。

2  融合图像的显示

2.1 灰度图像模糊匹配

将摄像头采集到的图像进行灰度化处理后,系统再将得到的灰度图片与模型库中的特征图进 行一一匹配。可想而知,图像的相似度越高,其识别准确率也高。但是在图像匹配阶段,为了提高匹配效率,我们采用设置匹配率的方法进行控制。在匹配阶段,只 要灰度图与特征库里的某一图像相似度达到或者超过这个值,便返回匹配成功。经过多次实验,最终我们将匹配率设置为%85,此时匹配效率较高并且准确率也不会收到太大的影响。

 

图3-1 灰度图模糊匹配

图3-1 灰度图模糊匹配

 

2.2 融合图像的显示

灰度图像匹配成功之后,系统将对实时图像进行坐标转换-,即转换为三维图像坐标。然后对虚拟物体进行渲染,之后将二者进行坐标融合,显示在实时界面中。此时现实场景与真实场景同步显示,达到识别效果。识别成功后,得到的融合画面如下图所示:

 

 图3-2 融合画面显示

图3-2 融合画面显示

 

3 实验结果及分析

在此部分本文主要对图像识别阶段进行分析。在图像二值化阶段,为了验证期望取忧阀值法的优越性,进行了多次的比较实验。在比较阶段,我们进行了两种不同的比较实验。

 

1. 相同图片相同条件下不同算法执行效率的比较。

2. 相同大小不同背景的图片相同条件下同一算法(期望取优阀值法)的比较。

进行第一种对比实验的目的是,验证期望取优阀值法相对其他算法的执行效率的提高。进行第二种对比实验的目的是,验证此算法在识别不同背景图片时的准确率。以上两组对比实验,验证了期望取优阀值法的识别效率和准确率。相对与其他算法此算法的识别效率提高了30%~40%。同时,使手指识别系统的执行效率进一步得到了提高。

版权声明:本文为博主原创文章,未经博主允许不得转载。

技术源于想象

mikel阅读(1039)

很多电影里面的片段都是人们对未来的想象,过去的电影很多镜头,目前都有实现了,只要你肯想象那么世界就会因你的想象改变,这就是吸引力法则。

很多时候技术并不是无中生有的,都是人们

支付向左 社交向右

mikel阅读(849)

支付宝改变走了社交套路,让微信情何以堪!

微信没有改变,但是不温不火的支付已经占据了不少市场,没想到之外,也是意料之中,毕竟社交关系总是会涉及到钱,红包飞来飞去的过程不单是沟通感情,同时也绿了樱桃红了芭蕉,微信支付绑卡量和开通量不是虚高。

支付宝坐不住了也是意料之中,毕竟作为玩钱的总是不怕事儿大,钱绑住了人,同时也就绑住了关系,于是人们需要社交来改善简单的付款关系。

不是支付宝收编了微信设计团伙才会这么改版的,是大势所趋!

The connection to adb is down, and a severe error has occured.问题解决方法小结 - red_rose - 博客园

mikel阅读(699)

来源: The connection to adb is down, and a severe error has occured.问题解决方法小结 – red_rose – 博客园

遇到了几次这个问题:The connection to adb is down, and a severe error has occured.

You must restart adb and Eclipse.Please ensure that adb is correctly located at ‘E:\setups\Android\Android-2.1_r01-windows\tools\adb.exe’ and can be executed. 

通过查找和实践,我总结了以下一些方法。

1、在Eclipse中选择菜单“help->Check for update”,选择更新ADT。 按上面操作完成后,重启Eclipse!

2、在cmd中进入adb的根目录,键入adb kill-server,然后键入adb -startserver,再重启Eclipse。

3、在任务管理器中杀死adb.exe进程,然后重启Eclipse。如果此时无法杀死adb.exe,则检查豌豆荚是否在运行,关闭豌豆荚后重试。

4、超看在你安装的SDK路径里面platform-tools文件夹中是否有adb.exe,如果没有则新建一个文件夹platform-tools,并且把tools中的文件全部复制到platform-tools中。

5、安装完手机的驱动后,关闭腕豆夹,重启eclipse。腕豆夹等类似的程序与eclipse一般不要同时打开!还可在任务管理其中关掉豌豆荚的进程。

6、模拟器有时候很不稳定,有时候要重新全部配置一遍开发环境,或者你删除模拟器重新建一个新的模拟器。

7、可能是默认端口被占用,在cmd中键入netstat查看,关掉有冲突的端口程序,或者设置新的端口。

8、将platform-tools目录和tools目录加到Path环境变量中。

9、将Eclipse进入DDMS模式,重启ADB 和Eclipse。

10、打开SDK,先下载API和android SDK Tools 和 android SDK platform-tools再去配置Eclipse。

11、开关一下 usb调试。

12、重启电脑。

13、前面的方法试了还是不行的话,建议重新装一个系统,最好换个系统。

小小总结,希望对大家有所帮助。

ASP.NET MVC 開發心得分享 (11):對 Views 進行編譯檢查 | The Will Will Web

mikel阅读(1205)

来源: ASP.NET MVC 開發心得分享 (11):對 Views 進行編譯檢查 | The Will Will Web

預設的 ASP.NET MVC 專案在 Visual Studio 中建置 (Build) 時並不會對 Views 進行編譯,所以很有可能在 Views 中寫錯程式碼而不自知,甚至於有可能讓網站上線時掛掉。為了避免這個問題,我們必須手動設定專案檔讓建置時也一併編譯 Views 中所有網頁,讓開發人員得以儘早得知程式錯誤。

要設定讓 ASP.NET MVC 專案能在 Visual Studio 中能自動編譯 Views 中的網頁,必須要修改 ASP.NET MVC 專案檔 ( *.csproj ),如果你有安裝 PowerCommands for Visual Studio 2008 的話可參考以下步驟進行修改,或自行用文字編輯器做修改。

1. 開啟/編輯專案檔

開啟/編輯專案檔

2. 找到 <MvcBuildViews>false</MvcBuildViews> 片段,並將 false 改成 true 即可。

找到 <MvcBuildViews>false</MvcBuildViews> 片段,並將 false 改成 true 即可

3. 重新載入專案即大功告成

重新載入專案

不過,若要開啟這個設定會導致專案建置時間拉長,如果專案小有規模的話,會導致編譯時間過久,開發階段開啟這個選項可能會有點浪費時間,建議在進行 Release build 時再開啟即可,若要這麼做有個很簡單的小技巧可以設定,說明如下。

重複步驟一,並將 <MvcBuildViews>false</MvcBuildViews> 複製到另外兩個 <PropertyGroup> 中,並將 Release 的那個 <MvcBuildViews> 改成 true 即可,如下圖示:

將 <MvcBuildViews>false</MvcBuildViews> 複製到另外兩個 <PropertyGroup> 中,並將 Release 的那個 <MvcBuildViews> 改成 true 即可

後續就不用再修改專案檔,只要切換 Solution Configurations 即可套用不同的 MvcBuildViews 設定:

切換 Solution Configurations 即可套用不同的 MvcBuildViews 設定

善用 Visual Studio 的 Solution Configurations 可以簡化不少工作,建議新手有機會多研習手邊的開發工具,慢慢的開發效率就會提升。

※備註:此技巧僅適用於 ASP.NET MVC 內建的 WebForms View Engine

相關連結

MVC 4 中编译时,让View 也弹出异常

mikel阅读(848)

前言

MVC在编译时,不会提示View中的错误,我们在发布项目的时候会一个一个的提示异常,项目大的时候会非常头疼,因为每次发布都需要至少5分钟,最后收到只有一个异常信息,如果页面异常过多,例如最近整理代码修改了很多底层代码,这样用发布的方式去找异常效率非常低

 

解决方法

参考网址:http://www.dotnetcurry.com/showarticle.aspx?ID=698

http://haacked.com/archive/2011/05/09/compiling-mvc-views-in-a-build-environment.aspx/

1. 首先在项目文件上点击右键,点击 [卸载项目] 的选项

2. 然后再次右键 项目文件,点击 [编辑] 选项

3. 在打开页面中 找到 <PropertyGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Debug|AnyCPU’ “>  (每个VS版本的节点可能有不同)

在次节点中增加 <MvcBuildViews>true</MvcBuildViews> 的属性,如果你用 Debug 编译请在 Debug节点下增加

4.将页面拖到最下面,在最后一段处</Project>前面加上以下内容

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

5. 最后在选择项目文件,右键 点击重新加载项目,点击保存,就可以了

 

效果图

人总是不喜欢现实 喜欢梦想

mikel阅读(913)

现实总是那么让人觉得不如梦想美好,于是都想改变现实。

现实总是不如梦想完美,大家都是完美主义者,追求美丽总是被人向往。

于是想改变现实先从改变眼睛开始,什么VR、AR都开始了人们改变现实的使命。

为什么大家不从改变自己开始呢?!总喜欢用虚拟的东西替代现实,甚至掩盖现实,是在逃避现实?还是在追逐梦境?

所以技术改变世界的梦想都是由开发人来实现的。

梦想照进现实的时候,发现如此美好的东西,自己都能做出来,简直太牛逼了!

Unity3D引擎制作自己的《奇幻咔咔》_高通AR增强现实 - abel_yifei的专栏 - 博客频道 - CSDN.NET

mikel阅读(1075)

1.进入高通AR网站,注册账号,导出相关资源。1.    登录https://developer.vuforia.com/网站,去下载SDK 进去后如上图所示,然后点击Downloads进去。进去后如下图所示 因为我们是用unity来实现,所以选择最下面的unity的SDK,点击进去如果你之前已经注册并且登录过那么会直接弹

来源: Unity3D引擎制作自己的《奇幻咔咔》_高通AR增强现实 – abel_yifei的专栏 – 博客频道 – CSDN.NET

1.进入高通AR网站,注册账号,导出相关资源。

1.    登录https://developer.vuforia.com/网站,去下载SDK

进去后如上图所示,然后点击Downloads进去。

进去后如下图所示

因为我们是用unity来实现,所以选择最下面的unity的SDK,点击进去如果你之前已经注册并且登录过那么会直接弹出:

如果没有登录则会弹出登录窗口,让你登录,登录之后也会自然跳出如上图的对话窗口,不用说肯定是同意, I Agree ,然后不用说你也知道了,下好的SDK自己保存,后面会用到

2.      然后就是制作你的识别图了,还是这个网站点击Develop进入如图所示

如果你之前有创建过KEY可以直接使用,如果没有点击Add License Key按钮来创建

第一个Name可以根据自己的想法随意填写,不清楚汉语行不行,也没试过,不过最好还是写英文,我这里为了方便就写了001,SDK选择Mobile,这个应该是默认选择的

下面的什么都不用动,下拉列表不要选,其他的是云端付费的服务,我们不需要直接NEXT就行了

然后把√勾上选择confirm

KEY创建完成。

接着继续,KEY创建好了之后就是创建识别图了,点击Target Manager进入下面界面如图所示:

如果你之前没有创建过那么Database下面应该是空着的,我这里因为之前创建过一次所以有一个,创建新的识别图点击上面的Add Database 会弹出一个对话框

还是老样子,识别图名字自己随意写,Type选择第一个Device ,下面的下拉列表选择自己刚刚创建的KEY名称,好了,添加,Create

这样里面就有了你刚才创建的识别图文件

接着点进去你刚才创建的文件名称 我这里是001 ,进入到这里

点击Add Target 弹出如下对话框

因为我们要走的是一个识别图片,所以Image是我们的选择type选择第一个,

下面file是选择你要用到的图片,点击Browse是从你的电脑里选取图片,width是宽度,自己琢磨着填写,我這里写了500,Name还是老规矩,自己随意填写接着不用说也知道,Add。

等待其生成。

OK,生成成功,点上对勾,然后点下载

2.用Unity3D制作,导出安卓apk。

创建一个新的空白Unity项目,将刚才下载好的两个文件导入到unity空白项目里面

如果导进来后unity提示报错的话,

这是C#脚本错误,点开一个错误信息进入到unity自带的脚本编辑器里,根据错误提示信息定位到错误代码段:

将这段代码注释掉,然后ctrl+s保存,可以退出脚本编辑器了!

回到unity如果错误没有消失就点击clear。很好,错误没有了。

然后如下图所示将文件拖入场景中

然后选中ImageTarget看右边的属性界面修改data set为自己的标识图图

按照下图标示修改,将data set  load behaviour脚本插件下的对勾勾选上,勾选上第一个第二个才会出现,

然后上面的类似密匙的一长串key是之前你在在网站上创建的KEY的key 我的是001

先进入develop 然后点击你自己创建的key的name 如图所示:

将下面的字符串复制到App License Key处

很好,基本操作已经完成,最后,向场景里添加一个显示的模型。

3.运行unity,将摄像头扫描之前准备的图片,效果如下图,

原创教程_Unity3D引擎制作自己的《奇幻咔咔》_高通AR增强现实

版权声明:本文为博主原创文章,未经博主允许不得转载。

梦想有多远 你知道么?

mikel阅读(1075)

没人知道梦想有多远!特别是那些看似不着边际的想法,都没人觉得能实现,可他偏偏让人疯狂的追求着,可以说没有多远,也很远。因为大家不知道未来会怎样