Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法
[函数名称]
部分彩色保留函数 WriteableBitmap PartialcolorProcess(WriteableBitmap src,int rValue,int gValue,int bValue)
[算法说明]
这个算法有多种,可以基于RGB,HSV等多种颜色空间来实现,本文介绍最简单的基于RGB颜色空间的彩色保留算法。
对于我们需要保留的像素P(x,y),它的RGB值分别为R(x,y),G(x,y),B(x,y),各个分量之间的关系有如下几种:
1--R>G>B;2—R>B>G;3—B>R>G;4—B>G>R;5—G>R>B;6—G>B>R;
对于当前像素f(x,y):
如果该像素的RGB分量关系情况与P(x,y)像素的分量关系情况相同,则该像素颜色保留,否则,将该像素做灰度化处理。
这样,就可以保留我们需要的颜色像素了。
[函数代码]
/// <summary>/// Partial color process./// </summary>/// <param name="src">The source image.</param>/// <param name="rValue">R channel of pixel.</param>/// <param name="gValue">G channel of pixel.</param>/// <param name="bValue">B channel of pixel.</param>/// <returns></returns>public static WriteableBitmap PartialcolorProcess(WriteableBitmap src,int rValue,int gValue,int bValue)部分彩色{if (src != null){int w = src.PixelWidth;int h = src.PixelHeight;WriteableBitmap srcImage = new WriteableBitmap(w, h);byte[] temp = src.PixelBuffer.ToArray();byte[] tempMask = (byte[])temp.Clone();int r = 0, g = 0, b = 0;int grayValue=0;for (int j = 0; j < h; j++){for (int i = 0; i < w; i++){b = tempMask[i * 4 + j * w * 4];g = tempMask[i * 4 + 1 + j * w * 4];r = tempMask[i * 4 + 2 + j * w * 4];if (((r > b && b > g && rValue > gValue && gValue > bValue) || (r > g && g > b && rValue > gValue && gValue > bValue) || (g > r && r > b && gValue > rValue && rValue > bValue)|| (g > b && b > r && gValue > bValue && bValue > rValue) || (b > g && g > r && bValue > gValue && gValue > rValue) || (b > r && r > g && bValue > rValue && rValue > gValue))){}else{grayValue = (int)((tempMask[i * 4 + j * w * 4] + tempMask[i * 4 + 1 + j * w * 4] + tempMask[i * 4 + 2 + j * w * 4]) / 3);temp[i * 4 + j * w * 4] = temp[i * 4 + 1 + j * w * 4] = temp[i * 4 + 2 + j * w * 4] = (byte)grayValue;}}}Stream sTemp = srcImage.PixelBuffer.AsStream();sTemp.Seek(0, SeekOrigin.Begin);sTemp.Write(temp, 0, w * 4 * h);return srcImage;}else{return null;}}
Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法相关推荐
- Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法
Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 原文:Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 [函数名称] 二值图像轮廓提取 ...
- Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法
原文:Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法 [函数名称] 肤色检测函数SkinDetectProcess(WriteableBitmap src) [算法说明] ...
- Win8 Metro(C#)数字图像处理--4图像颜色空间描述
原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述 图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary>// ...
- Win8 Metro(C#)数字图像处理--2.52图像K均值聚类
原文:Win8 Metro(C#)数字图像处理--2.52图像K均值聚类 [函数名称] 图像KMeans聚类 KMeansCluster(WriteableBitmap src,int ...
- Win8 Metro(C#)数字图像处理--2.69中点滤波器
原文:Win8 Metro(C#)数字图像处理--2.69中点滤波器 [函数代码] <strong> /// <summary>/// Mid-point filter./// ...
- Win8 Metro(C#)数字图像处理--2.66FloodFill算法
原文:Win8 Metro(C#)数字图像处理--2.66FloodFill算法 [函数名称] 洪水填充算法函数 WriteableBitmap FloodfillProcess(Writeab ...
- Win8 Metro(C#)数字图像处理--3.3图像直方图计算
原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary>/// Get the array of histrgram./// </summa ...
- Win8 Metro(C#)数字图像处理--2.50图像运动模糊
原文:Win8 Metro(C#)数字图像处理--2.50图像运动模糊 [函数名称] 图像运动模糊算法 MotionblurProcess(WriteableBitmap src,int ...
- Win8 Metro(C#)数字图像处理--2.39二值图像投影
原文:Win8 Metro(C#)数字图像处理--2.39二值图像投影 [函数名称] 二值图像投影 ImageProjection(WriteableBitmap src) [算 ...
最新文章
- 02 Java程序员面试宝典视频课程之异常
- linux-命令替换-通配符-重定向-管道
- java之 代理设计模式
- Ajax实现局部数据交互的一个简单实例
- JRebel for IntelliJ 热部署方法
- git查看相对于最新的push改动内容
- 郑州银行评选神策数据为“最佳年度合作伙伴”
- 关于电脑(window)后门查看的一些总结
- linux kill 关闭进程命令
- Can 情态动词_50
- 静态路由实现路由过滤
- MAX30102 高灵敏度脉搏氧器和心率传感器说明书
- 元宵节没用智能名片在互联网发贺卡,那就OUT了
- Python反爬机制-验证码
- 寻找亲和数对C语言,寻找亲和数
- Excel如何批量删除批注
- [org.apache.pdfbox.pdmodel.font.PDTrueTypeFont] - Could not read embedded TTF for font CAAAAA+DengXi
- React进阶 - React脚手架
- 重学Java(007)—— Java基础知识(方法的练习,三个小例子、总结方法的注意事项)
- Pytorch之经典神经网络CNN(七) —— GoogLeNet(InceptionV1)(Bottleneck)(全局平均池化GAP)(1*1卷积)(多尺度)(flower花卉数据集)
热门文章
- NLP数据科学家不会告诉你的残酷事实
- AI 崛起的第九个年头,还有哪些大有可为的地方?
- 谷歌AI乳腺癌检测超过人类?美国知名记者:让糟糕的医疗更糟罢了
- 福利丨吴恩达机器学习新书免费领!
- Pytorch之GPU加速计算问题以及model=model.to(device)
- 牛顿第三定律不再起作用:芝加哥大学找到了一种新系统,作用力不等于反作用力...
- 2021年深度学习哪些方向比较有研究潜力?
- 学术交流丨魏子卿院士:北斗坐标系
- 神经网络原来是这样和数学挂钩的
- 任正非签发最新电邮:过去我们是为了赚点小钱,现在是要战胜美国