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

  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. Linux之mysql-redis-python使用

    1. rpm包使用 1. 光盘挂载 mount /dev/cdrom /mnt cd /mnt ls 2. 安装rpm包 rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm ...

  2. 解压lzma格式的img文件报“Filename has an unknown suffix, skipping”怎么办

    1 确认img文件是什么压缩格式 file 文件名 2 报标题错误怎么办? mv initrd.img initrd.img.xz xz -d initrd.img.xz cpio -ivd < ...

  3. ES6篇

    ES6新特性你了解了多少呢? 珠峰培训 5月17日 ES6新特性 ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才将其标准化.两个发布版本之间时间跨度很大,所以 ...

  4. JDK8新特性之Optional

    Optional是什么 java.util.Optional Jdk8提供Optional,一个可以包含null值的容器对象,可以用来代替xx != null的判断. Optional常用方法 of ...

  5. Ubuntu终端内打开文件管理器

        本文首发于cartoon的博客     转载请注明出处:https://cartoonyu.github.io/cartoon-blog     近段时间在ubuntu中搭建jdk并在jdk的 ...

  6. 【转】elasticsearch中字段类型默认显示{ "foo": { "type": "text", "fields": { "keyword": {"type": "keyword", "ignore_above": 256} }

    官方原文链接:https://www.elastic.co/cn/blog/strings-are-dead-long-live-strings 转载原文连接:https://segmentfault ...

  7. JQuery on绑定click无效的的bug解决办法?

    如果你在移动端使用zepto.js, touch 来代替click事件,那就没有上述标题的问题了.如果你仍然使用了click,在点击事件中苹果机就可能出现无效的结果. 第一种方法: 解决的方法很巧妙, ...

  8. Cause: java.sql.SQLDataException: ORA-01861: 文字与格式字符串不匹配

  9. Ubuntu 奇怪踩坑记录

    仓库ppa问题 当你使用 apt-get update 时候,提示 仓库 "http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu bionic Re ...

  10. Peasy.NET学习之并发问题处理

    Peasy.net之并发处理 BusinessServiceBase是ServiceBase的自定义实现,提供了额外的独特功能 首先,创建一个业务服务,该业务服务必须继承BusinessService ...