模式识别---图像二值化
2016-01-10 16:50
302 查看
要对图像进行识别,首先要做的将图像从多通道颜色分量变为单通道,也就是gray色调中来,常用的方法有目下三种,
第一种
求rgb颜色风量的平均值:
G(x,y) =(r(x,y)+g(x,y)+b(x,y))/3.
第二种:
视觉心理学公式:
G(x,y)= r(x,y)*299 + g(x,y)*587 + b(x,y)*114/1000
还有一种:
G(x,y) = r(x,y)*0.11 + g(x,y)*0.59 + b(x,y)*0.3;
第三种: Adobe Photoshop 采取的公式
Adobe RGB (1998) [gamma=2.20]
Gray = (R^2.2 * 0.2973 + G^2.2 * 0.6274 + B^2.2 * 0.0753)^(1/2.2)
速度依次变慢,效果逐渐变好.
采用第二种效果进行将彩色图片灰度化:(关键代码)
效果图:
一般进过从多通道颜色分量处理之后,就需要对图像进行腐蚀,然后得到二值化图像。需要设定一个阈值,进行单纯的判断,这是最简单的方式
效果图:
第一种
求rgb颜色风量的平均值:
G(x,y) =(r(x,y)+g(x,y)+b(x,y))/3.
第二种:
视觉心理学公式:
G(x,y)= r(x,y)*299 + g(x,y)*587 + b(x,y)*114/1000
还有一种:
G(x,y) = r(x,y)*0.11 + g(x,y)*0.59 + b(x,y)*0.3;
第三种: Adobe Photoshop 采取的公式
Adobe RGB (1998) [gamma=2.20]
Gray = (R^2.2 * 0.2973 + G^2.2 * 0.6274 + B^2.2 * 0.0753)^(1/2.2)
速度依次变慢,效果逐渐变好.
采用第二种效果进行将彩色图片灰度化:(关键代码)
for(int i=0;i<cinfo.image_width;i++) { color_r = (int)buffer[0][i*3]; color_g = (int)buffer[0][i*3+1]; color_b = (int)buffer[0][i*3+2]; var_gray = 0.11*color_r+0.59*color_g+0.3*color_b; if(var_gray<0) var_gray=0; //else var_gray =255; buffer[0][i*3]=(unsigned char)(var_gray&0xff); buffer[0][i*3+1]=(unsigned char)(var_gray&0xff); buffer[0][i*3+2]=(unsigned char)(var_gray&0xff); }
效果图:
一般进过从多通道颜色分量处理之后,就需要对图像进行腐蚀,然后得到二值化图像。需要设定一个阈值,进行单纯的判断,这是最简单的方式
for(int i=0;i<cinfo.image_width;i++) { color_r = (int)buffer[0][i*3]; color_g = (int)buffer[0][i*3+1]; color_b = (int)buffer[0][i*3+2]; var_gray = 0.11*color_r+0.59*color_g+0.3*color_b; if(var_gray<128) var_gray=0; else var_gray =255; buffer[0][i*3]=(unsigned char)(var_gray&0xff); buffer[0][i*3+1]=(unsigned char)(var_gray&0xff); buffer[0][i*3+2]=(unsigned char)(var_gray&0xff); }
效果图:
相关文章推荐
- zookeeper集群配置安装
- C语言scanf输入格式 printf输出格式
- 堆排序
- Shuffle'm Up
- Shuffle'm Up
- 使用python 加载tkdnd 的库(_load_tkdnd : _tkinter.TclError: couldn't load library )的时候错误的解决措施
- Uoj#35. 后缀排序
- [java面试]宇信易诚 广州分公司 java笔试题目回顾录
- 金山词霸2016.1.3.3 手动去广告方法
- C++学习笔记(二)
- 简单的HTML5音乐播放器(带歌词滚动)
- Java与模式:装饰(Decorator)模式
- 分级基金下折套利风险介绍
- 【慕课笔记】第三章 常用的运算符 第2节 JAVA中的算术运算符
- bzoj 3156 防御准备(斜率DP)
- 在多线程程序中指定线程来处理信号
- Mac下安装MySQL5.7.10,以及字符编码问题
- 解决VMware桥接无法启用
- python入门笔记(Day5)--filter,sorted,lambda,装饰,偏,模块
- 设计模式(一)设计六大原则