自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (11)
  • 收藏
  • 关注

原创 C和C++文本读写速度对比

C和C++文本读写速度对比读到CSDN论坛中有一个关于C和C++文本读写速度的问题,帖子网址为http://bbs.csdn.net/topics/260005411#new_post 。网友测试结果为C语言的执行速度要优于C++,本文对此感到不太相信,于是在自己的电脑上进行了验证。验证平台是笔记本Ubuntu操作系统。g++编译,均采用O3优化等级。测试文本大小为842M。g++ -O3 test

2017-08-04 15:39:31 2113

原创 利用C++读取文本最后一行信息

当文本数据太大的时候,如果想要获取的信息在最后一行,就需要从最后一行获取信息。下面是一个实现该任务的代码。例子文本中保存的数据如下,先需要获取, 最后一行第一个数字3,因为其记录了文本总共的行数信息。本例子先将文件流定位到文件末尾,然后依次向前进行换行符查询,找到第一个换行符,便找到最后一行的启始部分。从程序运行结果看,下面的文本大小一共为30字节,在每一行的末尾均有一个换行符。0 aaa1 bb

2016-12-27 16:18:15 3568

原创 等额本金和等额本息两种贷款方式的比较

本文介绍两种还款方式:等额本金、等额本息。通过分析认为等额本金的偿还方式更加划算。 等额本金:每个月偿还相同本金分额,并且支付上个月剩余本金产生的利息。 等额本息:每个月偿还相同数目的款项,按照复利计算,最终数目和本金按照福利计算数目相同。 假设需要贷款金额为b,贷款月利率为x,一共贷款n月,等本息还款时月还款额为a。等额本金还款 每月还款本金bn\frac{b}{n},另外还要还每月产生

2016-12-08 14:34:46 1262

原创 CRF和MRF概率模型的关系

CRF和MRF概率模型的关系最近再次阅读了文献Discriminative fields for modeling spatial dependencies in natural images,对CRF模型和MRF模型有了进一步的理解。总体来说这两者都是属于概率图模型范畴,MRF的理论是很理想的,但是其计算过程复杂,所以实际使用的是它的简化版本,该版本易于计算实现,但同时也削弱了其本身性能。CRF是

2016-12-06 21:15:40 3253

原创 利用stringstream 类实现字符串和数值间转换

利用stringstream 类实现字符串和数值间转换在C语言中需要利用atoi,itoa等函数实现字符串和数值之间的转换。在C++中可以使用std::stringstream类实现该功能。 std::stringstream派生关系如下图,可以看出该类属于输入输出流功能大类。 下面是两个例子代码。 * 字符串转数值#include <iostream>int main(int argc,

2016-11-28 17:15:08 456

原创 opencv和matlab矩阵类型数据相互传递

由于平时需要经常用到opencv和matlab处理数据,所以,实现两者之间数据传递,是很有意义的。 本文记录了opencv读写txt文本、matlab读写txt文本的方法。并借助txt文本这个中间媒介实现两个软件的数据交互功能。下面以此介绍opencv、matlab读写txt文本的方法。本文介绍的方法均是搜集于互联网。opencv对txt文本的读写方法,依据以下网址改进而得http

2016-07-22 14:53:09 1513

原创 opencv 矩阵元素不同获取方式及其效率对比

opencv 矩阵数据Mat元素获取有四种方式: 直接获取、模板方式、行指针方式、元素地址方式。测试代码如下:#includeint main( int argc, const char** argv ){ //矩阵总共获取次数 uint32_t num = 10000; Mat m(100, 100, CV_64F, Scalar(0)); //定

2016-04-15 14:38:00 899

原创 利用dlopen,dlsym对动态库进行类封装

在程序编写中会使用已有的动态库,如何对这些库函数进行类打包管理,便于后面引用,这是本文要解决的问题。本文分为三步:建立一个简单的动态库、对该动态库进行类封装、测试封装的动态库。本测试在ubuntu 14.04LTS系统上完成。1.建立一个简单的动态库源代码如下:头文件 fun.hppextern "C" int add(int a, int b);extern "C" int s

2016-03-07 15:33:42 1310

原创 利用opencv保存复杂结构的数据

在做图像处理算法测试的时候往往会用到复杂的数据结构来保存最终的处理结果。本文介绍如何使用opencv的FileStorage类实现这一个目的,该功能的实现主要包含三个部分:数据保存、压缩、读取。如果数据量较小的时候可以去除压缩这一步。     FileStorage类有两种组织数据的方法,分别是"{" "}"、"[" "]"两种符号对。"{" "}"符号对,要求期间的每个数据都要有自己的数据名

2016-01-31 16:01:32 968 1

原创 读取PNG颜色索引数据

