【2020最新智库】直方图均衡化计算公式

合集下载

图像直方图均衡化

图像直方图均衡化

目录摘要 (I)1 引言 (1)2 直方图均衡化原理及过程 (3)2.1 直方图均衡化原理 (3)2.2 直方图的均衡化 (4)2.3 直方图均衡化的算法步骤 (5)3 程序设计 (6)3.1利用库函数的设计 (6)3.2不用库函数的设计 (6)4 实验结果及分析 (9)5 心得体会 (12)参考文献 (13)摘要直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法,这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。

通过这种方法,亮度可以更好地砸直方图上分布。

这样就额可以拥有增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

本文分析和总结了灰度直方图的均衡化算法并通过MATLAB实验验证了该方法能有效达到图像图像增强的目的。

关键词:直方图;均衡化;图像增强1 引言在现实之中,往往所采集的图像,由于光照、噪声等种种原因,图像的质量往往不能令人满意。

例如,曝光过度;图像太暗;图像的失真、变形等等。

所以图像往往需要采取一些手段进行改善以求达到较好的效果.图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。

直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。

直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。

直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。

直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。

直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

缺点:1)变换后图像的灰度级减少,某些细节消失;2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。

图像增强——直方图均衡化

图像增强——直方图均衡化

图像增强——————直方图均衡化摘要图像增强是指按特定的需要突出一幅图像的某些信息,削弱或消除不需要信息的处理方法。

处理的结果使图像更适合于人的视觉特性或机器的识别系统。

本文主要采用直方图均衡化、中值滤波的方法对图像进行处理,通过对处理结果进行比较,从而加深对图像增强的理解及应用。

一、图像增强在获取图像的过程中,由于多种因素的影响导致图像无法达到令人满意的视觉效果。

对原始图像做一些改善,从而实现人眼观察或者机器自动分析、识别的目的的行为,就叫做图像增强。

图像增强的主要内容⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧⎩⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧代数运算彩色变换增强彩色平衡假彩色增强常规处理彩色图像增强伪彩色增强彩色增强同态滤波增强低通滤波高通滤波频率域图像锐化图像平滑局部运算局部统计法规定化均衡化直方图修正法灰度变换点运算空间域图像增强二、直方图均衡化1.直方图均衡化是通过累积函数对灰度值进行调整以实现对比度的增强,具体地说就是把给定图像的直方图分布改变成近似均匀分布的直方图。

2.直方图均衡化的过程如下:①计算原图像的灰度直方图;②计算原图像的灰度累积分布函数,进一步求出灰度转换表; ③根据灰度转换表,将原图像各灰度级映射为新的灰度级。

3.直方图均衡化的优点:扩张了像素值的动态范围。

直方图均衡化后,图像的概率密度函数近似服从均匀分布,灰度几乎是均匀的分布在整个范围内,图像明暗分明,对比度很大,图像比较清晰明亮,很好的改善了原始图的视觉效果。

2.1原理及计算过程先讨论连续图像的均衡化问题。

设变量r 和s 代表原图像灰度和经直方图修正后的的图像灰度。

在图像中,像素的灰度级可作归一化处理,这样r,s 的值将限定在下述范围之内:0≤r,s ≤1,r=0代表黑,r=1代表白,可以对[0,1]区间内的任一个值进行如下变换:s=T(r)变换函数T 应满足下列条件:(1)在0≤r ≤1区间内T[r]单值单调增加; (2)对于0≤r ≤1,有0≤s ≤1。

直方图均衡化

直方图均衡化

直方图均衡化
直方图的均衡实验结果
每个输出结果中从左到右依次是原图,原图的直方图,均衡后的相应图像,均衡后图像的直方图
源代码
此源代码运行一次可输出原图,原图的直方图以及均衡后的相应图像和其直方图。

通过修改文件名’3.16.tif’导入其他原图像。

