图像直方图均衡化(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实现,最后对她 ...
随机推荐
- vue2 开发总结
vue-cli学习资料: http://m.php.cn/article/394750.html 或 https://www.cnblogs.com/zhanglin123/p/9270051.ht ...
- 工具类--MD5Utils
public class MD5Utils { private static final String[] HEX_DIGITS = { "0", "1", & ...
- CSS:CSS margin(外边距)
ylbtech-CSS:CSS margin(外边距) 1.返回顶部 1. CSS margin(外边距) CSS margin(外边距)属性定义元素周围的空间. margin margin 清除周围 ...
- 使用poi实现生成excel文件
import java.util.ArrayList; import javax.servlet.ServletOutputStream; import org.apache.poi.hssf.use ...
- django 重写用户模型 AbstractBaseUser
https://blog.csdn.net/weixin_40744265/article/details/80745652
- 编码(RZ NRZ NRZI)
Frm: https://jingyan.baidu.com/album/39810a23addccbb637fda66a.html?picindex=1 RZ 编码(Return-to-zero C ...
- 剑指offer第二版面试题9:用两个队列实现栈(JAVA版)
题目:用两个队列实现栈. 分析:通过一系列的栈的压入和弹出操作来分析用队列模拟一个栈的过程,如图所示,我们先往栈内压入一个元素a.由于两个队列现在都是空,我们可以选择把a插入两个队列中的任一个.我们不 ...
- 剑指offer——60二叉树的深度
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题解: 简单的深度遍历即可. class Solution ...
- Python CookBook(self report)
Python CookBook 中文版:https://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html 英文版:https:// ...
- jquery插件小集合
一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ...