基于RGB空间的交通标志检测| 8月更文挑战

简介: 基于RGB空间的交通标志检测| 8月更文挑战

主要思想来自颜色分类论文《Goal Evaluation of Segmentation Algorithms for Traffic Sign Recognition》


RGB空间是通常的初始的空间,如果简单的分割过程是其目的,使用RGB空间是比较好的选择。然而,三个颜色之间的高相关性组件和光照变化颜色的效果信息,使得它很难找到正确的阈值。在这个空间上,一个解决办法是使用RGB的相对于归一化,即除以R + G+ B。

这种方式,阈值在这个空间里很容易地找到。然而,出现了一些问题:这个标准化的空间,因为照度低(低RGB值),该转换是不稳定的,并在接近零的值,噪声被放大。


检测所用的阈值如下 其中ThR=0.4;ThG=0.3,ThB=0.4,thy=0.85 程序代码为

pImg = cvLoadImage( "P6250063.TIF"/argv[1]/, 1);//需要检测的图片名称 IplImage *RChannel,*GChannel,*BChannel,*tempImg,*middleImg; CvSize Size1;//OpenCV的基本数据类型之一。表示矩阵框大小,以像素为精度。与CvPoint结构类似,但数据成员是integer类型的width和height。 Size1 = cvGetSize(pImg);//OpenCV提供的一种操作矩阵图像的函数。得到二维的数组的尺寸,以CvSize返回。 RChannel = cvCreateImage(Size1, IPL_DEPTH_8U, 1);//创建头并分配数据,IPL_DEPTH_8U - 无符号8位整型 GChannel = cvCreateImage(Size1, IPL_DEPTH_8U, 1); BChannel = cvCreateImage(Size1, IPL_DEPTH_8U, 1); cvSplit(pImg, BChannel, GChannel, RChannel, NULL);//分割多通道数组成几个单通道数组或者从数组中提取一个通道 tempImg = cvCreateImage(Size1, IPL_DEPTH_8U, 1);//CreateImage创建头并分配数据 CvMat mat = cvMat(Size1.height,Size1.width,IPL_DEPTH_8U,NULL);//CvMat 多通道矩阵


CvMat mat2 = cvMat(Size1.height,Size1.width,IPL_DEPTH_8U,NULL); CvMat mat3 = cvMat(Size1.height,Size1.width,IPL_DEPTH_8U,NULL); CvMat* Rmat;//指针 CvMat* Gmat; CvMat* Bmat; int rData; int gData; int bData; int temp=0;

CvRect resultRect;//矩形框的偏移和大小 Rmat = cvGetMat(RChannel, &mat, 0, 0);//转换成向量

Gmat = cvGetMat(GChannel, &mat2, 0, 0);

Bmat = cvGetMat(BChannel, &mat3, 0, 0);


for (int i = 0;iheight;i++) { for (int j = 0;jwidth;j++) {   int ifred=0;//重新赋值!坑爹啊! int ifgreen=0; int ifyellow=0; int temp=0; rData = (int)CV_MAT_ELEM(*Rmat, uchar, i, j);//opencv中用来访问矩阵每个元素的宏,这个宏只对单通道矩阵有效,多通道会报错 gData = (int)CV_MAT_ELEM(*Gmat, uchar, i, j); bData = (int)CV_MAT_ELEM(*Bmat, uchar, i, j); float sum=rData+gData+bData; float rr=rData; float gg=gData; float bb=bData; rij=rData/sum; gij=gData/sum; bij=bData/sum;

ifred=whetherRed(rData,gData,bData,50); ifblue=whetherBlue(rData,gData,bData,50); ifyellow=whetherYellow(rData,gData,bData,50);

if((ifred==255)||(ifblue==255)||(ifyellow==255)) { temp=255;

}

cvSet2D(&mat,i,j,cvScalar(temp));//Set*D修改指定的数组 cvSet2D 给某个点赋值。cvGet2D 获得某个点的值, idx0=hight 行值, idx1=width 列值。函数返回的是一个CvScalar 容器,其参数中也有两个方向的坐标;CvScalar定义可存放1—4个数值的数值,

} } middleImg = cvGetImage(&mat,tempImg);//GetImage从不确定数组返回图像头 cvShowImage( "window2",  middleImg ); //显示图像 resultRect = processImg(middleImg); if((rednum>=yellownum)&&(rednum>=bluenum)) cout<<"检测到红色标志!"<<endl; if((bluenum>=yellownum)&&(bluenum>=rednum)) cout<<"检测到蓝色标志!"<<endl; if((yellownum>=bluenum)&&(yellownum>=rednum)) cout<<"检测到黄色标志!"<<endl;

int whetherRed(int rData,int gData,int bData,int T) { if ((rij >= 0.4)&&(gij <= 0.3)) { rednum++; return 255; } } int whetherYellow(int rData,int gData,int bData,int T) {

if ((rij+gij)>=0.85) { yellownum++; return 255; } } int whetherBlue(int rData,int gData,int bData,int T) {

if (bij>=0.4 ) { bluenum++; return 255; } }


