lens

Camera lens distortion in OpenGL

孤者浪人 提交于 2020-06-26 05:52:23
问题 I'm trying to simulate lens distortion effect for my SLAM project. A scanned color 3D point cloud is already given and loaded in OpenGL. What I'm trying to do is render 2D scene at a given pose and do some visual odometry between the real image from a fisheye camera and the rendered image. As the camera has severe lens distortion, it should be considered in the rendering stage too. The problem is that I have no idea where to put the lens distortion. Shaders? I've found some open codes that

摄像头模组基础扫盲

China☆狼群 提交于 2020-03-28 12:14:43
手机摄像头常用的结构如下图37.1所示,主要包括镜头,基座,传感器以及PCB部分。 图37.1 CCM(compact camera module)种类 1.FF(fixed focus)定焦摄像头 目前使用最多的摄像头,主要是应用在30万和130万像素的手机产品。 2.MF(micro focus)两档变焦摄像头 主要用于130万和200万像素的手机产品,主要用于远景和近景,远景拍摄风景,近景拍摄名片等带有磁条码的物体。 3.AF(auto focus)自动变焦摄像头 主要用于高像素手机,具有MF功能,用于200万和300万像素手机产品。 4.ZOOM 自动数码变焦摄像头 主要用于更高像素的要求,300万以上的像素品质。 Lens部分 对于lens来说,其作用就是滤去不可见光,让可见光进入,并投射到传感器上,所以lens相当于一个带通滤波器。 CMOS Sensor部分 对于现在来说,sensor主要分为两类,一类是CMOS,一类是CCD,而且现在CMOS是一个趋势。 对于镜头来讲,一个镜头只能适用于一种传感器,且一般镜头的尺寸应该和sensor的尺寸一致。 对于sensor来说,现在仍然延续着Bayer阵列的使用,如下图37.2所示,图37.3展示了工作流程,光照à电荷à弱电流àRGB信号àYUV信号。 图37.2 图37.3 图37.4 图37.4展示了sensor的工作原理

How to modify fields of a nested custom data type with lenses, when modifications depend on indices

人走茶凉 提交于 2020-03-25 21:54:08
问题 Considering the following : {-# LANGUAGE TemplateHaskell #-} import Control.Lens data Typex = Typex { _level :: Int , _coordinate :: (Int, Int) , _connections :: [(Int,(Int,Int))] } deriving Show makeLenses ''Typex initTypexLevel :: Int -> Int -> Int -> [Typex] initTypexLevel a b c = [ Typex a (x, y) [(0,(0,0))] | x <- [0..b], y <- [0..c] ] buildNestedTypexs :: [(Int, Int)] -> [[Typex]] buildNestedTypexs pts = setConnections [ initTypexLevel i y y | (i,(_,y)) <- zip [0..] pts ] setConnections

How to modify fields of a nested custom data type with lenses, when modifications depend on indices

瘦欲@ 提交于 2020-03-25 21:54:08
问题 Considering the following : {-# LANGUAGE TemplateHaskell #-} import Control.Lens data Typex = Typex { _level :: Int , _coordinate :: (Int, Int) , _connections :: [(Int,(Int,Int))] } deriving Show makeLenses ''Typex initTypexLevel :: Int -> Int -> Int -> [Typex] initTypexLevel a b c = [ Typex a (x, y) [(0,(0,0))] | x <- [0..b], y <- [0..c] ] buildNestedTypexs :: [(Int, Int)] -> [[Typex]] buildNestedTypexs pts = setConnections [ initTypexLevel i y y | (i,(_,y)) <- zip [0..] pts ] setConnections

LeetCode——最接近的三数之和

前提是你 提交于 2020-03-05 22:28:26
题目描述: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 答题思路: 1)对数组进行排序 2)设置一个总循环,循环变量设为i 3)设置左右指针,分别从i+1和最后的元素开始进行遍历 4)得到结果 具体程序如下: class Solution : def threeSumClosest ( self , nums : List [ int ] , target : int ) - > int : lens = len ( nums ) nums . sort ( ) m = nums [ lens - 1 ] + nums [ lens - 2 ] + nums [ lens - 3 ] n = nums [ 0 ] + nums [ 1 ] + nums [ 2 ] for i in range ( lens ) : L = i + 1 R = lens - 1 if i > 0 and nums [ i - 1 ] == nums [ i ] : i += 1 continue while L < R : a = nums [ i ] + nums [ L ] + nums [ R ] if a == target : return a

