热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

(LOG)LaplacianofGuassian(DOH)DeterminantofHessian斑点检测

1.原理考虑一个一维信号,该信号在t1000时发生了阶跃,那么如何检测这个阶跃的位置呢?图1分别用1阶高斯导数和2阶高斯导数对该信号进

1. 原理

考虑一个一维信号,该信号在t=1000时发生了阶跃,那么如何检测这个阶跃的位置呢?

图1分别用1阶高斯导数和2阶高斯导数对该信号进行卷积

(i);for(int j=0; j#if 1cornerLOG(srcImg, corner, &numCorner, height, width, minScale, maxScale, stepScale);
#elsecornerDOH(srcImg, corner, &numCorner, height, width, minScale, maxScale, stepScale);
#endifdelete[] srcImg;cv::Mat showImg;cvtColor(img, showImg, CV_GRAY2BGR);for(int i=0; i}void getLOGkernel(int halfWin, float sita, float** kernel)
{int winSize &#61; 2*halfWin&#43;1;float tmp1, tmp2, sumValue &#61; 0;float powsita &#61; sita*sita;for(int i&#61;-halfWin; i<&#61;halfWin; i&#43;&#43;){for(int j&#61;-halfWin; j<&#61;halfWin; j&#43;&#43;){tmp1 &#61; -1*(i*i&#43;j*j)/(2*powsita);tmp2 &#61; exp(tmp1)*(i*i&#43;j*j-2*powsita);//exp(tmp1)*(1&#43;tmp1)/(-1*powsita*powsita);sumValue &#43;&#61; tmp2;(*kernel)[(i&#43;halfWin)*winSize&#43;(j&#43;halfWin)] &#61; tmp2;}}for(int i&#61;0; i}void converlution(unsigned char* srcImg, int** dstImg, int height, int width, float* kernel, int kernelWin)
{for(int i&#61;0; i&#61;0 && m&#61;0 && n}bool isMax(int* compImg, int compValue, _point compPoint, int kerWin, int imgWidth, bool isSameK)
{for(int i&#61;compPoint.y-kerWin; i<&#61;compPoint.y&#43;kerWin; i&#43;&#43;){for(int j&#61;compPoint.x-kerWin; j<&#61;compPoint.x&#43;kerWin; j&#43;&#43;){if(isSameK && i&#61;&#61;compPoint.y && j&#61;&#61;compPoint.x)continue;if(abs(compValue) <&#61; abs(compImg[i*imgWidth&#43;j]))return false;}}return true;
}void cornerLOG(unsigned char* srcImg, _point* corner, int* count, int height, int width, float minScale, float maxScale, int stepScale)
{int numScale &#61; int((maxScale - minScale)/stepScale);int** scaledImg &#61; new int*[numScale]; for(int i&#61;0; i&#61;MAXPOINTS){for(int m&#61;0; m}void getDOHkernel(int halfWin, float sita, float** kernelxx, float** kernelyy, float** kernelxy)
{int winSize &#61; 2*halfWin&#43;1;float tmp1, tmpxx, tmpyy, tmpxy;float sumValuexx &#61; 0, sumValueyy &#61; 0, sumValuexy &#61; 0;float powsita &#61; sita*sita;for(int i&#61;-halfWin; i<&#61;halfWin; i&#43;&#43;){for(int j&#61;-halfWin; j<&#61;halfWin; j&#43;&#43;){tmp1 &#61; -1*(i*i&#43;j*j)/(2*powsita);tmpxx &#61; exp(tmp1)*(j*j-powsita);tmpyy &#61; exp(tmp1)*(i*i-powsita);tmpxy &#61; exp(tmp1)*i*j;sumValuexx &#43;&#61; tmpxx;sumValueyy &#43;&#61; tmpyy;sumValuexy &#43;&#61; tmpxy;(*kernelxx)[(i&#43;halfWin)*winSize&#43;(j&#43;halfWin)] &#61; tmpxx;(*kernelyy)[(i&#43;halfWin)*winSize&#43;(j&#43;halfWin)] &#61; tmpyy;(*kernelxy)[(i&#43;halfWin)*winSize&#43;(j&#43;halfWin)] &#61; tmpxy;}}for(int i&#61;0; i}void detValue(int** imgscale, int* imgxx, int* imgyy, int* imgxy, float scale, int height, int width)
{for(int i&#61;0; i}void cornerDOH(unsigned char* srcImg, _point* corner, int* count, int height, int width, float minScale, float maxScale, int stepScale)
{int numScale &#61; int((maxScale - minScale)/stepScale);int** scaledImg &#61; new int*[numScale]; for(int i&#61;0; i&#61;MAXPOINTS){for(int m&#61;0; m}




效果图&#xff08;左LOG&#xff0c;右DOH&#xff09;

 


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
author-avatar
JHH先森
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有