Win8 Metro(C#)数字图像处理--2.41彩色图像密度分割算法
原文:Win8 Metro(C#)数字图像处理--2.41彩色图像密度分割算法
[函数名称]
彩色图像密度分割函数 DensitySegmentProcess(WriteableBitmap src)
[算法说明]
图像密度分割又叫做彩色等密度分割处理,一般图像(或影像)上色调的明暗是以附着在片基上的银粒子密度来计量的。因此,为了突出某一密度等级的色调(或相应地物),即将图像(或影像)的色调密度分划成若干个等级,并用不同的颜色分别表示这不同的密度等级,得到一幅彩色的等密度分割图像。这一技术过程就叫作密度分割处理,或简称密度分割。密度分割可使影像轮廓更清晰,突出某些具有一定色调特征的地物及分布状态,在显示环境污染范围,隐伏构造,以及寻找地下水等方面有广泛的应用,并取得较好的效果。密度分割后得到的彩色图像的色彩是人为加于的,一般并不代表地物的实际颜色,所以一般也称密度分割为假彩色密度分割。
这里我们列举的是基于颜色灰度的密度分割。
[函数代码]
/// <summary>
/// Density segmentation.
/// </summary>
/// <param name="src">The source image.</param>
/// <returns></returns>
public static WriteableBitmap DensitySegmentProcess(WriteableBitmap src)////彩色图像密度分割
{
if (src != null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap srcImage = new WriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
int color = 0;
for (int i = 0; i < temp.Length; i += 4)
{
byte tempByte = (byte)((int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299));
color = GetColor(tempByte);
switch (color)
{
case 1:
temp[i] = (byte)255; temp[i + 1] = (byte)255; temp[i + 2] = (byte)0;
break;
case 2:
temp[i] = (byte)255; temp[i + 1] = (byte)0; temp[i + 2] = (byte)255;
break;
case 3:
temp[i] = (byte)0; temp[i + 1] = (byte)255; temp[i + 2] = (byte)255;
break;
case 4:
temp[i] = (byte)255; temp[i + 1] = (byte)0; temp[i + 2] = (byte)0;
break;
case 5:
temp[i] = (byte)0; temp[i + 1] = (byte)0; temp[i + 2] = (byte)255;
break;
case 0:
temp[i] = (byte)0; temp[i + 1] = (byte)0; temp[i + 2] = (byte)0;
break;
default:
break;
}
}
Stream sTemp = srcImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return srcImage;
}
else
{
return null;
}
}
//定义密度等级获得函数
private static int GetColor(int v)
{
int t = 0;
if (v == 0)
{
t = 0;
}
else if (v > 0 && v < 50)
{
t = 1;
}
else if (v >= 50 && v < 100)
{
t = 2;
}
else if (v >= 100 && v < 150)
{
t = 3;
}
else if (v >= 150 && v < 200)
{
t = 4;
}
else
{
t = 5;
}
return t;
}
Win8 Metro(C#)数字图像处理--2.41彩色图像密度分割算法的更多相关文章
- Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
原文:Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法 [函数名称] 图像雾化 AtomizationProcess(WriteableBitmap src,i ...
- Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
原文:Win8 Metro(C#)数字图像处理--2.42图像光照效果算法 [函数名称] 图像光照效果 SunlightProcess(WriteableBitmap src,int X,in ...
- Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法
原文:Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法 [函数名称] 二值图像细化算法 WriteableBitmap ThinningProcess ...
- Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果
原文:Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果 [函数名称] RGB分量调整 RGBAdjustProcess(WriteableBitmap ...
- Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法
原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3 ...
- Win8 Metro(C#)数字图像处理--4图像颜色空间描述
原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述 图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary> / ...
- Win8 Metro(C#)数字图像处理--3.2图像方差计算
原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...
- Win8 Metro(C#)数字图像处理--3.3图像直方图计算
原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary> /// Get the array of histrgram. /// </sum ...
- Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...
随机推荐
- php实现 提取不重复的整数(编程题目能够最快的熟悉函数)
php实现 提取不重复的整数(编程题目能够最快的熟悉函数) 一.总结 一句话总结:编程题目能够最快的熟悉函数. 1.字符串反转函数? 没有str_revserse,有arr_reverse,这里是st ...
- 【codeforces 754D】Fedor and coupons
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- expdp之后scp的惊险时刻
今天在导出数据的时候.忽然就想起了上次导数据的惊险时刻. 当时导出数据,有40g.分盘./backup有几T的空间,非常easy.果断搞! 是daochu.dmp,导出后传到还有一个主机,还有一个主机 ...
- php课程 6-20 字符串基础和去除空格和字符串填补函数
php课程 6-20 字符串基础和去除空格和字符串填补函数 一.总结 一句话总结: 二.字符串 字符串定义:$str='hello world!'; 输出字符串:echo $str;print $s ...
- 通过getElementById来取得Form里的表单元素
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>湖南易通 ...
- Android Activity 悬浮 半透明边框
1.首先来创建一个Activity,在Activity的OnCreate函数里面我们设置它为全屏,然后设置Activity的宽高为全屏*0.9,然后设置背景图片为半透明的 .9 图片 .这样就已经是非 ...
- ajax——XMLHttpRequest
XMLHttpRequest对象.能够让ajax程序在不又一次载入的页面的情况下更新页面数据,页面载入完毕后从server接受发生数据.这样既减轻了server负担又回顾了响应速度,缩短了用户的等待时 ...
- windows 安装 RabbitMQ 并添加用户 – 畅玩Coding
原文:windows 安装 RabbitMQ 并添加用户 – 畅玩Coding 1.RabbitMQ 使用 Eralng,所以需要先安装 Eralng 下载: http://www.erlang.or ...
- Docker上定制CentOS7镜像
原文:Docker上定制CentOS7镜像 前言: 环境:centos7.5 64 位 正文: 第一步:下载centos7镜像 docker pull centos 第二步:建立centos7的容器 ...
- Android项目如果要将自己写的类写成要单独打成jar包?
需求条件: 自己没做过android,公司android开发临时有事请假了,老板说让我研究研究,反正都是java.我心里"XXXXXX".这篇用来自己做个记录,老手请略过,Andr ...