自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

czl389的专栏

github上有博客代码不要积分, ID: czl389 ╮(╯▽╰)╭

  • 博客(82)
  • 资源 (4)
  • 收藏
  • 关注

原创 图像拼接(九):双摄像头实时视频拼接(单应变换模型)

单应变换相比平移变换,具有更广泛的场景适应性,但同时稳定性会有一定程度下降。设计到的技术细节有:特征检测与描述特征匹配与单应矩阵估计opencv采集视频渐入渐出图像融合这个解决方案的硬件条件包括:有两个USB接口的计算机,两个合理放置的USB摄像头。合理放置是指:两个摄像头分割一定夹角,相机中心相距接近,所拍摄场景有足够的重叠部分。以上保证了单应变换的可用性。代码实现:#include "

2017-03-07 11:23:42 10672 15

翻译 图像拼接(八):拼接多幅图像+Matlab实现+Stanford Open Course

本博客与以下文档资料一起服用效果更佳。Stanford University CS 131 Computer Vision: Foundations and Applications【OpenCV】SIFT原理与源码分析-小魏的修行路Matlab源码地址:多幅图像拼接matlab实现-CSDN下载开始正文。梳理一下本篇博客图像拼接的原理:特征检测:SIFT角点检测特征描述:SIFT描述

2017-03-06 16:06:58 44580 118

原创 图像拼接(七):OpenCV单应变换模型拼接多幅图像

上篇博客图像拼接(六):OpenCV单应变换模型拼接两幅图像 实现了两幅图像的拼接,主要是使用了单应矩阵和warpPerspective()这个库函数。求取每相邻两幅图像的单应矩阵拼接多幅图像,需要计算每相邻两幅图像的单应矩阵,上篇已经封装了求取单应矩阵的类,可以拿来用。 现有4幅图像:img1img1,img2img2,img3img3,img4img4。依次从右向左排列,拼接图像以最左侧的im

2017-03-06 10:50:05 13903 20

原创 图像拼接(六):OpenCV单应变换模型拼接两幅图像

图像拼接首要步骤就是对齐。对齐就要找到两幅图像相对的位置关系。为了描述位置之间的变换关系,研究者引人了诸如平移,仿射,单应等变换模型。每个模型无所谓好坏,各有特定的适用范围。在其次坐标系下,图像位置之间的关系,或者说同名点坐标之间关系,都可以用一个3×3的矩阵来表达。从平移到单应,这个变换矩阵的自由度逐步上升,灵活度增加,适用的场合变广,但也导致求解出来的变换矩阵不太准确和稳定,意思是容易拼飞。所以

2017-03-04 14:25:28 16416 8

原创 OpenCV角点检测器测试和比较

关于特征检测,OpenCV提供了通用的接口FeatureDetector类。简单调用其成员函数create()和detect()即可完成角点检测。选取8个以角点为特征的特征检测器进行测试,包括:HARRISGFTT (Shi-tomasi)SIFTSURFFASTSTARORB (oriented BRIEF)BRISK测试代码#include <stdio.h>#includ

2017-02-28 21:35:26 2560 2

原创 特征检测:白话Harris角点检测

