关于图像直方图均衡化的原理和步骤先不作讨论,我就看看代码吧。

  private Bitmap picequalization(Bitmap basemap, int width, int height)
{
Bitmap retmap = new Bitmap(basemap, width, height);
int size = width * height;
int[] gray = new int[];
double[] graydense = new double[];
for(int i=;i<width;++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i,j);
gray[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
graydense[i] = (gray[i]*1.0) / size;
} for (int i = ; i < ; i++)
{
graydense[i] += graydense[i-];
} for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i, j);
int gg = Convert.ToInt16(pixel.R);
int g = ;
if(gg==)
g=;
else
g =Convert.ToInt16( graydense[Convert.ToInt16(pixel.R)] * Convert.ToInt16(pixel.R)); pixel = Color.FromArgb(g,g,g);
retmap.SetPixel(i, j, pixel);
//gray[Convert.ToInt16(pixel.R)] += 1;
}
return retmap;
}
 private Bitmap rgb2gray(Bitmap basemap,int width,int height)
{
Bitmap retmap = new Bitmap(basemap, width, height);
for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i, j);
pixel = getgray(Convert.ToByte(pixel.R), Convert.ToByte(pixel.G), Convert.ToByte(pixel.B));
retmap.SetPixel(i, j, pixel);
}
return retmap;
} private Color getgray(int r, int g, int b)
{
int gray = ;
gray = (r * + g * + b * + ) / ; Color retcolor = Color.FromArgb(gray,gray,gray);
return retcolor;
}
/// <summary>
/// 获取直方图数据
/// </summary>
/// <param name="rule"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
private double[] getsquare(Bitmap rule, int width, int height)
{
//double[] rule = new double[256];
int sizerule = width * height;
int[] grayrule = new int[];
double[] grayruledense = new double[];
for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = rule.GetPixel(i, j);
grayrule[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
grayruledense[i] = (grayrule[i] * 1.0) / sizerule;
}
return grayruledense;
} private double[] getrule(Bitmap rule, int rulewidth, int heightrule)
{
//double[] rule = new double[256];
int sizerule = rulewidth * heightrule;
int[] grayrule = new int[];
double[] grayruledense = new double[];
for (int i = ; i < rulewidth; ++i)
for (int j = ; j < heightrule; ++j)
{
Color pixel = rule.GetPixel(i, j);
grayrule[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
grayruledense[i] = (grayrule[i] * 1.0) / sizerule;
}
return grayruledense;
}
private double[] getdense(double[] zhifang)
{
for (int i = ; i < ; i++)
{
zhifang[i] += zhifang[i - ];
}
return zhifang;
}

图像直方图均衡化(C#)的更多相关文章

  1. Python实现图像直方图均衡化算法

    title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

  2. opencv图像直方图均衡化及其原理

    直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...

  3. opencv:图像直方图均衡化

    // 直方图均衡化 Mat gray, dst; cvtColor(src, gray, COLOR_BGR2GRAY); equalizeHist(gray, dst); imshow(" ...

  4. OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...

  5. Win8Metro(C#)数字图像处理--2.30直方图均衡化

    原文:Win8Metro(C#)数字图像处理--2.30直方图均衡化 [函数名称] 直方图均衡化函数HistogramEqualProcess(WriteableBitmap src) [算法说明] ...

  6. python实现直方图均衡化,理想高通滤波与高斯低通滤波

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验二,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验二. 由于时间紧张,代码没有进行任何优化, ...

  7. 机器学习进阶-直方图与傅里叶变化-直方图均衡化 1.cv2.equalizeHist(进行直方图均衡化) 2. cv2.createCLAHA(用于生成自适应均衡化图像)

    1. cv2.equalizeHist(img)  # 表示进行直方图均衡化 参数说明:img表示输入的图片 2.cv2.createCLAHA(clipLimit=8.0, titleGridSiz ...

  8. opencv 5 图像转换(3 重映射 仿射变换 直方图均衡化)

    重映射 实现重映射(remap函数) 基础示例程序:基本重映射 //---------------------------------[头文件.命名空间包含部分]------------------- ...

  9. 图解直方图均衡化及其Python实现

    在理解直方图均衡化的过程中,参考了一些书籍和博客,让人困惑的是,笔者对于直方图的理解还是停留在表面,并没有深入理解其内涵.因此,本文拟结合图片对直方图的概念进行阐述,并给出其Python实现,最后对她 ...

随机推荐

  1. vue2 开发总结

    vue-cli学习资料: http://m.php.cn/article/394750.html  或 https://www.cnblogs.com/zhanglin123/p/9270051.ht ...

  2. 工具类--MD5Utils

    public class MD5Utils { private static final String[] HEX_DIGITS = { "0", "1", & ...

  3. CSS:CSS margin(外边距)

    ylbtech-CSS:CSS margin(外边距) 1.返回顶部 1. CSS margin(外边距) CSS margin(外边距)属性定义元素周围的空间. margin margin 清除周围 ...

  4. 使用poi实现生成excel文件

    import java.util.ArrayList; import javax.servlet.ServletOutputStream; import org.apache.poi.hssf.use ...

  5. django 重写用户模型 AbstractBaseUser

    https://blog.csdn.net/weixin_40744265/article/details/80745652

  6. 编码(RZ NRZ NRZI)

    Frm: https://jingyan.baidu.com/album/39810a23addccbb637fda66a.html?picindex=1 RZ 编码(Return-to-zero C ...

  7. 剑指offer第二版面试题9:用两个队列实现栈(JAVA版)

    题目:用两个队列实现栈. 分析:通过一系列的栈的压入和弹出操作来分析用队列模拟一个栈的过程,如图所示,我们先往栈内压入一个元素a.由于两个队列现在都是空,我们可以选择把a插入两个队列中的任一个.我们不 ...

  8. 剑指offer——60二叉树的深度

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.   题解: 简单的深度遍历即可.   class Solution ...

  9. Python CookBook(self report)

    Python CookBook 中文版:https://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html 英文版:https:// ...

  10. jquery插件小集合

    一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ...