230 likes | 357 Views
数字图象处理基础:. 模拟图像数字化 灰度图像直方图 数字图像常见文件格式 .bmp 文件格式 色度学基础. 2.1 模拟图像数字化. 一、图像数字化 在数字化时,图像被分割成所谓的像素( Pixel ),各像素的灰度值用整数表示。一幅 M×N 个像素的数字图像,其像素灰度值可以用 M 行、 N 列的矩阵 G 表示:. 采样. 采样: 即先沿垂直方向采样, 再沿水平方向采样这两个步骤完成采样操作。 对一幅图像采样时,若每行(即横向)像素为 M 个,每列(即纵向)像素为 N 个,则图像大小为 M×N 个像素。. 采样.
E N D
数字图象处理基础: • 模拟图像数字化 • 灰度图像直方图 • 数字图像常见文件格式 • .bmp 文件格式 • 色度学基础
2.1模拟图像数字化 一、图像数字化 在数字化时,图像被分割成所谓的像素(Pixel),各像素的灰度值用整数表示。一幅M×N个像素的数字图像,其像素灰度值可以用M行、N列的矩阵G表示:
采样 采样:即先沿垂直方向采样, 再沿水平方向采样这两个步骤完成采样操作。 对一幅图像采样时,若每行(即横向)像素为M个,每列(即纵向)像素为N个,则图像大小为M×N个像素。
采样 图2-2 采样示意图
量化编码 量化示意图 (a) 量化; (b) 量化为8 bit
模拟图像数字化 2.几点说明: • 矩阵中的每一个元素称为像元、像素或图像元素。而g(i, j)代表(i, j)点的灰度值,即亮度值。 • 由于g (i, j)代表该点图像的光强度(亮度),而光是能量的一种形式,故g (i, j)必须大于零,且为有限值,即: 0<=g (i, j)<2n。 • 用g (i, j)的数值来表示(i, j)位置点上灰度级值的大小,即只反映了黑白灰度的关系。 • 数字化采样一般是按正方形点阵取样的, 除此之外还有三角形点阵、正六角形点阵取样。
采样网格 图 采样网格 (a) 正方形网格; (b) 正六角形网格
3.几个概念: • 颜色深度: n= 1、4、8、 • 量化等级 k=2n • 采样频率 : 单位距离采样的次数 • 图像大小 :像素个数乘以一个像素占用的字节数 例:一幅灰度图像像素点是M×N个,颜色深度为8,问这幅数字图像的大小是多少?如果图像为彩色图像呢? b= M×N×8
二、彩色图像的数字化 对于彩色图像,是按照颜色成分——红(R)、绿(G)、蓝(B)分别采样和量化的。若各种颜色成分均按8 bit量化,即每种颜色量级别是256, 则最多可以处理256×256×256=16 777 216种颜色。
2.2 灰度直方图 在数字图像处理中,灰度直方图是最简单且最有用的工具,可以说,对图像的分析与观察直到形成一个有效的处理方法,都离不开直方图。
2. 3 灰度直方图 一、灰度直方图的定义 灰度直方图是灰度级的函数,描述的是图像中该灰度级的像素个数。即:横坐标表示灰度级,纵坐标表示图像中该灰度级出现的个数。
2. 3 灰度直方图 灰度直方图
2.3 灰度直方图 二、直方图的性质 1.所有的空间信息全部丢失。 2.每一灰度级的像素个数可直接得到。
2.3 灰度直方图 三、直方图的用途 1 . 数字化参数 直方图给出了一个简单可见的指示,用来判断一幅图象是否合理的利用了全部被允许的灰度级范围。一般一幅图应该利用全部或几乎全部可能的灰度级,否则等于增加了量化间隔。丢失的信息将不能恢复。 2. 边界阈值选取 假设某图象的灰度直方图具有 二峰性,则表明这个图象的较亮的区域和较暗的区域可以较好地分离,去这一点为阈值点,可以得到好的2值处理的效果。
数字图像格式 数字图像有多种存储格式,每种格式一般由不同的开发商支持。 要进行图像处理,有必要了解图像文件的格式, 即图像文件的数据构成。每一种图像文件均有一个文件头, 在文件头之后才是图像数据。文件头的内容由制作该图像文件的公司决定,一般包括文件类型、文件制作者、制作时间、版本号、 文件大小等内容。各种图像文件的制作还涉及到图像文件的压缩方式和存储效率等。下面介绍几种常见的图像文件格式。
图像文件格式 • .JPG 用JPEG标准压缩的图像文件,数据量最小 • .GIF无损压缩,1/2 ~1/4, CompuServe • .TIF 工业标准,最复杂,最灵活 • .PSD Adobe公司Photoshop用 • .PCX最早支持彩色图像的,256色,不支持真彩色 • .BMP 位图文件(bitmap),数据量大 • 1 位:2值黑白 • 4 位:16 灰度或16色 • 8 位:256灰度或256色 • 16位:65536色(增强色) • 24位:1677万色(真彩色)
位图文件头BITMAPFILEHEADER 文件头定义 typedef struct tagBITMAPFILEHEADER{ WORD bfType; 文件类型标识 DWORD bfSize; 图像文件大小 WORD bfReserved1; 保留未用 WORD bfReserved2; 保留未用 DWORD bfOffBits; 文件头、信息头、调色板之和 } BITMAPFILEHEADER; 这个结构的长度是固定的,为(2+4+2+2+4)14个字节(WORD为无符号16位二进制整数,DWORD为无符号32位二进制整数)。
位图信息头BITMAPINFOHEADER 第二部分也是一个结构,其定义如下: typedef struct tagBITMAPINFOHEADER{ DWORD biSize; 信息头的长度 LONG biWidth; 位图宽度( p) LONG biHeight; 位图高度(p) WORD biPlanes; 位面数(1) WORD biBitCount; 颜色深度 DWORD biCompression; 压缩说明(0) DWORD biSizeImage; 图像的存储大小 LONG biXPelsPerMeter; 图像水平分辨率 LONG biYPelsPerMeter; 图像垂直分辨率 DWORD biClrUsed; 位图使用的颜色数 DWORD biClrImportant; 重要颜色数目 } BITMAPINFOHEADER;
位图信息头BITMAPINFOHEADER(二) 这个结构的长度是固定的,为40个字节(LONG为32位二进制整数)。其中,biCompression的有效值为BI_RGB、 BI_RLE8、 BI_RLE4、BI_BITFIELDS,这都是一些Windows定义好的常量。由于RLE4和RLE8的压缩格式用的不多,今后仅讨论biCompression的有效值为BI_RGB,即不压缩的情况。
第三部分为调色板Palette) 调色板实际上是一个数组, 共有biClrUsed个元素(如果该值为零,则有2的biBitCount次方个元素)。数组中每个元素的类型是一个RGBQUAD结构, 占4个字节,其定义如下: • typedef struct tagRGBQUAD{ • BYTE rgbBlue; //该颜色的蓝色分量 • BYTE rgbGreen; //该颜色的绿色分量 • BYTE rgbRed; //该颜色的红色分量 • BYTE rgbReserved; //保留值 • } RGBQUAD; 这里是对那些需要调色板的位图文件而言的。真彩色图像是不需要 调色板的, BITMAPINFOHEADER后直接是位图数据。
第四部分就是实际的图像数据。对于用到调色板的位图, 图像数据就是该像素颜色在调色板中的索引值,对于真彩色图像, 图像数据就是实际的R、 G、 B值。 对于2色位图,用1位就可以表示该像素的颜色(一般0表示黑, 1表示白),所以一个字节可以表示8个像素。 对于16色位图,用4位可以表示一个像素的颜色,所以一个字节可以表示2个像素。 对于256色位图,一个字节刚好可以表示1个像素
下面两点请注意: (1) 每一行的字节数必须是4的整数倍,如果不是,则需要补齐。这在前面介绍biSizeImage时已经提到过。 (2) BMP文件的数据存放是从下到上,从左到右的。也就是说, 从文件中最先读到的是图像最下面一行的左边第一个像素, 然后是左边第二个像素, 接下来是倒数第二行左边第一个像素, 左边第二个像素。依次类推, 最后得到的是最上面一行的最右边的一个像素。
作 业(共2题) • 我们知道,要构成一幅数字图像需要采样和量化,如果采样和量化都充分细的话,就可以得到好的画质。但是数据量也就变得很大。问当数据量设为一个定值时,在什么时候将采样优先考虑?什么情况下将量化优先考虑?为什么? • 在图像量化中,有非均匀量化技术。当灰度级的级低的时候用它比较有效。但是为什么在灰度级级数高时几乎不用? • RGB颜色模型中,各个顶点的颜色分别是什么?