直方图

栈的灵活实际应用——直方图最大矩形面积

烂漫一生 提交于 2019-12-06 02:22:13
直方图最大矩形面积 这是一个栈的应用题,利于深入了解栈的原理和功能,每次存元素的索引,遇到小的就触发,开始依次往左出栈,算的时候算到该的最右边,就实现了。注意长度是多少和栈里面现在都是递增,最后怎么处理,了解运行机制 一个直方图是由许多矩形组成的,要求在给定的直方图中找出最大的矩形面积。假定直方图矩形数量不超出1000个。 假定所有矩形的宽度都为1个单位 。如下图所示的直方图中有7个矩形,高度分别是6,2,5,4,5,1,6,其中连续的矩形能组成的最大的矩形面积是12。 实现提示:考虑使用栈解决此问题。 输入格式: 第一行输入直方图中矩形的数量。 第二行输入一组直方图的高度,每个高度用空格符间隔。 输出格式: 输出连续矩形能组成的最大矩形面积。 输入样例: 在这里给出一组输入。例如: 7 6 2 5 4 5 1 6 输出样例: 在这里给出相应的输出。例如: 12 AC代码 #include<iostream> #include<cstdio> #include<stack> #include<cmath> using namespace std; int main() { int maxs=0,i,h[1010],n,t; stack <int> s; cin>>n; for (i=0;i<=n-1;i++) scanf("%d",&h[i]); i=0; while (i<=n

lightgbm,xgboost,gbdt的区别与联系

一个人想着一个人 提交于 2019-12-05 22:11:47
转载链接 https://www.cnblogs.com/mata123/p/7440774.html GBDT 梯度提升树实在提升树的基础上发展而来的一种使用范围更广的方法,当处理回归问题时,提升树可以看作是梯度提升树的特例(分类问题时是不是特例?)。 因为提升树在构建树每一步的过程中都是去拟合上一步获得模型在训练集上的残差。后面我们将会介绍,这个残存正好是损失函数的梯度,对应于GBDT每一步要拟合的对象。 主要思想 在目标函数所在的函数空间中做梯度下降,即把待求的函数模型当作参数,每一步要拟合目标函数关于上一步获得的模型的梯度,从而使得参数朝着最小化目标函数的方向更新。 一些特性 每次迭代获得的决策树模型都要乘以一个缩减系数,从而降低每棵树的作用,提升可学习空间。 每次迭代拟合的是一阶梯度。 XGBoost XGBoost 是GBDT的一个变种,最大的区别是xgboost通过对目标函数做二阶泰勒展开,从而求出下一步要拟合的树的叶子节点权重(需要先确定树的结构),从而根据损失函数求出每一次分裂节点的损失减小的大小,从而根据分裂损失选择合适的属性进行分裂。 这个利用二阶展开的到的损失函数公式与分裂节点的过程是息息相关的。先遍历所有节点的所有属性进行分裂,假设选择了这个a属性的一个取值作为分裂节点,根据泰勒展开求得的公式可计算该树结构各个叶子节点的权重,从而计算损失减小的程度

数字图像处理(三)

