智能车制作
标题:
ccd采样值变化很平滑(黑到白的过渡段很长)导致差分值很小,是因为焦距的原因吗?
[打印本页]
作者:
qq250580245
时间:
2016-3-1 17:04
标题:
ccd采样值变化很平滑(黑到白的过渡段很长)导致差分值很小,是因为焦距的原因吗?
[attach]84077[/attach]
首先图像是这样的,黑白过渡段很明显,拿了卷卫生纸在CCD面前晃得到的。然后在卫生纸上面加了根黑杆,也是很模糊。
不知道大家看不看得清图像上的红点,这样导致差分值从过渡段就很大,感觉会影响程序判断。怀疑是焦距的问题,又把卫生纸拿远了,图像还是很奇怪。
请问下大家这是因为CCD焦距的原因吗?如果是,是拧CCD的镜头来调节还是拧螺丝? 关于CCD的调试真是有些迷茫。
作者:
qq250580245
时间:
2016-3-1 17:10
自己用的是野火的差分二值化算法,其实感觉自己可能对他的核心思想不太了解,
/*!
* [url=home.php?mod=space&uid=81675]@BRIEF[/url] 简单的一个二值化 算法(不稳定,仅测试)
* @since v5.0
bin((uint8 *)&CCD_BUFF[2*TSL1401_MAX+0],(uint8 *)&CCD_BUFF[0],(uint8 *)&CCD_BUFF[TSL1401_MAX+0],TSL1401_SIZE,max[0]);
*/
// diff_threshold 差分阈值 ,不同的角度,不同的环境而有所不同
//可根据 maxdif 最大差分值来配置,或者直接固定阈值
#define diff_threshold ((maxdif> 12) ? ((maxdif*80)/100) :10) // 差分阈值
//#define diff_threshold 10
#define safe_isolation 3
void bin(uint8 *bin,uint8 * img,uint8 * difimg,uint16 len,uint8 maxdif)
{
uint16 tmplen = len;
uint8 thldnum = 0; //阈值次数
uint8 thresholdimg;
uint8 tmpnum;
memset(bin,0xFF,len); //全部当作白色
while(tmplen--)
{
if((tmplen == 0)|| (tmplen > len))
{
return;
}
if(difimg[tmplen] > diff_threshold) //找到 大于差分阈值的量 (黑线附近)
{
thldnum++;
//寻找最大差分阈值
while(tmplen--)
{
if((tmplen == 0)|| (tmplen > len))
{
return;
}
if(difimg[tmplen] < difimg[tmplen+1] ) //如果此大于差分阈值的量递减,跳出循环,否则找更大的差分量
{
break;
}
}
//tmplen + 1 是 差分最大值 ,切换到 颜色扫描
if((img[tmplen] <= img[tmplen+1]) ||(img[tmplen+1] <= img[tmplen+2]) ) //从右至左递增。 前面 黑色 ,后面 白色
{
//选择 差分值最大值的前一个 作为 阈值
thresholdimg = (img[tmplen+1] + img[tmplen+2])/2;
while(img[tmplen] <= thresholdimg)
{
bin[tmplen] = 0; //黑色
tmplen--;
if(tmplen == 0) //结尾了 ,直接退出
{
if(img[tmplen] <= thresholdimg)
{
bin[tmplen] = 0; //黑色
}
return ;
}
else if (tmplen > len)
{
return;
}
}
//while之后扫描到下一个 高于 此阈值 (比此点更白) 判断为黑线结束
tmplen -= safe_isolation;
if((tmplen == 0)|| (tmplen > len))
{
return;
}
//等待差分值降低
while(difimg[tmplen] > diff_threshold)
{
tmplen--;
if((tmplen == 0)|| (tmplen > len))
{
return;
}
}
}
else
{
//否则如果前白 后 黑
if(thldnum == 1)
{
//后面的 内容都是 黑色的
tmpnum = tmplen + 1;
while(tmpnum < len)
{
bin[tmpnum] = 0; //黑色
tmpnum ++;
}
}
}
}
}
}
复制代码
把卫生纸放远了,然后上面加个黑杆,识别出来的效果很差
作者:
1325536866
时间:
2016-3-1 17:50
卫生纸(卫生巾)
作者:
qq250580245
时间:
2016-3-1 20:27
1325536866 发表于 2016-3-1 17:50
卫生纸(卫生巾)
。。。
寝室里调的,没找到像样的东西模拟
作者:
zty562694497
时间:
2016-3-2 09:53
蓝宙的CCD?拧镜头调焦距,,拧螺丝调运放。。。
镜头和CCD是匹配的吗
记得蓝宙的库里有个参数值可以调整图像的平滑程度。。野火的库就不清楚了。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2