判断位图是否是黑白图片
来源:互联网 发布:宁波网络警务平台 编辑:程序博客网 时间:2024/04/30 14:21
链接:
http://blog.csdn.net/redfield123/article/details/8900073
最近工作需要判断图片是否是黑白的,由于是十万张以上的大批量处理,所以通过程序来自动判断。
图片对象:经过处理过的jpg格式的位图(头像照片)
算法原理:
通过每个像素点的RGB值来进行判断。我们知道,位图都是由像素点构成的,每个像素点都有一个 RBG值,所以可以通过RGB值来判断图片是否是黑白的。
【RGB】:R代表红,G代表绿,B代表蓝,通过三原色原理来形成丰富多彩的颜色。
初步思路:
1、纯黑白图片,只有判断像素点的颜色是黑还是白就可以了,一旦遇到非黑白颜色,就可以认为是非黑白图片。
2、灰阶黑白图片,由于有灰阶,所以不是能通过像素点是否是黑白来判断,但是灰阶像素点的RGB有个特点:【R=G=B】
算法优化:
1、纯黑白,只有白黑二色,白色RGB【R=G=B=255】,黑色【R=G=B=0】;
2、灰阶,RGB【R=G=B】;
可以看出无论是黑白还是灰阶都是RGB中【R=G=B】
遇到问题:
有些可以认为是黑白图片,存在偏绿或者偏红的情况,用【R=G=B】无法判断出来。
解决思路:
虽然这些图片【R<>B<>G】但是颜色大体一致都是靠近灰阶颜色,所以R,G,B的差值应该不是很大,经过我自己测试,发现这种【有偏色的黑白照片】图片中的所有像素点的R,G,B差值绝对最大值不超过50(R-G,R-B,G-B),而彩色图片中的R,B,G差值存在绝对值最大值存在超过 50的像素点。
简单来说就是:
1、【自定义】色偏值 Diff = Max(|R-G|,|R-B|,|G-B|);
2、黑白图片所有图片中最大的 Diff < 50;
【P.S:这个算法可能存在误差,严格意义上来说R=G=B,Diff=0才对。】
具体实现:
- 判断位图是否是黑白图片
- 判断位图是否是黑白图片
- 判断是否是汉字
- 判断是否是素数
- 判断是否是闰年
- 判断是否是汉字
- 判断是否是中文
- 判断是否是字符串
- 判断是否是回文
- 判断是否是素数
- 判断是否是IP
- 判断是否是iPhone5
- 判断是否是主视图
- 判断是否是闰年
- 判断是否是闰年?
- 判断是否是闰年
- 判断是否是中文
- 判断是否是闰年
- 由RGB到HSV颜色空间的理解
- adb shell 操作数据库
- centos安装svn
- 八皇后问题
- 常用RGB颜色查询对照表及感情色
- 判断位图是否是黑白图片
- 常见的 DOS 命令
- Google Earth 安装及查看
- 算法训练 未名湖边的烦恼
- [精华] FreeType 2开发文档 [中译版]
- android复习路之字符串的处理
- 10分钟带你光速入门运维工具之-Puppe
- C和指针读书笔记(第十六章)
- 字体下载