角点是一个可重复、可靠、显著的特征。在特征匹配用来检测特征点的位置。本篇博客,用大白话谈一谈自己对Harris角点检测算法的理解。Harris实际上是设计了一个准则来度量角点的特点。角点有啥特点呢?显著的特点就是:在角点的邻域,图像邻域有两个以上的主方向,即邻域方向导数的和有多个极值。直观感受下图,下面这个式子还不是度量角点的准则,它是描述邻域梯度和的:E(u,v)=∑x,yw(x,y)[I(x+u

2017-02-28 13:25:02 1521

原创 全景图(三):在Unity3D上实现360°球面投影

准备工作首先需要准备好一张360°视角的的照片。就像下面这样。步骤1、创建一个球体,命名为照片球(PhotoSphere)。Scale设为(10,10,10),重置位置。2、创建一个材质(Material),选中它,将其渲染器设为InwardShader。 注:这个渲染器是定制的,渲染定义文件参考全景图(二):在Unity3D上实现360°柱面投影3、禁用全局光照Directional Light

2017-02-26 15:17:38 16083 2

原创 全景图(二):在Unity3D上实现360°柱面投影

在全景图(一):使用Unity完成水晶球纹理贴图 建立的工程基础之上,做修改。步骤:1、把上次创建好的水晶球移走,放到一个不妨碍观察的地方。2、创建一个圆柱体,位置设为(0,1.5,0),比例设为(2,0,5,2)。 注:比例的设置和作为纹理映射的图像的宽高比有关,Unity中默认的圆柱体是2个单位高度以及1个单位宽度。3、在圆柱体的Inspector面板中禁用Capsule Collider组件

2017-02-25 20:45:17 8637 2

原创 全景图(一):使用Unity完成水晶球纹理贴图

本系列文章使用Unity来完成2D全景图的3D展示。Unity3D是虚拟现实开发中的强大工具,使用Unity生成360°图像或视频也非常方便,利用可视化工具和少量脚本代码(C#语言)就能轻松完成。下载和安装Unity可访问官网下载最新的个人版(免费)。官网提供的下载器,我使用的时候发生了异常。也可在此界面使用迅雷下载,Unity3d下载 ,版本是Unity5.5。下载下图圈有红线的条目,就够用了。安

2017-02-25 17:00:37 9198

原创 windows下遍历某文件夹下所有文件,返回字符串数组

没有找到很方便的标准库函数,在此提供一个自定义函数:void getFiles(string path, vector<string>& files)。 功能是,给定一个文件目录,将其中所有文件(包括子文件夹文件)的路径字符串导出到一个数组里。 需包含头文件#include<io.h>void getFiles(string path, vector<string>& files){

2017-02-25 12:04:00 1544

原创 读《面向对象的思考过程》作者matt Weisfeld

最近接触了很多java代码,开始于机缘巧合,读了《java编程思想》的大概前四分之一,这比我读《C++primer》还要多了,两本都是大部头,我能完整读完还需毅力。惊讶于两门语言语法非常的相似,之前对C++很熟悉,看java代码完全不费劲。C++与Java的区别在于java的纯粹,它是完全面向对象的,对于掌握面向对象的思想是有好处的。虽然C++也是面向对象的语言,但它同时也支持过程式编程,所以有人说

2017-02-22 11:36:34 2273

原创 客户端/服务器端通信:传输对象

本例用java演示在客户端和服务器端传输一个对象,然后打印该对象包含的一些信息。这个程序的基本流程如下图:先创建一个对象,这个对象包含两个字符串类型的成员,name和message。这个类在被传输之前需要继承可序列化的接口。import java.io.*;import java.util.*;public class TextMessage implements Seria

2017-02-21 23:20:49 1264

原创 读《代码不朽:编写可维护软件的10大要则》

代码不朽:编写可维护软件的10大要则(Java版) 因为本科并非软工和计算机专业,所以对软件工程中的一些概念理解欠缺。我的编程实践大部分来自于图像处理算法程序的编写,在编程过程中对代码规范,软件设计方面考虑较少。如果要成为一个专业的程序员,就需要学习已形成工业化的软件构建方式。可维护性解释这本书解释了可维护软件中的“维护”的意思:可维护性是软件质量的一个标准,代表一个系统可被修改的难易程度。所以它

2017-02-16 12:10:47 2313

原创 图像拼接(五):双摄像头实时视频拼接(平移模型+多线程)

在双摄像头相对平行固定,所拍摄图像视差很小,可使用平移运动模型的情形下,我们提到了“柱面投影+模板匹配+渐入渐出拼接”的解决方案。不考虑多线程,参见图像拼接(四):双摄像头实时视频拼接(平移模型) 可以看出,图像或视频拼接其实是一项”流水线”技术,包括:源图像数据获取(两幅源图像)、柱面投影、模板匹配、图像融合、输出或者是显示拼接后的图像。这个过程中每个步骤有先后,可以说是串行的,怎么能使用多线

2017-01-19 12:01:31 17083 4

原创 图像拼接(四):双摄像头实时视频拼接(平移模型)

假设两个摄像头平行固定,所拍摄的图像视差很小,可以通过“柱面投影+模板匹配+渐入渐出融合”的解决方案实现视频拼接。 关于这种方法的静态图像拼接,参考图像拼接(一):柱面投影+模板匹配+渐入渐出融合 OpenCV双摄像头捕获视频并实时显示的代码,参见:图像拼接(三):OpenCV同时打开两个摄像头捕获视频 将代码整合,实现双摄像头实时视频拼接:#include "opencv2/core/cor

2017-01-18 21:27:22 17369 7

原创 图像拼接(三):OpenCV同时打开两个摄像头捕获视频

使用OpenCV实现同时打开两个USB摄像头,并实时显示视频。如果未检测有两个摄像头,程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件:amcap,使用它可以方便的检查每个摄像头是否能正常工作。 捕获视频: 代码:#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#in

2017-01-18 20:13:41 13946 8

原创 图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)

本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合。新的代码充分利用了OpenCV库函数的GPU版本。在一些方法中使用了GpuMat这一数据结构,它是Mat的替代。Mat运行在CPU上,GpuMat运行在GPU上,使用这一数据结构,将一些费时的操作交由GPU处理,会提高处理速度。 文末附有完整代码清单,这里对代码做些说明: 1、使用OpenCV的GPU版本,需要重新编译Open

2017-01-18 16:42:11 8041 3

原创 图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:Δx\Delta x 和Δy\Delta y,自由度为2,模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄像机拍摄时,这种方法才适用。 整个过程为:首先对输入的两幅图像做柱面投影;然后通过模板匹配求取Δx\Delta x 和Δy\Delta y;最后采用渐入渐出的融合方

2017-01-18 10:46:32 52278 22

原创 图像任意子区域直方图快速计算

当逐像素地对像素进行邻域操作时(比如邻域求和,求邻域图像块的直方图等),运算量就会很大。这个时候可以想到用积分图像,可以这样看,积分图像是占用了前期时间,减少了后期大量重复运算。下面介绍一种快速计算图像任意子区域直方图的方法,方法实现的过程描述如下:假设最终得到的直方图箱子数(通俗点就是直方图的横坐标的单位数)为nplanes,nplanes是2的幂;输入的灰度图大小为rows*cols。首先创建一

2017-01-11 22:27:10 3377 1

原创 自适应的阈值化

对图像应用阈值创建二值图像,是提取有意义元素的好方法。但有的时候单一阈值达不到目标提取的效果。 例如,给定一幅图如下,将“富贵白头”四个字提取出来。 通过OpenCV阈值化函数cv::threshold(),纯手工选择参数,进行固定阈值二值化,发现当阈值设为80时效果最好。//采用固定阈值cv::threshold(image, binaryFixed, 80, 255, cv::THRE

2017-01-11 21:00:24 11507 2

原创 OpenCV图像检索:比较直方图

基于内容的图像检索是计算机视觉的一个重要课题。直方图是标志图像内容的一种有效方式。仅仅通过比较两幅图像的直方图测量出它们的相似度,OpenCV在cv::compareHist函数实现了这些方法。//Compares two histograms.double compareHist(InputArray H1, InputArray H2, int method)其中的method包括: me

2017-01-11 11:45:31 1557

原创 目标跟踪:反向投影直方图+mean shift

假设我们希望从一副(待检测)图像中检测出“飞行的蜥蜴”。首先要做的就是准备一个样本,比如在第一幅(参考)图像中选择一个包含样本的兴趣区域。 参考图像: 待检测图像:(可注意到飞蜥位置和形态都出现了轻微改变) 我们计算参考图像中兴趣区域的直方图(这里取H(色调)通道),然后将直方图归一化。这时直方图的箱子值代表的是特定颜色出现的概率。 反向投影直方图的过程包括:从归一化的直方图中读取概率值

2017-01-11 11:03:52 1905 1

原创 OpenCV图像增强:直方图拉伸和直方图均衡化

直方图反映了图像中像素值的分布情况,很多时候,图像的视觉缺陷可以根据图像的直方图来分析。比如直方图太窄,说明图像使用的灰度值范围太窄;比如直方图有一个很强烈的峰值,说明图像部分灰度值的使用频率比其他强度值要高得多。 所以,可以通过直方图信息来修改图像的灰度值。如果将一种灰度修改为另一种灰度,那么这意味着这种改变不是针对某些像素的,而是整体性的,新的颜色值只与当前像素的颜色值相关。这种关系,通常可以

2017-01-10 22:25:48 8341

原创 OpenCV计算和显示图像直方图

要在OpenCV中计算直方图,可调用函数calcHist(),void calcHist(const Mat* images,//源图像 int nimages,//源图像的个数。设为1,则仅为一个图像的直方图 const int* channels,//使用的通道 InputArray mask, //掩码,(可设置哪些像素不参与直方图计算) OutputArray hist, //

2017-01-10 21:03:36 7603

原创 图像算法中的设计模式(二):用控制器设计模式实现功能模块间通信

在构建更复杂的程序时,你需要创建多个算法来协同工作,以实现一些高级功能。要合理地构建程序并让所有的类能互相通信,程序将会变得越来越复杂。因此在一个类中集中对程序进行控制,是非常有益的。这正是控制器设计模式背后的思想。以图像算法中的设计模式(一):使用策略模式设计算法 这篇博客里使用的颜色检测算法为例。设计一个Controller类,它的首要任务是创建执行程序所需的类。在这里只执行颜色检测这一算

2016-12-29 11:50:55 1631 2

原创 图像算法中的设计模式(一):使用策略模式设计算法

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。总体来说,一个设计模式就是一个可重用的、让代码更容易被他人理解的、可靠性的解决方案。 策略设计模式的目的就是把算法封装进类。封装后,算法之间互相替换,或者把几个算法组合起来进行更复杂的处理,都会更加容易。而且这种模式能够尽可能地将算法的复杂性隐藏在一个直观的编程接口之后,因而有利于算法的部

2016-12-29 10:47:50 1451

原创 OpenCV对像素的操作

一、访问像素值利用Mat的at函数可以访问元素。因为Mat可以接受任何类型的元素,所以at函数被实现成一个模板函数,在调用时必须指定图像元素的类型:image.at<uchar>(j,i)=0;//或,对于彩色图像image.at<cv::Vec3b>(j,i)[channel]=0;channel索引用来指明三个通道的一个。因为彩色图像有3个通道,所以访问彩色图像的像素会返回一个向量。Open

2016-12-27 18:07:39 6381 1

原创 OpenCV里常用的数据结构(Mat,Mask,Scalar,Range,InputArray,OutputArray等)

一、读取,显示和保存图像在这里只是进行图像读取、显示和保存,一些基本操作。需要引入两个头文件:定义了图像数据结构的核心库core.hpp和包含了所有图形接口函数的highgui头文件。#include"opencv2/core/core.hpp"#include"opencv2/highgui/highgui.hpp"#includeint main(){ //创建空图像,并读

2016-12-26 11:33:15 3312

原创 在Visual Studio下配置OpenCV的3种方式

这里以VS2013和OpenCV2.4.12为例。首先将OpenCV下载安装好,配置的过程可以分为两个步骤:一是设置环境变量;二是配置项目属性表。本文总结了网上所有的配置方式,设置环境变量这一步都一样,差异出现在配置属性表这一步上。因为修改属性表的位置不同,所以这里分为3种方式。设置环境变量首先设置环境变量。右击"我的电脑",单击"属性",打开一个页面。找到"高级系统设置",单

2016-12-26 09:30:57 5452

原创 leetcode 101. Symmetric Tree 解题笔记

101. Symmetric TreeGiven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2

2016-12-20 15:32:35 619

原创 图像接缝裁剪(seam carving)算法实现-SIGGRAPH 2007

seam carving是SIGGRAPH 2007数字图形学年会上,以色列两位教授提出的算法,用于实现“内容保留”的图像伸缩。 出自论文《Seam Carving for Content-Aware Image Resizing》,作者的个人主页有对该算法的描述。常规的图像伸缩基于采样和插值,图像内容会产生拉伸或压缩,比如图像中有人脸等内容,通常产生糟糕的效果。seam carving的基本

2016-12-19 19:21:03 14985 4

原创 leetcode 198. House Robber+动态规划

来自Leecode上的一道easy题目《房屋盗贼》,题目可简述为:你是一个职业的盗贼,去偷沿街的一连串房子,每个房子都有一定数目的珠宝。唯一的限制就是不能偷窃相邻的两个房屋,这样会触发报警系统。然后最后的问题是求最大收益。用编程术语描述即是:给定一个数组,里面存储的非负整数,代表相应房间的珠宝数量,按照不能访问相邻元素的原则,求取访问的元素之和的最大值。比如测例:输入[1,2,3,10,5],输出

2016-12-14 15:28:49 783

原创 leetcode 437.path sum iii

题目描述(翻译):给你一个二叉树,每个结点存的是整数。再给你个数值作为和,请找出和是这个数值的路径数量。路径没有要求起点或终点必须是根结点或叶子结点,但是它必须是向下的(只能按从父结点到子结点的顺序搜索)。树有不超过1000个结点,值在-1000 000到1000 000的范围。You are given a binary tree in which each node contains

2016-11-27 13:40:52 972

原创 leetcode 415.Add Strings

题目难度:easy这是一道乍一看非常简单的题,简单到像我这样的学渣看到题目之后有强烈的码代码的冲动:“写一个字符串转数字的函数,相加求和,使用to_string再转回字符串,Over!”写完之后信心满满的提交,然后就发现在一个大的case上报了错,检查一下,发现是int不够盛!usigned int呢,不够!long!long long!都不够,检查题干发现:The length of b

2016-11-03 19:07:04 507

原创 leetcode 136.Single Number

leetcode=》single number题目描述:一个整型数组,除了有一个单独元素,其余所有元素都出现两次,请找出这个单独元素。要求线性时间复杂度,不使用额外内存。巧妙又很简洁的解法:使用抑或(XOR)位运算。解法来自leetcode讨论区:My O(n) solution using XORclass Solution {public: int singleNum

2016-10-20 16:25:02 553

原创 leetcode 33.Search in Rotated Sorted Array 旋转数组二分查找法搜索

题目来源leetcode 33.Search in Rotated Sorted Array 地址:点击打开链接代码class Solution {public: int search(vector& nums, int target) { int n = nums.size(); int first = 0; int last = n

2016-10-15 16:07:45 773

原创 使用MFC编写绘图程序的总结

之前学习了C++面向对象和STL(标准模板库)的知识,苦于没有实战项目来加深理解。于是翻来Ivor Horton 编写的《Visual C++ 2013 入门经典(第7版)》这本书,把书中绘图的项目程序码了一遍。这个项目是一个基于MFC多文档的桌面应用程序,完成这个项目除了增加了对C++面向对象编程的理解,同时也加深了对MFC的理解,在整个过程中我侧重于把握前者。这是第二遍写这本书的代码,第一次C...

2016-09-14 09:37:08 7277 3

原创 MySQL数据库的增删改查

为了开发出一个家教信息服务网站,已经设计好家教注册登录等页面的表单,接下来本文解决的问题即是:将表单提交的内容上传到服务器端数据库中。系列文章汇总:一、整体设计:家教信息服务平台的开发二、前端设计:表单实现登录注册功能三、后台设计:MySQL数据库的增删改查连接数据库上篇文章涉及到表单的设计, 都是靠近前端,也就是能够直接表现在浏览器上的。表单提交后的PO...

2016-08-24 20:02:00 1480

原创 表单实现登录注册功能

为了开发出一个家教信息服务网站,家教注册登录,家教信息发布这些都需要通过表单还实现。系列文章汇总:一、整体设计:家教信息服务平台的开发二、前端设计:表单实现登录注册功能三、后台设计:MySQL数据库的增删改查登录/注册的实现在"我是大学生"子网页下设置两个超链接,完成用户的登录/注册分步注册页:分步表单这一部分是从网上搜...

2016-08-24 11:05:26 17545

原创 家教信息服务平台的开发

本文源码下载:点击这里本文网站效果:一诚家教最近想搭建一个大学生家教信息网站。实现功能包括:①家教信息发布;②大学生信息注册、登录、预约;③家教信息显示;教员库显示;④网站介绍等。但是作为一个非计算机专业的我,完全零基础和零概念,也不知道使用什么技术!首先了解到网页是由一种html格式的文档组成,所以在网易云课堂上学了html的知识(关于前端开发的课真是很多啊),学会了制作包含文字图片...

2016-08-23 21:42:37 4803

多幅图像拼接matlab实现 源码下载

多幅图像拼接matlab实现 sift特征提取、描述、匹配、RANSAC、仿射变换

2017-03-06

视频捕捉软件amcap

小巧的视频捕捉软件,占用空间不足1M,能够从电脑的网络摄像头或者USB摄像头中捕获视频

2017-01-18

家教信息服务平台开发

自己写的家教网站代码,功能简单,代码层次很清晰。功能包含发布信息、登录注册、查询信息等。使用php,html、mysql、bootstrap等技术工具。文件中有导出的数据库,新建账户导入数据库,重新设置连接即可完整复现网站。

2016-10-18

干涉图条纹追踪Matlab

包含有程序代码和干涉图片。运行程序在干涉图中选取某一暗条纹中心一点,追踪该条纹所有中心点。用matlab实现。

2015-11-16

空空如也

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

TA关注的人

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