直方图

RGB到HSV的彩色空间变化 Matlab

匿名 (未验证) 提交于 2019-12-03 00:20:01
clear; clc; RGB = imread('0.jpg'); HSV = rgb2hsv(RGB); H = HSV(:,:,1); S = HSV(:,:,2); V = HSV(:,:,3); R = RGB(:,:,1); G = RGB(:,:,2); B = RGB(:,:,3); subplot(4,3,1);imshow(H);title('H分量'); subplot(4,3,2);imshow(S);title('S分量'); subplot(4,3,3);imshow(V);title('V分量'); subplot(4,3,4);imhist(H);title('H分量直方图'); subplot(4,3,5);imhist(S);title('S分量直方图'); subplot(4,3,6);imhist(V);title('V分量直方图'); subplot(4,3,7);imshow(R);title('R分量'); subplot(4,3,8);imshow(G);title('G分量'); subplot(4,3,9);imshow(B);title('B分量'); subplot(4,3,10);imhist(R);title('R分量直方图'); subplot(4,3,11);imhist(G);title('G分量直方图');

在OpenCV里实现全局直方图均衡化2

匿名 (未验证) 提交于 2019-12-02 23:57:01
上面是根据原理,使用自己编写的算法来实现全局直方图均衡化,接着下来,就是使用OpenCV里的函数cv2. equalizeHist()来计算,这个函数计算步骤如下: 采用这个函数来计算相同的图片的例子: #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import cv2 import numpy as np import matplotlib . pyplot as plt import math #python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import cv2 import numpy as np import matplotlib . pyplot as plt plt . rcParams [ 'font.sans-serif' ]=[ 'SimHei' ] #用来正常显示中文标签 plt . rcParams [ 'axes.unicode_minus' ]= False #用来正常显示负号 #图片的路径 imgname = "imgblack.jpg" #读取图片 image = cv2 . imread (

MATLAB中绘制数据直方图的新函数histogram

匿名 (未验证) 提交于 2019-12-02 23:38:02
转自: http://blog.sciencenet.cn/blog-292361-1054195.html MATLAB中有命令hist()可以绘制直方图,纵坐标是频数,这与一些教科书中用纵轴表示频率的做法不一致,有些时候不便于使用。当然,使用者可以自己编写定制能够在纵轴绘出频率的直方图。在MATLAB中,增加了具有复杂功能的绘制数据直方图的新函数histogram(). 在MATLAB2015b测试环境下,MATLAB代码和图形如下: 一、绘制数据直方图的新函数histogram() 1、>> X = randn(1000,1); nbins = 25; h = histogram(x,nbins)%与hist相同 2、两个直方图叠加 >> x = randn(2000,1);y = 1 + randn(5000,1);h1 = histogram(x);hold on;h2 = histogram(y); 3、如果想显示频率,注意下图纵坐标 4、一个密度拟合例子 histogram(x,'Normalization','pdf') hold on y = -5:0.1:15;mu = 5;sigma = 2; f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi)); plot(y,f,'LineWidth',1.5) 文章来源

用Python为直方图绘制拟合正态分布曲线的两种方法

匿名 (未验证) 提交于 2019-12-02 22:54:36
直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状、中心位置以及数据的离散程度等。 在python中一般采用matplotlib库的hist来绘制直方图,至于如何给直方图添加拟合曲线(密度函数曲线),一般来说有以下两种方法。 方法一:采用matplotlib中的mlab模块 mlab模块是Python中强大的3D作图工具,立体感效果极佳。在这里使用mlab可以跳出直方图二维平面图形的限制,在此基础上再添加一条曲线。在这里,我们以鸢尾花iris中的数据为例,来举例说明。 import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot as plt import pandas # Load dataset url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" names = ['sepal-length', 'sepal-width','petal-length', 'petal-width', 'class'] dataset = pandas.read_csv(url, names=names) print

python数字图像处理:直方图与均衡化

匿名 (未验证) 提交于 2019-12-02 22:51:30
在图像处理中,直方图是非常重要,也是非常有用的一个处理要素。 在skimage库中对直方图的处理,是放在exposure这个模块中。 1、计算直方图 函数:skimage.exposure.histogram(image, nbins=256) 在numpy包中,也提供了一个计算直方图的函数histogram(),两者大同小义。 返回一个tuple(hist, bins_center), 前一个数组是直方图的统计量,后一个数组是每个bin的中间值 import numpy as np from skimage import exposure , data image = data . camera ()* 1.0 hist1 = np . histogram ( image , bins = 2 ) #用numpy包计算直方图 hist2 = exposure . histogram ( image , nbins = 2 ) #用skimage计算直方图 print ( hist1 ) print ( hist2 ) 输出: (array([107432, 154712], dtype=int64), array([ 0. , 127.5, 255. ])) (array([107432, 154712], dtype=int64), array([ 63.75, 191.25]

直方图均衡基本原理及Python实现

余生长醉 提交于 2019-12-02 21:25:49
1. 基本原理 通过一个变换,将输入图像的灰度级转换为`均匀分布`,变换后的灰度级的概率密度函数为 Ps(s)=1L−1Ps(s)=1L−1 直方图均衡的变换为 s=T(r)=(L−1)∫r0Pr(c)dcs=T(r)=(L−1)∫0rPr(c)dc ss为变换后的灰度级,rr为变换前的灰度级 Pr(r)Pr(r)为变换前的概率密度函数 2. 测试结果 图源自skimage 3.代码 [url=] [/url] 1 import numpy as np 2 3 def hist_equalization(input_image): 4 ''' 5 直方图均衡(适用于灰度图) 6 :param input_image: 原图像 7 :return: 均衡后的图像 8 ''' 9 output_imgae = np.copy(input_image) # 输出图像,初始化为输入 10 11 input_image_cp = np.copy(input_image) # 输入图像的副本 12 13 m, n = input_image_cp.shape # 输入图像的尺寸(行、列) 14 15 pixels_total_num = m * n # 输入图像的像素点总数 16 17 input_image_grayscale_P = [] # 输入图像中各灰度级出现的概率

