- 博客(201)
- 资源 (9)
- 收藏
- 关注
原创 图像处理论文搜集
学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇
2021-08-13 21:51:32 599
原创 CMOS图像传感器简介(2):Sony CMOS传感器中的几项关键技术
随着图像传感器进入到CMOS时代,尤其是手机摄像头出货量大增后,Sony的图像传感器便在消费领域一骑绝尘。这其中,Sony的先进的图像传感器技术起到了关键作用。本文将要介绍的CMOS图像传感器关键技术中,大部分都是Sony最先商用或者技术领先的。1. Column A/D Converter列读出技术是并行读出传感器中每一行信号的技术,能并行进行模数转换。图1是Sony 2007年商用的列AD...
2020-12-31 22:04:12 4615
原创 MTF、Resolution、Contrast解读
MTF、Resolution、Contrast解读空间频率空间频率:指单位空间内(本文指二维平面),线对数。Resolution与ContrastResolution:指的是相机成像的极限分辨率,表示在成像中,能够用人眼在图像上分辨的极限频率。Contrast:指人眼感受的图像锐度(清晰度)。Resolution与Contrast区别:Resolution是指人眼能分辨的空间频率,仅仅...
2019-04-24 17:35:39 3355
原创 CMOS 图像传感器简介(1):像素结构
随着工艺的发展,CMOS图像传感器的性能已经赶上或超越CCD,再加上CMOS图像传感器在工艺上能很大程度与传统CMOS芯片兼容,它已经成为相机的主流传感器类型。由于只能硬件的迅猛发展,很多应用场景都将碰到CMOS传感器,因此本文从基础出发,介绍CMOS图像传感器的像素结构。1.图像传感器整体架构 CMOS图像传感器本质是一块芯片,主要包括:感光区阵列(Bayer阵列,或叫像素阵列)、...
2018-08-12 16:43:55 61951 10
原创 AE(自动曝光)系统简介
AE系统简介1. 简介 现代成像系统已经很普及了,不仅有给人看的各类相机、手机、行车记录仪,还有用于机器视觉的各类摄像头。在这些成像系统中,一般都有AE功能(自动曝光),它直接关系到画面的亮度和图像质量,是成像的基础。这里对AE系统进行一个简单介绍,相机中的具体实现可能有所区别。2.APEX系统 提到曝光,不得不提APEX(The Additive System of Phot...
2018-08-04 18:33:05 31747 5
原创 Gradient Based Bilinear Demosaic
1. 简介 微软在2004年发表的这篇demosaic文章,也是matlab自带函数demosaic()使用的方法。该文描述方法在线性解马赛克方法中性能优异,能与一些非线性方法媲美,却有更少的资源消耗,也利于硬件实现。下面的内容中,首先介绍了bilinear demosaic方法,然后介绍Gradient Based Demosaic方法,最后对两者的结果进行了比较。2.Biline...
2018-07-07 22:26:12 3430
翻译 9.1.6 随机变量的线性MMSE(LMMSE)估计
假设有样本数据Y=yY=yY=y,需要估计没有样本数据的随机变量XXX。认为待估计值x^x^\hat{x}是yyy的函数: x^=g(y)x^=g(y)\hat{x}=g(y) 例如,给定Y=yY=yY=y,则XXX的MMSEMMSEMMSE估计为 g(y)=E[X|Y=y].g(y)=E[X|Y=y].g(y)=E[X|Y=y]. 但是,我们很难在实际应用中使用MMSEMMS...
2018-05-04 09:58:21 12770
原创 图像处理中的三次卷积插值(Cubic Convolution)
图像插值常用于二维图像中的缩放,以及图像畸变校正。由于图像数据量一般都比较大,本文主要参考Cubic Convolution Interpolation for Digital Image Processing一文,实现并分析文中提出的三次卷积插值算法。三次卷积插值算法的精度介于现行插值和三次样条算法之间,但他才用卷积的方式,减少了计算量,而且在两个方向的插值是可分的,是高档图像软件中图像缩放...
2018-04-29 14:54:28 24405 3
原创 C/C++bug记录
注:本文主要记录在编程实践中遇到的C/C++bug。1.字节对齐 字节对齐涉及到节省内存空间和提高CPU访问内存效率,而一般的PC程序员不会去设置字节对齐(默认的字节对齐访问效率较高)。字节对齐知识点,详见C语言字节对齐问题详解 碰过的bug表现:程序中有一个C++类,它的一个int型变量表现极其诡异,明明给它赋值,但是读出的数据与赋给它的值不一样。通过调试,发现它在读取内存时错误,偏移了
2016-08-31 11:29:42 1301
原创 数码相机一些知识前沿
数码相机一些知识前沿一、Depth from Defocus二、CNN with Demosaic三、Local Tone Mapping
2016-08-10 20:51:51 835
原创 计算机基础知识及编程资源
计算机基础知识及编程资源下载连接一、程序员的自我修养–链接、装载与库 这本书不讲编程,但他讲从代码到运行的程序发生了什么,是程序员们知其然,知其所以然的好书。对程序运行背后的理解,有助于从事编程工作。下载地址:程序员的自我修养–链接、装载与库
2016-08-10 20:44:56 579
原创 C/C++实战实用知识点记录
C/C++实战实用知识点记录1.extern “C”用法。 extern “C”可分为两个部分理解。extern表示这部分的函数或变量可在其他模块中使用。”C”表示该部分的函数采用C的编译方式编译,比如函数void foo(int, int)的名字被编译为_foo,而不是C++中的_foo_int_int。extern “C”有主要两个应用场景:1.在C语言中调用C++函数时,C++函数的.h文件
2016-07-16 17:04:13 711
转载 dllimport与dllexport的作用于区别
dllimport与dllexport的作用于区别(转载与自己的分析) 它们同属DLL的关键字,即导入与导出。这是一篇关于它们的博客: 我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspe
2016-07-16 14:32:44 1153
原创 数码相机原理、图像处理相关资料介绍与下载链接
注:本文主要列出平常搜集的数码相机原理和图像处理相关资料,并给出我再CSDN上共享的下载地址。 一、数码相机原理1. 《Single-Sensor Imaging Methods and Applications for Digital Cameras》,这是国外一本介绍单传感器数码相机的书籍,知识非常全面,非常适合数码相机研发的从业人员。下载链接地址:http://download....
2016-07-12 17:10:13 1288
原创 LeetCode之Kth Largest Element in an Array
/*分治法,采用快排中用到的partition函数。*/class Solution {public: int findKthLargest(vector& nums, int k) { int left = 0, right = nums.size()-1; while(left <= right){ int res = fin
2015-09-28 18:39:48 445
原创 LeetCode之N-Queens
/*深度搜索。*/class Solution {public: vector> solveNQueens(int n) { vector > res; if(n < 1) return res; vector path; vector > res_num; dfs(res_num, path, n, 0)
2015-09-27 17:12:21 375
原创 LeetCode之Unique Paths
/*备忘录法。*/class Solution {public: int uniquePaths(int m, int n) { if(m < 1 || n < 1) return 0; vector > path(m+1, vector(n+1, 0)); for(int i = 1; i <= m; ++i){ for(int j = 1; j <= n; ++j){
2015-09-27 16:36:10 374
原创 LeetCode之Palindrome Partitioning
/*采用深度搜索算法。写法一。*/class Solution {public: vector> partition(string s) { vector > res; if(s.empty()) return res; vector path; partition(s, res, path, -1, 0); return res; } void partitio
2015-09-27 14:58:09 350
原创 LeetCode之Number of Digit One
/*针对每一个数字位进行考虑,例如123N45,考虑所有N为1的数字的数目。根据N取值,N对应为1的数目为(left为N左边的数字,right表示N右边的数字):f(N) = left*100 (N = 0)f(N) = left*100 + right+1 (N = 1)f(N) = (left+1)*100 (N > 1)*/class Solution {public:
2015-09-10 23:05:59 405
原创 LeetCode之Integer to English Words
/*按照提示,将原来数字分成3个一组,每个组内数字字符串化,然后再组合起来。*/class Solution {public: string numberToWords(int num) { string units[4] = {"", " Thousand", " Million", " Billion"}; int i = 0; st
2015-09-09 10:44:39 347
原创 LeetCode之Basic Calculator II
/*用两个辅助vector来进行运算,一个存符号,一个存数字。*/class Solution {public: int calculate(string s) { if(s.empty()) return 0; vector op; vector num; for(size_t i = 0; i < s.size();)
2015-09-09 09:40:54 375
原创 LeetCode之Compare Version Numbers
/*解题思路:比较每个.之间的数字即可,但是题中有一些小trick,需要注意。*/class Solution {public: int compareVersion(string version1, string version2) { size_t i1 = 0, i2 = 0; size_t left1 = 0, left2 = 0; int n1, n2
2015-09-08 20:13:58 320
原创 LeetCode之Reverse Words in a String
class Solution {public: void reverseWords(string &s) { if(s.empty()) return; //删除字符串头尾连续的空格 while(s[s.size()-1] == ' ') s.erase(s.end()-1, s.end()); while(s[0] ==
2015-09-08 17:12:58 302
原创 LeetCode之Shortest Palindrome
/*为了获取最短的回文串,需要找到字符串从头开始的最长回文子串,然后取剩下部分的字符串的逆序加到字符串的前头,即可获得最短回文子串。所以解决该问题的关键部分是寻找以第一个字符开始的最长回文子串,有以下几种方法:1.采用暴力查找,大数据下会超时。2.借用KMP算法来寻找最长回文子串,即本代码中所用方法;3.采用Manacher算法。*/class Solution {public:
2015-09-07 17:09:46 347
原创 LeetCode之Longest Palindromic Substring
/*用dp[i][j]表示子串s[i...j]是否为回文,则有dp[i][j] = d[i+1][j-1] && s[i] == s[j](i+1 < j);dp[i][j] = (s[i] == s[j])(i+1 == j)并且,dp[i][i] = true;。*/class Solution {public: string longestPalindrome(string s)
2015-09-03 19:17:40 283
原创 LeetCode之Power of Two
/*方法一:用2除。*/class Solution {public: bool isPowerOfTwo(int n) { if(n < 1) return false; while(n != 1){ if((n & 1) != 0) return false; n /= 2; }
2015-09-02 20:28:37 271
原创 LeetCode之Pow(x, n)
/*直接模仿数学中的乘幂算法。*/class Solution {public: double myPow(double x, int n) { if(n == 0) return 1.0; else if(fabs(x) < 1e-10) return 0.0; else{ if(n > 0){ if(x > 0.0) return myPowPositive(x
2015-09-02 17:13:59 315
原创 LeetCode之Rectangle Area
/*根据题意,两种情况:1)两个矩形不相交,直接返回两个矩形的面积之和;2)两个矩形相交,返回两个矩形面积之和与交集的面积差。*/class Solution {public: int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { int area0 = (C-A) * (
2015-09-02 16:38:35 313
原创 LeetCode之Sqrt(x)
/*通过二分法搜索。但是要注意两个数相乘可能会大于int能表示的最大值,所以程序中采用long long型数据。*/class Solution {public: int mySqrt(int x) { if(x == 0) return 0; long long left = 1, right = x; while(left < ri
2015-09-02 16:12:08 261
原创 LeetCode之Ugly Number II
/*根据提示,保存一个有序的丑数数组,然后通过不断乘以2,3,5,从中选出最小的数作为下一个丑数。*/class Solution {public: int nthUglyNumber(int n) { vector uglies(1, 1); //uglies.reserve(n); int i2(0), i3(0), i5(0);
2015-09-02 15:41:52 287
原创 LeetCode之Ugly Number
/*判断一个数是否为Ugly Number。如果该数本身为1,2,3,5,那么它即为Ugly Number。否则,判断这个数是否能被2,3,5整除。如果能,则除以2,3,5,然后判断它除过之后的数,否则它不为Ugly Number。*/class Solution {public: bool isUgly(int num) { if(num <= 0) retur
2015-09-02 14:07:56 254
原创 LeetCode之 Delete Node in a Linked List
/*由于不知道前驱结点,因此无法删除当前结点的。为了完成题目中的要求, 唯有一个办法:用后面结点的值将当前结点的值覆盖掉。*/class Solution {public: void deleteNode(ListNode* node) { if(node == nullptr || node->next == nullptr) return; Lis
2015-09-02 10:31:43 284
原创 LeetCode之Intersection of Two Linked Lists
/*思路: 1.找到两个链表的长度; 2.根据这两个链表的长度差,使较长的那个链表向前走相应长度。 3.同时扫描两个链表,寻找它们的交叉节点。*/class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA == nullptr
2015-09-02 10:17:09 288
原创 LeetCode之Palindrome Linked List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ /*思路:为了判断链表是否为回文,需要对比链表中第一个、倒数第一个,第二个、倒数
2015-09-02 09:47:55 251
原创 LeetCode之Remove Linked List Elements
class Solution {public: ListNode* removeElements(ListNode* head, int val) { if(head == nullptr) return head; ListNode *pre, *p; while(head != nullptr && head->val == val){
2015-09-02 09:01:25 281
原创 LeetCode之Reverse Linked List
/*链表的头插法。*/class Solution {public: ListNode* reverseList(ListNode* head) { if(head == nullptr || head->next == nullptr) return head; ListNode node(-1); node.next = head;
2015-09-02 08:43:26 303
原创 LeetCode之Count Primes
/*根据提示求解。*/class Solution {public: int countPrimes(int n) { bool mark[n]; memset(mark, 1, sizeof(mark)); int sqrt_n = sqrt(n); for(int i = 2; i <= sqrt_n; ++i){
2015-09-01 21:46:58 313
原创 LeetCode之Repeated DNA Sequences
/*本题最直观的想法是用Hash Table存储起连续的10个字符串,但是这样会超出内存限制。所以用一个数字代替A/C/GT,减少内存消耗。*/class Solution {public: vector findRepeatedDnaSequences(string s) { vector letters(256, 0); letters['A'] = 0; letters[
2015-09-01 21:24:42 338
原创 LeetCode之Fraction to Recurring Decimal
/*思路:1.计算整数部分;这里主要注意,分子绝对值小于分母绝对值且分子分母异号时,要返回“-0”。2.计算小数部分;思路:用一个hash表记住出现过的余数以及余数对应的位置,如果当前用于计算 小数的余数在hash表中存在,则应返回结果,注意添加循环小数的括号。3.合并整数、小数部分,返回结果。整体来说,思路相对简单,但是写代码时有很多细节需要注意。*/class Solution
2015-09-01 11:23:53 415
原创 LeetCode之Happy Number
/*用一个Hash表记录出现过得数字。采用如下步骤获得结果:从当前正数n开始,1)如果n == 1,则它为happy number,返回true,结束。2)如果n != 1, 且hash表中有等于n的数字,会陷入循环,返回false,结束。3)如果n != 1,且hash表中没有等于n的数字,则将n加入hash表,继续计算下一个n。重复。*/class Solution {public:
2015-09-01 10:21:24 346
cubic convolution/bilinear/nearest image resize matlab实现
2018-04-29
Image Sensors and Signal Processing for Digital Still Cameras
2018-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人