相关文章
|
机器学习/深度学习 传感器 人工智能
首篇!最全的全景分割综述(RGB图像/医学图像/LiDAR)(下)
本文对现有的全景分割方法进行了第一次全面的综述。因此,基于所采用的算法、应用场景和主要目标的性质,对现有全景技术进行了定义良好的分类。此外,还讨论了全景分割在通过伪标记标注新数据集中的应用。接下来,进行消融研究,以从不同角度了解全景方法。此外,还讨论了适用于全景分割的评估指标,并对现有解决方案的性能进行了比较,以了解最新技术并确定其局限性和优势。最后,阐述了当前主题技术面临的挑战以及近期吸引大量关注的未来趋势,这可以作为未来研究的起点。
首篇!最全的全景分割综述(RGB图像/医学图像/LiDAR)(下)
|
机器学习/深度学习 传感器 编解码
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
本综述根据三个基本的CV任务和不同的数据流类型,全面调查了100多种不同的视觉Transformer,并提出了一种分类法,根据其动机、结构和应用场景来组织代表性方法。由于它们在训练设置和专用视觉任务上的差异,论文还评估并比较了不同配置下的所有现有视觉Transformer。此外,论文还揭示了一系列重要但尚未开发的方面,这些方面可能使此类视觉Transformer能够从众多架构中脱颖而出,例如,松散的高级语义嵌入,以弥合视觉Transformer与序列式之间的差距。最后,提出了未来有前景的研究方向。
一文详解视觉Transformer在CV中的现状、趋势和未来方向(分类/检测/分割/多传感器融合)(中)
|
4月前
|
人工智能 算法 TensorFlow
基于AidLux的工业视觉少样本缺陷检测实战
基于AidLux的工业视觉少样本缺陷检测实战
37 0
|
8月前
|
SQL 机器学习/深度学习 编解码
OCR文字检测与识别系统:融合文字检测、文字识别和方向分类器的综合解决方案
OCR文字检测与识别系统:融合文字检测、文字识别和方向分类器的综合解决方案
OCR文字检测与识别系统:融合文字检测、文字识别和方向分类器的综合解决方案
|
8月前
|
机器学习/深度学习 编解码 算法
检测并消除瑕疵,DeSRA让真实场景超分中的GAN更加完美
检测并消除瑕疵,DeSRA让真实场景超分中的GAN更加完美
293 0
|
8月前
|
算法 TensorFlow 算法框架/工具
基于Aidlux平台的人脸关键点检测以及换脸算法
Face Mesh:468个人脸部关键点精确定位并支持多个人同时检测,支持关键点3D坐标。 Face Swap:超好玩的换脸算法,把明星的脸融合到你的身体上,让你也有星范。
|
11月前
|
机器学习/深度学习 人工智能 中间件
智能图像分析-人像修复增强-艾科瑞特科技
智能图像分析-人像修复增强-艾科瑞特科技 艾科瑞特科技(iCREDIT)-全球最大的第三方软件中间件服务商 艾科瑞特科技官网:https://www.icredit.link 艾科瑞特科技云市场:https://market.icredit.link 艾科瑞特科技-Apifox-API Hub:https://apihub.icredit.link
|
11月前
|
传感器 机器学习/深度学习 安全
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
104 0
3D点云识别安全吗? 密歇根大学等提出稳健性分析数据集应对严重失真
|
11月前
|
机器学习/深度学习 运维 固态存储
AI-无损检测方向速读:基于深度学习的表面缺陷检测方法综述
在真实复杂的工业环境下,表面缺陷检测往往面临诸多挑战,例如存在缺陷成像与背景差异小、对比度低、缺陷尺度变化大且类型多样,缺陷图像中存在大量噪声,甚至缺陷在自然环境下成像存在大量干扰等情形,如图1所示,此时经典方法往往显得束手无策,难以取得较好的效果。
1756 0
|
机器学习/深度学习 传感器 人工智能
首篇!最全的全景分割综述(RGB图像/医学图像/LiDAR)(上)
本文对现有的全景分割方法进行了第一次全面的综述。因此,基于所采用的算法、应用场景和主要目标的性质,对现有全景技术进行了定义良好的分类。此外,还讨论了全景分割在通过伪标记标注新数据集中的应用。接下来,进行消融研究,以从不同角度了解全景方法。此外,还讨论了适用于全景分割的评估指标,并对现有解决方案的性能进行了比较,以了解最新技术并确定其局限性和优势。最后,阐述了当前主题技术面临的挑战以及近期吸引大量关注的未来趋势,这可以作为未来研究的起点。
首篇!最全的全景分割综述(RGB图像/医学图像/LiDAR)(上)

热门文章

最新文章