c语言bmp图像均衡化,浅谈应用C语言实现图象灰度的均衡化问题
摘要通过对灰度直方图进行修正的理论、建模、算法和程序的论述,说明如何实现图象的灰度直方图均衡化,达到图象增强的目的。
【关键词】均衡化 灰度 图象增强技术
图象的灰度直方图均衡化是图象增强技术的一种,它基于图象空域的方法,对图象的处理是在图象所在的空间直接进行的,更确切地说对图象的处理是对单个象素进行而和其它的象素无关 。
1 理论和建模
1.1 理论
直方图均衡化是通过增加图象灰度值的动态范围,增加对比度,以致图象具有较大的反差,大部分细节比较清晰。而它的实质是将多个频数不同的灰度级合并到同一个灰度级,以换取对比度的扩大 。在图象增强处理中一般都采用如下公式:
g(x, y) = T(f( x, y) )(1)
来实现。
以T 表示转换算子:f (.) 和g (.) 表示转换前后某一象素的灰度值,通常以u 表示f (.), p 表示g (.) 。
根据上述说明公式(1) 变为:
p = T( u) (2)
而作为均衡化公式还需要满足如下条件:
(1) T( u) 在0 ≤u ≤L - 1 范围内是个单值递增函数;
(2)对0 ≤u ≤L - 1 有0 ≤T ( u) ≤L C 1;(L表示为灰度值的级数)
条件说明:保证图象灰度级次序不变、灰度值动态范围一致。
1.2 建模
设模型函数为累积分布函数(cumulative dis-tribution function,CDF) :
T( u) =(0 ≤ u ≤L - 1) (3)
式中Qu(w) 是一概率密度函数表示灰度级分布。
将公式归一化:
0 ≤u ≤1 ( u = 0 表示为黑色, u = 1 表示为白色)
将公式离散化:
(0 ≤≤1 , k = 0 ,1 , …,L - 1) (4)
其中uk表示灰度级为u 的离散值,nk表示灰度级为uk的象素的数目,n 表示象素的总数目。
根据(4) 式可以对直方图进行均衡化,但我们知道在具体用计算机实现时,由于灰度级的离散性,必需将不同的uk合并成同一个灰度级。构造
如下公式:
pk= int((L - 1) ×pk + 0.5)) (5)
来实现.
2 算法和程序
2.1 算法流程
(1)原始直方图各灰度级象素nk;
(2)计算原始直方图各灰度级的概率;
(3)输出原始直方图;
(4)计算累积直方图;
(5) 合并不同的灰度级;
(6)输出新的直方图。
2.2 程序实现
使用C 语言实现上述算法,程序如下:
void Histeq(float * Hbuff )/* * Hbuff指向一个存放nk的数组* /
{ int L , j , i;
float q ,k ,total ,*u ,*s;
scanf (”% d”, &L );/ * L 为灰度级的级数* /
s = u = Hbuff;
total = 0 ;
for ( j = 0;j < = L + 1 ;j + + )
total = total + u [ j ];/ * total 存放象素的总数目* /
for ( ( j = 0;j < = L + 1;j + + )
{ s [ j ] = u[ j ]/total;
printf ( s [ j ]);} / * 输出原始直方图所具有的数据* /
for ( ( j = 1; j < = L + 1; j + + )
{printf ( s [ j - 1 ]);
s [ j ] = s [ j ] + s [ j - 1 ];} / * 计算累积直方图* /
for ( j = 0;j < = L + 1;j + + )
s [ j ] = int [ ( N - 1)* s [ j ] + 0. 5 ];
/* 合并不同的灰度级* /
j = 0;
while ( j < = L)
{ i = j;
k = s [ j ];
q = 0;
while ( s [ i ] = k);
{ q = q + u[ i ];
i ++;}
j = i;
printf (q/total);/ * 输出新的直方图所具有数据* /
}
}
3 使用上述算法和程序应用举例
例题:设有1 幅256 ×256,8 bit 灰度图象,设L = 7 ,存放nk的数组为:
elent [7] = {10473,16350,7683,8192,6919,4763,9764,1392}
求出所对应的原始直方图,累积直方图,新的直方图,实际均衡化的结果。
解:调用Histeq(float &elent)
结果:如图1、图2所示。
从图2 实际均衡化结果示意图知直方图均衡化的效果和理想化效果有一定的差别,在图象上增加了可视粒度,在一些具体的细节上没有得到改进。可以对均衡化直方图进行规定化加以改进。
参考文献
[1]章毓晋.图象处理和分析[M].北京:清华大学出版社,1990.
[2]田捷,沙飞,张新生.实用图象分析与处理技术[M].北京:电子工业出版社,1995.
[3]刘文耀等编著.光电图像处理[M].北京:电子工业出版社 2002(11).
[4]阮秋琦.数字图像处理学[M].北京:电子工业出版社,2001.
作者单位
杭州师范大学钱江学院国际服务工程学院浙江省杭州市310018
c语言bmp图像均衡化,浅谈应用C语言实现图象灰度的均衡化问题相关推荐
- 浅谈递归函数—C语言
浅谈递归函数-C语言 目录: 浅谈递归函数-C语言 递归函数的概念 例题 总结 递归函数的概念 递归函数的定义:函数在其函数体内直接或间接调用它本身,则称该函数为递归函数. 递归的两个必要条件:(1) ...
- 二级C语言上机考试评分标准,浅谈二级C语言上机考试评分原理
浅谈二级C语言上机考试评分原理 C语言的表现能力和处理能力极强.它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构.下面是小编整理的关于二级C语言上机考试评分原理,希望大家认真阅读! 上机考 ...
- 浅谈视觉与语言中的多模态研究,究竟都研究什么
前言 随着人工智能的整体进步,计算机视觉和自然语言处理已经有了巨大的.有了如此强大的算法和自主系统的综合能力,就需要合并知识领域,实现跨模态兼容,视觉语言(VisLang)研究具有更复杂的任务和交互式 ...
- c语言switch语句嵌套,浅谈c语言中switch语句的嵌套使用
switch语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使用更是让初学者难以理解.本文通过介绍switch嵌套语句的形 ...
- c语言指针很危险,浅谈C语言中指针使用不当的危险性.doc
浅谈C语言中指针使用不当的危险性.doc 第 19 卷 Vol . 19 第 2 期 No . 2 洛阳师专学报 Journal of Luoyang Teachers College 2000 年 ...
- 考研考c语言程序设计的军校,浅谈军校学员C语言程序设计的教学现状及教法改进...
塞熬宣 浅 谈 军 校 学 员 语 言 程 序设 计 的教 学 现 状 及 教 法 改进 邓静 寰 (成 都 市 华 阳镇 武 警 指挥 学 院 四川 成 都 ) 摘 要:本 文从 当前军校学 员 语 ...
- linux 易语言窗口程序_浅谈Linux入门的基本知识
浅谈Linux入门的基本知识 图形模式与文字模式的切换方式Linux预设提供了六个命令窗口终端机让我们来登录. 默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1.tty2 - ...
- matlab泊松分布随机数和图像_浅谈可靠性理论中的常用概率分布
浅谈可靠性理论中的常用概率分布 1. 泊松分布 基本原理 泊松分布是最常见的离散概率分布,适合描述单位时间内随机事件发生的概率. (1) 泊松分布概率密度(不可靠度)计算公式 MATLAB概率密度函数 ...
- c语言bmp图像YUV转化成RGB,RGB与YUV图像格式的相互转换
RGB与YUV图像格式的相互转换 (参考上的<RGB与YUV图像视频格式的相互转换>文章,做了些修改) RGB介绍:在记录计算机图像时,最常见的是采用RGB(红.绿,蓝)颜色分量来保存颜色 ...
最新文章
- Oracle 触发器 Update 不能操作本表的疑问
- GitHub 项目 增加成员
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(一)视图共性 学习笔记...
- 更换 Centos 中的 yum 源
- typedef 深入剖析
- python运算符_Python运算符总结
- JavaScript模板引擎Template.js基本使用详解
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
- java map操作_Java HashMap的基本操作
- 【GTK3.0】背景设置
- 2017年下半年软考合格标准出炉啦
- Flex请求Php端的奇怪现象
- idea如何导出maven项目
- 基于51单片机和GPS的经纬度时间速度航向系统设计定位电子罗盘原理图程序设计
- 2020蓝桥杯省赛模拟赛
- 2016-07-09Cpp_jianjie
- 【加法器】——模拟电路设计简单的二进制数加法器
- Linux基础操作命令
- 约分最简分式 (15 分)
- Apifox:详细使用教程,带你轻松拿捏