自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 基于NCC的模板匹配算法的一些补充

NCC(归一化互相关)是图像模板匹配中更为常用的一种匹配算法

2023-04-03 11:23:19 626

原创 AVX指令集函数列表中文翻译

基于Intel Intrinsics Guide 3.62,不包括AVX、AVX2中的以__mm开头的函数。本文档建议初学者学习,详细内容请查看官方文档。

2023-02-02 19:31:51 2597

原创 图像沿列方向降维的AVX2实现讨论

图像降维/列求和的AVX实现

2023-01-18 16:05:19 331

原创 理解stackblur

stackblur算法介绍

2022-11-02 14:45:44 717

翻译 翻译“SIMD for C++ Developers”

翻译SIMD for C++ Developers

2022-10-18 16:18:03 1925 1

翻译 OpenCV-Calibration-Detailed Description翻译

看了众多关于针孔相机模型的介绍和相关矩阵变换的推导Blog,回头发现在OpenCV同样有相关内容,并且描述的相当清晰。于是工作之便,作以翻译分享。

2022-07-26 17:05:19 557

原创 c++异常机制分析

c++异常机制分析本文主要参考《C++异常机制的实现方式和开销分析》栈帧(stack frame)栈帧这个概念在c/c++里面是一个很重要的,是走进反汇编,了解代码底层结构的第一大步。栈帧是编译器实现函数调用过程的数据结构,编译器正是通过该结构,通过寄存器在栈空间存取数据实现了函数的调用。另外c++的异常机制正是通过在栈桢内部添加相关数据结构来实现的,因此先了解栈帧这一概念就显得更为重要了。图1 栈帧结构图如图1左图显示的是简略的栈帧结构,可以看到栈内依次压入了:nArg1、nArg2,

2022-04-25 15:24:42 183

原创 理解Linemod匹配算法

理解Linemod匹配算法Linemod算法是一种基于形状的模板匹配算法,相较于历史工作,该算法通过量化梯度角度方法,利用现代计算机SIMD技术,实现更为快速的匹配。可以认为Linemod的主要工作是对原始形状匹配的加速。本文将带大家介绍Linemod原论文《Gradient Response Maps for Real-TimeDetection of Texture-Less Objects》,尽全面的介绍该算法的实现细节。Linemod算法是一种基于形状的模板匹配算法,相较于历史工作,该算法通过

2022-04-24 14:57:37 9143 1

翻译 OpenCV文档Mat类Detailed Description翻译

前言在网络上有很多浏览了众多Mat类的文章,但最终求真还是回到了官方文档。因此,本人特此将OpenCV文档中Mat类Detailed Description部分进行翻译以享,并特意添加了一些个人理解,见“注:”。OpenCV文档版本为4.3.0,在线文档请点击链接。本人英文水平有限,且文档部分内容较为晦涩,因此在译文前特配有英文原文作为对照,以免翻译有误误人子弟。如有错误,望指正。翻译n-dimensional dense array class略Mat数据结构The class Mat r

2022-02-22 16:11:01 209

原创 一种使用灰度值矩拟合亚像素精度圆的方法

