04第四讲 直方图及点运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 四 讲 直 方 图 及 点 运 算
h
e
d
a
b
c
f
低灰度、高灰度拉伸; 中等灰度压缩;
降低对比度。
4.3 线性变换
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
6. 线性变换五
g
分段线性变换 低灰度、高灰度压缩; 中等灰度拉伸;
第 四 讲 直 方 图 及 点 运 算
h
e
d
增大对比度。
a
else *lpPixel = (unsigned char) (temp+0.5);
}
}
4.3 线性变换
3. 线性变换二 灰度反转
g 255 - f
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
for (i=0;i<iHeight;i++) {
第 四 讲 直 方 图 及 点 运 算
图像数据
内容回顾
位图文件头 位图信息头 调色板
调色板:颜色查找表,Look Up Table (LUT),由若干个颜色表项构成,每个 表项长度为4bit。 单色DIB:2个表项; 16色DIB:16个表项; 256色DIB:256个表项; 真彩色DIB:无调色板。 Typedef struct tag RGBQUAD { BYTE rgbBlue; //该颜色的蓝色分量 BYTE rgbGreen; //该颜色的绿色分量 BYTE rgbRed; //该颜色的红色分量 BYTE rgbReserved; //保留值,不考虑 } RGBQUAD;
定义:
第 四 讲 直 方 图 及 点 运 算
0 if G x, y if 255 G x, y T G x, y T
T为阈值
阈值变换是重要的图像分割算法,可以通过阈值 变换获取图像中感兴趣的对象。
4.2 阈值变换
第 四 讲 直 方 图 及 点 运 算
4.2 阈值变换
内容回顾
BITMAPINFOHEADER
位图文件头 位图信息头 调色板
Typedef struct tag BITMAPINFOHEADER { DWORD biSize; //本结构的长度,40个字节 DWORD biWidth; //图像宽,单位是像素 DWORD biHeight; //图像高,单位是像素 WORD biPlanes; //必须是1(位平面) WORD biBitCount;//颜色位数,1,4,8,24 DWORD biCompression; //压缩类型,如 //BI_RGB,BI_RLE4,BI_RLE8 DWORD biSizeImage; //实际位图数据占用的字节数 DWORD biXPelsPerMeter; //水平分辨率 DWORD biYPelsPerMeter; //垂直分辨率 DWORD biClrUsed; //实际使用的颜色数 DWORD biClrImportant; //重要的颜色数 } BITMAPINFOHEADER;
位图信息头
调色板
图像数据
Typedef struct tag BITMAPFILEHEADER { WORD bfType; //文件类型, 必须”BM”0x4D42 DWORD bfSize; //指定文件大小(bit) WORD bfReserved1; //保留字,不考 虑 WORD bfReserved2; //保留字,不考 虑 DWORD bfOffBits; //从文件头到位图数据的偏移字//节数 =sizeof(fileheader)+sizeof(infoheader) +sizeof(RGBQUAD) } BITMAPFILEHEADER
4.1 灰度直方图
5. 直方图的作用:数字化参数的选择
像 元 数 像 元 数
第 四 讲 直 方 图 及 点 运 算
正常
像 元 数
亮度
像 元 数
偏暗
亮度
偏亮
亮度
亮度过于集中
亮度
4.1 灰度直方图
第 四 讲 直 方 图 及 点 运 算
a 正常,b 偏亮,c 偏暗,d 亮度过于集中
4.1 灰度直方图
c d c g f a c b a d
第 四 讲 g 直 方 图 d 及 点 运 c 算
a
b
f
4.3 线性变换
5. 线性变换四 限幅变换
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
6. 线性变换五
g
分段线性变换
d f a e d g f a d b a h e f b e c b
第 四 讲 直 方 图 及 点 运 算
for (i=0;i<iHeight;i++) { for (j=0;j<iWidth;j++) { lpPixel=(unsigned char*)lpStartBit + (iHeight-1-i) * iBitsWidth + j; if (*lpPixel>iThre) *lpPixel = 255; else *lpPixel = 0; } }
4.1 灰度直方图 2. 直方图的绘制
G 0
第 四 讲 直 方 图 及 点 运 算
N G 0
1
5
2
4
3
5
4
6
5
2
6
14
7
0
0 1 2 3 4 5 6 7
4.1 灰度直方图
int iWidth = pDib->GetWidth(); int iHeight = pDib->GetHeight(); int iBitsWidth = pDib->GetBitsWidth(); unsigned char * lpPixel; LPSTR lpStartBit = pDib->GetPixelBit(); int i,j; long plCount[256]; // 获取图像宽度 // 获取图像高度 // 获取图像存储宽度 // 指向像素的指针 // 图像数据起始位置 // 循环变量 // 每一个灰度级像素数
5. 直方图的作用:边界阈值选择
第 四 讲 直 方 图 及 点 运 算
4.1 灰度直方图
5. 直方图的作用:边界阈值选择
第 四 讲 直 方 图 及 点 运 算
频率
0
100
阈值 T
200
255 灰度
双峰直方图与阈值的确定
4.1 灰度直方图
5. 直方图的作用:边界阈值选择
第 四 讲 直 方 图 及 点 运 算
第 四 讲 直 方 图 及 点 运 算
for (i = 0; i < iHeight; i ++) { for (j = 0; j < iWidth; j ++) { lpPixel = (unsigned char *) lpStartBit + iBitsWidth * i + j; plCount[*(lpPixel)]++; } }
4.1 灰度直方图
5. 直方图的作用:边界阈值选择
第 四 讲 直 方 图 及 点 运 算
4.1 灰度直方图 5. 直方图的作用:面积统计 Ag Ag g H g lim
g 0
dA g dg
第 四 讲 直 方 图 及 点 运 算
g
4.2 阈值变换
图像数据
内容回顾
位图文件头 位图信息头 调色板
图像数据:像素按照每行每 列的顺序排列;每一行的字节 数必须是4的整倍数,不足的补 0。
理论上:W=biWidth*biBitCount/8 宏定义计算实际的W #define W=(biWidth*biBitCount+31)/32*4 数据存储顺序:从下到上,从左到右。
b
c
f
4.3 线性变换
6. 线性变换五 分段线性变换
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
7. 线性变换六
g
锯齿波变换
第 四 讲 直 方 图 及 点 运 算
d
灰度区间[0,a]变换为[0,d] ; 灰度区间[a,b]变换为[0,d] ; 灰度区间[b,c]变换为[0,d] 。
4.1 灰度直方图
4. 直方图性质:反映总体灰度分布
第 四 讲 直 方 图 及 点 运 算
4.1 灰度直方图
4. 直方图性质:不包含空间位置信息
第 四 讲 直 方 图 及 点 运 算
两幅图像具有相同的直方图
4.1 灰度直方图
4. 直方图性质:不包含空间位置信息
第 四 讲 直 方 图 及 点 运 算
第 四 讲 直 方 图 及 点 运 算
g
g f tan
f
4.3 线性变换
2. 线性变换一
g f tan
第 四 讲 直 方 图 及 点 运 算
g
45
压缩灰度范围
f
4.3 线性变换
2. 线性变换一
g f tan
第 四 讲 直 方 图 及 点 运 算
4.1 灰度直方图 3. 直方图的数学含义
y
第 四 讲 直 方 图 及 点 运 算
G x, y
G g2
连续图像函数
Ag
G g1
面积函数
x
H g lim
Ag Ag g g
g 0
dA g dg
H g Ag Ag g
int iWidth = pDib->GetWidth(); int iHeight = pDib->GetHeight(); int iBitsWidth = pDib->GetBitsWidth(); unsigned char * lpPixel; LPSTR lpStartBit = pDib->GetPixelBit(); int i,j; // 获取图像宽度 // 获取图像高度 // 获取图像存储宽度 // 指向像素的指针 // 图像数据起始位置 // 循环变量
{
lpPixel=(unsigned char*)lpStartBit + (iHeight-1-i) * iBitsWidth + j; temp=k * (*lpPixel); if (temp>255.0) *lpPixel = 255; else if (temp<0.0)
Baidu Nhomakorabea
*lpPixel = 0;
灰度区间[a,b],变换为灰 度区间[c,d];区间[a,b]之外 的灰度保持不变。变换函数为:
d
d c ba f a c
c a
b
g
f
4.3 线性变换
4. 线性变换三 窗口变换
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
5. 线性变换四 限幅变换 灰度区间[0,a]变换为c; 灰度区间[a,b]变换为[c,d] ; 灰度区间[b,255]变换为d。 变换函数为:
g
45
拉伸灰度范围
f
4.3 线性变换
g f tan
tan 0 . 5
第 四 讲 直 方 图 及 点 运 算
tan 2
4.3 线性变换
for (i=0;i<iHeight;i++) { for (j=0;j<iWidth;j++)
第 四 讲 直 方 图 及 点 运 算
图像数据
第四讲 直方图及点运算
4.1 直方图
4.2 阈值变换; 4.3 线性变换; 4.4 非线性变换;
4.1 灰度直方图
1. 直方图(Histogram)定义: 灰度直方图是灰度级的函数,描述的是图像中 具有该灰度级的像素的个数,其横坐标是灰度级, 纵坐标是该灰度出现的频率(像素个数)。
第 四 讲 直 方 图 及 点 运 算
4.3 线性变换
1. 定义 一种点运算,通过一个线性变换关系T,改变像素点灰度; 第 四 讲 直 方 图 及 点 运 算
G x , y T F x , y F x, y G x, y g Tf
原图像 变换后的图像
f
g
原灰度
变换后的灰度
4.3 线性变换
2. 线性变换一
for (j=0;j<iWidth;j++)
{ lpPixel=(unsigned char*)lpStartBit + (iHeight-1-i) *iBitsWidth + j; temp=255-*lpPixel; *lpPixel=temp;
}
}
4.3 线性变换
4. 线性变换三
g
窗口变换
第 四 讲 直 方 图 及 点 运 算
内容回顾
有关图像的几个概念 图像的存储格式;
内容回顾 像素(Pixel):最基本的图像元素(Picture Element), 数字图像的最小单位。
邻域(Neighborhood):在给定像素附近的像 素集合。
内容回顾
位图文件头
位图信息头
调色板
图像数据
内容回顾
BITMAPFILEHEADER
位图文件头