I=imread('3.16.tif');
[X,Y]=size(I);
k=1:256;
H=zeros(256,1);
S=zeros(256,1);
sum=0;
h1=subplot(1,4,1); %显示I图
imshow(I);
h2=subplot(1,4,2); %显示I的直方图
imhist(I);
%计算不同灰度级出现的频数
for i=1:X
for j=1:Y
H(I(i,j)+1)=H(I(i,j)+1)+1;
end
end
%求出映射的值域
for k=1:256
sum=0;
for j=1:k
sum=sum+H(j);
end
S(k)=sum/(X*Y);
end
%将原图中不同的灰度级映射成新的灰度级
for i=1:X
for j=1:Y
I(i,j)=S(I(i,j)+1)*255;
end
end
h3=subplot(1,4,3); %显示均衡化之后的I图
imshow(I);
h4=subplot(1,4,4); %显示I的直方图
imhist(I);
imwrite(I,'3.16_2.tif'); %将均衡化之后的I图写入3.16_2.tif文件中。

图像处理中直方图均衡化的使用教程

图像处理中直方图均衡化的使用教程

图像处理中直方图均衡化的使用教程图像处理中的直方图均衡化是一种常用的增强图像对比度的方法。

通过对图像的像素值进行重新分布,直方图均衡化可以使图像中的明暗区域更具有对比度,从而提高图像的质量和清晰度。

本文将介绍直方图均衡化的原理、应用场景以及具体的步骤。

1. 直方图均衡化的原理直方图均衡化的原理基于对图像的灰度级进行重新分布。

它通过将原始图像的像素值映射到新的像素值上,使得直方图在整个灰度范围内得到均匀分布。

这样就能够增强图像中的低对比度区域,提高图像的视觉效果。

2. 直方图均衡化的应用场景直方图均衡化在图像处理领域有着广泛的应用。

下面列举了一些常见的应用场景:- 增强图像的对比度:直方图均衡化可以使得图像中的亮度值更加均匀分布,提高图像的对比度,使得图像变得更加清晰。

- 增强图像的细节:直方图均衡化通过增强图像中的低对比度区域,可以使得细节更加显著,提高图像的可视化效果。

- 降低图像的噪声:直方图均衡化可以将图像中的噪声分布均匀化,从而减少噪声对图像质量的影响。

3. 直方图均衡化的步骤下面是使用直方图均衡化对图像进行处理的具体步骤:步骤 1: 将彩色图像转换为灰度图像如果原始图像是彩色图像,我们需要将其转换为灰度图像。

这是因为直方图均衡化是针对灰度级进行处理的。

步骤 2: 计算原始图像的像素值分布使用图像处理工具,计算原始图像中每个像素值的出现频率。

这样可以得到一个直方图,该直方图显示了原始图像中像素值的分布情况。

步骤 3: 计算累积分布函数通过对原始图像的直方图进行累积求和,得到一个累积分布函数。

该函数显示了每个像素值的累积出现频率。

步骤 4: 计算新的像素值根据累积分布函数,计算每个像素值的新的映射像素值。

这个计算公式可以根据具体的图像处理工具而有所不同。

步骤 5: 创建均衡化后的图像使用新的像素值替换原始图像中的像素值,将得到的图像称为均衡化后的图像。

4. 注意事项在使用直方图均衡化时,需要考虑以下几个注意事项:- 直方图均衡化可能会改变图像的整体亮度。

直方图均衡化教案

直方图均衡化教案

直方图均衡化教案1. 直方图是多种空间域处理技术的基础。

直方图操作能有效地用于图像增强。

灰度直方图灰度直方图是灰度值的函数,它描述了图像中各灰度值的像素个数。

通常用横坐标表示像素的灰度级别,纵坐标表示对应的灰度级出现的频率(像素的个数)。

频率的计算公式为:p(r)=nr. nr是图像中灰度为r的像素数。

常用的直方图是规格化和离散化的,即纵坐标用相对值表示。

