A Learner's Blog

Stay hungry. Stay foolish.

OpenCV——SIFT 算法及源码分析(1):原理简介

A Scale Invariant Feature Transform Algorithm

本文及接下来几篇同系列文章是学习 SIFT 算法和 OpenCV SIFT 源码时的学习笔记,整合自参考文献及博客。强烈建议阅读 论文原文、GitHub上的源码 以及 @赵春江 的 opencv 2.4.9 源码分析。 Lowe 在 2004 年提出了尺度不变特征变换 (Scale Invariant Feature Transform, SIFT) 算法。 SIFT 主要由关键...

OpenCV——相机检校

Camera Calibration With OpenCV

本文主要参考自 OpenCV 官方教程 OpenCV: Camera calibration With OpenCV,大部分内容是对原文的直接翻译。 1. 前言 利用手机相机对棋盘图拍摄得到的图像如下(左边为原图,右边为二值化处理后的图像): 如下所示,将其与原始棋盘图对比(左侧为原始图像,右侧为手机相机拍摄影像)。可以明显地看出出现了一定程度的畸变。 2. 相机检校...

线性代数——特征值分解、奇异值分解与 RQ 分解

Three Methods of Matrix Decomposition

特征值分解 1. 特征值与特征向量 在线性代数中,对于 $n$ 阶方阵 $A$,如果存在某个数 $\lambda$ 及某个 $n$ 维非零列向量 $v$,使得 则称 $\lambda$ 是方阵 $A$ 的一个特征值,$v$ 是方阵 $A$ 的属于特征值 $\lambda$ 的一个特征向量。 对上式进行变换: 则称 $\lambda E - A$ 为 $A$ 的特征矩...

OpenCV——点特征提取算子:Moravec,Forstner 与 Harris

Interest Operators: Moravec, Forstner & Harris

在计算机视觉(Computer Vision)与摄影测量(Photogrammetry)中,我们在不同影像之间找到相匹配的特征,已建立两幅影像之间的联系,提取出我们所需要的信息。这些特征主要分为: 边缘(Edges) 角点(Corners) 兴趣区域 ROI(Regions of Interest) 其中,提取点特征的算子称为兴趣算子或有利算子(Interest Opera...

OpenCV——内置边缘检测算子:Canny,Sobel 与 Laplace

Using Canny, Sobel and Laplace operators for edge detection

边缘检测(Edge Detection)是图像处理的基础内容。本文中,我从OpenCV官网上下载了最新版本的 OpenCV 4.0.1(2018-12-22),借助官方文档和网络教程完成了环境配置与测试,具体步骤不再赘述。 在 OpenCV 中可用于边缘检测的算子主要有: Canny 算子 Sobel 算子 Laplace 算子 Canny 算子 理论 Cann...

PAT Advanced Level Practice (I)

PAT Advanced Level Practice (I)

PAT Advanced Level 刷题(一) PTA | 程序设计类实验辅助教学平台 PAT A 1025 解题思路 题目大意为:有 N(≤100) 个考场,每个考场有若干数量(K≤300)的考生。现给出各个考场中考生的准考证号与分数,要求将所有考生按分数从高到低排序,并按顺序输出所有考生的准考证号、排名、考场号及考场内排名。 题目要求的信息(准考证号、分数等)可以...

数据结构——求解斐波那契数列算法的复杂度

Data Structure: Fibonacci sequence algorithm in C++ and it's complexity

斐波那契数列 斐波那契数列(Fibonacci Sequence)是一串数字: \[ (0,) 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … \] 很容易看出,每一个数(除第 1、2 个)都等于它之前的两个数之和。因此,用公式可归纳为: \[ F_n = \begin{cases} 0, ...

PAT Basic Level Practice (I)

PAT Basic Level Practice (I)

PAT Basic Level 刷题(一) PTA | 程序设计类实验辅助教学平台 PAT B 1001 解题思路 题目比较基础,利用循环语句和条件语句实现对目标整数的不断缩小,直至 n == 1,通过变量 step 来计算步数(砍了多少次) 参考代码 1 2 3 4 5 6 7 8 9 10 11 12 #include <stdio.h> int ma...

C++ 学习笔记(一):初学者的小窍门

C++ Study Notes (1) : Tips for beginner

一个多月以来,确定好了考研的计划。现在开始准备刷题学习一些算法的基础,也是从头开始学习C/C++,当然在学习过程中踩了不少坑,在这里进行一些总结。 C++ 数据类型及其表示范围 这一部分是基础,不过我之前都没有系统性的搞清楚,所以现在还是先把这些知识点列出来,该部分参考C++ 数据类型 - 菜鸟教程。 1. 基本的内置类型 C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的...

JavaScript 学习笔记(三):数组、数组操作以及数组方法

JavaScript Study Notes (3) : Array, its operations, and its methods

本篇学习笔记是在慕课网上学习JavaScript深入浅出时所做笔记,内容主要来自课程课件及老师讲解,同时穿插自己的一些理解和尝试。部分资料整理自 MDN Web Docs。 数组是值的有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。JavaScript 中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其他数组。 1 2 3 4 5...