基于c语言的红外图像处理程序设计内容摘要:
于复杂,计算量大,不利于将其实时化和模块化,因此只有在对图像效果影响不大的基础上对现有的 算法进行改进,使之在硬件上易于实现,才是目前红外图像实时处理的关键所在。 对红外图像的处理的一般流程为图2. 2所示。 图 22红外图像处理流程图 从图上可以看出,首先对红外探头进来的图像进行非均匀性校正,为了便 于后 面的处理,接着要对图像进行去噪处理,本文主要对红外图像进行了中值 滤波,然后针对图像对比度不高的问题,对图像进行了灰度变换,增强了图像 的对比度,最后,为了便于观察,进行了伪彩色变换,经过这四步的处理,红 外图像得到了增强,可直 接送显示电路显示。 红外图 像 非均匀性校正 噪声去除 灰度变换 伪彩色变换 图像显示 9 第三章 红外图像处理的 C语言的程序设计 的算法 由于红外焦平面探测器具有非均匀性 ,所以要对探测器输出的红外图像进行非均匀性校正。 为了达到实时性要求 ,本系统采用两点校正算法。 两点校正算法的优点是算法简单 ,运算速度快 ,可以实现实时处理 ,而且不需要场景运动 ,是目前工程上应用较为普遍的非均匀性校正算法 【 9】。 当前国内外研究人员已提出了很多其他算法 ,比如高频滤波器校正 ,场景校正 ,神经网络校正等算法 ,但这些算法不易达到实时性要求 ,因此采用两点校正算法。 两点校正算法原理如下 :假设红外图像的非均匀性是线性的 ,输入图像原始灰度值为 X ,输出校正过后的灰度值为 Y ,校正公式为 Y = Kij X + Bij (1) 取两个定标黑体温度点 T1 、 T2 , 输入均匀背景和照度下的红外图像 X1 、 X2 , 得到相应条件下的 Y1 、 Y2 ,由公式 (1) 可得 : Y1 = Kij X1 + Bij ( 2) Y2 = Kij X2 + Bij 由于输入的图 像是均匀背景和照度下的 ,那么校正过后新图像的所有像素灰度值均应相同。 取相应温度 T1 、 T2 下图像的平均值作为 Y1 、 Y2 , 设输入 m 行 n 列的图像。 . 1Y = nm1 ijXminj 11 1 (3) . 2Y = nm1 ijXminj 21 1 其中 m =240 n =320 10 将式 (3) 代入式 (2) 求出 Kij和 Bij。 Kij = ijXijXnm ijXijXminjminj12121 11 1 (4) Bij = ijXijXnm ijXijXijXijXminjminj1221121 11 1 最后根据公式( 1)求出 输出校正过后的灰度值 Y 噪声去除 噪声去除之中值滤波法 通过红外探头得到的红外图像一般都因受到某种干扰而含有噪声,噪声恶 化了图像的质量,使图像模糊, 甚至淹没特征,如果不对噪声进行及时处理, 就会对后续的处理过程乃至输出结果产生影响,甚至可能得到错误的结论。 因 此,图像噪声滤除成为红外图像预处理中的重要组成部分。 图像消除噪声很很多种方法,在这我主要介绍一中值滤波法去噪声。 中值滤波是由 Tukey发明的一种非线性信号处理技术,早期用于一维信号处理,后来被用 到二 维数字图像平滑中,它能有效抑制图像噪声,提高图像信噪 比 【 10】。 它是一种邻域运算,是把邻域中的像素按灰度等级进行排序,然后选择该组的中间值作为输出像素值。 它能减弱或消除傅里叶空间的高频分量,但不影响低 频分量。 因为高频分量对应图像中的区域边缘和灰度值具有较大较快变化的部分,因此该滤波可将这些分量滤除,使图像平滑。 中值滤波的主要原理是:首先确定一个以某个像素为中 心点的邻域 ,一般为方形邻域:然后将邻域中的各个像素的灰度值进行排序,取其中间值作为中心点像素灰度的新值,这里的邻域通常被称为窗口;当窗口在图像中上下左右进行移动后,利用中值滤波算法可以很好地对图像进行平滑处理。 以 3x3窗为例,该窗沿着图像数据的行方向逐像素滑动,在每一次滑动期间内,方形窗中的所有像素按照灰度值被排序,这组数据中的中值作为输出,替代原来 窗函数的中心位置像素的灰度值。 中值滤波实现过程如图所示。 11 10 求中值 2 4 6 8 10 12 17 19 30 ( a)取 3x3窗口 ( b)对窗口的像素进行排序 ( c)中值取代中间位置像素图 图 :中值滤波实现过程 从图上可以得出中值滤波的具体步骤如下: (1)将模板在图像中移动,并将模板中心与图像中心某个像素的位置重合; (2)读取模板下各对应像素 的灰度值; (3)将这些灰度值从小到大排列成一列; (4)找出排在中间的一个值; (5)将这个中间值赋给对应模板中心位置的像素。 采用该方法,中值的计算仅需做 19次比较,此外,由于常规的滤波算法使窗口 每移动一次,就要进行一次排序,这种做法实际上包含了大量重复比较的过程。 若 一幅 图像的大小为 NxN,则整个计算过程需要 O(N2D2)时间,当窗口尺寸增大时,计算量将按平方增大,这主要是传统算法未能充分利用相邻窗口间的相关信息。 因此本文提出一种类似于滑动窗的改进的中值滤波算法,该算法能够充分利用前一窗口中已排序部分 的信息。 实验表明,该算法可以有效地降低图像处理的复杂度,加快图像处理速度。 中值滤波的效果依赖于滤波窗口的大小,太大会使边缘模糊,太小了则去噪效果不好。 考虑到噪声点和边缘点同样是灰度变化较为剧烈的像素,普通中值滤波在改变噪声点灰度值的时候,会一定程度地改变边缘像素灰度值。 当处理该像素的时候,看该像素是否是滤波窗口所覆盖下邻域像素的极大或者极小值,如果是,则用正常的中值滤波处理该像素。 如果不是,则不处理。 8 6 2 4 30 12 10 19 17 12 中值滤波的 c语言程序 去噪声(中值滤波法) include “” int median value(unsigned char c[9] )。 /* median利用中值滤波法去噪声 image_in: 输入图像数组 image_out:输出图像数组 */ void median (unsigned char image_in[Y_SIZE][X_SIZE], unsigned char image_out[Y_SIZE][X_SIZE],) { int i,j。 unsigned char c[9]。 for (i = 1。 i Y_SIZE1。 i++) { for(j = 1。 j X_SIZE1。 j++) { c[0] = image_in[i1][j1]。 c[1] = image_in[i1][j]。 c[2] = image_in[i1][j+1]。 c[3] = image_in[i][j1]。 c[4] = image_in[i][j]。 c[5] = image_in[i][j+1]。 c[6] = image_in[i+1][j1]。 c[7] = image_in[i+1][j]。 c[8] = image_in[i+1][j+1]。 image_out[i][j] = median_value(c)。 } } } /* median_value 求出 9个像素的中央值 c:像素 */ int median_value(unsigned char c[9]) { int i, j, buf。 for(j = 0。 j 8。 j++) { 13 for(i = 0。 i 8。 i++) { if (c[i+1] c[i]) { buf = c[i+1]。 c[i+1] = c[i]。 c[i] = buf。 } } } return c[4]。 } 灰度变换 灰度变 换的概念 灰度变换可调整图像的动态范围或图像对比度 ,是图像增强的重要手段之一。 图像的灰度变换处理是通过改变原始图像各像素在各灰度级上的概率分布来实现的。 通过对图像的灰度值进行统计可以得到一个一维离散的图像灰度统计直方图函数 p(sk)=nk/n (k=0,1,2,…… ,L1)。 该式表达了在第 k个灰度级上的像素的个数 nk 占全部像素总数 n的比例, p(sk)则给出了对 sk出现概率的 1个估计。 因此该直方图函数实际是图像的各灰度级的分布情况的反映,换句话说也就是给出了该幅图像所有灰度值的整体描述。 通过该函数可以清 楚地了解到图像对应的动态范围情况,可以了解到图像灰度的主要集中范围。 因此可以通过图像增强程序的干预来改变直方图的灰度分布状况,使灰度均匀的或是按预期目标分布与整个灰度范围空间,从而达到增强图像对比度的效果。 这种方法是基于数理统计和概率论的,比直接在空域对原始图像采取对比度增强效果要好的多。 在实际应用中直方图的变换主要有均衡变换和规定变换两种,而后者又根据灰度级映射规则的不同分单映射规则和组映射规则两种 【 11】。 14 灰度变换之 直方图均衡化处理 直方图均衡化处理的中心思想是把原 始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。 对图像空域点的增强过程是通过增强函数 t=EH(s)来完成的, t、 s分别为目标图像和原始图像上的像素点 (x,y),在进行均衡化处理时对增强函数 EH需要满足两个条件:增强函数 EH(s)在 0≤s≤L1 的范围内是一个单调递增函数,这个条件保证了在增强处理时没有打乱原始图像的灰度排列次序。 另一个需要满足的条件是对于 0≤s≤L1应当有0≤EH(s)≤L1,它保证了变换过程灰度值的动态范围的一致。 同样的,对于反变换过程 s=EH1(t),在 0≤t≤1 时也必须满足上述两个条件。 累计分布函数(cumulative distribution function,CDF)就是满足上述条件的一种,通过该函数可以完成 s 到 t 的均匀分布转换。 此时的增强转换方程为: tk = EH(sk) = ∑(ni/n) = ∑ps(si) ,( k=0,1,2,…… , L1) 上述求和区间为0到 k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。 在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累 计直方图分布tk按式 tk=[(N1)* tk+]对其取整并得出源灰度 sk 到 tk 的灰度映射关系,其中 N为灰度的级数。 在重复上述步骤得到所有的源图像各灰度级到目标图像各灰度级的映射关系后按照新的映射关系对源图像各点像素进行灰度转换即可完成对源图的直方图均衡化 【 12】。 15 直方图均衡 均衡化前后直方图比较 下面是按照上述算法实现的部分主要程序代码: 16 首先对原始图像的各像素点的灰度情况进行统计计算。 对于 24位 BMP 图像,图像阵列是从第 54 字节起始 的,每像素按 R、 G、 B 的顺序占 3个字节。 for(DWORD i=54。 im_d。基于c语言的红外图像处理程序设计
相关推荐
式。 本系统采用内部时钟方式,其电路图如图4所示。 图4 内部方式时钟产生电路单片机片内由一个反向放大器构成振荡器,可以由它产生时钟。 该反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2。 这两个引脚外接石英晶体振荡器作为定时元件,内部反向放大器自激振荡,产生时钟。 C12,C13对频率有微调作用。 C12和C13值选择为30PF。 在实际连接中,为了减少寄生电容,更好地保证振荡器稳定
系统,其实质是计算机技术对生产过程进行集中监视、操作、管理和分散控制的 一捉新型控制技术。 其功能特点是:通用性强、系统组态灵活、控制功能完善、数据处理方便、显示操作集中、人机界面友好、安装简单规范化、调试方便、运行安全可靠等。 作为一种纵向分层和横向分散的大型综合控制系统,它以多层计算机网络为依托,将分布在全厂范围内的各种控制设备的数据处理设备连接在一起,实现各部分信息的共享的协调工作
》报告 第 7 页 Z 形扫描 游程编码 DCT 系数量化后,构成一个稀疏矩阵,用 Z( Zigzag)形扫描将其变成一维数列,将有利于 游程编码。 Z 形扫描的顺序如图 34。 图 35 Z 形扫描顺序图 游程编码是一种统计编码,该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。 游 程编码 的基本原理是:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。
游戏的设计与开发 6 常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间,而我在这几种语言中选择了 C。 第一是因为 C开发一些软件比较方便快捷;第二是因为 C刚学过,印象比较深,而且做这个游戏,刚好能加深一下印象,还能有个系统的复习。 C编程语言的介绍 C读做 “ C sharp” ,中文译音暂时没有 .专业人士一般读 “ C sharp” ,现在很多非专业一般读“ C 井”。
间选择,即在高频段时,闸门时间较短;低频时闸门时间较长。 这样闸门时间宽度 Tc 依据被测频率的大小自动调整测频,从而实现量程的自动转换,扩大了测频的量程范围;实现了全范围等精度测量,减少了低频测量的误差。 图 中 BZ_ Counter 和 DC_ Counter 是 2 个可控的 32 b 高速计数器, BZ_ ENA和 DC_ ENA 分别是他们的计数允许信号端,高电平有效。
........................................................................... 6 相位累加器 ...................................................................................................................