opencv学习(三十六)图像直方图均衡化equalizeHist

OpenCV 直方图均衡化 文章目录声明正文1.什么是直方图均衡化?2.直方图均衡化有什么用?3.直方图均衡化的优缺点3.如何实现直方图均衡化?感谢观看! 声明 声明:本系列博客是我在学习OpenCV官方教程中文版(For Python)(段力辉 译)所做的笔记。所以,其中的绝大部分内容引自这本书,博客中的代码也是其配套所附带的代码或书中的代码,侵删。其中部分代码可能会因需要而改动。在本系列博客中,其中包含书中的引用,也包括我自己对知识的理解,思考和总结。本系列博客的目的主要有两个,一个是可以作为我自己的学习笔记,时常复习巩固。第二 阅读详情

图像直方图描述了图像中灰度值的分布情况,直方图均衡化就是通过拉伸像素强度分布范围来增强图像对比度的一种方法。如下图:
这里写图片描述

可以看到像素主要集中在中间的一些强度值上。直方图均衡化要做的就是拉伸这个范围。如下:
这里写图片描述

作途中绿色圈圈出了少有像素分布其上的强度值,对其应用均衡化后得到中间图所示的直方图,均衡化后的图像见上右图。

直方图均衡化是通过使用累积函数对灰度值进行“调整”以实现对比度的增强,其中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。也就是把一个分布(给定的直方图)映射到另一个分布(一个更宽更统一的强度值分布),所以强度值分布会在整个范围内展开,要实现均衡化的效果,映射函数应该是一个累积分布函数(cdf)。对于直方图H(i),它的累积分布H’(i)是:
这里写图片描述

要使用其作为映射函数,我们必须对最大值为255(或者用图像的最大强度值)的累积分布H’(i)进行诡异花,同上,累积分布函数为:
这里写图片描述

最后,使用一个简单的映射过程来获得均衡化后像素的强度值:
这里写图片描述

图像直方图均衡化的实质是近似均匀分布,均衡化图像的动态范围扩大了,但其被值扩大了量化间隔,而量化级别反而减少了,原来灰度不同的像素经处理后可能变得相同,这样就形成了一片相同灰度的区域,各区域之间有明显的边界,造成对比度提高的视觉效果。如果原始图像对比度本来就很高,这再均衡化会降低图像对比度。

opencv中提供了equalizeHist函数实现图像直方图均衡化,函数原型如下:

void cv::equalizeHist   (   InputArray      src,
        OutputArray     dst 
    )   

参数解释
. src:8-bit单通道 输入图像
. dst: 目标图像,与原图像有相同的尺寸和类型。

函数采用如下算法步骤进行直方图均衡化操作:
. 计算输入图像的直方图H
. 进行直方图诡异花,直方图的组距的和为255
. 计算直方图积分:这里写图片描述

. 以H’为查询表进行图像变换。

总之,equalizeHist()函数实现的图像直方图均衡化算法就是把直方图的每个灰度级进行归一化处理,求每种灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素的像素值。

示例代码

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
    Mat srcImage, dstImage;
    srcImage = imread("night.jpg");

    //判断图像是否加载成功
    if(!srcImage.data)
    {
        cout << "图像加载失败!" << endl;
        return -1;
    }
    else
        cout << "图像加载成功!" << endl << endl;

    cvtColor(srcImage, srcImage, COLOR_BGR2GRAY);       //将原图像转换为灰度图

    equalizeHist(srcImage, dstImage);           //直方图均衡化

    //创建窗口
    String windowNameSrc = "原图像";
    String windowNameHist = "直方图均衡化后图像";
    namedWindow(windowNameSrc, WINDOW_AUTOSIZE);
    namedWindow(windowNameHist, WINDOW_AUTOSIZE);

    //显示图像
    imshow(windowNameSrc, srcImage);
    imshow(windowNameHist, dstImage);

    waitKey(0);

    return 0;
}

运行结果
这里写图片描述
这里写图片描述

opencv3.0 函数学习 3——equalizeHist 直方图均衡化 equalizeHist 直方图均衡化 函数功能:直方图均衡化,该函数能归一化图像亮度和增强对比度 为了更好地观察直方图均衡化的效果, 我们使用一张对比度不强的图片作为源图像输入, 如下图: 它的直方图为: 注意到像素大多集中在直方图中间的强度上. 使用例程进行均衡化后, 我们得到下面的结果: 这幅图片显然对比度更强. 再验证一下均衡化后图片的直 阅读详情

相关推荐

OpenCV-Python实战(8)——直方图均衡化_python opencv 直方图均衡化

图像处理技术是计算机视觉项目的核心,通常是计算机视觉项目中的关键工具,可以使用它们来完成各种计算机视觉任务。在本文中,将介绍如何使用OpenCV函数执行直方图均衡,并将其应用于灰度和彩色图像,函数将亮度归一化并提高图像的对比度。

2401_84264244的博客 1229

opencv中 equalizeHist()均衡化直方图