图像矩对于图像III,位置(x,y)(x,y)(x,y)处的图像灰度值表示为I(x,y)I(x,y)I(x,y),则图像的(i,j)(i,j)(i,j)阶矩m(i,j)m_{(i,j)}m(i,j)​表示为:m(i,j)=∑x∑yxiyjI(x,y)(1)m_{(i,j)}=\sum_{x}\sum_{y}x^{i}y^{j}I(x,y)\tag{1}m(i,j)​=x∑​y∑​xiyjI(x,y)(1)比如对于m0,0=∑x∑yI(x,y)m_{0,0}=\sum_{x}\sum_{y}I(x,

2022-01-25 17:25:32 3378

原创 由浅入深理解C/C++指针-《4小时彻底掌握C指针》笔记

由浅入深理解C/C++指针-《4小时彻底掌握C指针》笔记本文主要是笔者整理《4小时彻底掌握C指针》系列视频的笔记,该视频是印度人Harsha Suryanarayana(可惜老哥英年早逝)图文并茂讲解的指针教程,已被好心人翻译为中文视频。不同于一般的笔记,笔者希望本文能够独立成文,以便读者未看过视频也可以顺畅阅读。同时在文中已经添加本人的注解“笔者注”,作为本人理解方便大家阅读。笔者C++功底有限,如有错误,欢迎指正。第一节:指针基本介绍变量在内存的存储如图中右侧图形表示计算机内存(memory)

2022-01-10 18:00:41 3145 7

原创 Pytorch中Resnet的代码实现解析

本文介绍Pytorch对resnet的代码实现。文章从基本框架出发,由浅入深地再介绍部分细节设计,因此建议顺序阅读。前言Resnet是最著名的CNN网络之一,残差模型也在后续网络设计中有广泛的应用。本文主要解读Pytorch的torchvision == 0.11.1模块中对Resnet的代码实现。本文假设读者已经对CNN以及Resnet的结构有一定了解。首先给大家推荐相关的优秀资源,《pytorch中残差网络resnet的源码解读》和李沐Resnet论文精读。Resnet使用直接使用Pytorc

2021-12-15 18:31:54 3237

原创 一维测量的一种实现

本文主要介绍一种亚像素级一维边缘检测方法。主要参考《机器视觉算法与应用(第二版)》3.7节。一维边缘定义这里建议提前阅读《数字图像处理(第四版)》3.6.1节和10.2节。我们认为在图像中从背景至目标像素灰度发生突变的位置作为边缘。针对一维边缘(图像灰度剖面),即一个灰度数值序列,我们视为一维离散函数,则认为其一阶导数的绝对值局部最大值也是二阶导数的过零点为边缘,同时我们可以通过一阶导数的符号确定其是边缘的过渡是从亮至暗还是从暗至亮。一阶导数计算如下:∂f(x)∂x=f′(x)=f(x+1)−f(

2021-10-18 12:28:31 1551 4

原创 图像直方图杂记

本文主要总结对图像直方图的使用和理解。主要包括函数使用技巧,我对直方图均衡化理解,反向投影算法等。图像直方图是分析图像的一种重要工具,它反映了一张图像灰度值的分布情况,或者解释为图像中出现某一灰度值出现的概率估计(归一化后)。更多内容建议阅读《数字图像处理》(第四版)第3.3节“直方图处理”。OpenCV与NumpyOpenCV中函数实现为cv::calcHistNumpy中函数实现为np.histogram具体函数使用建议直接阅读对应文档链接。简单的实例代码如下:org_img = np.r

2021-09-27 17:19:31 181 2

原创 反向传播(BP)算法的一种启发式理解

反向传播算法是神经网络中的经典算法,算法本身并不复杂,通过理解反向传播能够更深入的理解神经网络的工作方式。本文从一个化简∂C∂w\frac{\partial C}{\partial w}∂w∂C​微分方程的思路,循序渐进地引出反向传播算法公式,注意这不是十分严格的数学推导。当使用梯度下降法时,我们需要计算∂C∂w\frac{\partial C}{\partial w}∂w∂C​,再根据w=w−η∂C∂w(1)w=w-\mathrm{\eta}\frac{\partial C}{\partial w

2021-07-28 15:51:22 298

原创 自适应阈值(adaptiveThreshold)杂谈

本文主要介绍我对OpenCV自适应阈值函数-adaptiveThreshol的理解,包括如何合理设置参数大小、解释参数含义和一些注意事项等,最后对OpenCV中该部分源码浅尝辄止地一些分析。基础原理本节简单介绍自适应阈值的原理,建议直接阅读冈萨雷斯《数字图像处理 第四版》10.3.7.1节-“基于局部图像性质的可变阈值处理”,以下内容大致摘自于此。令mxym_{xy}mxy​和σxy\sigma_{xy}σxy​是图像中以(x,y)(x,y)(x,y)为中心的邻域SxyS_{xy}Sxy​所包含像素集

2021-06-25 20:39:39 3439

原创 Python性能分析工具

以下主要介绍cProfile和line_profiler两个耗时分析工具。cProfile-函数调用耗时分析工具cProfile是Python内置的工具,使用C语言编写,时间开销较少。使用方法如下例:import cProfiledef test(): print("hello world")# 直接把分析结果打印到控制台cProfile.run("test()")# 把分析结果保存到result.out文件中cProfile.run("test()", filename="r

2021-04-21 10:04:18 225 1

原创 使用virtualenv配置Python虚拟环境

本文主要介绍使用virtualenv工具配置Python的虚拟环境和一些其他相关技巧,仅作整理,着实是因为网络上类似文多过于混乱。同名本地模块与全局模块切换在介绍虚拟环境之前,先介绍另一个小技巧作为开胃菜:如何在本地模块和同名的全局模块之间切换。我工作过程中曾经遇到过的问题。首先我们需要了解Python对模块位置的搜索顺序:当前目录。搜索环境变量PYTHONPATH下的每一个目录。Python的安装目录,即我们通常通过pip安装的模块。然后将模块搜索路径存储在system中的sys.path

2021-04-19 21:55:25 1301

原创 Sobel算子杂谈

Sobel算子杂谈Sobel算子是一种数字图像处理种常用的边缘提取算子,更多基础内容可以参考冈萨雷斯版《数字图像处理》,这里不做过多介绍。基本概念Sobel算子包括检测水平变化的卷积核GxG_xGx​和检测垂直方向变化的卷积核GyG_yGy​。比如当选择大小为3的核时:Gx=G_x=Gx​=[−101−202−101]\left[\begin{matrix}-1 & 0 & 1 \\-2 & 0 & 2 \\-1 & 0 & 1 \\\end{

2021-01-06 11:33:52 287

原创 常用Git操作命令总结

本人将经常用到的Git命令总结如下表,未来用到更多高级操作后也会时常更新。如有错误,还请多指正。分支操作代码内容git merge <branch>把branch合并到当前分支git rebase <branch>把当前分支变基到branch分支git branch查看本地分支git branch -r查看远程分支git branch -d <branch>删除branch分支git switch <

2020-11-10 20:27:06 72

原创 Python实例属性控制的四种手段总结

Python 作为动态语言,其一大特性就是对其属性(变量)的动态控制。而这种控制主要表现在 set(赋值)、get(访问)、delete(删除)这三方面。在学习 Python 过程中,也涉及到了大量相关的方法,比如@.setter、__setarri__、__set__等等一系列容易混淆的概念,今特作整理,以享。  tip:Python本身内容庞杂,所以这里除了描述符,基本上只涉及到实例属性的控制,类属性、父类属性等尚未完全总结测试。另本文中称特殊方法(special method)为魔术方法。属性绑定

2020-10-28 10:27:44 409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除