直方图均衡化

直方图均衡化和灰度拉伸的区别

余生长醉 提交于 2020-03-27 10:57:06
从结果上面来看整体目标是实现了,灰度拉伸只是线性的拉宽对比度,对图像的整体影响不大。 而灰度直方图均衡化却对图像的整体效果有影响,对直方图的改变也比较大; https://www.cnblogs.com/zvmxvm1991/p/7977872.html 直方图均衡化: 直方图均衡化的作用是图像增强。这种方法对于背景和前景都太亮或者太暗的图像非常有用 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。 第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。 第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是 其中,n是图像中像素的总和, 是当前灰度级的像素个数,L是图像中可能的灰度级总数。 来看看通过上述公式怎样实现的拉伸。假设有如下图像:

图像直方图均衡化

守給你的承諾、 提交于 2020-03-09 13:46:18
作业要求 编写一个图像直方图均衡化程序,g=histequal4e(I),其中I是8比特图像 代码 ''' # 8th 编写一个图像直方图均衡化程序,g=histequal4e(I),其中I是8比特图像 ''' import numpy as np from PIL import Image import matplotlib . pyplot as plt #einstein.tif #lena512color.jpg # mandril_color.jpg src = Image . open ( "mandril_color.jpg" ) . convert ( 'L' ) # 转换成灰度 src = np . array ( src ) #print(src) src_dim_1 = src . flatten ( ) # 变成一维,用于绘制直方图 # 直方图均衡化函数 def histequal4e ( img ) : src_size = src . shape img_dim_1 = img . flatten ( ) pixel_num = len ( img_dim_1 ) eq_img = np . zeros ( src_size ) # 创建画布 index_set = np . zeros ( 256 , dtype = int ) # 0-255

数字图像处理(二)直方图处理

