2019年3月22日 上午9:45
【OpenCV】摄像机标定+畸变校正 - 王强_CASIA的博客 - CSDN博客
这篇文章就是操作步骤讲解
OpenCV畸变校正原理以及损失有效像素原理分析
2019年3月21日 下午7:30
OpenCV畸变校正原理以及损失有效像素原理分析 - 一度逍遥 - 博客园
桶形畸变的特征
远离图像中心的地方成像放大率小,因此越远离图像中心的位置畸程度越明显。/%E7%9F%A5%E8%AF%86%E7%82%B9/OpenCV%E7%95%B8%E5%8F%98%E6%A0%A1%E6%AD%A3%E5%8E%9F%E7%90%86%E4%BB%A5%E5%8F%8A%E6%8D%9F%E5%A4%B1%E6%9C%89%E6%95%88%E5%83%8F%E7%B4%A0%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90/B5A67D66-B243-4756-98E2-D3D9AFAB8D77.png)
损失像素的原因:
裁剪之后:
- 相当于与拍摄物体向镜头靠近
- 相当于fx=f/dx ,f不变dx变大,所以fx变小了
- 导致,像素丢失了
/%E7%9F%A5%E8%AF%86%E7%82%B9/OpenCV%E7%95%B8%E5%8F%98%E6%A0%A1%E6%AD%A3%E5%8E%9F%E7%90%86%E4%BB%A5%E5%8F%8A%E6%8D%9F%E5%A4%B1%E6%9C%89%E6%95%88%E5%83%8F%E7%B4%A0%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90/3151D30C-EE4D-46B0-A985-57E7ABA0BA4D.png)
关于齐次坐标的五个问题
2019年3月21日 下午7:30
【机器视觉】张氏法相机标定 - 知乎
总结:
- 当我们需要再三维空间空进行定义、表示某个量 or 动作 or 关系 时。有两个工具可以选择:笛卡尔坐标 or 齐次坐标
- 目前可以表示的量
- 点的齐次坐标
- 线的齐次坐标
- 可以表示的动作
- 点的平移变换
- 可以表示的关系
- 投影透视关系
- 坐标系与矩阵有啥关系:
- 坐标系下的坐标,可以用矩阵、向量表示
- 然后可以进行部分的运算
为什么要定义齐次坐标:
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%85%B3%E4%BA%8E%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87%E7%9A%84%E4%BA%94%E4%B8%AA%E9%97%AE%E9%A2%98/7EC3C3E4-C221-49EF-BC57-6EFD6E56C35D.png)
为什么称之为“齐次”:不论你进行多少“次”的a,在笛卡尔坐标下都一样”齐”
因为:伸缩不变性/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%85%B3%E4%BA%8E%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87%E7%9A%84%E4%BA%94%E4%B8%AA%E9%97%AE%E9%A2%98/DD322BAE-3A8F-4588-BAB7-0203B5ABF772.png)
为什么有了齐次坐标的表示方式我们就可以描述投影透视关系了呢
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%85%B3%E4%BA%8E%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87%E7%9A%84%E4%BA%94%E4%B8%AA%E9%97%AE%E9%A2%98/192A075C-0518-4AC5-B2C8-B7369E69EA15.png)
利用“齐次”实现[点的平移变换]:
- 点的表示:P(px,py,pz,1)
- 在笛卡尔坐标系下
- 仿射变换实现方式:三分量的旋转矩阵 + 缩放矩阵
- 平移变换实现方式:无法通过三分量矩阵实现
- 在齐次坐标下:
- 平移变换实现方式:通过四分量的矩阵实现
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%85%B3%E4%BA%8E%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87%E7%9A%84%E4%BA%94%E4%B8%AA%E9%97%AE%E9%A2%98/15B3B7EE-2FA2-48A7-B607-0420ABA27EB1.png)
- 平移变换实现方式:通过四分量的矩阵实现
为什么齐次坐标可以区分向量和点
点的齐次坐标:P(px,py,pz,1)
线的齐次坐标:v(v1,v2,v3,0)/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%85%B3%E4%BA%8E%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87%E7%9A%84%E4%BA%94%E4%B8%AA%E9%97%AE%E9%A2%98/2809C568-1B99-4956-970C-93FD21A0DCB4.png)
图像转换过程中的第4+1个坐标变换(畸变)
2019年3月21日 下午7:29
注:
- 标定板既可以用于单摄像头,由于求内参
- 也可以用来求多(双)摄像头,用于求外参
畸变模型:
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%9B%BE%E5%83%8F%E8%BD%AC%E6%8D%A2%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E7%AC%AC4+1%E4%B8%AA%E5%9D%90%E6%A0%87%E5%8F%98%E6%8D%A2%EF%BC%88%E7%95%B8%E5%8F%98%EF%BC%89/%E6%9C%AA%E7%9F%A5.png)
构建等式:
- 将1-3进行联立,就可以求出
imgR(U, V) = imgD(Ud, Vd)这个关系,其中包含5个畸变未知数。 - 那么,下一步就是解这其中的5个未知数
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%9B%BE%E5%83%8F%E8%BD%AC%E6%8D%A2%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E7%AC%AC4+1%E4%B8%AA%E5%9D%90%E6%A0%87%E5%8F%98%E6%8D%A2%EF%BC%88%E7%95%B8%E5%8F%98%EF%BC%89/F252DF13-3C74-4CF6-9092-6139AF99A70C.png)
求解:
注:标定板的作用就是提供大量的匹配点,套入等式,进行参数求解
【机器视觉】张氏法相机标定 - 知乎/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%9B%BE%E5%83%8F%E8%BD%AC%E6%8D%A2%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E7%AC%AC4+1%E4%B8%AA%E5%9D%90%E6%A0%87%E5%8F%98%E6%8D%A2%EF%BC%88%E7%95%B8%E5%8F%98%EF%BC%89/051B031F-7BFA-476B-BC00-E28CFDB5832C.png)
cmake自定义编译选项
交换机和路由器有什么区别
2019年3月19日 下午12:03
交换机和路由器有什么区别_百度经验
- 路由器工作在网络层:
- 路由器在网络层,根据IP地址寻址。
- 路由器可以处理“TCP/IP”协议,交换机不行
- 可以为局域网自动分配IP和虚拟拨号
- 路由器可以把一个IP分给多个主机使用,对外IP相同
- 路由器可以提供防火墙,交换机不能提供这个功能。
- 路由器是用来做网间连接,也就是用来连接不同网络的。
- 交换机工作在中继层:
- 交换机在中继层,根据“MAC”地址寻址
- 交换机只是用来分配网络数据的。
- 交换机可以把很多主机连接起来,对外的IP不同。
- 交换机是做扩大局域网接入点的,可以让局域网连进更多的电脑。
理解有符号数和无符号数
2019年3月19日 上午9:51
为啥有符号int的范围是:[(-2^31),(2^31-1)]
理解有符号数和无符号数 - lazycoding - 博客园