在某些应用中,可能需要PNG图片每个像素颜色索引值。如在目标检测中,VOC2012数据库中对每个目标类进行了分割标注,不同类别分别采用不同的颜色索引值。如0 表示背景, 1表示飞机等。opencv中的imread函数可以直接读出png RGB颜色信息,但是不能读出每个像素的颜色索引值。所以,本文给出了一个读取png图片每个像素颜色索引的函数。该函数依赖libpng库,并且和opencv相结合,利用

2016-01-27 18:56:26 5288 4

原创 ubuntu 14.04 下安装Armadillo库 (依赖库使用ubuntu专用版本)

在以前的博客中讲过通过通过自己编译依赖库的方式安装Armadillo。但是在使用过程中会出现错误,所以这里记录了一种更简单的安装方式。该安装方式直接采用编译好的ubuntu下的openblas、lapack、arpack库文件,所以安装过程很简单,并且最终运行的结果很完美。下面是以前自己编译安装方式网址:ubuntu 14.04 下安装Armadillo库 进行稀疏矩阵特征分解如果对u

2015-12-15 22:15:49 4104

原创 pkg-config工具包程序编译中的使用

当程序依赖的外部库文件和头文件相对比较多时,每次建立工程都需要对这些库文件进行配置,这个过程比较繁琐,所以pkg-config工具包被开发出来,解决这一个问题。本文主要介绍如何使用pkg-config工具包,并给出opencv和Armadillo软件库才用pkg-config配置的例子。本文实在ubuntu14.04的基础上进行测试。1. 安装pkg-config工具包如果ubuntu系统

2015-10-22 10:31:22 1067

原创 ubuntu 14.04 下安装Armadillo库 进行稀疏矩阵特征分解

图像处理中往往会遇到大型稀疏矩阵的特征值分解问题,如果采用一般的密集矩阵求解方法,对内存要求比较大。所以在稀疏矩阵的基础上进行特征值分解,更加合理。opencv2.49版本中还没有对稀疏矩阵的特征值分解函数,所以自己对此类问题进行了网上搜索。调研了ietl、lapack、Armadillo、Eigen这类库。文章先对各种库进行总结,后面在详细的介绍Armadillo库在ubuntu14.04系统上

2015-10-21 17:25:28 4248

原创 利用matlab获取算法源代码

在matlab2011以后版本,matlab加入了从m函数获取源代码的功能,可以将m文件专为C语言、C++语言。下面是从2015a matlab中使用coder工具的过程。1.首先利用mex -setup命令设置matlab的编译器,直接选择C++即可。2.在命令窗口中输入coder回车,即可打开coder工具。下面是获取imextendmin函数源代码方法

2015-09-16 14:20:29 3428

原创 ostream 保存数据出现乱码原因之一

程序跑完之后,往往需要将结果保存为txt格式,有的时候保存完成后,会出现乱码问题。一般能想到的原因就是txt编辑器编码不合适的问题,除此之外还有一种常常被忽略的原因是我们保存时数据处理不正确。字符型数据按照但字节数据进行保存时,如果字符型数据保存的是不能被正常显示的ASCII值,读该文件时便会出现乱码现象。下面是数据处理不正确导致乱码的例子。要解决这个问题,只要将字符型数据强制转换为整型数据即可。

2015-09-01 20:22:47 1449

原创 opencv多通道数据和多维数据的区别

opencv中经常要用到多通道矩阵来处理彩色图像,同时多维度的矩阵在opencv中也会经常遇到,这里对这两种数据结构做一个对比。总体来说,对这两种数据结构opencv在处理上是不同的,主要是数据的存储安排上不同。多通道数据仍然是按照二维数据的方式来存放数据,不过于正常的二维矩阵相比较,单个元素包含了多个数据值如B、G、R。而多维矩阵是多个层级的二维矩阵组合而成。下面是一些细节对比,和该结论的依据。

2015-08-12 17:27:03 3066

原创 ubuntu系统下cmake 编译matlab中mex文件

cmake 编译工程具有独特的优势,特别对于复杂的工程更是如此。利用matlab直接编译mex文件时,对于文件数据多的工程时,需要列举所有文件,并且要按照依赖关系排序,这些都是直接采用matalb编译mex的缺点。下面通过一个简单的加法函数例子,说明如何利用cmake编译生成mex文件。如何对系统动态库进行设置,使matlab能够正常调用mex函数。首先说明如何生成mex文件。本例

2015-05-19 22:47:39 4680

原创 opencv矩阵赋值函数copyTo、clone、重载元算赋=的比较