烈酒焚心 提交于 2020-03-04 00:13:36
1.直方图处理概念 灰度级范围为[0,L-1]的数字图像的直方图是离散函数h(rk)=nk,其中rk是第k级灰度值,nk是图像中灰度为rk的像素个数。在实践中,经常用乘积MN表示的图像像素的总数除它的每个分量来归一化直方图,通常M和N是图像的行和列的维数。因此,归一化后的直方图由p(rk)=nk/MN给出,其中k=0,1,…,L-1。简单来说,p(rk)是灰度级rk在图像中出现的概率的一个估计。归一化直方图的所有分量之和应等于1。 在直方图中,暗图像集中分布在灰度级的低端;亮图像集中分布在灰度级的高端。低对比度图像具有较窄的直方图,且集中于灰度级的中部;高对比度图像的直方图分量则覆盖了很宽的灰度级范围。 2.直方图性质 (1)直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息。 (2)任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。 (3)如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是该两个区域的直方图之和。 3.直方图的应用 (1)对于每幅图像都可做出其灰度直方图。 (2)根据直方图的形态可以大致推断图像质量的好坏。由于图像包含有大量的像元,其像元灰度值的分布应符合概率统计分布规律。假定像元的灰度值是随机分布的,那么其直方图应该是正态分布。 (3

直方图均衡化原理

感情迁移 提交于 2020-02-28 07:54:20
直方图均衡化的作用是图像增强。 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。 第一个问题。均衡化过程中,必须要保证两个条件:①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。 第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是 其中,n是图像中像素的总和, 是当前灰度级的像素个数,L是图像中可能的灰度级总数。 来看看通过上述公式怎样实现的拉伸。假设有如下图像: 得图像的统计信息如下图所示,并根据统计信息完成灰度值映射: 映射后的图像如下所示: 以上就是直方图映射均衡化的步骤,当然还有一些基于此的更优算法,比如Photoshop中的方法,在此就不一一列举了,大同小异。 下附源码: // HistogramGrayEqualizeHist.cpp : 定义控制台应用程序的入口点。 //

python 简单图片处理

夙愿已清 提交于 2020-02-23 14:37:08
安装: python 2.7 pythoncharm anaconda2 课本中要求装PIL库,但是我操作了很多方法也没有装成功,一直提示我缺少安装工具tools,所以我询问助教后他帮我安装了anaconda2。 一.基本的图像操作和处理 原图片: 1.原图—灰度图 在教材的代码中修改图片路径 2.图像轮廓和直方图 图像轮廓线和图线等高线。在画图像轮廓前需要转换为灰度图像,因为轮廓需要获取每个坐标[x,y]位置的像素值。 3.借助numpy对图像进行灰度变换 在前面载入图像中,我们将图像用array()函数转为NumPy数组对象。数组就像列表一样,只不过它规定了数组中的所有元素必须是相同的类型。下面的例子用于说明图像数组表示,运行下面面代码,会给出下面结果: 4.灰度变换 在读入图像到NumPy数组后,就可以对它进行任何我们想要的操作:对图像进行灰度变换。 上面左边灰度变换函数采用的是f(x)=255-x,中间采用的是f(x)=(100/255)x+100,右边采用的是变换函数是f(x)=255(x/255)^2。运行上面代码,可以得到P009 Fig1-5中的结果: 5.调整图像尺寸 NumPy数组将成为我们对图像及数据进行处理的最主要工具,但是调整矩阵大小并没有一种简单的方法。我们可以用PIL图像对象转换写一个简单的图像尺寸调整函数: 上面定义的调整函数,在imtools

图像处理基础

雨燕双飞 提交于 2020-02-22 06:41:56
直方图/高斯录播/直方图均衡化/原理 文章目录 1.原理 1.1直方图原理 1.2高斯滤波原理 1.3直方图均衡化原理 2.实验 2.1原图 2.2直方图 2.3高斯滤波 2.4直方图均衡化 1.原理 1.1直方图原理 通过一个变换,将输入图像的灰度级转换为均匀分布度函数为 P s ( s ) = 1 L − 1 P_s(s) = \frac{1}{L-1} P s ​ ( s ) = L − 1 1 ​ 1.2高斯滤波原理 1.3直方图均衡化原理 s = T ( r ) = ( L − 1 ) ∫ 0 r P r ( c )   d c s = T(r) = (L-1)\int_0^r {P_r(c)} \,{\rm d}c s = T ( r ) = ( L − 1 ) ∫ 0 r ​ P r ​ ( c ) d c s s s 为变换后的灰度级, r r r 为变换前的灰度级 P r ( r ) P_r(r) P r ​ ( r ) 为变换前的概率密度函数 2.实验 2.1原图 2.2直方图 2.3高斯滤波 2.4直方图均衡化 来源: CSDN 作者: yuyaoshiniba 链接: https://blog.csdn.net/yuyaoshiniba/article/details/104422775

【百度快照】MATLAB视频图像去雾(视频处理,图像去雾,直方图,暗通道,论文)

戏子无情 提交于 2020-02-06 07:56:42
GUI源码链接: https://download.csdn.net/download/weixin_38719187/12100743 一、课题介绍 雾霾,它会使大气的能见度降低,景物图像发生退化,在雾霾下拍摄的图像内容模糊,对比度下降,这将会严重影响人们的行车系统,卫星系统,导航系统等。目前,拍摄器材成本还是比较高昂,另外又得益于计算机技术的迅猛发展,计算机技术的运算速度越来越快,图像处理系统的价格日益下降,随着计算机视觉与图像处理技术的快速发展,户外视觉系统的研究与应用也在飞速增长。从而图像处理技术得以广泛用于科学和工程领域,为了保证视觉系统全天候正常工作,就必须使系统适应各种天气状况,而雾霾下图像对比度和颜色的会发生退化,导致这些系统无法正常工作。因此,如果有一套行之有效的软件系统,可以改善图像质量现在迫在眉睫。 该课题是基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择局部直方图均衡化,全局直方图均衡化,Retinex算法,通过对比处理前后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经整明,具有均匀分布直方图的图像,其信息量是最大的。 二、算法介绍 ①全局直方图均衡化:通俗地理解就是,不管三七二十一,直接强行对彩色图像的R,G,B三通道颜色进行histeq均衡处理,然后进行三通道重组; ②局部直方图均衡化

图像灰度变换、二值化、直方图

∥☆過路亽.° 提交于 2020-02-01 15:23:44
1、灰度变换 1)灰度图的线性变换 Gnew = Fa * Gold + Fb。 Fa为斜线的斜率,Fb为y轴上的截距。 Fa>1 输出图像的对比度变大,否则变小。 Fa=1 Fb≠0时,图像的灰度上移或下移,效果为图像变亮或变暗。 Fa=-1,Fb=255时,发生图像反转。 注意:线性变换会出现亮度饱和而丢失细节。 2)对数变换 t=c * log(1+s) c为变换尺度,s为源灰度,t为变换后的灰度。 对数变换自变量低时曲线斜率高,自变量大时斜率小。所以会放大图像较暗的部分,压缩较亮的部分。 3)伽马变换 y=(x+esp) γ ,x与y的范围是[0,1], esp为补偿系数,γ为伽马系数。 当伽马系数大于1时,图像高灰度区域得到增强。 当伽马系数小于1时,图像低灰度区域得到增强。 当伽马系数等于1时,图像线性变换。 4)图像取反 方法1:直接取反 imgPath = 'E:\opencv_pic\src_pic\pic2.bmp'; img1 = imread(imgPath); % 前景图 img0 = 255-img1; % 取反景图 subplot(1,2,1),imshow(img1),title('原始图像'); subplot(1,2,2),imshow(img0),title('取反图像'); 方法2:伽马变换 Matlab:imadjust(f, [low

OpenCV--Python 图像增强

喜你入骨 提交于 2020-01-19 04:01:43
图像增强主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度级放大到指定的程度,使得图像中的细节看起来增加清晰。对比度增强有几种常用的方法,如线性变换、分段线性变换、伽马变换、直方图正规化、直方图均衡化、局部自适应直方图均衡化等。 1.灰度直方图 在讲解图像增强的方法之前先来认识一下灰度直方图,灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。接下来使用程序实现直方图: import cv2 as cv import numpy as np import matplotlib . pyplot as plt def calcGrayHist ( I ) : # 计算灰度直方图 h , w = I . shape [ : 2 ] grayHist = np . zeros ( [ 256 ] , np . uint64 ) for i in range ( h ) : for j in range ( w ) : grayHist [ I [ i ] [ j ] ] += 1 return grayHist img = cv . imread ( "../testImages/4/img1.jpg" , 0 ) grayHist = calcGrayHist ( img ) x = np . arange ( 256 ) #

OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

匆匆过客 提交于 2019-12-16 16:22:06
1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的。对比度较低的图像适合使用直方图均衡化方法来增强图像细节。 彩色图像的直方图均衡化实现: # include <opencv2/highgui/highgui.hpp> # include <opencv2/imgproc/imgproc.hpp> # include <iostream> using namespace cv; int main ( int argc, char *argv[]) { Mat image = imread( "Test.jpg" , 1 ); if (image.empty()) { std :: cout << "打开图片失败,请检查" << std :: endl ; return -1 ; } imshow( "原图像" , image); Mat imageRGB[ 3 ]; split(image, imageRGB); for ( int i = 0 ; i < 3 ; i++) { equalizeHist(imageRGB[i], imageRGB[i]); } merge(imageRGB, 3 , image); imshow( "直方图均衡化图像增强效果" ,