Opencv——灰度直方图】的更多相关文章

灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率. 如果将图像总像素亮度(灰度级别)看成是一个随机变量,则其分布情况就反映了图像的统计特性,这可用probability density function (PDF)来刻画和描述,表现为灰度直方图. 灰度直方图的分布函数为: h(k)=nk 其中,k是值第k个灰度级,nk是灰度级为rk的像素总和.如果是8位灰度图像,k=0,1,2,...,255 下面代码如下: #include<cv.h> #in…
原文链接:http://blog.csdn.net/xiaowei_cqu/article/details/7600666 如有疑问或者版权问题,请移步原作者或者告知本人. 灰度直方图是数字图像中最简单且有用的工具,这一篇主要总结OpenCV中直方图CvHistogram的结构和应用. 灰度直方图的定义 灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率). 一维直方图的结构表示为         高维直…
// HIstogram.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "opencv2/opencv.hpp" #define cvQueryHistValue_1D( hist, idx0 ) \ ((float)cvGetReal1D( (hist)->bins, (idx0))) int main() { IplImage* src= cvLoadImage("F:\\Opencv_…
1  图像直方图 1.1  定义 统计各个像素值,在整幅图像中出现次数的一个分布函数.        1.2  标准化 $\quad p_r(r_k) = \frac{n_k}{MN} \qquad k = 0, 1, 2, ..., L -1 $ $r_{k}$ - 第 k 个像素灰度值:  $n_{k}$ - 像素灰度值为 rk 的像素数目: MN - 图像中总的像素个数:  [0, L-1] - 像素灰度值的范围 1.3  直方图均衡化 1.3.1  定义  直方图均衡化,是将给定图像的直…
计算直方图calcHist 直方图是对数据集合的统计 ,并将统计结果分布于一系列提前定义的bins中.这里的数据不只指的是灰度值 ,统计数据可能是不论什么能有效描写叙述图像的特征. 如果有一个矩阵包括一张图像的信息 (灰度值 0-255): gray 既然已知数字的范围包括256个值, 我们能够将这个范围切割成子区域(称作 bins),如: bins 然后再统计掉入每个bin_{i}的像素数目.採用这一方法来统计上面的数字矩阵,我们能够得到下图( x轴表示 bin, y轴表示各个bin中的像素个…
直方图均匀化简介 从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内.这就导致了图片的强弱对比不强烈. 直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(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函数calcHist()对于RGB图像的直方图的绘制 在其基础上自已定义函数实现对灰度图像直方图的简单绘制 直方图均衡化 直方图的反向投影 图像直方图分析以及opencv函数实现 (一)直方图的介绍 直方图到底可以干什么呢?我觉得最明显的作用就是有利于很直观的对图像进行分析了,直方图就像我们常用的统计图,直方图可以用来描述各种…
第二次作业需要打印出来灰度直方图,当然不能使用ocv的自带calcHist函数来得到Mat对象了……结果上网搜索怎么用自己的数据创建直方图,搜到的都是直接用函数的_(:з」∠)_ 结果这个地方拖了好久呵呵呵呵呵呵呵.最后还是努力耐下性子来对照网上绘制灰度直方图的代码来看到底内藏什么玄机,结果发现其实真的,没什么,大不了(笑)(哭). 基本思路: 建立一个Mat对象作为直方图的画布,将256个灰度级的数值的直方用rectangle或者line一个一个画出来. ……简直简单到我无法想象_(:з」∠)…
**只会显示灰度直方图I = imread('*.bmp') %图必须是灰度图,或者转换为灰度图I=rgb2gray(I);imshow(I);imhist(I); **同时出现在一个平面上I = imread('*.bmp') %图必须是灰度图,或者转换为灰度图I=rgb2gray(I);imshow(I);subplot(121); %subplot(m,n,p)或者subplot(m n p):m表示是图排成m行,n表示图排成n列,p=1表示从左到右从上到下的第一个位置.imhist(I)…
直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更暗. 映射算法是计算灰度图的累积函数,并将其归一化.最后由累计函数映射出新的灰度值.这个算法其他的博客都有描述.我这里谈谈我对这个算法的理解. 通过这种算法会有什么效果?首先灰度的大小关系是不会变化的,但是新的灰度范围和这种灰度的像素数目相关.原本占据低区域和高区域的像素,虽然很少,但是占据了(0~…
在博客肺结节CT影像特征提取中,已经实现了肺结节的灰度.纹理和形态特征的提取.但是,对于进一步了解ROI区域像素值或者说CT值的分布来说,还存在一定的不足,不能够很好的显示ROI区域. 因此,本文将进一步对ROI区域进行处理,实现ROI区域的图形化显示.主要包含灰度直方图和ROI区域图形化. 1.1  ROI区域灰度直方图 灰度直方图是描述像素值分布的一种图形,根据灰度级各个值的像素分布比例所画出的一种直方图.这里,为了更加直观看到每个灰度级像素的个数,横轴采用灰度级,纵轴为像素个数. 根据前几…
灰度直方图是灰度的函数,描述的是图像中具有该灰度级的像素的个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵坐标是该灰度出现的概率(像素的个数). 灰度直方图的分布函数: 其中,K是指第k个灰度级,如果是8位灰度图像,k=0.1.…….255. 处理图像生成直方图数据 //将图像数据复制到byte中 Rectangle rect = new Rectangle(0, 0, bmpHist.Width, bmpHist.Height); System.Drawing.Imaging.Bitma…
随着HDTV的普及,以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期.与传统CRT电视不同的是,这些高清数字电视需要较复杂的视频处理电路来驱动,比如:模数转换(A/D Converter).去隔行(De-interlacer).视频缩放(Scaler)和视频图像增强(Video Enhancement)等等.由于HDTV的带宽较高,720p信号(1280×720@60Hz)的像素速率达到74MHz,因此针对HDTV的视频处理算法需要更高性能的器件.采用大规模高工艺的ASIC芯片是目前这个问题…
灰度直方图是灰度的函数,描述的是图像中具有该灰度级的像素的个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵坐标是该灰度出现的概率(像素的个数). using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threa…
代码之一: #include <cv.h> #include <highgui.h> #pragma comment( lib, "cv.lib" ) #pragma comment( lib, "cxcore.lib" ) #pragma comment( lib, "highgui.lib" ) int main() { IplImage* src=cvLoadImage(); int width=src->wi…
直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均衡化作用:用来增强对比度. 这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候.通过这种方法,亮度可以更好地在直方图上分布.这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能. 这种方法对于背景和前景都太亮或者太…
calcHist函数在Opencv中是极难理解的一个函数,一方面是参数说明晦涩难懂,另一方面,说明书给出的实例也不足以令人完全搞清楚该函数的使用方式.最难理解的是第6,7,8个参数dims.histSize和ranges.以前一直都是想当然认为,该函数可以一次统计多张图片每个通道的灰度值数据,实际上calcHist函数一次只能统计一个通道上的直方图.我估计许多同学都犯过和我类似的错误,认为第5个参数hist,可以根据dims设定维度,比如dims=3,则输出的hist的维度就是3,并且会想当然的…
完整opencv(emgucv)人脸.检测.采集.识别.匹配.对比 //成对几何直方图匹配               public static string MatchHist()                {          string haarXmlPath = @"haarcascade_frontalface_alt_tree.xml";          HaarCascade haar = new HaarCascade(haarXmlPath);       …
今天写直方图,学了几个相关函数 1. mixChannels void mixChannels(const Mat* src, int nsrc, Mat* dst, int ndst, const int* fromTo, size_t npairs) 功能: 把 src 中指定的若干通道 复制到 dst中 src: 输入图像, 可以多张 nsrc: 有多少张输入图像 dst: 输出图像,可以多张 ndst: 有多少张输出图像 fromTo: {0 , 1, 1, 2, 2, 0} 这样偶数个…
直方图可以用来描述各种不同的事物,如物体的色彩分布.物体边缘梯度模板,以及表示目标位置的当前假设. 简单的说,直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中.bin中的数值是从数据中计算出特征的统计量,这些数据可以是诸如梯度.方向.色彩或者任何其他特征.无论如何,直方图获得的是数据分布的统计图.通常直方图的维数要低于原始数据. 具体可参见: http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_ca…
calchist函数需要包含头文件 #include <opencv2/imgproc/imgproc.hpp> 函数声明(三个重载 calchist函数): //! computes the joint dense histogram for a set of images. CV_EXPORTS void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray h…
直方图均衡化是使用图像直方图进行对比度调整的图像处理的方法. 该方法通常会增加许多图像的整体对比度,尤其是当图像的可用数据由接近的对比度值表示时. 通过这种调整,强度可以更好地分布在直方图上. 这允许局部对比度较低的区域获得较高的对比度. 直方图均衡化通过有效地分散最频繁的强度值来实现这一点. 实现原理参考自直方图均衡(维基百科) 第一种是自己写的,消耗时间长.第二种参考自opencv-python的直方图均衡 import cv2 import numpy as np def equaliza…
图像直方图概述 直方图的计算与绘制 计算直方图:calcHist()函数 找寻最值:minMaxLoc()函数 示例程序:绘制H-S直方图 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; //-----------------------------------[ShowHelpText( )函数]-----------…
hist =[1,2,3,4,5,6,7,8,7,6,5,4,3,2,1]     %15个元素      这个行矩阵(数组)输入到命令行 bar(hist) 用列矩阵也行 hist_im=imhist(I); %计算直方图 相当于这个数组共有256个元素,里面的每个取值是像素点个数      这个数组的最大一个数验证出来是接近200,符合上面的直方图…
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; Mat img1, img2, img3, img_gray, map_x, map_y; char win1[] = "window1";char win2[] = "window2";char win3[] = "window3";char w…
OpenCV2版本号非常多函数发生了变化.比如二值化,其演示样例: void CmyMFC2Dlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here // 读入一张图片 Mat mat=imread("test.jpg"); Mat mat2; //cvCvtColor(mat,mat2, CV_BGR2GRAY); cvtColor(mat,mat2, CV_BGR2GRA…
Mat image = imread("D:/ju.jpg"); imshow("素材图", image); int bins = 256; //直条为256 int hist_size[] = { bins }; float range[] = { 0,256 }; const float* ranges[] = { range }; MatND redHist, greenHist, blueHist; //MAT数据为BGR int channels_r[]…
懒得用中文再写一遍了, 直接传送门过去吧. https://medium.com/@fanzongshaoxing/detect-face-in-bad-lighting-condition-using-color-histograms-2571df5fc53b…
手工实现灰度及RGB直方图 !库 1. 灰度图像直方图 算法 1. 图片灰度化: 2. 遍历Mat,统计各灰度级的像素个数: 3. 根据opencv画点线函数,绘制坐标轴及像素分布图 源码(编译环境:VS2017+OpenCV) 补充:三通道直方图(即RGB彩色图象直方图在后面) #include <iostream> #include <string> #include <algorithm> #include <opencv2/opencv.hpp> #…
实验内容及实验原理: 1.灰度的线性变换 灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换.该线性灰度变换函数是一个一维线性函数:f(x)=a*x+b 其中参数a为线性函数的斜率,b为线性函数的在y轴的截距,x表示输入图像的灰度,f(x)表示输出图像的灰度. 要求:输入一幅图像,根据输入的斜率和截距进行线性变换,并显示. 2.灰度拉伸 灰度拉伸和灰度线性变换相似.不同之处在于它是分段线性变换.表达式如下: 其中,x1和x2是分段函数的转折点. 要求:输入一幅图像,根据选择的转…