1.fusionԴ?源码?????
2.VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!
3.phpç¨çä»ä¹è½¯ä»¶
4.Linux使用yum/apt安装软件时,下载没有所需版本怎么办?演示安装最新php和redis
5.FusionForge简介
6.Java学习资源
fusionԴ?源码?????
微博Lite是一款专注于提供清爽无广告体验的微博客户端,它是下载由微博H5网页版经过Fusion App定制打包而成。相比于传统微博应用,源码Lite版去除了启动时的下载vc 游戏辅助源码开屏广告和信息流中的广告(已进行过测试),保持了基本功能,源码且采用了定制布局,下载将常用功能置于底部,源码使得操作更为便捷。下载特别适合轻度用户和低配置设备使用。源码
使用方法简单,下载只需长按底部按钮刷新网页。源码它的下载安全性也有保障,所有操作都基于微博的源码HTTPS站点进行,且无恶意后台代码。对于喜欢动手的用户,Fusion App允许基于源码进行个性化定制,自行打包。目前的版本v1.0.2已经修复了播放视频闪退的bug,通过注入X5内核实现。
在更新方面,截至年1月日,v1.0.2版本还对界面进行了优化,如隐藏状态栏和顶栏,部分视频链接需要在微博详情中点击。早期的版本如v1.0.1还针对滑动操作做了调整,防止意外浏览其他页面。
下载链接如下:APK大小1. MB,微博Lite_1.0.2_X5内核版本和微博Lite_1.0.1版本均提供,源码大小KB。如果下载出现问题,可以通过raiseProductivity微信订阅号获取备用下载地址。
值得一提的是,微博H5版曾支持PWA(Progressive Web App),但相比于原生应用,其体验有所差距。Twitter和Instagram等国外社交网络的PWA体验接近于APP,而微博PWA在布局和功能上稍显不足。如果你追求更好的用户体验,可能需要考虑直接使用Chrome浏览器添加微博H5网页为桌面应用。
VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!
自动驾驶领域在年呈现出快速发展的态势,各大创业公司纷纷宣布获得大额融资。1月日,文远知行完成B轮3.1亿美元融资;1月日,滴滴获得3亿美元融资;2月8日,socket源码执行小马智行获得1亿美元C+轮融资;3月日,Momenta完成C轮总计5亿美元的融资;4月日,大疆创新推出智能驾驶业务品牌“大疆车载”,向汽车企业提供自动驾驶解决方案;4月日,小鹏汽车发布搭载激光雷达的智能汽车小鹏P5,成为全球第一款量产的激光雷达智能汽车;4月日,图森未来在美股上市,被称为“全球自动驾驶第一股”;4月日,华为和北汽合作实现上海城区通勤无干预自动驾驶,成为全球唯一城市通勤自动驾驶量产车。
在自动驾驶、无人机、增强现实、机器人导航等技术领域中,定位和建图(SLAM)发挥着至关重要的作用,而视觉惯性里程计(VIO)作为SLAM算法中的一个重要分支,其理论复杂度较高。对VIO的掌握能力将直接影响到SLAM从业者的专业水平。VINS-Mono是由香港科技大学飞行机器人实验室(沈邵劼团队)在年开源的知名单目VIO算法。该算法由第一作者秦通(华为天才少年)提出,并在年获得IEEE Transactions on Robotics期刊的最佳论文奖。VINS-Mono使用单目相机和惯性测量单元(IMU)实现了视觉和惯性联合状态估计,同时能够估计传感器外参、IMU零偏以及传感器时延,是一款经典且优秀的VIO框架。
VINS-Mono在室内、室外大尺度以及高速飞行的无人机场景中均表现出色。在手机AR应用中,该算法优于当前最先进的Google Tango效果。同时,VINS-Mono也是VINS-Fusion算法的基础,应用于汽车SLAM时同样展现出高精度和稳定性。
在自动驾驶、无人机、增强现实、机器人导航等领域的岗位中,掌握VINS-Mono算法成为了关键技能之一。为此,计算机视觉life团队推出了独家课程《VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲》。该课程通过详细的步骤解读、疑难问题解析、结合作者回复的issue理解,帮助学员深入掌握VINS-Mono背后的原理。课程内容覆盖从基础理论到复杂公式的推导,通过白板从零开始手推公式的方式,使学员能够理解复杂公式的哈尔滨pc源码形成过程,从而真正掌握VINS-Mono的原理。课程价格根据购买时间调整,购买越晚价格越高。如有疑问,学员可加入QQ群()咨询,购买成功后会自动显示内部答疑群。
phpç¨çä»ä¹è½¯ä»¶
phpç¨çä»ä¹è½¯ä»¶ï¼
phpç¨ç软件æï¼
ä¸ãPHPéæå¼åç¯å¢ï¼IDEï¼
1ãZend Studio
è¿æ¯PHPå®æ¹zendå ¬å¸å¼åçä¸æ¬¾PHPéæå¼åç¯å¢ï¼ä¹æ¯æHTMLåjsæ ç¾ï¼ä½åªå¯¹PHPè¯è¨æä¾è°è¯æ¯æãå 为æ¯åä¸ä¸ªå ¬å¸ç产åï¼æ以æä¾çZend Frameworkæ¹é¢çæ¯ææ¯å ¶ä»è½¯ä»¶å¥½ãZend Studio5.5ç³»ååï¼å®æ¹æ¨åºå©ç¨äºEclipseå¹³å°ï¼åºäºPDTçZend Studio for Eclipse 6.0ï¼ä¹åççæ¬ä¹é½æ建äºEclipseãå ¶ä¼ç¹ä¸»è¦æ以ä¸å ç¹ï¼
(1).强æåçå¼åç¯å¢æé«ç产åï¼éè¿å®å ¨çPHP5æ¯æãç¼ç åæå¨ãç¼ç ç»ååè½ãè¯æ³æ£ç´¢ã项ç®ç®¡çå¨ãç¼ç ç¼è¾å¨ãç»å¾è°è¯å¨ï¼å导ï¼ãè¶ å¼ºæºè½ç¼ç ï¼å ·å¤æ°çåæ´ä¼ç§çåæåä¼åå·¥å ·åPHPç¼ç æ£æµå¨ãPHPçæ åè®°å½å·¥å ·ï¼PHPæ档记å½å¨ï¼é常容æè®°å½PHP代ç ãç¨åºåºç¨åæ¹æ¡ãFTPåSFTPç»åç®åé ç½®ï¼ä½¿å¼åè å®å ¨å°ä»è¿ç¨æå¡å¨çµæ´»çä¸è½½åä¸è½½é¡¹ç®æ件ã
(2).é«æ°´å¹³çåå¡åºç¨å¼åç´æ¥é¾æ¥æ广æ³ä½¿ç¨çä¸ä¸æ°æ®åºï¼åIBMDB2/Cloudscape/DerbyãMySQLãOracleãMicrosoftSQL Server, PostgreSQLå SQLiteãéè¿ä½¿ç¨å¸¦ SQL å è¯æ³æ£ç´¢æ¯æçZend SQL Query Editorï¼å°è¢«é¾æ¥æå¡å¨ä¸è¿è¡ååæ§è¡ç¨åºç访é®ãç¨Zend SQL Explorerå¯ è§çæ°æ®åºç»æå管çå 容ã
(3).PHPå®æ´çè°è¯ç¯å¢å è¿çè°è¯ç¹å¾ä¼å¿ï¼å æ¬ï¼Conditional Breakpoints, Stack Trace View, Advanced Watches, Variables and Output Bufferå©ç¨æ强大çPHPè°è¯å¨å¨æ¬å°æè¿ç¨è°è¯æ¬å°çç¯å¢ã对äºæ¬å°è°è¯æè æ¯åºäºäºèç½çè¿ç¨è°è¯é½è½å¤ç¡®ä¿å®å ¨è¿æ¥ç¨âä¸æ¬¡ç¹å»æµè§å¨è°è¯âä»æµè§å¨ç´æ¥è°è¯ååæç¼ç ã
(4).强æåçå¢éå¼åå管çå·¥å ·ä»Zend Studio å ç´æ¥åºç¨CVSï¼éè¿ææå°ç®¡çæºä»£ç ï¼å®¹æè¿è¡å¢éçå¼åä¸åä½ãå©ç¨ç»¼åæ§è½ç¼è¾å¨ï¼çè§è®¿é®åè½ï¼ä¼ååºç¨ç¨åºçæ»ä½æ§è½ãZend Studio ä¸Zend Platform ç»å使ç¨æ¶ï¼å¯ä»¥å®æ¶è·å¾ä»£ç åèæ¬æ§è½çåé¦ã
该IDEç®åææ°çæ¬ä¸ºZend Studio .0.0ï¼ä¸è½½å°åï¼/
3ãDreamweaver
æ¯ä¸ªåæ¬ç±Macromediaå ¬å¸æå¼åçèåç½ç«å¼åå·¥å ·ãå®ä½¿ç¨æè§å³æå¾çæ¥å£ï¼äº¦æHTMLç¼è¾çåè½ãå®ç°å¨æMacåWindowsç³»ç»ççæ¬ãéMacromedia被Adobeæ¶è´åï¼Adobeä¹å¼å§è®¡åå¼åLinuxçæ¬çDreamweaveräºã DreamweaverèªMXçæ¬å¼å§ï¼ä½¿ç¨äºOperaçæçå¼æ "Presto" ä½ä¸ºç½é¡µé¢è§ã
ä»MXå¼å§ï¼DWå¼å§æ¯æPHP+MYSQLçå¯è§åå¼åï¼å¯¹äºåå¦è ç¡®å®æ¯æ¯è¾å¥½çéæ©ï¼å 为å¦ææ¯ä¸è¬æ§å¼åï¼å ä¹æ¯å¯ä»¥ä¸åä¸è¡ä»£ç ä¹å¯ä»¥ååºä¸ä¸ªç¨åºï¼èä¸é½æ¯æè§å³æå¾çãæå å«çç¹å¾å æ¬ï¼è¯æ³å 亮ãå½æ°è¡¥å ¨ï¼å½¢åæ示çãä¸è¿DWçæç代ç æ¯è¾å¤æï¼å®å ¨æ§ä¹ä¸è¬ãå¨æåçæ¹é¢ï¼æ¹ä¾¿åº¦ä¸è¬ï¼å¨è°è¯ç¯å¢æ¹é¢è¡¨ç°å·®å¼ºäººæãä¸å¤ªéåäºæ¯è¾å¤æä¸ç¹çç¼ç¨ãä½å¯¹äºåå¦ç人æ¯å好ä¸è¿äºã
DWæ¯æ使ç¨ç第ä¸ä¸ªç½ç«å¼åå·¥å ·ï¼è³ä»æççµèéé¢è¿æå®è£ ã该软件ææ°ç为Dreamweaver CS6ï¼ä¸è½½å°åï¼/cfusion/tdrc/index.cfm?product=dreamweaver&loc=zh_tw
äºãPHP代ç ç¼è¾å¨ï¼Editorï¼
1ãEditplus
EditPlus(æåç¼è¾å¨)æ±åçä¸å¥åè½å¼ºå¤§ï¼å¯å代记äºæ¬çæåç¼è¾å¨ï¼EditPlusæ¥ææ éå¶çæ¤æ¶ä¸éåãè±ææ¼åæ£æ¥ãèªå¨æ¢è¡ãåæ°æ è®°ãæ寻å代ãåæ¶ç¼è¾å¤æ件ãå ¨å±å¹æµè§åè½ãèå®è¿æä¸ä¸ªå¥½ç¨çåè½ï¼å°±æ¯å®æçè§åªè´´æ¿çåè½ï¼è½å¤åæ¥äºåªè´´æ¿èªå¨å°æåç²è´´è¿ EditPlus çç¼è¾çªå£ä¸ï¼è®©ä½ çå»ç²è´´çæ¥éª¤ãå¦å¤å®ä¹æ¯ä¸ä¸ªé常好ç¨çHTMLç¼è¾å¨ï¼å®é¤äºæ¯æé¢è²æ è®°ãHTML æ è®°ï¼åæ¶æ¯æCãC++ãPerlãJavaï¼å¦å¤ï¼å®è¿å 建å®æ´çHTML&CSS1æ令åè½ï¼å¯¹äºä¹ æ¯ç¨è®°äºæ¬ç¼è¾ç½é¡µçæåï¼å®å¯å¸®ä½ èçä¸å以ä¸çç½é¡µå¶ä½æ¶é´ï¼è¥ä½ æå®è£ IE 3.0 以ä¸çæ¬ï¼å®è¿ä¼ç»åIE æµè§å¨äºEditPlusçªå£ä¸ï¼è®©ä½ å¯ä»¥ç´æ¥é¢è§ç¼è¾å¥½çç½é¡µ(è¥æ²¡å®è£ IEï¼ä¹å¯æå®æµè§å¨è·¯å¾)ãå æ¤ï¼å®æ¯ä¸ä¸ªç¸å½æ£åå¤ç¨éå¤ç¶æçç¼è¾è½¯ä»¶ã
å ¶ä¸»è¦ç¹ç¹æï¼
(1).é»è®¤æ¯æHTMLãCSSãPHPãASPãPerlãC/C++ãJavaãJavaScriptåVBScriptçè¯æ³é«äº®æ¾ç¤ºï¼éè¿å®å¶è¯æ³æ件ï¼å¯ä»¥æ©å±å°å ¶ä»ç¨åºè¯è¨ï¼å¨å®æ¹ç½ç«ä¸å¯ä»¥ä¸è½½ï¼å¤§é¨åè¯è¨é½æ¯æï¼ã
(2).EditPlusæä¾äºä¸Internetçæ ç¼è¿æ¥ï¼å¯ä»¥å¨EditPlusçå·¥ä½åºåä¸æå¼Intelnetæµè§çªå£ã
(3).æä¾äºå¤å·¥ä½çªå£ãä¸ç¨åæ¢å°æ¡é¢ï¼ä¾¿å¯å¨å·¥ä½åºåä¸æå¼å¤ä¸ªææ¡£ã
(4).æ£ç¡®å°é ç½®Javaçç¼è¯å¨âJavacâ以å解éå¨âJavaâåï¼ä½¿ç¨EditPlusçèåå¯ä»¥ç´æ¥ç¼è¯æ§è¡Javaç¨åº
å®æ¹ææ°çæ¬ï¼V3..ï¼ä¸è½½å°åï¼/
2ãNotepad++
Notepad++æ¯ä¸å¥é常æç¹è²çèªç±è½¯ä»¶ç纯æåç¼è¾å¨ï¼æå®æ´çä¸æåæ¥å£åæ¯æ´å¤å½è¯è¨æ°åçåè½(UTF8 ææ¯)ãå®çåè½æ¯Windowsä¸ç Notepad(è®°äºç°¿)强大ï¼é¤äºå¯ä»¥ç¨æ¥å¶ä½ä¸è¬ç纯æå说ææ件ï¼ä¹ååéåå½ä½æ°åçµèç¨åºçç¼è¾å¨ãNotepad++ ä¸ä» æè¯æ³é«äº®åº¦æ¾ç¤ºï¼ä¹æè¯æ³æå åè½ï¼å¹¶ä¸æ¯æ´å®ä»¥åæ©å åºæ¬åè½çå¤æ模ç»ã
Notepad++æ¯ä¸æ¬¾é常æç¹è²çç¼è¾å¨ï¼æ¯å¼æºè½¯ä»¶ï¼å¯ä»¥å 费使ç¨ãæ¯æçè¯è¨: C, C++ , Java , C#, XML,Ada, HTML, PHP, ASP, AutoIt, æ±ç¼, DOSæ¹å¤ç, Caml, COBOL, Cmake, CSS, D, Diff, ActionScript, Fortran, Gui4Cli, HTML, Haskell, INNO, JSP, KIXtart, LISP, Lua, Makeå¤ç(Makefile), Matlab, INIæ件, MS-DOS Style, NSIS, Normal text, Objective-C, Pascal, Javascriptã
å ¶ä¸»è¦åè½ç¹ç¹æï¼
(1).æå°æè§å³æå¾ï¼å¦ææ彩è²æå°æºï¼ä½ å¯ä»¥æä½ çæºä»£ç 以å¤ç§é¢è²æå°åºæ¥ã
(2).ç¨æ·å¯èªå®ä¹ç¼ç¨è¯è¨ï¼èªå®çç¼ç¨è¯è¨ä¸ä» æè¯æ³é«äº®åº¦æ¾ç¤ºåè½ï¼èä¸æè¯æ³æå åè½åè½ã注éãå ³é®ååè¿ç®ç¬¦å·ä¹å¯ä»¥èªå®ä¹ã
(3).ç¨æ·è½åèªå·±çAPIå表ï¼æä»ä¸è½½ä¸åºä¸è½½éè¦çapiæä»¶ï¼ ãä¸æ¦apiæ件建ç«å®æä¸å¨æ£ç¡®çè·¯å¾ç³»ç»ï¼é®å ¥Ctrl+Spaceï¼ä½ å¯ä»¥ä¿®æ¹è¿ä¸ªå¿«æ·é®ï¼å¯å¨åè¯èªå¨å®æåè½ã欲ç¥æ´å¤ä¿¡æ¯ï¼è¯·åèåè¯èªå¨å®æåè½å¨çº¿å¸®å©ã
(4).æ¯æåæ¶ç¼è¾å¤æ件:å¯ä»¥åæ¶å¼å¯å¤é¡µé¢æ¥ç¼è¾ãæ¯æå¤éè§çªåæ¥ç¼è¾:å¯åæ¶æ两个è§çªå¯¹æ¯æåãä¸ä½è½å¼å¯ä¸¤ä¸ªä¸åæ件å¨åå«ä¸¤ä¸ªä¸åççªå£ï¼å¹¶ä¸è½å¼å¯ä¸ä¸ªåç¬æ件å¨ä¸¤ä¸ªä¸åçè§çªå (clone mode)è¿è¡åæ¥ç¼è¾ãåæ¥ç¼è¾çææå°å¨ä¸¤ä¸ªççªå£å åæ¶æ´æ°ã请åèåæ¥ç¼è¾ç»é¢ã
(5).èªå¨æ£æµå¼å¯æ件ç¶æ:å¦æå¤é¨ä¿®æ¹ï¼æå é¤ï¼Notepad++å·²å¼å¯æ件ï¼ç¨æ·å°ä¼è¢«éç¥æ´æ°æ件å 容ï¼æå é¤æ¡£æ¡ï¼ã
(6).é«äº®æ¬å·å缩æè¾ å©:å½å æ 移è³ä¸åå符{ } [ ] ( )ææ¶ï¼æ¤å符ä¸è¿æ¹ç¸å¯¹åºçå符以å缩æè¾ å©ï¼å¦æåå¨çè¯ï¼å°ä¼ä»¥é«äº®æ¥æ¾ç¤ºã
æ´å¤å·¥å ·ä¸è½½è¯·åå¾PHPå·¥å ·ä¸è½½ç«ï¼/xiazai/gongju
Linux使用yum/apt安装软件时,没有所需版本怎么办?演示安装最新php和redis
当在Linux服务器上遇到需要安装特定版本软件而yum/apt仓库提供的版本不满足需求时,有几种解决策略:
1. **更换源或使用第三方仓库**:这是首选方法,因为它们通常提供更新的软件版本。例如,对于RHEL/CentOS/Fedora,可以考虑Remi或RPMFusion这样的第三方源;而对于Ubuntu,PPA源是一个好选择。以Remi源为例,若原仓库只有php8.0,可通过切换到Remi源安装php8.2。
2. **官方发布的rpm/deb包**:某些软件供应商会提供特定版本的预编译包,但这并不常见,适合特定软件需求。
3. **源码编译安装**:如Redis,尽管官方仓库提供的版本可能较旧,可以下载最新源码进行编译。首先,更新编译工具,然后执行编译安装,创建配置文件和数据目录,最后通过redis-server启动服务。
每种方法都有其适用场景,根据实际情况选择最合适的方法来安装所需版本的软件。记得在安装过程中注意兼容性和系统环境的调整,确保顺利安装和运行。
FusionForge简介
FusionForge是一个专为协同开发设计的全面平台,它集多种功能于一身,旨在提升团队间的沟通与协作效率。首先,它的通讯工具模块包括论坛、邮件列表和新闻服务,为团队成员提供了一个开放的讨论和信息分享空间,促进思想交流和知识共享。
在开发工具方面,FusionForge提供了强大的支持,包括bug跟踪系统,帮助团队有效地追踪和解决项目中的问题;项目管理工具,帮助团队成员协调任务,跟踪进度,webpack源码解说确保项目按计划进行;源码控制系统则确保代码版本的管理和同步,便于团队成员协同开发和代码审查。
社区工具是FusionForge的另一个亮点,它支持文件发布,使得团队成员可以方便地共享文件和资源;软件分类功能有助于用户快速找到所需的工具和资源;此外,Web托管服务使得FusionForge成为一个一站式的开发平台,团队的网站和应用程序可以直接托管在平台上,无需额外的部署步骤。
总的来说,FusionForge是一个功能丰富的开发环境,无论是日常的交流,还是项目的具体实施,都能为团队提供稳定、高效的支持,是现代协作开发的理想选择。
Java学习资源
Java Commons Java tutorial WebService常用第三方webservice IDEEclipse Eclipse GUI Plugin Eclipse根据java代码生成UML图 Tomcat Hudson Jenkins Atlassian Bamboo TeamCity JUnit DbUnit JMockit TestNG ReportNG SLF4J Log4j Logback Log4E代码评审 guava jga Java Class Dependency Analyzer OW2Forge Rock apache Apache Commons sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载源码,部署到本地maven仓库中。例如对于sandbox中的classscan项目: # 项目地址:commons.apache.org/sand... svn checkout mons/sandbox/classscan classscan cd classscan 当install带有parent的maven项目时,如果没有把parent一并install,其它项目引用时会出现 mvn install--Failed to read artifact descriptor for org.apache.maven.plugins:maven-source-plugin:jar:2.1.2 cd parent (classscan/parent) mvn clean package install -DskipTests cd ../api (classscan/api) mvn clean package install -DskipTests cd ../bcel (classscan/bcel) mvn clean package install -DskipTests 在pom.xml中添加依赖 org.apache.commons.classscan bcel 0.2-SNAPSHOT org.apache.commons.classscan api 0.2-SNAPSHOT Eclipse中Update Project,选择Force Update of Snapshots/Releases Apache HttpComponents Maven and M2Eclipse maven快速下载某个jar包依赖的所有jar 经常碰到这种事情:在一些非maven工程中(由于某种原因这种工程还是手工添加依赖的),需要用到某个新的类库(假设这个类库发布在maven库中),而这个类库又间接依赖很多其他类库,如果依赖路径非常复杂的话,一个个检查手动下载是很麻烦的事。下面给出一个便捷的办法,创建一个新目录里面建一个maven pom文件, 添加需要依赖的类库: 4.0.0 com.dep.download dep-download 1.0-SNAPSHOT com.xx.xxx yy-yyy x.y.z 在这个目录下运行命令,所有跟这个类库相关的直接和间接依赖的jar包都会下载到 ./target/dependency/下 杂项 间接依赖的jar包能否直接使用 如果工程依赖A.jar,并用maven设置好依赖,同时A.jar会依赖B.jar,所以maven在下载A.jar的同时会下载B.jar,这时如果项目发现需要使用B.jar中的一些内容,在maven中不必从新设置依赖,可以在工程中直接使用。 把某个本地jar包安装到本地仓库中 mvn install:install-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0” -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar” 把某个本地jar包部署到某个远程仓库中 mvn deploy:deploy-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0” -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar” -Durl= yourlocalrepository:... -DrepositoryId=internal bintray bintray.com/ Ant Eclipse Color Themes MyEclipse EclEmma eCobertura JavaNCSS Clover(收费) CAP (code analysis plugin) Visual Performance Analyzer VisualVM JD(Java Decompiler) 注:不支持命令行使用,因而很难批量编译。 jad 注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is .0 (only .3, .0 and .0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。 jdec JODED J Java Decompiler 注:收费软件,没有试用过 ProGuard FindBugs PMD Metric Jdepend SourceHelper Structure inFusion SourceMonitor Simian CheckStyle CCTE J-Technologies一家(收费) FORTIFY SCA(收费) coverity(收费) klocwork(收费) GProf Dot and Graphviz sikuli exe4j JBoss GlassFish Virgo Jetty cpDetector EZMorph Apache Shiro Struts Spring Hibernate iBATIS/MyBatis appfuse TopLink json neethi XML SAXON jsoup HTML Parser Java port of Mozilla charset detector(jchardet) JMX jsch * yFiles The yFiles diagramming software components are extensive class libraries that enable you to add high-quality diagramming functionality to your own software applications OpenLDAP Protobuf zip4j JFlex JavaCC sablecc Xtext antlr cglib javassist jclasslib ical4j 分词规则引擎 Drools jBPM OpenAS2 Java Native Access (JNA) mpi Java eBus JACOBA Apache POI - the Java API for Microsoft Documents iText(AGPL) aspose MVEL(Drools) OGNL(Struts) SPEL(Spring) JSP EL freemarker Velocity Aurora图像处理(十一)exposure fusion 图像曝光融合
本意是为了学习HDR,高动态范围成像,但HDR概念对我来说太复杂了,涉及到硬件和软件。我的目标是跳过硬件和tone mapping,只做最简单的taro 源码解析多曝光融合,如下列图像
融合成一张
搜索曝光融合,出现的是《exposure fusion》这篇文章,像素级别的融合,再加上多尺度的平滑处理,从现在的眼光来看,是非常简单的,OpenCV也实现了这个算法,在lightroom中也有应用。
尽管原理简单,但实现上有坑,C++写了好几遍过不了,换成Python也错误,看了官方的matlab源码才知道坑。
论文提出了三种计算每个像素融合权重的的方法
对比度
在过曝图像或严重低曝光的区域,图像都基本是或0,因此这些区域是很平滑的,梯度信息几乎为0,这些也是曝光融合中要舍弃的区域——过曝部分缺乏细节,低曝光区域缺乏细节和亮度。因此,论文提出用laplace算子提取图像的梯度信息,梯度信息越小的像素在融合时占据的比重就越小,相反梯度信息越大的像素的比重就越大。对输入的第[公式]张图像[公式]
[公式]
饱和度
同样针对过曝或严重低曝光,二者的饱和度是接近于0的,而那些饱和度高的区域常常是需要保留的区域,因此论文通过三通道的标准差来衡量饱和度大小,以此得到不同的比重
[公式]
亮度
亮度越接近0或者的,很可能就是处在过曝或严重低曝光区域,而亮度在附近的常常可以认为是曝光良好的区域,这些区域的信息在融合过程中要尽量保留,比重尽量大,如下
[公式]
[公式]是方差,论文中取0.2。以上公式是我具体实现时使用的,三通道的比重相乘,为了简单,也可以提取出YCrCb通道,用Y通道算也可以。良好曝光不一定取0.5。
上面是人为提出的一些先验知识,接下来验证下是否有效
可以看出,对于严重低曝光的图像,响应值比较高的就是光源附近的细节,这些细节得以保留,而过曝图像往往在这些地方是没有细节的
同上,以亮度为例,该图在天空区域的曝光是良好的,而且具有一定的细节,得以保留
对于这一类局部过曝的图像,背光区域反而得到了较好的曝光,所以图中气球的细节和亮度响应值比较高,得以保留,而天空和光源部分的灰度值偏离、梯度也较小,因此这些过曝的区域的响应值(比重)很小,在融合时被舍弃。
上面根据对比度、饱和度、曝光三方面可以得到每个像素点在融合时的比重,三者合在一起
[公式]
为了防止多张图像融合,出现过高或者过低的值,要对[公式]进行归一化
[公式]
多张图像[公式],各自对应一张归一化的比重图[公式],融合
[公式]
上面的方法非常简单,但会得到十分粗糙的结果。我在具体实现时,得到的结果会出现很多黑色和纯白色的斑点(灰度值为0),而且存在一些光晕,如下:
经过我追本溯源,发现这是由于多张图像之间的灰度跳变太大导致的——假设现在有图像序列[公式],在点[公式]处,比重值分别是[公式],因此在融合时,[公式]点的灰度值主要取决于[公式];在旁边一个点,[公式]的比重值却是[公式],融合时就主要取决于[公式],而从[公式]的灰度值跳变太大,因此最后看起来有很多噪声。相邻点的比重相差会这么大,个人看法是比重由对比度、饱和度、亮度相乘得到,实际上,很多区域都是接近于0,差不多1e-4的值,三个相乘量级就到了1e-,任意一个指标突然变大变小,权重就一边倒了,基本集中在某一张图像上。理想情况是一系列对比度、饱和度、亮度平滑变化的图像,就不会出现这种问题,但实际也不可能拍这么多精细的图像。
如何解决?一个很直观的想法就是对每张图的权重图做平滑处理,缓解灰度跳变,重新归一化后,再融合,效果如下:
看得出来,有所改善,但还是不够平滑,存在一定程度的光晕,继续加大力度
又好一点了,但天空还是很明显
好像又好一点了!但还是存在一些光晕(后面怎么解决的还不清楚)。
但是每次都对原始分辨率做这么大的计算吗?
这又回到了上次总结的拉普拉斯金字塔融合,构造金字塔解决分辨率过大和滤波核过大的问题,这也是论文提出的方法
使用laplace金字塔,对每张图像分解出laplace金字塔,对应的比重图分解出高斯金字塔,根据比重对laplace金字塔做融合,从低分辨率开始上采样叠加同尺度的融合后laplace细节,即可得到结果,如下:
效果有点惊艳,不仅融合了多张图像中的细节,还保持了良好的曝光,和之前的对比还是很明显的,如过曝这个区域的细节还是很不错的!但为什么和之前直径的高斯模糊相比,解决了光晕,这一点是我暂时无法理解的。
算法十分简单,只要按部就班算出每个点的对比度、饱和度、曝光,结合起来,再加一个laplace金字塔分解,问题貌似就解决了。但我在实际写的时候,得到的结果却是这样的:
饱和度太高了,而且细节也没有得到保留。。。。。。一开始还以为是C++,我索引写错了之类的,重写了几遍都过不了,换成python也是一样的,也是错的,后面还是参考了官方的matlab代码,才发现不同:
即下面两张图的对比
当我把上采样的对象改成了官方的形式,就正常了。
至于为什么会这么差,我想可能是因为一路上采样,丢失的信息太多了,所以采用之前的高斯金字塔的次一级分辨率上采样可以减少信息损失。
代码见我的github
Python 3
鬼影
本篇讨论的多曝光图像融合,默认都是对齐的,但实际上不同时间拍的图像,会因相机抖动和环境的风吹草动,而导致内容有差别,使得最后的融合结果可能出现鬼影,而鬼影(ghost effect)也是HDR融合要解决的主要问题之一。
移动
考虑下面这个例子
可以看到画面中的三个人物都存在较明显的移动,经过上面的exposure fusion像素级融合,就会得到下面的结果
这一类情况下,不保证像素级的对齐,就会出现鬼影。
模糊
和多曝光融合类似的是多焦点融合,不同图像存在不同的局部模糊
保留对比度、饱和度,不计算曝光,得到的融合结果如下:
效果感觉还行,但又不很行 ! 如IMAGE块区域,第一张图有点类似于运动模糊的效果了,在曝光融合这里就近似于"没对齐",因此融合的结果有一些虚影、鬼影 !
虽然存在如上问题,但这个方法还是给后续的一些研究提供了思路,融合不断频段的信息做图像融合,不仅仅是曝光融合,多焦点融合等。
参考资料
整理了篇多模态融合(Multimodal Fusion)优质论文,含最新
多模态融合是多模态学习领域中的关键问题,旨在综合处理来自不同模态(如语音、图像、文本等)的数据,提取有价值的信息和特征,并将这些信息融合,以增强系统的性能。近年来,这一领域已取得了多项值得关注的研究成果,以下将分享篇精选论文,涵盖多模态融合的理论、算法、应用等多个方面。欲获取论文及项目源码,请关注“学姐带你玩AI”公号(了解详情请参阅主页签名),回复“多模态融合”即可获取。
1.
传感器融合的外部多模态成像传感器标定:综述
本文提供多模态成像传感器标定的研究综述,包括基于运动和特征的标定方法,着重探讨目标基标定、无目标标定以及系统多模态传感器标定的最新进展。
2.
低质量多模态数据的可证明动态融合
该文提出一种动态多模态融合框架,通过理论分析揭示不确定性估计解决方案的鲁棒性,引入质量感知多模态融合框架,提高分类准确性和模型鲁棒性。
3.
用于道路检测的自适应跳过交叉融合
文中提出SkipcrossNets,一种用于自动驾驶任务中LiDAR点云与相机图像融合的网络,通过动态连接各层,增强特征传播与融合,减少模型参数。
4.
面向三维目标检测的多传感器融合与时间一致性Transformer
FusionFormer框架用于3D物体检测,通过引入可变形注意力和残差结构,解决特征转换问题,实现统一的采样策略,提升检测性能。
5.
多模态语义映射用于物体检测和3D定位
本文介绍一种结合RGB-D相机和激光雷达的多模态语义映射框架,准确检测预定义对象,优于单传感器实验,特别适用于近和远距离障碍物。
6.
用于智能车辆RGB-T城市场景理解的动态双边交叉融合网络
DBCNet融合RGB-T图像,采用动态双边交叉融合机制,直接聚合多模态信息,优于深度学习基线方法,提升智能车辆的场景理解能力。
7.
多模态相互关注和迭代交互用于参考图像分割
提出多模态相互关注和迭代交互方法,增强模型对多模态信息的理解,通过连续和深入的交互,避免信息扭曲,显著提升参考图像分割性能。
8.
用于语义分割的多模态融合网络
TransFusion模型直接融合图像与点云,无需点云预处理,相较于基本层FCN模型,显著提升Vaihingen和Potsdam数据集的mIoU值。
9.
用于多模态3D对象检测的激光雷达-相机深度融合
DeepFusion模型集成激光雷达和相机特征,通过引入InverseAug和LearnableAlign技巧,实现通用多模态3D检测,性能优于现有方法。
.
通过深度感知增强的多曝光图像融合
DPE-MEF网络融合不同曝光图像,通过深度感知增强策略和色彩映射校正,显著提升单张图像的曝光质量。
.
基于傅里叶变换和对比学习的鲁棒框架
提出鲁棒多曝光图像融合框架,结合傅里叶变换与对比学习,处理极端和多样化曝光图像,通过像素强度转移和对比正则化损失,实现高质量融合效果。
.
基于multi-moda的雷达和相机特征之间的视差桥接
文中介绍一种在鸟瞰图下融合雷达与相机特征的新方法,用于3D目标检测,通过视图变换和点融合,实现雷达和相机特征的高效融合。
.
半监督医学图像分割的多模态对比互学习与伪标签再学习
Semi-CML框架利用对比互学习与伪标签再学习,提高半监督医学图像分割的性能,通过跨模态信息和预测一致性,弥补性能差距。
.
同质多模态特征融合和交互的三维物体检测
HMFI方法在自动驾驶场景中实现三维物体检测,通过跨模态特征融合与交互,避免信息损失,提升检测准确性和性能。
.
用于端到端自动驾驶的多模态策略融合
TransFuser Transformer模型集成图像与LiDAR表示,通过注意力机制实现策略融合,减少碰撞风险,表现优于基于几何的融合方法。
.
基于Transformer的多曝光图像融合框架
TransMEF框架使用Transformer与自监督多任务学习,通过三个自监督重建任务学习特征,设计结合CNN与Transformer模块的编码器,实现多曝光图像融合。
以上论文涵盖了多模态融合的多个角度,从标定、融合算法、应用场景到性能优化,为多模态研究提供了丰富资源。欲获取详细内容和代码,请参照“学姐带你玩AI”公号指引。