计算机转换成补码的优点:从硬件考虑

心算求补的方法

第1周:数值计算篇
2019年3月19日 上午9:51
针对的问题以及要达到的目的:
- 数值计算,我并没有按网上的教程以及一些书的目录的步骤去学习算法,他们很多都是从堆栈开始讲起的。
- 我认为这样不好的原因:
- 目的性不强,这样会导致学习效率低下,并且会很快忘记。
- 我的做法:
- 结合当前的切实问题和需要来针对性的练习
主要参考文章:
链接:
详情:
-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41class Solution {
public:
int reverse(int x) {
//考虑可以溢出:1000*0009
//负数转正数
int neg = 0;
if(x<0){
//排除:-128~127中的-128去反128就直接溢出了
if(x == (-1*INT_MAX -1)) return 0;
x *= -1;
neg = 1;
}
//反转
long long rev=0;
while(x>0){
rev = rev*10 + x%10;//赋值的过程都可能溢出,所以要检验
if(rev > INT_MAX){
return 0;
}
x = x/10;
}
//检验溢出
if(rev > INT_MAX){
return 0;
}
else if(neg){
return -rev;
}
else{
return rev;
}
}
}; -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46class Solution {
public:
bool isPalindrome(int x) {
//考虑负数
if(x<0){
return false;
}
int div = x;
int index = 1;
int ten = 1;
//统计长度index
while(div >= 10){
div = div/10;
index++;
//计算倍数
ten *= 10;
}
cout<<index<<endl;
//首尾进行比较
for(int i=0; i <= index/2 ; i++){
//取首
int begin = x/ten;
begin = begin%10;
ten /= 10;
int end;
//计算倍数
int k = i;
int temp=1;
while(k--){
temp*=10;
}
//取尾
end = x/(temp);
end = end%10;
//cout<<begin<<" "<<end <<" "<<i<<endl;
//比较
if(begin != end) return false;
}
return true;
}
}; -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33class Solution {
public:
int mySqrt(int x) {
//变成二分搜索问题
if(x == 0) return 0;
if(x == 1) return 1;
long long begin=0;
long long end=x;
long long mid = (begin+end)/2;
while(begin <= end){
long long temp = mid*mid;
if(temp == x){
return mid;
}
else if(temp > x){
end = mid;
}
else if(temp < x){
if((mid+1)*(mid+1) > x){
return mid;
}
begin = mid;
}
mid = (begin+end)/2;
}
return 0;
}
}; -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46/*
没过的例子:
1.00000
-2147483648
Input
34.00515
-3
Output
0.00086
Expected
3e-05
2
-1
*/
class Solution {
public:
double myPow(double x, int n) {
if(n == 1) return x;
if(n == 0) return 1;
int flag = 0;
long long n_2= n;
if(n < 0){
flag = 1;
n_2 *= -1;//-2147483648去反会溢出
}
double temp = myPow(x,n_2/2);
if(n_2%2 == 1){
temp= temp*temp*x;
}
else{
temp= temp*temp;
}
cout<<flag<<endl;
if(flag == 1){
return 1/temp;
}
return temp;
}
};
目录(LeetCode)
2019年3月19日 下午4:02
参考网站
2019年3月19日 下午4:01
刷题:
VIP+按企业分类:
漫画:
相当全:
相当全:
题目多,多语言:
GitHub - liuchuo/LeetCode: 🍡 LeetCode Online Judge刷题题解(Java/C++/Python/Ruby/Swift)
各种语言、资料比较全:
GitHub - apachecn/awesome-algorithm: LeetCode, HackRank, 剑指offer, classic algorithm implementation
分类:
耗叔:
动画讲解,但是题比较少:
PAT
GitHub - liuchuo/PAT: 🍭 浙江大学PAT题解(C/C++/Java/Python) - 努力成为萌萌的程序媛~
交流
huahua:C++ youtube 讲解 代码博客都有
google c++11 完整书 pdf 151道题
介绍 · 算法珠玑 在线版
Java 讲解理论清晰 认真
力扣:liweiwei1419
- 动画