设图像总像素为N,某一级灰度像素数为nr,则直方图表示为:p(r)=nr/N. 灰度直方图反映了一幅图像的灰度分布情况。

2.直方图均衡化通过把原图像的直方图通过变换函数修正为分布比较均匀的直方图,从而改变图像整体偏暗或整体偏亮,灰度层次不丰富的情况,这种技术叫直方图均衡化。

直方图均衡化过程解析:设r和s分别表示原图像灰度级和经直方图均衡化后的图像灰度级。

为便于讨论,对r和s进行归一化,使:0≤r,s≤1.对于一幅给定的图像,归一化后灰度级分布在0≤r≤l范围内。

对[0,1]区间内的任一个r值进行如下变换:s=T(r). 变换函数s=T(r)应满足下列条件:(1)在0≤r≤1的区间内,T(r)单值单调增加。

保证图像的灰度级从白到黑的次序不变。

(2)对于0≤r≤1,有0≤T(r)≤1。

保证映射变换后的像素灰度值在允许的范围内。

3.直方图均衡化的计算步骤及实例假设64×64的灰度图像,共8个灰度级,其灰度级分布见下表,现要求对其进行均衡化处理。

000011101()()()0.19()()()()0.190.250.44rjrj rjrrj s T r P r P r s T r P r P r P r =========+=+=∑∑ 依此类推可计算得:s2=0.65;s3=0.81;s4=0.89;s5=0.95;s6=0.98;s7=1对k s 进行舍入处理,由于原图像的灰度级只有8级,因此上述各需用1/7为量化单位进行舍入运算,得到如下结果:k s 的最终确定,由k s 的舍入结果可见,均衡化后的灰度级仅有5个级别,分别是:s0=1/7,s1=3/7,s2=5/7,s3=6/7,s4=1/7。

直方图均衡化计算公式

直方图均衡化计算公式

直方图均衡化(色调均化)“图像(Image)>调整(Adjust)”菜单的功能色调均化(Equalize)Photoshop菜单:图像>调整>色调均化公式:(公式中Sk表示均衡化后的灰度值,∑表示总和,nj是原图中某个灰度色阶j 的像素数量,j的范围是0~k,N是图像像素总数。

)“色调均化”命令重新分布图像中像素的亮度值,以便它们更均匀地呈现所有范围的亮度级。

使用此命令时,Photoshop尝试对图像进行直方图均衡化(Histogram Equalization),即在整个灰度范围中均匀分布每个色阶的灰度值。

当扫描的图像显得比原稿暗,而您想平衡这些值以产生较亮的图像时,可以使用“色调均化”命令。

配合使用“色调均化”命令和“直方图”命令,可以看到亮度的前后比较。

使用“色调均化”命令:1. 选择菜单图像>调整>色调均化。

2. 如果已选择一个图像区域,在弹出的对话框中选择要均化的内容,然后点按“好”。

•“仅色调均化所选区域”只均匀地分布选区的像素。

•“基于所选区域色调均化整个图像”基于选区中的像素均匀分布所有图像的像素。

原理直方图均衡化是一种灰度变换算法,所以我们重点研究灰度图像的直方图均衡化。

绝对的均匀图A是一个黑白灰均匀渐变,0~255的每一个色阶的灰度数量都是相同的。

图B 的是图A的像素打乱了顺序随机分布的,每种灰度的数量都与图A的相同,因而它的直方图也与图A的相同。

图A和图B的直方图。

每种灰度数量是相同的,直方图呈一个黑色矩形。

近似的均匀对于一般的图像,由于每种灰度的像素数量并不相同,我们没办法把每种灰度的分量调得像图A、B那么均匀,但是可以做到近似的均匀。

也就是说,把直方图横向平均分成几份之后,使每一份的像素数量大致相等。

下面是一幅图片的直方图,共有19200个像素,从左到右平均分成三份。

均衡化之后,每份的像素数量都在6400左右。

