照片是彩色的还是黑白照片变彩色软件的呀

推荐到广播
250948 人聚集在这个小组
第三方登录:判断图片-判断位图是否是黑白图片的方法
字体:[ ] 类型:转载 时间:
近来工作需要判断图片否是是彩色的,由于是十万张以上的大批量理处,所以通过序程来动自判断。
&&&& 图片象对:经过理处过的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才对。】
&&&& 详细现实: 代码如下:/// &summary&/// 判断图片否是是彩色/// &/summary&/// &param name="filename"&图片文件路径&/param&/// &returns&&/returns&public bool isBlackWhite(string filename){&& Color c = new Color();
&& using (Bitmap bmp = new Bitmap(filename))&& {&&&&& //历遍图片的像素点&&&&& for (int y = 0; y & bmp.H y++)&&&&& {&&&&&&&& for (int x = 0; x & bmp.W x++)&&&&&&&& {&&&&&&&&&&& c = bmp.GetPixel(x, y);
&&&& //判断像素点的色偏差值Diff&&&&&&&&&&& if (GetRGBDiff(c.R, c.G, c.B) & 50)&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&& }&&&&&& }
&&&&&&&&& }} 代码如下:public int GetRGBDiff(int r,int g,int b){&& //略,很单简的,就是取r-g,r-b,g-b绝对值的最大值。}
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 黑白照片局部彩色app 的文章

 

随机推荐