看图,曾经说过,发现径向畸变值数量级是ok的,最后核实算法也是ok的,但径向畸变值是负值?又找了找,发现径向畸变值大数据出来后,恍然明白了(数据中非常多的负值,相同数量级)。为什么数据有正有负数?说明观察数据还不够(数据行列满篇,仅仅只看左上角,还有其他八个区域呢?分析数据是很有前途,你看多普勒三大行星定律,上天给数据(师傅领进门),多普勒很靠谱)!即使计算正确又有什么用呢?那么请在下一版本中,给出答案(大哥,已经5个版本了,intel处理器仅仅酷睿都十代了,你这都知足了?我看你行!别叽歪)。
我们来看一看最小二乘法计算径向畸变,代码如下:(注重了算法,丢失了其他)
float 径向参数1 = 0;//B
double globrr = 0;//A
double globrrrr = 0;//D
double CCC = 0;//C
float 径向参数2 = 0; //B
double globrrJ = 0;//A
double globrrrrJ = 0;//D
double CCCJ = 0;//C
//注意考虑插补值【0,0】问题,然后再向下201709131620
if (lastRePlus.Count != 0)//list,旋转后正四格1600;
{
int zeroCount = 0;//需要修改为arr2D,201709181707
for (int i = 0; i < lastRePlus.Count; i++)
{
for (int j = 0; j < lastRePlus[i].Count; j++)
{
if (0 == lastRePlus[i][j].X && 0 == lastRePlus[i][j].Y)
{
zeroCount++;
continue;
}
double rr = ((lastRePlus[i][j].X - wban) * (lastRePlus[i][j].X - wban) +
(lastRePlus[i][j].Y - hban) * (lastRePlus[i][j].Y - hban));
float 以X得到的径向参数 = (旋转后正四格all[i * lastRePlus[i].Count + j].X - wban) / (lastRePlus[i][j].X - wban);
径向参数1 += 以X得到的径向参数;//B
globrr += rr;//A
globrrrr += rr * rr;//D
CCC += 以X得到的径向参数 * rr;//C
///
float 以Y得到的径向参数 = (旋转后正四格all[i * lastRePlus[i].Count + j].Y - hban) / (lastRePlus[i][j].Y - hban);
径向参数2 += 以Y得到的径向参数;//BJ
CCCJ += 以Y得到的径向参数 * rr;//CJ
globrrJ += rr;//AJ
globrrrrJ += rr * rr;//DJ
}
}
int count = 旋转后正四格all.Count - zeroCount;
最小二乘径向参数 = (float)((count * CCC - globrr * 径向参数1) / (count * globrrrr - globrr * globrr));//最小二乘201709131656
textBox50.Text = 最小二乘径向参数.ToString();
最小二乘径向参数 = (float)((count * CCCJ - globrrJ * 径向参数2) / (count * globrrrrJ - globrrJ * globrrJ));//最小二乘201709131656
textBox49.Text = 最小二乘径向参数.ToString();
//径向畸变I和j方向差异太大(不在一个数量级),应给出报警//201709200822
}
标定相关:
1,以前曾经遇到过不能标定的问题,因为标定板是1mm*1mm的方格,而工作的视野是0.8mm*0.6mm,一个格子都装不下,如何标定呢?
这种情况怎么对付?好在镜头选型时,镜头给出的畸变参数,计算后足以忽略误差,对工作无影响。
2,另一种情况,标定板能覆盖1024*768分辨率,而不能覆盖1600*1200,这种情况,又如何标定?要么,更换更大的标定板,要么在无可用的情况下,从1600*1200中取1024*768图像进行标定,并且工作图像也只取1024*768,即1600*1200相机降级为1024*768相机了(原来只用买一个500万的工业相机就可以了,小于500百万的相机,用此法)。
3,其实在机器视觉中,目标决定视野,视野决定镜头和ccd相机,为什么机器视觉可以解决视觉畸变问题,道理在此
4,现在我们也有一种方法来验证镜头径向畸变的好坏,如果你的未畸变网格与亚像素角点重合越多,则镜头畸变越小,这似乎变成了经验之谈
5,在机器视觉中,是不可能出现切向畸变的,如果有,机器视觉标准已经把你置之门外了。而且径向畸变已经写在镜头选型中了,这就是标定在机器视觉中式微的原因,这也是工业镜头和ccd相机高大上贵的原因(标定消化在硬件之中了)。
6,机器视觉如果没有精确二字,就没有存在的价值了。
7,为什么还要标定,消除人性的不放心,其次也算两条腿走路,另外标定还会提供比例尺和坐标系。标定很重要,他是藏在机器视觉中的人工智能。
/以上0510,以下05111251
谁说径向畸变k值不可以为负数?原来他可以为负数,今天找到了原因,请看曾经的初心:
这说明一个问题:人的记忆力不可靠,所以要及时做笔记
目标巅峰(专注标定)时期的考虑,非当下能比,为什么要那样做,为什么用这样的数据,此时是惘然的。