1、EqualizeHist函数 函数作用: 直方图均衡化,,用于提高图像的质量 2、EqualizeHist函数调用形式 C++: void equalizeHist(InputArray src, OutputArray dst) #include &lt;opencv2/imgproc/imgproc.hpp&gt; #include &lt;opencv2/highgui/highgu...

张齐贤的博客 1万+

【opencv-c++】cv::equalizeHist直方图均衡化

cv::equalizeHist这个函数的输入图片仅仅是一副灰度图像,输出结果是直方图均衡化之后的图像。OutputArray dst:目标图像,与原图像具有同样的大小与类型;直方图均衡化是利用图像直方图对 图像的对比对进行调整的方法。该算法对图像的亮度进行了归一化处理,提高了图像的对比度;(2) 将柱状图归一化,使柱状图bin的总和为255;该算法对亮度进行归一化处理,提高了图像的对比度。InputArray src:8位单通道的图像;直方图均衡化,用于提高图像的质量;(1) 计算原图像的直方图H;

jn10010537的博客 1177

【OpenCV入门学习--python】函数cv::equalizeHist直方图均衡化

【OpenCV入门学习--python】cv::equalizeHist直方图均衡化

qq_43536231的博客 735

42.图像直方图均衡化

其中,src(x, y)是输入图像中坐标为(x, y)处的像素值,cdf(src(x, y))是该像素值的累积概率密度函数,L是输出图像的灰度级别数量(通常为256),M和N分别是输入图像的行数和列数,cdf_min是累积概率密度函数的最小值。它的核心思想是将原始图像的灰度级别映射到一个新的范围内,使得图像的灰度级别更加均匀。图像直方图均衡化(Histogram Equalization)是一种通过调整图像的灰度级别分布,使得图像在亮度和对比度上更加均匀的操作。它可以增强图像的细节,并改善图像的视觉效果。

twnkie的博客 290

OpenCV-Python实战(8)——直方图均衡化

图像处理技术是计算机视觉项目的核心,通常是计算机视觉项目中的关键工具,可以使用它们来完成各种计算机视觉任务。在本文中,将介绍如何使用 OpenCV 函数 cv2.equalizeHist() 执行直方图均衡,并将其应用于灰度和彩色图像,cv2.equalizeHist() 函数将亮度归一化并提高图像的对比度。

盼小辉丶的博客 2万+

cv::equalizeHist()

直方图均衡化 函数实现的灰度直方图均衡化算法,即将直方图的每个灰度值进行归一化处理,求各个灰度的累积分布,接着得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。 函数原型 void equalizeHist(InputArray src, OutputArray dst ) 实例 Mat img = imread("F:\\desktop\\OpenCV_study\\my.jpg", IMREAD_GRAYSCALE); Mat dst; equa

qq_45279570的博客 852

opencv学习笔记十七:直方图和直方图均衡化(cv2.calcHist、 cv2.equalizeHist)

一、计算图像直方图的函数:cv2.calcHist() cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->hist imaes:输入的图像 channels:选择图像的通道 mask:掩膜,是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的部分指定为0...

耐心的小黑的博客 1万+

数字图像处理(17): 直方图均衡化处理

目录 1 直方图均衡化简介 1.1 直方图均衡化概念 1.2 直方图均衡化的理论基础 1.3 直方图均衡化的步骤 1.4 直方图均衡化应用场景 2 直方图均衡化-equalizeHist() 3 matplotlib.pyplot.subplot() 函数 4 matplotlib.pyplot.imshow() 函数 5 直方图均衡化对比 参考资料 1 直方图均衡...

TechArtisan6的博客 8万+

PCIe 6.0实战指南:从链路训练到信号完整性的避坑手册

本文是一份针对PCIe 6.0硬件工程师的实战避坑指南。文章深入解析了从NRZ到PAM4调制带来的信号完整性挑战,详细拆解了链路训练(LTSSM)的复杂过程与调试方法,并提供了从信道仿真到实验室实测(如使用Keysight示波器进行眼图与误码率分析)的完整信号完整性闭环验证策略,帮助工程师解决高速率下的链路不稳定与降速问题。

weixin_29306875的博客 343

高分思路!挑战7天完成一篇网状meta DAY1-7

PASSION!继续析挑战,7天完成一篇网状meta分!

MR_SCI_help的博客 787

OpenCV基础(16)OpenCV直方图均衡化和自适应直方图均衡化(CLAHE)

在本教程中,您将学习使用OpenCV实现直方图均衡化和自适应直方图均衡化(CLAHE)。 直方图均衡化是一种基本的图像处理技术,通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域在输出图像中获得更高的对比度。 本质上,直方图均衡化的工作原理是: 1.计算图像像素强度的直方图 2.均匀展开并分布最频繁的像素值(即直方图中计数最大的像素值) 3.给出累积分布函数(CDF)的线性趋势 应用直方图均衡化的结果是得到一幅全局对比度更高的图像。 我们可以进一步改进直方图均衡化,采用一

