直方图均衡化 EqualizeHist

核心函数:

cvEqualizeHist

程序:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int EqualizeHist(int argc,char** argv)
{
IplImage* src=cvLoadImage("e:\\picture\\4.jpg");
IplImage* SrcB=cvCreateImage(cvGetSize(src),8,1);
IplImage* SrcG=cvCreateImage(cvGetSize(src),8,1);
IplImage* SrcR=cvCreateImage(cvGetSize(src),8,1);
IplImage* DstB=cvCreateImage(cvGetSize(src),8,1);
IplImage* DstG=cvCreateImage(cvGetSize(src),8,1);
IplImage* DstR=cvCreateImage(cvGetSize(src),8,1);
IplImage* Result=cvCreateImage(cvGetSize(src),8,3);
cvSplit(src,SrcB,SrcG,SrcR,NULL);  //把彩***分成B,G,R三个灰度图,因为cvEqualizeHist只能处理单通道图像
cvEqualizeHist(SrcB,DstB);  //直方图均衡化
cvEqualizeHist(SrcG,DstG);
cvEqualizeHist(SrcR,DstR);
cvMerge(DstB,DstG,DstR,NULL,Result);  //合并图像
cvNamedWindow("src");
cvNamedWindow("SrcB");
cvNamedWindow("SrcG");
cvNamedWindow("SrcR");
cvNamedWindow("DstB");
cvNamedWindow("DstG");
cvNamedWindow("DstR");
cvNamedWindow("Result");
cvShowImage("src",src);
cvShowImage("SrcB",SrcB);
cvShowImage("SrcG",SrcG);
cvShowImage("SrcR",SrcR);
cvShowImage("DstB",DstB);
cvShowImage("DstG",DstG);
cvShowImage("DstR",DstR);
cvShowImage("Result",Result);
cvWaitKey(0);
return 0;
}

直方图均衡化 EqualizeHist

时间: 2024-07-29 13:03:24

直方图均衡化 EqualizeHist的相关文章

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

1. cv2.equalizeHist(img)  # 表示进行直方图均衡化 参数说明:img表示输入的图片 2.cv2.createCLAHA(clipLimit=8.0, titleGridSize=(8, 8))  用于生成自适应均衡化图像 参数说明:clipLimit颜色对比度的阈值, titleGridSize进行像素均衡化的网格大小,即在多少网格下进行直方图的均衡化操作 直方图均衡化:一般可以用来提升图片的亮度, 在上面一节中,我们可以看出在150-200之间所占的频数特别的大,频数

opencv —— equalizeHist 直方图均衡化

直方图均匀化简介 从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内.这就导致了图片的强弱对比不强烈. 直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的形式,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果. 直方图均衡化的列表计算 序号 运算 步骤和结果 1 列出原始图灰度值 f(0 ≤ f ≤ L-1) 0 1 2 3 4 5 6 7 2 列出原始直方图(概率表达) 0.02 0.05 0.09 0.12 0.14 0.2 0.22

opencv直方图均衡化

#include <iostream> #include "highgui.h" #include "cv.h" #include "cxcore.h" #include "math.h" using namespace std; using namespace cv; //绘制1维直方图 Mat draw1DHistogram(Mat histogramMat) { double maxVal = 0, minV

OpenCV-跟我一起学数字图像处理之直方图均衡化

从这篇博文开始,小生正式从一个毫不相干专业转投数字图像处理.废话不多说了,talk is cheap. show me the code. 直方图均衡化目的 由于一些图像灰度的分布过于集中,这样会导致图像的层次不够分明,直方图均衡化就是为了让图像的灰度分布更均匀,图像的层次感更强. 数学原理 基于连续灰度分布的结论推导 直方图均衡化属于数字图像处理中灰度变换(intensity transformation)的内容,灰度变换的目的就是找到一个合适的映射函数s=T(r).将原图像的灰度值映射到新的

OpenCV2马拉松第9圈——再谈对比度(对比度拉伸,直方图均衡化)

收入囊中 lookup table 对比度拉伸 直方图均衡化 葵花宝典 lookup table是什么东西呢? 举个例子,假设你想把图像颠倒一下,f[i] = 255-f[i],你会怎么做? for( int i = 0; i < I.rows; ++i) for( int j = 0; j < I.cols; ++j ) I.at<uchar>(i,j) = 255 - I.at<uchar>(i,j); 大部分人应该都会这么做.或者: for( i = 0; i &

图像直方图均衡化增强opencv与C语言版

本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include <opencv2/opencv.hpp> //#include <cv.h> //#include <cxcore.h> //#include <highgui.h> #include <time.h> #include <stdio.h> #include <math.h> #include "

数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是  是图像中全部的灰度数, 是图像中全部的像素数,  实际上是图像的直方图,归一化到 . 把  作为相应于  的累计概率函数, 定义为:  是图像的累计归一化直方图. 我们创建一个形式为  的变化,对于原始图像中的每一个值它就产生一个 ,这样  的累计概率函数就能够在全部值范围内进行线性化,转换公式定义为: 注意 T 将不同的等级映射到  域.为了将这些值映射回它们最初的域,须要在结果上应用以下的简单变换: 上面描写

Opencv图像识别从零到精通(10)-----直方图均衡化与直方图拉伸

 一.直方图均衡化 直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围.许多图像的灰度值是非均匀分布的,其中灰度值集中在一个小区间内的图像是很常见的,直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法,经过直方图均衡化的图像对二值化阈值选取十分有利.一般来说,直方图修正能提高图像的主观质量,因此在处理艺术图像时非常有用.直方图均衡化处理的中心思想是把原始

Qt 5.3 下OpenCV 2.4.11 开发(9)直方图均衡化

接着上面的章节,我们在 Histogram1D 类中加入一个新方法,即直方图均衡化的方法,现在贴出完整的代码,Histogram1D 类 头文件如下: #ifndef HISTOGRAM1D_H #define HISTOGRAM1D_H #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> using namespace