673. Number of Longest Increasing Subsequence

浪子不回头ぞ 提交于 2020-03-05 04:32:19
问题描述: Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: Input: [1,3,5,4,7] Output: 2 Explanation: The two longest increasing subsequence are [1, 3, 4, 7] and [1, 3, 5, 7]. Example 2: Input: [2,2,2,2,2] Output: 5 Explanation: The length of longest continuous increasing subsequence is 1, and there are 5 subsequences' length is 1, so output 5. Note: Length of the given array will be not exceed 2000 and the answer is guaranteed to be fit in 32-bit signed int. 解题思路: 可以用一个数组lens存储到这个数字位置最长的自增序列的长度,用一个数组cnt存储以这个数字为结尾的最长的递增序列的个数。 更新lens比较好更新:比较nums[i] 和

堆排序

若如初见. 提交于 2020-03-02 21:01:35
一 初识堆 堆 数据结构是一种数组,它可以视为一颗完全二叉树。如下图: 图中的树是数组,A={16, 14, 10, 8, 7, 9, 3, 7},圈内表示数值,圈外红色的数字表示数组的下标。 array_size是数组的大小(此时是8),heap_size是构建堆的元素的多少。满足 heap_size<= array_size 给定某结点的下表i,其父结点下标为PARENT(i), 左儿子下标为LEFT(i), 右儿子下标为RIGHT(i)。满足 PARENT(i) = int((i-1)/2) ; LEFT(i) = 2*i+1; RIGHT(i)=2*i+2 最大堆满足:对于任何结点(除根节点)PARENT(i) > i 最小堆满足:对于任何结点(除根节点)PARENT(i) <i 叶子节点(下标):int(i/2), int(i/2)+1......array_size 下面的介绍以 最大堆 为例 二 保持堆的性质 最大堆的性质为 PARENT(i) > i,因此对于特定的结点,应满足比左右儿子都大 、 在上图中下标为1的结点值为2,左孩子为4,右孩子为1,1结点比左孩子小,就让1结点和3结点数值换过来。若此时4结点大于4,就把1结点和4结点数值换过来。 参考程序: void MAX_HEAPIFY(int *A, int heap_size, int i) //i

python(leetcode)-48旋转图像

点点圈 提交于 2020-02-23 11:07:21
给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ]  这道题其实不难懂,有线性代数基础的人都知道转置矩阵,虽然这题与转置不同但是题目意思相似。90度顺时针旋转矩阵。并且要求不能新建矩阵存储即在原矩阵上操作。 虽然题目不难懂,但是做起来非常麻烦,笔者想了很久才做出这题,主要是逻辑上的思路一定要清晰。 先上代码(通过-44ms)击败99% 1 class Solution: 2 def rotate(self, matrix): 3 """ 4 :type matrix: List[List[int]] 5 :rtype: void Do not return anything, modify matrix in-place instead. 6 """ 7 lens=len(matrix[0]) 8 for i in range(lens//2): #对第i行进行换位操作 9 for j in range(i,lens-1-i): #对第j列进行换位操作 10 temp

最长回文 HDU - 3068 (Mannacher模板题)

[亡魂溺海] 提交于 2020-02-08 00:06:26
#include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn=110010; char t[maxn],s[maxn*3]; int p[maxn*3],lens; void init() { memset(s,'\0',sizeof(s)); int len=strlen(t); lens=0; s[lens++]='+'; for(int i=0;i<len;i++) s[lens++]='#',s[lens++]=t[i]; s[lens]='#'; } int Manacher() { int Maxlen=1,id=0,mx=0; memset(p,0,sizeof(p)); for ( int i=1; i<lens; i++ ){ p[i]= mx>i ? min( p[2*id-i],mx-i) : 1; while( s[i-p[i]] == s[i+p[i]] ) p[i]++; if( mx < i+p[i] ) mx=i+p[i], id=i; Maxlen=max( Maxlen,p[i]-1); } return Maxlen; } int main() { while(~scanf("%s",t)){ init(); printf

Haskell use first level lenses to create complex lens

拜拜、爱过 提交于 2020-01-23 02:15:07
问题 Let's say, I have an object with two fields: data Example = Example { _position :: Int , _storage :: [Int]} how do I construct a lens that focuses on position element inside storage ? Also, will it be possible to restrict position values being modified via lenses to a range based on storage size? It seems like alongside could be used somehow, since Example is isomorphic to a tuple, but I can't comprehend the way to do that. I'm not sure how to phrase the question, so I was unable to find much