博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法
阅读量:4709 次
发布时间:2019-06-10

本文共 2650 字,大约阅读时间需要 8 分钟。

原文:



[函数名称]

  部分彩色保留函数       WriteableBitmap PartialcolorProcess(WriteableBitmap src,int rValue,int gValue,int bValue)

[算法说明]

  这个算法有多种,可以基于RGBHSV等多种颜色空间来实现,本文介绍最简单的基于RGB颜色空间的彩色保留算法。

  对于我们需要保留的像素P(x,y),它的RGB值分别为R(x,y),G(x,y),B(x,y),各个分量之间的关系有如下几种:

  1--R>G>B;2R>B>G;3B>R>G;4B>G>R;5G>R>B;6G>B>R;

  对于当前像素f(x,y)

  如果该像素的RGB分量关系情况与P(x,y)像素的分量关系情况相同,则该像素颜色保留,否则,将该像素做灰度化处理。

  这样,就可以保留我们需要的颜色像素了。

 [函数代码]

///         /// Partial color process.        ///         /// The source image.        /// R channel of pixel.        /// G channel of pixel.         /// B channel of pixel.        /// 
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; } }
posted on
2018-03-13 10:38 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/8554608.html

你可能感兴趣的文章
Redis 连接命令
查看>>
剑指offer系列5:二进制中1的个数
查看>>
Android 从相册和拍照选择图片
查看>>
【IT笔试面试题整理】反转链表
查看>>
让Mac OS X专用高速移动硬盘在Linux下也能被读写
查看>>
PHP读取数据库并按照中文名称进行排序
查看>>
tar
查看>>
go语言基础之类型别名
查看>>
Go语言之进阶篇简单版并发服务器
查看>>
Go语言之高级篇beego框架之view
查看>>
rabbitmq集群节点操作
查看>>
htmlparser
查看>>
面向对象--多态、虚方法重写、抽象类、接口
查看>>
[NOIP2009]靶形数独
查看>>
实现逆波兰算法
查看>>
jQuery慢慢啃筛选(四)
查看>>
img 标签 访问图片 返回403 forbidden问题
查看>>
poj 1787 Charlie's Change (多重背包可作完全背包)
查看>>
iOS GCD中的dispatch_group
查看>>
java第五节 多线程/多线程的同步
查看>>