手工调整方法我们拍摄或扫描的照片往往会由于光线太强或太弱,使图像对比度减弱,细节分辨不清。

直方图的均衡化

直方图的均衡化

cdf(i)=cdf(i-1)+tmhist(i);
End
bar(t,cdf);
%step3:run point operation
for i=1:m
for j=1:n

k=plane(i,j);

plane_equ(i,j)=cdf(k)*256/(m*n);
end
end
1
3
5
6 确定映射对应关系(Sk-->Tk) 0-》1 1-》3 2-》5
7 统计新直方图各灰度级象素数Nk
790
8 用式计算新直方图(图3)
0.19
步骤和结果
3
4
656 329
0.16 0.08
0.81 0.89
6
6
3,4-》6
1023
0.25
5
6
7
245 122 81
0.06 0.03 0.02
从概率的观点来理解,灰度出现的频率可看作 其出现的概率,这样直方图就对应于概率密度 函数pdf,而概率分布函数就是直方图的累积 和,即概率密度函数的积分,如下图所示:

r
dP(r)
P(r) p(r)dr
0
,
p(r)
dr
若直接从代表每种灰度的 象素数目的直方图来观察, 常用如下的表示:
二、直方图的均衡化
直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较 集中的某个灰度区间变成在全部灰度范围内的均匀分布。
对图像空间域点的增强过程是通过增强函数t=EH(s)来完成的, t、s分别为目标图像和原始图像上的像素点(x,y)处的灰度值。
在进行均衡化处理时,增强函数EH需要满足两个条件: 1)、增强函数EH(s)在0≤s≤L-1的范围内是一个单调递增函数,

clahe公式

clahe公式

clahe公式
CLAHE,全称为Contrast Limited Adaptive Histogram Equalization,即对比度受限的自适应直方图均衡化。

它是直方图均衡化(HE)的改进算法,能够更好地保留图像的全局对比度和局部细节信息。

CLAHE的计算公式为:
对于一张灰度图像I(x,y),它的CLAHE处理结果为I'(x,y),则有:
1. 首先将图像分成若干个大小相等的小块,每个小块的大小为NxN。

2. 对每个小块进行直方图均衡化,得到均衡化后的像素值。

3. 然后对均衡化后的像素值进行限制,避免像素值过于集中或过于分散。

具体来说,就是在直方图均衡化后的像素值中,将高于某一阈值的像素值进行平均分配到周围的小块中,以达到对比度受限的效果。

4. 最后将处理后的小块重新拼接成一张图像即为CLAHE处理后的结果。

