opencv学习系列(二)---颜色识别
来源:互联网 发布:知乎电脑客户端下载 编辑:程序博客网 时间:2024/05/16 02:41
1.利用RGB颜色模型进行颜色识别
核心代码是下面的部分:
2.利用HSI颜色模型进行颜色识别
HSI模型是美国色彩学家孟塞尔(H.A.Munseu)于1915年提出的,它反映了人的视觉系统感知彩色的方式,以色调、饱和度和强度三种基本特征量来感知颜色。
色调H(Hue): 与光波的波长有关,它表示人的感官对不同颜色的感受,如红色、绿色、蓝色等,它也可表示一定范围的颜色,如暖色、冷色等。
饱和度S(Saturation): 表示颜色的纯度,纯光谱色是完全饱和的,加入白光会稀释饱和度。饱和度越大,颜色看起来就会越鲜艳,反之亦然。
强度I(Intensity): 对应成像亮度和图像灰度,是颜色的明亮程度。
HSI模型的建立基于两个重要的事实: ① I分量与图像的彩色信息无关;② H和S分量与人感受颜色的方式是紧密相联的。这些特点使得HSI模型非常适合彩色特性检测与分析。
RGB单位立方体沿主对角线进行投影,可得到图9-4(a)所示的六边形,这样,原来沿主对角线的灰色都投影到中心白色点,而红色点(1,0,0)则位于右边的角上,绿色点(0,1,0)位于左上角,蓝色点(0,0,1) 则位于左下角。
是HSI颜色模型的双六棱锥表示,I是强度轴,色调H的角度范围为[0,2π],其中,纯红色的角度为0,纯绿色的角度为2π/3,纯蓝色的角度为4π/3。饱和度S是颜色空间任一点距I轴的距离。当然,若用圆表示RGB模型的投影,则HSI色度空间为双圆锥3D表示。
1.在处理彩色图像时,可仅对I分量进行处理,结果不改变原图像中的彩色种类;
2.HSI模型完全反映了人感知颜色的基本属性,与人感知颜色的结果一一对应,因此,HSI模型被广泛应用于人的视觉系统感知演的的图像表示和处理系统中。
转换公式:
贴出一段代码:
inline double* colordetect::rgb2hsi( double rgb[3] ){ double* hsi = new double[3], theta; double r = rgb[0] / 255.0; double g = rgb[1] / 255.0; double b = rgb[2] / 255.0; if(( r == 0) &&( g == 0 )& (b == 0) ) hsi[2] = hsi[1] = hsi[0] = 0; else{ theta = 0.5 * ((r-g) + (r-b)) / sqrt((r-g)*(r-g) + (r-b)*(g-b)); theta = ((theta > 1) ? 1 : theta); theta = ((theta < -1) ? -1 : theta); if( b <= g ) hsi[0] = acos( theta ) / (2 * PI); else hsi[0] = 1 - acos( theta ) / (2 * PI); hsi[1] = 1 - 3.0 * MIN( MIN(r,g), b ) / ( r + g + b ); hsi[2] = ( r + g + b ) / 3.0; hsi[1] = ( (hsi[1] < 0) ? 0 : hsi[1] ); hsi[0] = ( (hsi[1] == 0) ? 0 : hsi[0] ); hsi[2] = ( (hsi[2] < 0) ? 0 : hsi[2] ); } return hsi;}
流程图:
核心代码:
具体代码参照博客http://blog.csdn.net/ycc892009/article/details/6516628
- opencv学习系列(二)---颜色识别
- opencv颜色识别学习总结
- OpenCV学习笔记系列(二)
- 学习OpenCV:滤镜系列(3)——颜色变幻
- 学习OpenCV:滤镜系列(3)——颜色变幻
- openCV学习笔记(二)---openCV系列基本操作
- openCV学习笔记(二)---openCV系列基本操作(2)
- OpenCV学习笔记(二十)——手势识别
- OpenCV+Tesseract进行OCR学习(二)文字识别
- OpenCV+Tesseract进行OCR学习(二)文字识别
- 【OpenCV】颜色识别实例(瓶盖)
- opencv 颜色识别
- OpenCV颜色识别
- OpenCV颜色识别
- OpenCV颜色识别
- OpenCV颜色识别
- opencv 颜色识别
- Opencv颜色识别
- fieldset的getValues扩展方法
- Android 圆形头像
- C语言各种文件操作
- Ubuntu,root下慎用chmod 664命令
- CSS样式命名之“逻辑块命名法”
- opencv学习系列(二)---颜色识别
- android官方侧滑菜单DrawerLayout详解
- Linux系统框架 构成
- 如何学习 COCOS2D-X ?
- 介绍五条非常重要的CSS技巧
- 第四章 字符串和多维数组知识导图
- 蓝桥杯 波动数列 【未完成】
- ORACLE PL/SQL编程之六:把过程与函数说透
- 体验DigitalOcean的VPS云服务