自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 图像去雾

暗通道与导引滤波标签(空格分隔): 论文学习笔记暗通道与导引滤波暗通道与图像去雾1 暗通道理论2雾的成像模型3暗通道理论去雾推导4 实验结果5 该理论的缺陷导引滤波1导引滤波概述2数学推导3实验效果31去雾效果32边缘保持效果4算法复杂度说明5加权导引滤波实际用途1. 暗通道与图像去雾雾霾是特定气候与人类活动相互作用的结果。高密度人口的经济生产及社会活动会排放大量细颗

2017-02-19 15:22:18 13138 1

原创 西电渣硕面试经历

渣硕面试经历标签(空格分隔): 学习笔记一直在犹豫要不要写个面经,毕竟不是dalao,但是感觉我的情况应该是大多数人的状况,写出来还是值得一丢丢参考价值的。 先说一下自己的背景,本科在西电读的英语专业,拿了文学学士..大三的时候心血来潮考了个硕士,考了西电的电院,硕士期间主要做的方向是图像处理,到研二下开始入了深度学习的坑,用tf搭网络,跑跑数据集什么的。 总结起来就是,硕一的时候就是个连hel

2017-09-26 17:45:07 6909 3

原创 Tensorflow + Mnist (两层CNN,两层全连接)

前面几天中断了好几天,装了个linux,搭建了一下深度学习环境。入坑tensorflow,算是目前相当方便的一个平台了。环境的搭建我有单独写了个博客。 我搭建的环境 ubuntu16.04LTS + python3.6+tensorflow1.2 我的硬件环境: i7-4720HQ @2.60ghz*8 + 950m 直接上手tensorflow的入门教程,mnist手写字符的识别,ten

2017-06-25 16:34:05 2572

原创 好用常用的排序算法

好用常用的排序算法标签(空格分隔): 算法学习常见的八大排序算法:插入排序,选择排序,堆排序,快速排序,冒泡排序,归并排序,希尔排序,基数排序。其中笔者常用的排序算法:对于数据量较小通常采用插入排序,数据量较大选择快速排序,数据量较大且要求稳定性通常选择归并排序。1、插入排序1.1 算法原理:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。(类比打扑克牌

2017-06-21 17:23:22 410

原创 python从入门到机器学习

python从入门到机器学习学习笔记最近刚好有时间,前面一段时间看了tensorflow,看了深度学习的理论,可是自己还不会python。让我自己写个什么机器学习算法,还真有点困难。所以就吧python基础拿出来看看;所以这个笔记的标题是按时间+内容进行索引的第一阶段:python基础0615python基本数据结构1)list: a[1,2,3] 2)tuple: a(1,2,3) 一旦初始化,

2017-06-21 17:18:45 1578

原创 二进制读写文件

二进制文件的读写C语言源程序一、背景在日吃昂的程序书写中,测试数据的来源分很多种。笔者一般喜欢用C原因呢的rand指令随机产生一些数据,但是在图像处理的程序中,C语言通常是通过读写图像文件。图像文件的产生可以用matlab,一般的流程为用matlab读入图像,在保存为二进制文件。二进制文件的保存通常不用添加文件后缀名,为了区分,也可以自行添加。二、matlab写二进制文件2.1 步骤1)定义文件指针

2017-06-21 17:16:47 495

原创 2017华为codecraft 《大视频时代布局》

2017华为codecraft 《大视频时代布局》标签(空格分隔): 学习笔记一名渣渣的参赛经历,这篇博文,我会把自己试探过的所有想法,写过的所有可行的代码贴上来(然而在竞争激烈的西北赛区,我并没能冲进64强,所以代码大家看看就行了,欢迎拍砖);3.3 — 3.7华为在3月3号在官网上正式发布的赛题(其实提前就已经泄题了,可是提前泄题对我这种渣渣并没有什么卵用,23333) 图中黑色的结点表示

2017-04-16 23:01:04 1426 1

原创 之字形遍历数组