weixin_43229348的博客 1万+

Kali使用Metasploit内、外网渗透windows系统

Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。 一、(内网渗透)内网英文缩写WAN;内网又称局域网 局域网的覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局域网可以实现文件管理、应用软件共享、打印机共享等功能,在使用过程当中,通过维护局域网网...

QQ670663的博客 2万+

C++ opencv之图像直方图均衡化(equalizeHist)

这篇博客我们来学习C++opencv之图像直方图均衡化。 一、主要内容 1.1 直方图均衡化 直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法. 1.2 作用 用于提高图像的质量 1.3 函数原型 C++: void equalizeHist(InputArray src, OutputArray dst) 二、代码演示 #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; us

weixin_46196863的博客 7036

【G4基础08】GPS-2-Macro Commands宏命令

GPS-2

adelall的博客 3738

基于Cadence IC617的共源级放大器设计:从直流到交流的virtuoso仿真实践

本文详细介绍了使用Cadence IC617的Virtuoso平台进行共源级放大器设计的完整仿真流程。从电路图绘制、直流工作点分析,到负载电阻RD的参数扫描及其对增益和带宽的影响,再到交流小信号频率响应仿真,提供了从理论到实践的全面指导,帮助初学者掌握模拟集成电路设计的核心仿真技能。

jj890的博客 480

Python之OpenCV直方图统计及均衡化

0 背景 在做图像处理时,经常需要对图像的像素分布情况进行统计,用来分析整张图片的像素分布,从而为进一步的处理提供数据支持,如二值化等操作。因此,本文对直方图相关的操作进行一个介绍。 在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像、视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征) 图像直方图是用一表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数。可以借助观察该直方图了解需要如何调整亮度分布的直方图。这种直方图中

ZONGXP的博客 1万+

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件)

本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。

weixin_27017211的博客 246

opencv 直方图均衡化

接下来我们就要进行计算,就是将要缩放的范围(通常是缩放到0-255,所以就是255-0)乘以累计比例,得到新的像素值,并将新的像素值放到对应的位置上,比如像素值为50的像素点,将其累计比例乘以255,也就是0.33乘以255得到84.15,取整后得到84,并将84放在原图像中像素值为50的地方,像素值为100、210、255的计算过程类似,最终会得到如下图所示的结果,这样就完成了最基本的直方图均衡化的过程。,图像的细节不够清晰且对比度较低的情况,然而,传统的直方图均衡化方法会引入噪声,

2401_87862479的博客 1799

【ESP32摄像头开发实例】-视频流接入Home Assistant

在这个项目中,我们将使用ESP32-CAM板构建一个IP监控摄像头。ESP32摄像头将托管一个视频流媒体网络服务器,您可以使用网络中的任何设备进行访问。

视觉与物联智能 792

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

计算机毕设项目十四:美团酒店评论情感分析完整数据代码-可直接运行

694

【OpenCV 例程300篇】46. 直方图处理之直方图均衡化(cv2.equalizeHist)

直方图均衡化是一种简单有效的图像增强技术。根据直方图的形态可以判断图像的质量,通过调控直方图的形态可以改善图像的质量。 直方图均衡化是将原始图像通过函数变换,调控图像的灰度分布,得到直方图分布合理的新图像,以此来调节图像亮度、增强动态范围偏小的图像的对比度。 OpenCV 提供了函数 **cv2. equalizeHist** 可以实现直方图均衡化。...

youcans的博客 6996

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OpenCV-实现直方图均衡化(对比cv::equalizeHist)

OpenCV&C++代码实现直方图均衡化,并对比了官方自带的equalizeHist

翟天保的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法

【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法 (一)图像直方图 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图)。所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念。直方图的好处就在于可以清晰了解图像的整体灰度分布,这对于后面依据直方图处理图像来说至关重要。 一般情况下直方图都是灰...

python深度学习笔记,一起学习的加QQ2737499951 7224

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OpenCv—图像直方图均衡化cv2.equalizeHist

一、图像直方图 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图)。所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念。直方图的好处就在于可以清晰了解图像的整体灰度分布,这对于后面依据直方图处理图像来说至关重要。 一般情况下直方图都是灰度图像,直方图x轴是灰度值(一般0~255),y轴就是图像中每一个灰度级对应的像素点的个数。 ...

5141

OpenCV 图像处理五(直方图处理)

直方图是一种统计图,显示了图像中每个灰度级别(或颜色通道)的像素数量。通过分析图像的直方图,可以获得关于图像对比度、亮度和颜色分布等方面的重要信息 直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。 这种方法提高图像整体的对比度,特别是有用数据的像素值分布比较接近时。。

m0_74154295的博客 3090
上一篇: opencv学习(三十五)之仿射变换warpAffine
下一篇: opencv学习(三十七)之图像直方图计算calcHist()
梧桐栖鸦
梧桐栖鸦 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄14年 2268粉丝 98原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值