一笑奈何 提交于 2019-12-05 20:21:00
图像的增强与复原 一、图像的灰度直方图 1、灰度直方图的定义    灰度直方图是灰度级的函数,描述的是图像中该灰度级的像素个数。即:横坐标表示灰度级,纵坐标表示图像中该灰度级出现的个数。 2、数字图像的描述 1)黑白图像     是指图像的每个像素只能是黑或者白,没有中间的过渡,故又称为2值图像。2值图像的像素值为0、1 2)灰度图像 灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息 3)彩色图像是指每个像素的信息由RGB三原色构成的图像,其中RBG是由不同的灰度级来描述的 3、直方图的性质 (1.所有的空间信息全部丢失。 (2.每一灰度级的像素个数可直接得到。 4、直方图的用途 (1 . 数字化参数    直方图给出了一个简单可见的指示,用来判断一幅图象是否合理的利用了全部被允许的灰度级范围。一般一幅图应该利用全部或几乎全部可能的灰度级,否则等于增加了量化间隔。丢失的信息将不能恢复。 (2. 边界阈值选取    假设某图象的灰度直方图具有 二峰性,则表明这个图象的较亮的区域和较暗的区域可以较好地分离,去这一点为阈值点,可以得到好的2值处理的效果。 二、图像的灰度变换(灰度变换的目的是为了改善画质,使图像的显示效果更加清晰。) 1、输入图像的r校正(我们知道,数字图像信息的获取来自于图像传感器。但是输入输出特性不是线性的,所以如果不进行校正处理的话

Matplotlib 直方图

两盒软妹~` 提交于 2019-12-04 10:36:12
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Matplotlib 柱状图 Matplotlib 饼图 Matplotlib 直方图 Matplotlib 散点图 Matplotlib 填充图 Matplotlib 网格 Matplotlib 极坐标图 Matplotlib 3D图 Matplotlib 保存图形 直方图是一种非常常见的图表类型,尤其在概率统计很常用,是正态分布、t分布等各种分布的基础。直方图使用 hist() 方法绘制。 示例 生成一个随机的连续数据,包含1000个条目,将这些数据划分为10个等分,根据其频率绘制图表。 # 导入numpy库与matplotlib.pyplot库 import numpy as np import matplotlib.pyplot as plt # 准备数据 x = np.random.randn(1000) # 绘制图形 plt.title("Histogram") plt.xlabel("Random Data") plt.ylabel("Frequency") plt.hist(x, 10) # 显示 plt.show() 输出 来源: https://www.cnblogs

直方图均衡原理

杀马特。学长 韩版系。学妹 提交于 2019-12-03 22:56:40
如果某一幅图像的直方图覆盖了灰度级很宽的范围,分布均匀,则该图像具有高对比度和多变的灰度色调,也即灰度级丰富且动态范围大,如下图所示 [1] 。 直方图均衡可以使得图像的直方图分布均匀化,拉大灰度间隔,有利于图像的分析和识别。 来源: https://www.cnblogs.com/picassooo/p/11810352.html

13 opencv人脸识别

孤街浪徒 提交于 2019-12-03 15:46:05
https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/ https://yongyuan.name/blog/pedestrian-detection-opencv.html 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视频中的行人进行检测。如果你还不熟悉方向梯度直方图HOG和线性SVM方法,我建议你阅读 方向梯度直方图和物体检测 这篇文章,在这篇文章中,我对该框架分了6步进行讨论。 来源: https://www.cnblogs.com/kekeoutlook/p/11802704.html

直方图均衡算法(Histogram Equalized)

久未见 提交于 2019-12-03 02:15:06
Lab1: Histogram Equalization 1. 实验环境(C++) 操作系统版本 MacOS Catalina 10.15 OpenCV4.0 (imgcodecs | core | highgui | imgproc) Cmake-3.14 Clang-1100.0.33.8 2. 实验步骤 Calculate the histogram H for src Normalize the histogram. std::array<double, 256> calNormalizedHist(cv::Mat& source) { std::array<double, 256> acc{0}; // Calculate the histogram H for src for(int i = 0; i < source.rows; i++) for (int j = 0; j < source.cols; j++) acc[ source.ptr<uchar>(i)[j]] ++; // Normalize the histogram. for(int i = 0; i < acc.size(); i++) acc[i] /= source.rows * source.cols; return acc; } Compute the integral of the

MATLAB画直方图并在每条柱标上数值

匿名 (未验证) 提交于 2019-12-03 00:40:02
x = rand( 100 , 1 ); [n,y] = hist(x); bar(y,n); for i = 1 :length(y) text(y(i),n(i) + 0.5 ,num2str(n(i))); end 各函数说明: [a,b]=hist(x,n) 其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,即每条柱的高度,b是该区间的中心线位置坐标,即每条柱的中心坐标。 bar(x,y) 其中x必须是严格递增的且一维向量x和一维向量y长度相同。以一维向量x的值为x坐标,对应的y为y坐标画直方图 原文:https://www.cnblogs.com/litthorse/p/9271958.html

【OpenCV3经典编程100例】(23)图像分割:阈值分割法

匿名 (未验证) 提交于 2019-12-03 00:21:02
图像分割的方法很多,我们首先看看阈值分割法。使用阈值分割法的重点是,选取一个合适的阈值! 本示例从观察灰度图像的直方图,获得阈值。 在示例21里面,我们计算和绘制了飞机降落那张灰度图的直方图。从这个直方图可以直观的看到,存在一个大的峰值,同时拥有大量深色的像素。这两组像素基本对应的是图像的背景和前景。 通过在两组像素之间的过渡处进行阈值化,创建二值图像。在这儿,我们选择的阈值是峰值上升前的过渡值(灰度值120)。 一、c++示例代码 //包含头文件 #include <opencv2/opencv.hpp> //命名空间 using namespace cv; using namespace std; //全局函数声明部分 //主函数 int main() { //【1】载入图像 Mat image = imread("G:\\opencvtest\\testImage\\airplane.jpg"); //【2】检查是否载入成功 if (image.empty()) { printf("读取图片错误,请确认目录下是否有imread函数指定图片存在! \n "); return 0; } //【3】图像灰度化 Mat grayImage; cvtColor(image, grayImage, COLOR_BGR2GRAY); //【4】图像分割:阈值分割法 Mat binImage