opencv矩阵赋值函数copyTo、clone、重载元算赋‘=’之间实现的功能相似均是给不同的矩阵赋值功能。copyTo和clone函数基本相同,被赋值的矩阵和赋值矩阵之间空间独立,不共享同一空间。但是重载元算赋‘=’,被赋值的矩阵和赋值矩阵之间空间共享,改变任一个矩阵的值,会同时影响到另一个矩阵。当矩阵作为函数的返回值时其功能和重载元算赋‘=’相同,赋值运算赋会给矩阵空间增加一次计数,所以函数

2015-01-29 10:14:43 6995

原创 图模型中mincut算法的理解

利用图分割算法对图片进行分割是目前比较流行的算法之一。利用这种方法对图片进行分割时需要对相应的能量函数进行最小值搜索,当能量函数在定义域中属于凸函数时利用梯度下降法、EM等经典算法可以得到唯一的极值解,该解便是全局最小解。但是对于能量函数在定义域中不是凸函数,利用上面的经典算法很容易陷入局部极小值问题,从而很难得到理想效果。虽然采用模拟退火方法可以减轻陷入局部极小值可能性,但是这并不是最优的解法。

2015-01-19 16:18:15 7315 1

原创 Opencv直方图计算是否需要Gpu加速?

众所周知,Gpu加速技术对图像处理具有很大的影响,在前面的博客中通过对比验证了Gpu加速技术对图像滤波的高效率。但是Gpu技术并不是万能的,本文通过比较发现Gpu计算直方图的效率并没有传统计算方法效率高。下面表格是对比结果,时间是通过运行20次求平均值而得,后面给出相应的比较代码。Gpu与Cpu计算直方图效率对比方式Cpu内存Gpu内存效率0.855

2014-12-19 15:59:38 1674

原创 opencv K邻近分类器的使用

利用Mat数据类型训练Opencv K邻近分类器,下面是手册中给出的K邻近分类器使用的例子,该例子是以CvMat形式实现的。通过下面的例子可以知道如何使用Opencv自带的分类器、矩阵数据如何访问、如何画图、如何使用Opencv的随机数生成函数等内容。在第二个例子中已将这些代码部分做了注释。

2014-12-17 19:14:18 922

原创 matlab、opencv、opencv+gpu滤波运行速度的比较

对Matlab、Opencv、Opencv+GPU不同平台图像滤波的效率进行了对比,并给出响应的源代码和对比结果,结果表明Opencv+GPU平台对图像滤波效率最高,后面依次是Opencv、Matlab。

2014-12-09 19:51:34 3082

原创 服从广义高斯分布样本的参数估计

服从广义高斯分布样本的参数估计      图片经过带通滤波(如DCT变换频域系数、小波变换后的小波系数,gabor方向滤波器滤波后的系数)后,其系数服从广义高斯分布,广义高斯分布公式如下所示:参数是广义高斯分布的形状参数,是与标准差有关的参数,x是带通滤波后的系数。当=2时广义高斯分布就是正态高斯分布,此时是标准差的倍。其中分母中的gamma函数如下所示:    令,滤

2014-12-05 08:54:11 5201 10

原创 CNS网络GPU加速配置步骤

本次测试是在Win7 64位操作系统上完成,安装盘均是默认的系统盘C,其它路径可以参照修改,其中采用的编译器是VS2010版本。附录中有NVIDIA支持GPU加速的芯片型号。1.      安装 CUDA driver and CUDA toolkitCUDA driver 安装地址:http://www.geforce.com/drivers选择自动检测GPU型号然后下载驱动。

2014-11-05 11:06:17 2481

原创 Harris角点检测旋转不变性和尺度不变性的数学理解

Harris角点检测算子基本Harris角点检测算子Harris角点检测算子本身具有旋转、平移不变性的特点,但不具有尺度不变性。下面是数学方面的理解。Harris角点检测的灰度相关矩阵为:…………………………………………………………………………………………(1)角点判别式为…………………………………………………………………….(2)两幅图片和.其中是经过平移、旋转、缩放得到

2014-10-20 20:25:45 7904 1

原创 非模态对话框不始终覆盖父对话框的方法

CDlgShowAllPic m_ShowAllPic;if(!m_ShowAllPic.m_hWnd) m_ShowAllPic.Create(IDD_SW_ALLPIC,this->GetDesktopWindow());m_ShowAllPic.ShowWindow(SW_SHOW);

2014-07-03 16:56:29 1889

原创 利用MFC显示IplImage结构图片