数字图像处理之第三章

半世苍凉 提交于 2019-12-02 10:58:12
第三章 图像增强 1.图像增强的方法有很多种,按增强的目的和效果来划分,图像增强的方法大致可以分为灰度级修正、图像平滑、图像锐化、图像增晰和色彩增晰等。 2.灰度级修正(主要用来提高图像对比度,提高人眼视觉分辨能力,包括灰度变换和直方图修正等) 灰度级修正主要针对独立的像素点进行处理,由输入像素点的灰度值来决定相应输出像素点的灰度值,通过改变原始图像所占据的灰度范围而使图像在视觉上得到改观,这种变换没有利用像素点之间的相互空间关系,因而这种处理方法也称为点运算法。 3.灰度级修正有氛围灰度的线性变换、非线性变换和直方图均衡等。 1)灰度的线性变换就是将图像中的所有像素点的灰度按照线性变换函数进行变换; 2)当用某些非线性函数对图像灰度进行映射时,就可以实现图像灰度的非线性变换; 3)直方图修正:图像的灰度图直方图反映图像灰度的统计特性,变大了图像中取不同灰度值的面积或像素数在整幅图像中所占的比例,是图像中最基本的信息。用横坐标表示灰度级,纵坐标表示灰度级出现的频数,一幅图像的直方图可以表示为: 式中,N为一幅图像中的像素总数,nk为第k级灰度的像素数,rk表示第k个灰度级,L为灰度级数,p(rk)表示该灰度级出现的概率。 ①直方图均衡 直方图均衡的基本思想是对原始图像中的像素灰度做某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布的图像

[PCL] 3D特征点概述(1)

廉价感情. 提交于 2019-12-02 05:40:01
广泛使用的几何点特征的示例是下图的表面在查询点p处的估计曲率和法线。被认为是局部特征,因为它们使用由其k个最近点邻居提供的信息来表征点。 为了有效地确定这些邻居,输入数据集通常使用空间分解技术(八叉树或kd树)分割成更小的块( 上:kd-tree,下:八叉树),然后执行在那个空间里最近点搜索。 接下来介绍几种特征点性质属性,以及应用的场景领域。 PFH (Point Feature Histogram) 一种局部特征点。 输入格式: (1)由一组带有方向的点P组成的点云。有方向意味着所有点都具有正常的N(法向量)。 (2)此功能不使用颜色信息。 工作原理: (1)迭代点云P中的点。 (2)对于输入云中的每个点Pi(i是迭代索引),收集具有半径r的Pi周围的球体内的所有相邻点。 这个集合称为Pik(k为k个邻居) (3)循环关于Pik中的两对点,比如p1和p2。 法线与矢量p1-p2的角度较小的点是源点ps,另一个是目标点pt。 (4)计算四个特征,它们一起表示目标点pt处的平均曲率。 将它们组合并放入等效的直方图箱中。 简短概述: (1)为P中的所有的点云计算法线。 (2)估计P中的点Pi的特征:获取围绕点Pi(Pik)的半径r中的k个邻居的集合。在两点之间计算四个特征。相应的bin增加1.生成点特征直方图(PFH)。 (3)将得到的直方图组与其他点云的组进行比较,以便找到对应关系

基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现

南楼画角 提交于 2019-12-01 06:16:21
   本文参考博客: https://www.cnblogs.com/Imageshop/archive/2013/04/26/3045672.html   原生的中值滤波是基于排序算法的,这样的算法复杂度基本在O(r 2 )左右,当滤波半径较大时,排序算法就显得很慢。对此有多种改进算法,这里介绍经典 的Huang算法与O(1)算法,两者都是基于记忆性的算法,只是后者记性更强。   排序算法明显的一个不足之处就是无记忆性。当核向右移动一列后,只是核的最左和最右列数据发生了变化,中间不变的数据应当被存储起来,而排序算法 并没有做到这点。Huang算法的思想是建立一个核直方图,来统计核内的各灰度的像素数。当核向右移动时,就将新的一列所有数据加入到直方图中,同时将最 左列的旧数据从直方图中删除,如下图所示。这样做使得大部分数据能够被记忆,减少重复操作。当直方图更新完毕后,就可以通过从左到右累计像素来找到中值。                  下面是算法具体实现步骤与代码:   1.每行开始都将直方图、像素计数、中值变量清零,将核覆盖的所有像素加到直方图中。   2.计算中值,sumcnt为小于中值灰度的像素数和。如果当前sumcnt大于等于阈值,则表明,实际中值比当前median小,则直方图向左减去像素数,同时median    也减小,直到sumcnt小于阈值

python PIL 图像处理

旧时模样 提交于 2019-12-01 05:00:40
python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 #Image和skimage读图片 import Image as img import os from matplotlib import pyplot as plot from skimage import io,transform img_file1 = img.open('./CXR_png/MCUCXR_0042_0.png') img_file2 = io.imread('./CXR_png/MCUCXR_0042_0.png') 输出可以看出Img读图片的大小是图片的(width, height);而skimage的是(height,width, channel), [这也是为什么caffe在单独测试时要要在代码中设置:transformer.set_transpose('data',(2,0,1)),因为caffe可以处理的图片的数据格式是(channel,height,width),所以要转换数据] #读图片后数据的大小: print "the picture's size: ", img_file1.size print "the