总之,CLAHE算法是一种非常有效的图像增强方法,适用于各种不同的图像处理场景。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直方图均衡化(色调均化)
“图像(Image)>调整(Adjust)”菜单的功能
色调均化(Equalize)
Photoshop菜单:图像>调整>色调均化
公式:
(公式中Sk表示均衡化后的灰度值,∑表示总和,nj是原图中某个灰度色阶j 的像素数量,j的范围是0~k,N是图像像素总数。


“色调均化”命令重新分布图像中像素的亮度值,以便它们更均匀地呈现所有范围的亮度级。

使用此命令时,Photoshop尝试对图像进行直方图均衡化(HistogramEqualization),即于整个灰度范围中均匀分布每个色阶的灰度值。

当扫描的图像显得比原稿暗,而您想平衡这些值以产生较亮的图像时,可以使用“色调均化”命令。

配合使用“色调均化”命令和“直方图”命令,可以看到亮度的前后比较。

使用“色调均化”命令:
1.选择菜单图像>调整>色调均化。

2.如果已选择一个图像区域,于弹出的对话框中选择要均化的内容,然后点按“好”。

•“仅色调均化所选区域”只均匀地分布选区的像素。

•“基于所选区域色调均化整个图像”基于选区中的像素均匀分布所有图像的像素。

原理
直方图均衡化是一种灰度变换算法,所以我们重点研究灰度图像的直方图均衡化。

绝对的均匀
图A是一个黑白灰均匀渐变,0~255的每一个色阶的灰度数量均是相同的。

图B 的是图A的像素打乱了顺序随机分布的,每种灰度的数量均与图A的相同,因而它的直方图也与图A的相同。

图A和图B的直方图。

每种灰度数量是相同的,直方图呈一个黑色矩形。

近似的均匀
对于一般的图像,由于每种灰度的像素数量且不相同,我们没办法把每种灰度的分量调得像图A、B那么均匀,但是可以做到近似的均匀。

也就是说,把直方图横向平均分成几份之后,使每一份的像素数量大致相等。

下面是一幅图片的直方图,共有19200个像素,从左到右平均分成三份。

均衡化之后,每份的像素数量均于6400左右。

手工调整方法
我们拍摄或扫描的照片往往会由于光线太强或太弱,使图像对比度减弱,细节分辨不清。

这样的图像直方图灰度往往均集中于某一色阶范围之内,我们需要将这些灰度拉伸到整个灰度级上,且使它们于直方图中均匀的分布,以达到增强图像的目的。

现于我们要通过Photoshop的曲线调整(图像>调整>曲线)来把一幅图片的灰度分布调整均匀。

上图的直方图图形可以近似地看成三个高峰两个低谷。

先把曲线的起点和终点(黑白场)拉到与图形等宽,再通过曲线把两个低谷拉高一些,这时灰度分布就显得比较均匀了。

调整之后的图像和直方图。

直方图均衡化就是要通过某种算法来实现上面手工调整的效果。

算法
经典算法
下面以一幅3*2像素的简单图片(图C)为例,来说明灰度直方图均衡化的算法。

(图C)
图C的直方图:
注意看百分位(Percentile)这一项。

一般软件的百分位是当前色阶的像素数量÷总像素数量,而Photoshop不同,Photoshop显示的是当前色阶与前面色阶的所有像素数量÷总像素数量。

因此图C色阶为100时的百分位就是
(3+2)/6=5/6=83.33%,这个百分位其实就是我们要求的灰度值(范围0~1),把它转换成0~255的范围,要再乘255。

求出每个色阶的百分位之后,再乘255,就可以求出与其对应的灰度值来。

色阶数量出现频率百分位255*百分位
根据每个色阶的色阶->255*百分位的对应关系组成一个灰度映射表,然后根据映射表来修改原来图片每个像素的灰度值。

对于图C,用128替换50,用212替换100,用255替换200。

这样,灰度直方图的均衡化就完成了。

Photoshop的算法
经过经典算法均衡化的图片,最亮的像素值总是255,因为最后一级色阶(255)的百分位一定是100%。

而最暗的是由色阶0的数量决定的,像素值不一定是0。

Photoshop通过对比度拉伸的方法使最暗的像素值变为0,其它像素也相应变暗,最亮的像素保持255不变。

对比度拉伸后的效果可能会比经典算法稍显偏暗。

对比度拉伸的算法,类似于使用色阶调整命令把黑场设成Min时的效果,Min是指像素数量不为0的第一个色阶。

对比度拉伸的公式:C=(Level-Min)*Scale=(Level-Min)*255/(255-Min)
图C均衡化之后的灰度值分别是128、212、255,为了精确,我们使用保留2位小数的形式(127.50、212.42、255.00)来进行对比度拉伸的计算。

Min=127.50'均衡化之后的最小值
Scale=255/(255-Min)=2
(127.50-Min)*Scale=0*2=0
(212.42-Min)*Scale=84.92*2=170
(255.00-Min)*Scale=127.5*2=255
'新的映射表:
50->0
100->170
200->255
经典算法和Photoshop算法的直方图比较。

彩色算法
彩色的直方图均衡化其实就是对图像某个或多个颜色通道进行灰度直方图均衡化运算,常见的有以下几种方法:
1.统计所有RGB颜色通道的直方图的数据且做均衡化运算,然后根据均衡化
所得的映射表分别替换R、G、B通道颜色值。

2.分别统计R、G、B颜色通道的直方图的数据且做均衡化运算,然后根据R、
G、B的映射表分别替换R、G、B通道颜色值。

3.用亮度公式或求RGB的平均值的方式计算亮度通道,然后统计亮度通道的
直方图的数据且做均衡化运算,然后根据映射表分别替换R、G、B通道颜色值。

Photoshop用的是第一种方法。

总结
直方图均衡化是灰度变换的一个重要应用,它高效且易于实现,广泛应用于图像增强处理中。

图像的像素灰度变化是随机的,直方图的图形高低不齐,直方图均衡化就是用一定的算法使直方图大致平和。

均衡化处理后的图象只能是近似均匀分布。

均衡化图象的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了,因此,原来灰度不同的象素经处理后可能变的相同,形成了一片的相同灰度的区域,各区域之间有明显的边界,从而出现了伪轮廓。

如果原始图像对比度本来就很高,如果再均衡化则灰度调和,对比度降低。

于泛白缓和的图像中,均衡化会合且一些象素灰度,从而增大对比度。

均衡化后的图片如果再对其均衡化,则图像不会有任何变化。

灰度直方图均衡化的算法,简单地说,就是把直方图的每个灰度级进行归一化处理,求每种灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。

经典的直方图均衡化算法可能存于以下一些不足:
1.输出图像的实际灰度变化范围很难达到图像格式所允许的最大灰度变化
范围。

2.输出图像的灰度分布直方图虽然接近均匀分布,但其值与理想值1/n仍有
可能存于较大的差异,且非是最佳值。

3.输出图像的灰度级有可能被过多地合且。

由于灰度的吞噬也易造成图像信
息的丢失。

为此人们提出了许多改进的直方图均衡算法,详细内容请参阅本文末尾提供的参考资料。

公式
要写论文的同学可能需要用数学的方式来描述,下面我把前面讲的内容概括成公式,以供参考。

概率密度函数(PDF)
为了计算方便,我们需要将直方图归一化,即把灰度范围由0~255变为0~1。

归一化后的直方图其实就是一个概率密度函数
(PDF,probabilitydensityfunction),均衡化就是令概率密度为1。

我们用Pr(r)来表示原图像的PDF,用Ps(s)表示均衡化之后的PDF,r、s分别代表均衡化前后的灰度值,r,s∈[0,1]。

根据概率论的知识,可得出:
公式中T-1(s)代表T(r)的逆变换函数。

因为我们要求的概率密度为1,即:
因此:
由此得出:
等式两边对r积分,即可得出PDF的均衡化公式:
公式中T(r)代表r的灰度变换函数,∫表示积分,w为假设变量。

累积分布函数(CDF)
对于图像而言,我们需要使用离散形式的公式(DiscreteFormulation)。

某个灰度级像素出现的概率为:
Pr(rk)是原图像第k个灰度级像素出现的概率,rk是第k个灰度级,即当前色阶k,k∈[0,1]。

nk是rk像素数量。

N是图像像素总数(图像大小),N=∑knk。

图像的灰度直方图均衡化公式:
公式中,T(rk)来表示原图像的第k个灰度级的转换函数。

∑表示总和。

∑nj/N 表示0~j个灰度级的像素数量总和与像素总数的比值,也就是前面讲过的百分位(当前色阶与前面色阶的所有像素数量÷总像素数量)。

∑Pr(rk)表示第0~k的灰度级出现概率累积相加。

因为s是归一化的数值(s∈[0,1]),要转换为0~255的颜色值,需要再乘上255,即S=∑Pr(rk)*255。

这个转换公式也被称为图像的累积分布函数
(CDF,cumulativedistributionfunction)。

感谢您的阅读。

相关文档
最新文档