利用opencv对图像数据处理的快捷性和MFC全面的界面显示,可以很好的对图片进行处理并形成属于自己的图像处理程序界面。两者结合还是有很大的优势的。 opencv的IplImage图像结构使用方便,并且具有强大的解码功能。对得到的图像数据进行处理后,封装成BMP图片结构,利用MFC的函数进行显示。BOOL CImgCenterDib::ShowIplImg(IplImage*Img,CDC*

2013-10-30 21:08:45 1422

原创 神经网络编程及其训练

1.神经元结构每个神经元包含权值、输入值、激活元素,误差项,阀值组成。在这里用一个结构体Nerver来表示,其中Weights_Temp[20],这个数组在批处理训练的时候会用来,保存个样本训练后权值的改变量。typedef struct{ float Weights[20]; //权值 float Weights_Temp[20]

2013-07-06 00:40:15 1146 1

转载 CCD和CMOS摄像头的区别

首先说一下在闭路电视监控中摄像机的CCD 和CMOS 的结构,ADC的位置和数量是最大的不同。简单的说,CCD每曝光一次,在快门关闭后进行像素转移处理,将每一行中每一个像素(pixel)的电荷信号依序传入“缓冲器”中,由底端的线路引导输出至 CCD 旁的放大器进行放大,再串联 ADC 输出;相对地,CMOS 的设计中每个像素旁就直接连着 ADC(放大兼类比数字信号转换器),讯号直接放大并转换成

2013-05-24 10:43:10 1685

原创 for循环占用的指令周期问题

for循环占用指令周期的影响因素:1.单片机的指令集合,指令所花费的时间周期2.循环变量的数据类型,所占字节数越大,所占指令周期也就越大3.循环体完成的工作以avr单片机为例对于循环代码for(i=0;i对应汇编指令如下:for(i=0;i0000           ;              i -> R16,R170000           ;   f

2013-02-01 11:19:33 8171 1

C++参考手册

本文手册是从www.cplusplus.com/reference网站下载得到。 由于部分外文网站不稳定,或者有时会在无网环境下进行开发, 所以拥有一个离线的C++手册是有必要的。 本手册完全拷贝前面的网站得到, 通过本平台进行分享。

2016-04-24

GNU Autotools

本手册是从https://www.sourceware.org/autobook/autobook/autobook_toc.html网站中下载得到, 详细描述了GNU 中Autoconf,Automake等工具的使用方法。

2016-04-21

利用libpng库读取png图片像素颜色索引值

本文代码利用libpng库解码读取png图片,获取图片像素的颜色索引值,并将结果保存在opencv的Mat数据容器中。

2016-01-27

opencv3.10+opencv_contrib离线html手册

本离线手册是html格式的,内容包括opencv和opencv_contrib这两部分,opencv_contrib模块中加入了最近几年流行的新算法,如Structured forests for fast edge detection。之间上传的手册只有opencv这一部分内容,缺少opencv_contrib内容,这里再次编译后重新上传。

2016-01-13

opencv3.1离线html手册

opencv3.1离线html手册,和opencv官网一样的参考手册。官网手册网址是http://docs.opencv.org/3.1.0/ 由于必须联网才能进行查看,并且在国内访问速度不稳定,所以有一个离线的参考手册还是有必要的。本资源是html格式的参考手册,在文件中利用浏览器打开index.html文件,就可以得到和官网一样的页面,实现离线查看opencv手册的功能。

2015-12-24

Matlab在原图片中画直线

本源代码来自于网站。代码能够在读入的图片中进行直线、折线的绘制,并能够控制端点标记。这个代码弥补了matlab在原图中绘制图形的缺陷。matlab plot函数绘制的线段,并没有改变读入图片的数据,直接保存图片的矩阵数据,不会保留绘制的直线。利用print、saveas 等函数保存厚的图片尺寸和以前大小不同,而且保存的图片存在空白边框问题。该代码完美解决了这一问题。

2015-08-11

max-flow实现mincut方法

Yuri Boykov等人利用max-flow方法实现的图模型mincut分割算法。算法采用C++类实现方法,使用方便,对理解mincut算法很有帮助。

2015-01-19

opencv函数手册包含最新的GPU编程内容

opencv函数手册包含最新的GPU编程内容,基本包含opencv近期新加的函数与数据类型,非常好的编程手册。

2014-12-08

广义高斯分布样本参数估计

实现对符合广义高斯分布样本的广义高斯参数的估计,利用Newton–Raphson迭代方法实现参数的数值解。

2014-12-04

模式识别书籍和matlab程序代码

In troduction to Pattern Recognition A Matlab Approach 一本英文介绍模式识别的书籍,并附有书本matlab代码。书本介绍的通俗易懂,并且有响应代码验证对于理解模式分类实际应用很有帮助。

2014-11-09

深度学习源代码

深度学习源代码,hinton论文附带源代码,包括图像编码和解码两部分。通过训练深层网络降维高位图片数据,并比较复原误差。主要利用级联Boltzmann估计多层网络初始参数,使得多层神经网络可以被很好的训练并得到理想结果。

2014-10-29

空空如也

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

TA关注的人

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