图像直方图均衡化(C#)
关于图像直方图均衡化的原理和步骤先不作讨论,我就看看代码吧。
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#)的更多相关文章
- Python实现图像直方图均衡化算法
title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...
- opencv图像直方图均衡化及其原理
直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...
- opencv:图像直方图均衡化
// 直方图均衡化 Mat gray, dst; cvtColor(src, gray, COLOR_BGR2GRAY); equalizeHist(gray, dst); imshow(" ...
- OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- Win8Metro(C#)数字图像处理--2.30直方图均衡化
原文:Win8Metro(C#)数字图像处理--2.30直方图均衡化 [函数名称] 直方图均衡化函数HistogramEqualProcess(WriteableBitmap src) [算法说明] ...
- python实现直方图均衡化,理想高通滤波与高斯低通滤波
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验二,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验二. 由于时间紧张,代码没有进行任何优化, ...
- 机器学习进阶-直方图与傅里叶变化-直方图均衡化 1.cv2.equalizeHist(进行直方图均衡化) 2. cv2.createCLAHA(用于生成自适应均衡化图像)
1. cv2.equalizeHist(img) # 表示进行直方图均衡化 参数说明:img表示输入的图片 2.cv2.createCLAHA(clipLimit=8.0, titleGridSiz ...
- opencv 5 图像转换(3 重映射 仿射变换 直方图均衡化)
重映射 实现重映射(remap函数) 基础示例程序:基本重映射 //---------------------------------[头文件.命名空间包含部分]------------------- ...
- 图解直方图均衡化及其Python实现
在理解直方图均衡化的过程中,参考了一些书籍和博客,让人困惑的是,笔者对于直方图的理解还是停留在表面,并没有深入理解其内涵.因此,本文拟结合图片对直方图的概念进行阐述,并给出其Python实现,最后对她 ...
随机推荐
- Java习题10.24
Java习题10.24 1. 1,3.connect()与accept():这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接.accept()用于使服务器等待来自某客户进程 ...
- (4)centos7 基础命令
1.显示文件列表 ls 显示当前目录下所有非隐藏的文件夹名称 -a #显示路径下所有文件及目录 (包括以.开头的隐藏文件) -l #除文件名称外,亦将文件型态.权限.拥有者.文件大小等资讯详细列出(不 ...
- asp.net core容器&mysql容器network互联 & docker compose方式编排启动多个容器
文章简介 asp.net core webapi容器与Mysql容器互联(network方式) docker compose方式编排启动多个容器 asp.net core webapi容器与Mysql ...
- 剑指offer——70n个骰子的点数
题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 题解: 使用两个数组存每次投的点数 void theProbability(const int ...
- JUC源码分析-集合篇(四)CopyOnWriteArrayList
JUC源码分析-集合篇(四)CopyOnWriteArrayList Copy-On-Write 简称 COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想 ...
- 40-Ubuntu-用户管理-05-which查看命令所在位置
which 查看执行命令所在的位置 例: 1.查看修改用户密码的命令--passwd所在位置 which passwd 注: /etc/passwd 是用于保存用户信息的文本文件. /usr/bin/ ...
- 二维RMQ hdu 2888
题目:点这里 题意:给出一个n*m的矩阵,然后又Q个询问:每个询问有x1,y1,x2,y2,x1,y1为子矩阵的左上角坐标,x2,y2为右上角的坐标.求此子矩阵中元素最大值,判断最大值是否在子矩阵四个 ...
- sql ibatis
<!-- 写入单位下当前参保人员 --> <insert id="insertTempCaz043" parameterClass="map" ...
- jsonp的实现原理
jsonp的实现原理 由于浏览器的安全性(同源策略)限制,不允许AJAX访问协议不同或域名不同或端口号不同的数据接口: 可以通过动态创建script标签的方式,把script标签的src属性指向数据接 ...
- 笔记44 Hibernate快速入门(一)
一.Hibernate简介 Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象. Hibernate 架构是分层的,作为数据访问层,你不 ...