资源简介
基于直方图的自适应二值化阈值,基于c#编写。
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Windows.Forms;
public static class Threshold
{
///
/// 基于灰度平均值的阈值
///
/// 灰度图像的直方图
///
public static int GetMeanThreshold(int[] HistGram)
{
int Sum = 0 Amount = 0;
for (int Y = 0; Y < 256; Y++)
{
Amount += HistGram[Y];
Sum += Y * HistGram[Y];
}
return Sum / Amount;
}
///
/// 基于模糊集的黄式阈值算法
/// http://www.ktl.elf.stuba.sk/study/vacso/Zadania-Cvicenia/Cvicenie_3/TimA2/Huang_E016529624.pdf
///
/// 灰度图像的直方图
///
public static int GetHuangFuzzyThreshold(int[] HistGram)
{
int X Y;
int First Last;
int Threshold = -1;
double BestEntropy = Double.MaxValue Entropy;
// 找到第一个和最后一个非0的色阶值
for (First = 0; First < HistGram.Length && HistGram[First] == 0; First++) ;
for (Last = HistGram.Length - 1; Last > First && HistGram[Last] == 0; Last--) ;
if (First == Last) return First; // 图像中只有一个颜色
if (First + 1 == Last) return First; // 图像中只有二个颜色
// 计算累计直方图以及对应的带权重的累计直方图
int[] S = new int[Last + 1];
int[] W = new int[Last + 1]; // 对于特大图,此数组的保存数据可能会超出int的表示范围,可以考虑用long类型来代替
S[0] = HistGram[0];
for (Y = First > 1 ? First : 1; Y <= Last; Y++)
{
S[Y] = S[Y - 1] + HistGram[Y];
W[Y] = W[Y - 1] + Y * HistGram[Y];
}
// 建立公式(4)及(6)所用的查找表
double[] Smu = new double[Last + 1 - First];
for (Y = 1; Y < Smu.Length; Y++)
{
double mu = 1 / (1 + (double)Y / (Last - First)); // 公式(4)
Smu[Y] = -mu * Math.Log(mu) - (1 - mu) * Math.Log(1 - mu); // 公式(6)
}
// 迭代计算最佳阈值
for (Y = First; Y <= Last; Y++)
{
Entropy = 0;
int mu = (int)Math.Round((double)W[Y] / S[Y]); // 公式17
for (X = First; X <= Y; X++)
Entropy += Smu[Math.Abs(X - mu)] * HistGram[X];
mu = (int)Math.Round((double)(W[Last] - W[Y]) / (S[Last] - S[Y])); // 公式18
for (X = Y + 1; X <= Last; X++)
Entropy += Smu[Math.Abs(X - mu)] * HistGram[X]; // 公式8
if (BestEntropy > Entropy)
{
BestEntropy = Entropy; // 取最小熵处为最佳阈值
Threshold = Y;
}
}
return Threshold;
}
///
/// 基于谷底最小值的阈值
/// 此方法实用于具有明显双峰直方图的图像,其寻找双峰的谷底作为阈值
/// References:
/// J. M. S. Prewitt and M. L. Mendelsohn “The analysis of cell images“ in
/// nnals of the New York Academy of Sciences vol. 128 pp. 1035-1053 1966.
/// C. A. Gl
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 26822 2015-04-21 10:29 Threshold.cs
----------- --------- ---------- ----- ----
26822 1
相关资源
- C#水平垂直图像镜像---C#数字图像处理
- C#版的模拟PhotoShop处理图片色阶的程序
- 图像处理各种颜色空间互相转换
- C# 数字图像处理 有关遥感图像处理的
- C# 数字图像处理,单色、Robers、Sobe
- c#图像处理bmp转化为灰度图片
- C#读取psd格式图片
- C#版图像处理界面,包含二值化、灰度
- C# 图像二值化
- 图像处理VS2017C#
- C#编写的图像均衡化、去噪、高斯模糊
- 图像处理代码C# 平滑去噪、锐化、伪
- C# 图像处理程序源代码
- GDI+鼠标绘制常规图形平衡缩放DEMO
- C#彩色图像处理RGB和HSI彩色空间、伪彩
- C#图像处理_多张图片在同一窗口浏览
- C#中基于GDI+(Graphics)图像处理工具(
- c# 源码 简单图像处理
- C# 水平交错效果显示图像
- winform 浮雕效果的图像
- c# 底片效果显示图像就像旧式相机的
- 积木效果显示图像
- browerPhotoC#网页截图(不打开网页)
- C#图像处理效果(浮雕/黑白/柔化/锐化
-
AForge.NET_fr
amework-2.1.3 一个C#下面的图 - com 图像处理算法
- digital C#编写的图像处理程序源码 一共
- C#写的图像处理函数,椒盐噪声,中值
- C#程序,载入图像,选取其中任意两点
- 基于C#的图像处理、神经网络、遗传算
评论
共有 条评论