之字形遍历数组 题目要求:给丁一峰大小为m*n的矩阵,要求之字形遍历该矩阵,例如: [[1,2,3,4], [5,6,7,8], [9,10,11,12]] 应该输出[1,2,5,9,6,3,4,7,10,11,8,12];解题思路: 给定一个矩阵,我们从第一个元素进行遍历知道最后一个元素,遍历方式无非是以下四种, step:1 向右移动(这种移动方式只会出现在row==0

2017-02-28 11:21:00 874

原创 主元素

主元素 题目描述:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。解题思路:此题属于简单题,只需要注意计数器的细节就可以了;int majorElements(vector<int> nums){ int major_length = floor(nums.size() / 2); sort(nums.begin(), nums.end());

2017-02-27 10:58:01 249

原创 最长单词

最长单词 题目描述: 给一个词典,找出其中所有最长的单词。 { “dog”, “google”, “facebook”, “internationalization”, “blabla” } 中, 最长的单词集合为 [“internationalization”]在词典{ “like”, “love”, “hate”, “yes” }

2017-02-25 11:06:46 685

原创 迭代器与NULL值的比较

迭代器与NULL值的比较标签(空格分隔): 编程技巧今天做了件比较愚蠢的事情,把迭代器直接当做指针用了。在c++中,迭代器是类,虽然是封装了指针,但是还是不能直接拿来当指针用,那么有时候必须要判断返回的迭代器是否为空,那怎么解决呢? vector<int>::iterator biggest_positive = max_element(positive.begin(), positive.e

2017-02-24 11:10:15 4229 1

原创 返回最长上升子序列

返回最长子序列 题目要求: 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)样例 给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4.给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [1,

2017-02-24 11:09:42 372

原创 最后一个单词的长度

题目要求: 给定一个字符串, 包含大小写字母、空格’ ‘,请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。解题思路: 本题难度为容易,也没有需要注意的细节,直接从给定字符串的最后一个字符开始向前移动指针,直到指向的字符内容为’ ‘时,返回计数器;int lengthOfLastWord(string &s){ vector<char> tmp; int res

2017-02-23 11:54:40 279

原创 左填充

左填充 题目要求:leftpad("foo", 5)>> " foo"leftpad("foobar", 6)>> "foobar"leftpad("1", 2, "0")>> "01"分析: 用单个字符来填充给定字符串,使其达到输入当中的size要求。由于题目中给的条件和描述都很模糊,所以这道题在lintcode上做出来的人很少,其实看懂题目的意思,这道题也就很好做了。算法分析:st

2017-02-22 11:19:21 465

原创 翻转二叉树

题目要求:翻转一颗二叉树,使得该二叉树的所有左右子树发生翻转; 例: 解:该题可用递归,将左右子树的位置进行翻转置换 void invertBinaryTree(TreeNode *root) { // write your code here //算法设计思路:遍历二叉树的所有节点,然后将它的左右儿子进行位置上的对调 //if the ro

2017-02-21 19:05:51 418

原创 多线程

C++中的类与多线程标签(空格分隔): 学习笔记背景:项目需求得把原来写的一个单线程版本改为多线程实现,已达到速度需求。原本的单线程版本已经封装好成类。一、多线程的循环创建、申请、及使用按照惯例,先贴代码://头文件#include <process.h> //创建以及初始化锁HANDLE hMutex;hMutex = CreateMutex(NULL, FALSE, NULL);//上锁

2017-02-21 18:47:24 222

原创 链表插入排序

链表插入排序 题目描述:用插入排序法对链表进行排序 given 1->3->2->0->NULL, return 0->1->2->3->NULL 算法描述: 算法一:将题目中给出的链表数据结构转换为C++标准库中的标准list数据结构,调用c++标准库中的list算法进行排序即可完成 算法二:将题目中给出的链表数据结构转换为vrector,对vector进行插入排序,插入排序的算法如下所

2017-02-21 17:42:49 462

转载 插入区间

12 插入区间 Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times

2017-02-21 17:41:53 458

原创 快乐数

快乐数 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 要求输入一个数,判断它是否为快乐数 算法的思路很简单,

2017-02-21 17:41:25 928

原创 将整数A转换为整数B

将整数A转换为整数B将10进制整数A转换为10进制整数B,究竟改变了多少bit位。version 1将A与B进行异或操作得到C,统计C中1的个数;int countBit3(int A, int B){ int count = 0; int C = A ^ B; vector<int> c = trans2Binary(C); for (size_t i = 0;

2017-02-21 17:39:23 433

原创 克隆二叉树

克隆二叉树题目要求:返回一个与给定二叉树相同结构域内容的二叉树 算法思想:克隆二叉树的步骤可分为两步进行,二叉树的前序遍历和前序遍历二叉树 下面直接贴代码: TreeNode* cloneTree(TreeNode *root) { // Write your code here //pre order traverse binary tree

2017-02-21 17:37:56 377

原创 二进制数当中的1

二进制数当中的1题目要求:给定一个整型的数,返回此整型数的对应二进制数当中1的数目、version 1这一版本的算法,是先计算输入数对应的二进制数,将二进制序列存放在一个vector当中,最后通过计算二进制序列当中元素1的个数返回答案。唯一需要注意的是对输入的负数要先进行处理,这里采用的处理方式是直接采用强制类型转换。 int countOnes(int num) { // wr

2017-02-21 17:37:00 378

转载 链表求和

链表求和version one两个指针分别遍历两个链表,只需要注意好进位关系即可。其中c代表进位,temp代表链表中数字的临时加和。 ListNode *addLists(ListNode *l1, ListNode *l2) { // write your code here if (l1 == NULL) { ret

2017-02-21 17:36:03 401

原创 二进制求和

二进制求和题目要求: ![http://static.zybuluo.com/liu-matthew/x3gzdg2kegu0k81kgo1cr7rh/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20160821124353.png][1]6.1 version one string result = ""; int c = 0, num = 0;

2017-02-21 17:33:38 339

原创 不使用算术运算符实现加法运算

不使用算术运算符实现加法运算version one在不使用算术运算符的前提下实现数的加法运算,首先应该想到的是用位运算符,当所有数的二进制数相加不会产生进位的情况下,返回的二进制数就是真值。当相加的结果产生进位时,将两个数进行相与操作,并对两个数进行异或操作并左移一位,重复上述模拟进位的过程,直到不出现进位。 int aplusb(int a, int b) { // write

2017-02-21 17:31:20 673

原创 查询斐波那契数列

查询斐波那契数列version one最容易想到的做法当然是递归的方法,采用递归的时候只要控制好跳出递归的条件即可,但是当计算的数十分大时,递归调用会产生庞大的冗余计算,这是比较耗时的,改进方案见version two、int fibonacci(int n) { // write your code here if(n == 1) {

2017-02-21 17:30:20 362

原创 移动零

题目要求:在不改变数组中元素顺序的前提下,将数组中的零元素移至数组末尾; version one 由于题目过于简单,这里就只贴出一种方案,复杂度为o(n)o(n),先遍历数组,将非零元素依次填充,最后将数组尾后补零,直到填充满数组为止。唯一的技巧就是用一个 size_t变量来统计数组当前的位置。void moveZeroes(vector<int>& nums) { // Wr

2017-02-21 17:29:32 206

原创 合并排序数组

题目要求:合并两个排序好的数组2.1 version one完全采用C++内置函数,不用考虑任何算法,运行通过 vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { // write your code here vector<int>nums_out; nums_out.insert(num

2017-02-21 17:28:21 347

原创 返回两数组的交

题目要求:返回两数组的交,同样的数字不能出现。如A = [1,2,2,1,]; B= [ 2,2];则answer = [2]1.1 version one由于第一次编写C++程序,采样最原始的方法,将数组2中的每个元素在数组一中进行遍历查找。预处理是将两数组分别排序并删除重复元素。vector<int> intersection(vector<int>& nums1, vector<int>& n

2017-02-21 17:25:24 299

转载 内存解析(static,stack,heap,const char,code segment)

内存解析(static,stack,heap,const char,code segment)标签(空格分隔): 学习笔记在C/C++中,编译程序占用的内存分成5个部分,它们分别是堆(heap),栈(stack),全局/静态储存区(static) ,常量储存区和程序代码区。静态存储区:全局变量和静态变量被分配到同一块内存中,在C语言中,全局变量分为初始化和未初始化,在C++中没有区分,它们共占用一块

2017-02-21 17:20:57 1022

转载 浅析基于小波分解的图像融合

浅析基于小波分解的图像融合标签(空格分隔): 论文学习笔记(备注:此篇心得基于论文 A wavelet-based image fusion tutorial. Gonzalo Pajares)一、图像融合背景对于同一场景的图像,由于成像方式、CCD的焦距、应用背景灯多种因素的影响下,往往会得到不同关注点下的多幅图像。通过对这项图像的融合,可能使得新产生的图像包含更过的信息,从而有利于人们认知、机器

2017-02-19 15:23:14 4349

转载 matlab常用技巧

matlab编程技巧常用方法积累标签(空格分隔): 编程技巧1)处理某个文件夹中所有指定格式的对象file_path = '.\data\'; % 图像文件夹路径img_path_list = dir(strcat(file_path,'*.jpg')); %获取该文件夹中所有jpg格式的图像img_num = length(img_path_list); %获取图像总数量if img_num

2017-02-19 15:20:08 459

转载 Kmeans++

Kmeans算法源码标签(空格分隔): 算法学习(1)算法概述首先要来了解的一个概念就是聚类,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做

2017-02-19 15:19:06 1655

原创 常用排序算法小结

好用常用的排序算法标签(空格分隔): 算法学习常见的八大排序算法:插入排序,选择排序,堆排序,快速排序,冒泡排序,归并排序,希尔排序,基数排序。其中笔者常用的排序算法:对于数据量较小通常采用插入排序,数据量较大选择快速排序,数据量较大且要求稳定性通常选择归并排序。1、插入排序1.1 算法原理:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。(类比打扑克牌

2017-02-19 15:18:20 286

原创 递归分支定界

递归解分支定界问题标签(空格分隔): 算法学习一、算法描述线性规划是日常常用的算法之一,通过线性规划的对偶单纯性,可以解决最大流,最短路径等常见的规划问题。但是在TSP问题中,所要求得的解释选择或者不选择当前的边,输出结果也就是只有0,1两种结果,此种问题也被称为0,1规划。或者当我们计算给每条边分配怎样的权重的时候,最大最小化代价函数问题,也被称为整数规划的问题。二、算法描述(1)求整数规划的松弛

2017-02-19 15:17:47 1368

原创 自适应方向提升小波去噪

提升小波与方向提升小波标签(空格分隔): 算法学习1、第二代提升小波……(留在日后填写,原理以及实现细节,这里先直接贴程序吧)2、自适应方向提升小波2.1main函数clear all;close all;clc%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%此文件主要实现一种简单的自适应方向小波去噪%%基于第二代提升小波的预测和更新两

2017-02-19 15:17:03 4738 1

原创 opencv学习笔记

opencv学习笔记标签(空格分隔): 学习笔记(1)操作像素1.1对像素值的索引1.1.1一维矩阵if(iamge.channels()==1){image.at<uchar>(i,j);}初始化矩阵的某一行 result.row(0).setTo(cv::Scalar(0));//单独设置矩阵中某一行的像素值 result.row(result.rows - 1).setTo

2017-02-19 15:15:13 1578

原创 c++学习笔记

c++学习笔记标签(空格分隔): 学习笔记(本学习笔记整理于2016年暑假期间,在编写了超过3000行的代码之后重学c++ primer,获得的一些新鲜想法和技巧)一、c++学习基础1.1 c++基础1).\指出该文件在当前目录中; 2)为了处理输入,使用cin; (cin>>V1V_1>>V2V_2,第一个输入给V1V_1,第二个输入给V2V_2)  为了处理处理输出,使用cout;  ce

2017-02-19 15:14:36 707

原创 cuda学习笔记

cuda学习笔记标签(空格分隔): 学习笔记一、学习平台1.1学习平台搭建与学习平台基本信息1.1.1学习平台搭建此篇文档的整理基于nvidia公司出品的GeForce GTX 950 GPU,在电脑主机当中安装好独立显卡之后,安装cuda7.0至软件盘(不用再单独安装显卡驱动程序)。在vs下新建cuda工程,就可以编写cuda程序了。1.1.2学习平台基本信息在编写cuda程序时,程序的头文件应该

2017-02-19 15:13:29 451

原创 Matlab调用C接口

matlab调用C语言mex标签(空格分隔): 学习笔记一、为什么要用C语言编写MEX文件MATLAB是矩阵语言,是为向量和矩阵操作设计的,一般来说,如果运算可以用向量或矩阵实现,其运算速度是非常快的。但若运算中涉及到大量的循环处理,MATLAB的速度的令人难以忍受的。解决方法之一为,当必须使用for循环时,把它写为MEX文件,这样不必在每次运行循环中的语句时MATLAB都对它们进行解释。二、 编译

2017-02-19 15:12:37 889

空空如也

空空如也

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

TA关注的人

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