搜档网
当前位置:搜档网 › 图像灰度亮度对比度

图像灰度亮度对比度

图像灰度亮度对比度
图像灰度亮度对比度

C++ Builder

图像灰度、对比度和亮度

学号:070081102007

学生所在学院:研究生学院

学生姓名:王阳

任课教师:熊邦书

教师所在学院:电子信息工程学院

2008年1月

07级

实现图像的灰度变换和对比度、亮度调节

王阳

研究生学院

摘要: C++ Builder是一种快速高效的可视化开发语言,与一般语言相比,其在图形绘制和图像处理上功能较强。本文是对图像的灰度、亮度、对比度进行调整。这些处理主要是对现存图像进行处理,通过设置不同的像素颜色值来达到各种效果。

关键词:C++ Builder 灰度亮度对比度

一.图像的灰化处理

1.理论基础

图像的灰度变换处理是图像增强处理技术中一种非常基础,直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分。灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。目的是为了改善画质,使图像的显示效果更加清晰。灰度变换有时又被成为图像的灰度增强或对比度拉伸。

颜色可以为黑白色,灰度色和彩色。工程应用中经常要遇到需要把彩色图像到灰度图像的变换的问题,采集卡过来的图像为彩色图像,为加快处理速度,要把彩色图像转换为黑白图像。由彩色转化为灰度的过程叫做灰度化处理,它是使RGB模型中的R=G=B。灰度化处理是把含有亮度和色彩图像变化成灰度图像的过程。

一般情况下彩色图像每个像素用3个字节表示,每个字节对应着R,G,B分量的亮度(红,绿,蓝),转换后的黑白图像的一个像素用一个字节表示该点的灰度值,它的值在0-255之间,数值越大,该点越白,即越亮,越小则越黑。转换关系为:

()()()()

Gray i j R i j i j B i j

=++

,0.11,0.59,0.3,

Gray i j为转换后的黑白图像在(),i j点处的灰度值,我们可以观察其中(),

公式,其中绿色所占的比重最大,所以转换时可以直接使用G值作为转换后的灰度。

灰度图只能表现256种颜色,灰度化处理还有其他的方法,如:取3个分量的最大值,最小值,算术平均值等,目的都是使颜色的R,G,B 分量值相等。在灰度图像中,每一个像素都以8位元表示,因此可以表现出256()82种层次,所以分量值的取值范围是(0-255),所以灰度图像只能表现256种颜色,且灰度图像中只有灰度而没有彩色。

在这里取3个分量中的最大值作为灰度值。灰度处理首先读入图像的拷贝文件到内存中,找到R,G,B 中的最大值,使颜色的分量值都相等且等于最大值,这样就可以使图像变成灰度图像。

2.二值化

一幅图像包括目标物体,背景还有噪声,怎样从多值的数字图像中只取出目标物体,最常用的方法就是设定某一阀值T 将图像的数据分成两大部分:大于[],255n n -的像素群和小于T 的像素群。这是研究灰度变换最特殊的方法,称为图像的二值化。二值化处理就是把图像(),f x y 分成目标物体和背景两个领域。二值化是数字图像处理中一项最基本的变换方法,通过非零取一,固定阀值,双固定阀值等不同的阀值化变换方法,使一般灰度图变成了黑白二值图像将我们所需的目标部分从复杂的图像背景中脱离出来。

阀值处理的操作过程是先由用户指定或通过算法生成一个阀值,如果图像中某图像素的灰度值小于该阀值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0.

阀值化的变换函数表达式如下:

()0,255,x T f x x T ?

其中T 为指定的阀值。阀值T 就像个门槛,比它小就是黑。该变换函数是阶跃函数,只需给出阀值点T 即可,经过阀值处理后的图像变成了一幅黑白二值图。

3.实现步骤

(1) 取得图像文件的拷贝文件;

(2) 取得图像的数据区指针,得到像素的蓝,绿,红的3个分值;

(3) 将蓝,绿,红的3个值作比较,取得最大值;

(4) 将最大颜色值返回给蓝,绿,红的3个分量;

(5) 显示图像。

二.图像的亮度处理

1.理论基础

人眼对亮度是非常敏感的,在比较两个强弱不同的亮度时,有较好的判断力。所以在图像的处理过程中,经常要对亮度和对比度进行调整。亮度的调整,是指人眼亮度感觉的调整,可以通过对R,G,B颜色的增加(增加亮度)或减少(减少亮度)相同的增量来显示。

亮度的调整就是给每个分量乘以一个百分比值,这个值由对话框输入。3个颜色指针分别乘以一个百分比的量后再返回给原来的颜色分量。

(1)当输入值为100时,图像保持原来亮度;

(2)当输入值小于100时,图像亮度就减少,图像就变暗;

(3)当输入值大于100时,就可以使图像的亮度增加。

2.实现步骤

(1) 取得图像文件的拷贝文件;

(2) 从对话框输入任意整数值(这里约定在0-500);

(3) 取得图像的数据区指针,得到像素的蓝、绿、红的3个分值;

(4) 将这3个值分别乘以从对话框输入的值;

(5) 检验所得到的每个值是否在(0-255)范围内,若越界则取边界值255;

(6) 再把3个新值返回给蓝、绿、红的3个指针变量;

(7) 显示图像。

三.图像的对比度调整

1.理论基础

调整对比度可以使图片的颜色之间更符合人们的需求,实现一些效果。假设有一幅图像,成像时光照不足,使得整幅图像偏暗,或者成像时光照过强,使得整幅图像偏亮,这些情况称为低对比度,即颜色都挤在一起,没有拉开。增加对比度的意思就是把所感兴趣的颜色范围拉开,使得该范围内的像素,亮的越亮,暗的越暗,从而达到增强对比度的目的。对比度实际就是颜色分量之间的差值。

调整对比度就是对每一颜色分量值的最大值和最小值进行处理。

改变对比度就是对每一颜色分量以一致的方式来改变最大值和最小值之间的差值,对每一个像素RGB 分量的值都要进行调整。因为一个真彩色图像由三个字节组成,并且DIB 位图是从最下面一行开始逐渐的向上存储,也即等于把图像倒过来经行扫描。所以像素的指针先指向B ,然后指向G ,最后指向R 。从对话框获得调整的对比度的参数n 在(-127,128)区间。具体实现的方法如下。

(1) 当输入值为0时,图像保持原来对比度;

(2) 当输入值小于0时,减少图像的对比度。减少对比度变化的方法

为:

2552,0255

n g f n n +?=?-< 上述计算的结果是对每个红、绿、蓝分量的区间经行缩小,把从[]0,255减少到[],255n n -+。

(3) 当输入值大于0时,增加图像的对比度。增加对比度变化的方法

为:

0,,0255,

255,0255(),n>02552f n n g f n n f n f n ??<>?=>->???-?-??为其他,且

式中,f 为原图像的像素的分量值,g 为改变后的对应的分量值。计算的结果是对每个红、绿、蓝分量的区间进行扩大,把从[],255n n -增加到[]0,255。

2.实现步骤

(1) 取得图像文件的拷贝文件;

(2) 取得图像的数据区指针,得到像素的蓝、绿、红的3个分量;

(3) 将这3个人值分别进行上述公式处理,得到新值;

(4) 再把3个新值返回给蓝、绿、红3个指针变量;

(5) 显示图像。

四.图像的实现结果

图1 原图像

图2 图像的灰度处理图3 图像的二值化

图4 对图像增加亮度图5 对图像减小亮度

图6 对图像增加对比度图7 对图像减小对比度

五.实验结果分析

本实验是对图像进行灰度、亮度、对比度处理,通过这个实验得出如下结论:图像经过灰度、亮度、对比度处理后,效果明显。本实验还对图像进行了特殊的灰度处理——二值化,效果也很明显。并且在亮度或对比度处理时,可以逐步增加或减小图像的亮度和对比度的。

参考文献

[1]梅成刚等.C++Builder项目开发实践.北京:中国铁路出版社,2003,237-266

[2]余明星等.Borland C++ Builder程序设计经典.北京:科学出版社,2004,121-143

[3]杨淑莹编著.VC++图像处理程序设计.北京:清华大学出版社,北方交通大学出版社,2003,39-51

[4]胡波,张昆等.C++Builder6编程实例教程. 北京:北京希望电子版社,2002,250-277

[5]翟焱等编著.C++Builder4.0多媒体开发技术. 北京:人民邮电出版社,2000,62-101

基于MATLAB的彩色图像灰度化处理

目录 第1章绪论............................................................................................................................ - 1 - 第2章设计原理.................................................................................................................... - 2 - 第3章彩色图像的灰度化处理............................................................................................ - 3 - 3.1加权平均法 .. (3) 3.2平均值法 (3) 3.3最大值法 (4) 3.4举例对比 (5) 3.5结果分析 (6) 第4章结论.......................................................................................................................... - 8 - 参考文献....................................................................................................... 错误!未定义书签。附录............................................................................................................................................ - 9 -

图像处理灰度变换实验

一. 实验名称:空间图像增强(一) 一.实验目的 1.熟悉和掌握利用matlab工具进行数字图像的读、写、显示、像素处理等数字图像处理的基本步骤和流程。 2.熟练掌握各种空间域图像增强的基本原理及方法。 3.熟悉通过灰度变换方式进行图像增强的基本原理、方法和实现。 4.熟悉直方图均衡化的基本原理、方法和实现。 二.实验原理 (一)数字图像的灰度变换 灰度变换是图像增强的一种经典而有效的方法。灰度变换的原理是将图像的每一个像素的灰度值通过一个函数,对应到另一个灰度值上去从而实现灰度的变换。常见的灰度变换有线性灰度变换和非线性灰度变换,其中非线性灰度变换包括对数变换和幂律(伽马)变换等。 1、线性灰度变换 1)当图像成像过程曝光不足或过度,或由于成像设备的非线性和图像记录设备动态范围太窄等因素,都会产生对比度不足的弊病,使图像中的细节分辨不清,图像缺少层次。这时,可将灰度范围进行线性的扩展或压缩,这种处理过程被称为图像的线性灰度变换。对灰度图像进行线性灰度变换能将输入图像的灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。 2)令原图像f(x,y)的灰度范围为[a,b],线性变换后得到图像g(x,y),其灰度范围为[c,d],则线性灰度变换公式可表示为

a y x f b y x f a b y x f c c a y x f a b c d d y x g <≤≤>?????+---=),(),(),(, ,]),([,),( (1) 由(1)式可知,对于介于原图像f (x,y )的最大和最小灰度值之间的灰度值,可通过线性变换公式,一一对应到灰度范围[c,d]之间,其斜率为(d-c)/(b-a);对于小于原图像的最小灰度值或大于原图像的最大灰度值的灰度值,令其分别恒等于变换后的最小和最大灰度值。变换示意图如图1所示。 图1 线性灰度变换示意图 当斜率大于一时,变换后的灰度值范围得到拉伸,图像对比度得到提高;当斜率小于一时,变换后的灰度值范围被压缩,最小与最大灰度值的差变小,图像对比度降低;当斜率等于一时,相当于对图像不做变换。 3)由上述性质可知,线性灰度变换能选择性地加强或降低特定灰度值范围内的对比度,故线性灰度变换同样也可做分段处理:对于有价值的灰度范围,将斜率调整为大于一,用于图像细节;对于不重要的灰度范围,将图像压缩,降低对比度,减轻无用信息的干扰。最常用的分段线性变换的方法是分三段进行线性变换。 在原图像灰度值的最大值和最小值之间设置两个拐点,在拐点处,原图像的灰度值分别为r 1,r 2,该拐点对应的变换后的图像的灰度值分别为s 1,s 2,另外,取原图像灰度的最小值为r 0,最大值为r m ,对应的变换后的灰度值分别为s 0,s m 。

图像灰度化

图像灰度化 颜色可分为黑白色和彩色。黑白色指颜色中不包含任何的色彩成分,仅由黑色和白色组成。在RGB颜色模型中,如果R=G=B,则颜色(R, G, B)表示一种黑白颜色;其中R=G=B的值叫做灰度值,所以黑白色又叫做灰度颜色。彩色和灰度之间可以互相转化,由彩色转化为灰度的过程叫做灰度化处理;由灰度化转为彩色的过程称为伪彩色处理。 相应地,数字图像可分为灰度图像和彩色图像。通过灰度化处理和伪彩色处理,可以使伪彩色图像与灰度图像相互转化。 灰度化就是使彩色的R,G,B分量值相等的过程。由于R,G,B的取值范围是0 ~ 255,所以灰度的级别只有256级,即灰度图像仅能表现256种颜色(灰度)。 灰度化的处理方法主要有如下3种[6]: (1)最大值法:使R,G,B的值等于3值中最大的一个,即 R=G=B=max(R,G,,B) (2-3 ) 最大值法会形成亮度很高的灰度图像。 (2)平均值法:使R,G,B的值求出平均值,即 R=G=B=(R+G+B)/3 (2-4 )平均值法会形成比较柔和的灰度图像。 (3)加权平均值法:根据重要性或其他指标给R,G,B赋予不同的权值,并使R,G,B的值加权平均,即 R=G=B=(W r R + W g G + W b B)/3 (2-5 )其中W r,W g,W b分别为R,G,B的权值。W r,W g,W b取不同的值,加权平均值法就形成不同的灰度图像。由于人眼对绿色的敏感度最高,红色次之,对蓝色最低,因此使W g>W r>W b将得到比较合理的灰度图像。实验和理论推导证明,但W r= 0.30,W g =0.59,W b=0.11时,即当 V gray=0.30R + 0.59G + 0.11B R=G=B= V gray(2-6 )时,能得到最合理的灰度图像。 本文采用方法(3)实现灰度转化,有比较好的效果,结果如图所示。

(完整word版)图像灰度化

图像灰度化处理 彩色图像是由三个不同的分量组成,我们称之为三通道图像。对彩色图像进行处理时,我们往往需要对三个通道依次进行处理,时间开销将会很大。因此,为了达到提高整个应用系统的处理速度的目的,需要减少所需处理的数据量。在图像处理中,图像的灰度化的就是把由RGB 三通道的数据的彩色图像变为单通道的数据的灰度图像。在上述的RGB 模型中,如果R, G, B 他们的值相等,即使是三通道数据,也是表现中一种灰度颜色,灰度值就是R, G, B 的值。灰度图像中各个像素位置的灰度范围为0-255。可以发现,当R,G 和B 他们三者相等时,我们只需一个字节存放该灰度值即可,对于R, G, B 不同的三通道图像,也可以进行灰度化。 目前,最常用的是以下四种彩色图像灰度化方法: 1. 单分量法 三通道图像中R, G, B 三个分量的值可以分别作为灰度图像的灰度值。我们可 以根据实际应用的需要选择其中一个作为灰度图像即可。此时,灰度化公式如下: f ( x, y ) = R( x, y) f ( x, y ) =G ( x, y) f ( x, y )= B( x, y) 其中f ( x, y) 为灰度化后的灰度图像在位置(x, y)的像素值, R(x, y), G(x, y), B(x,y)分别表示三个分量的值。 2.最大值法:该方法首先计算各个像素位置的三个分量的最大值,然后将最大 者作为灰度化后的结果,即: f (x, y)= max ((R ( x, y ) , G ( x, y ) , B ( x, y )) 3.平均值法:对于彩色图像,该方法首先计算三个通道分量的平均值,然后将 该平均值作为图像的灰度值,即: f ( x, y ) = ( R( x, y ) +G ( x, y ) + B( x, y)) / 3 4.加权平均法 上述三种方法实现简单,都是对三个分量做同等处理,然而并没有考虑不同分 量的重要性。根据三个分量的各自的重要性或者其他需要,可以对三个分量分配 不同的权值,然后计算加权结果,并将加权后的均值作灰度化的结果。即可以按 下式对输入的图像信号进行灰度化: f (x, y)= 0.30 R ( x, y )+ 0.59G ( x, y)+ 0.11B ( x, y ) 在图像灰度化时,加权平均法是目前最常用的方法。因为其灰度化结果更为 合理,更符合实际应用的需要。图 2.1.b 为对图 2.1.a 中的彩色图像,采用上述的 加权平均法进行灰度化后的结果。 function I = rgb2gray(varargin) threeD = (ndims(X)==3); T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]); coef = T(1,:); if threeD if isa(X, 'double') || isa(X, 'single') X = reshape(X(:),origSize(1)*origSize(2),3); sizeOutput = [origSize(1), origSize(2)];

数字图像灰度图像二值化实验报告matlab实现

数字图像处理 实验报告 实验二灰度图像的二值化处理 学号 姓名 日期

实验二灰度图像的二值化处理 一、实验目的 图像二值化是数字图像处理技术中的一项基本技术,二值化图像的显示与打印十分方便,存储与传输也非常容易,在目标识别、图像分析、文本增强、字符识别等领域得到广泛应用。图像二值化是将灰度图像转化为只有黑白两类像素的图像,大多采用阈值化算法处理。在不同的应用中,阈值的选取决定着图像特征信息的保留。因此,图像二值化技术的关键在于如何选取阈值。 二、实验内容 1、编程绘制数字图像的直方图。 2、灰度图像二值化处理。 三、实验要求 1、自己选择灰度图像。 2、选择多种阈值分割算法,并比较和分析图像二值化处理的结果。 3、使用VC++编程序。 四、设计思想(阈值选取算法) 灰度图像是指只含亮度信息,不含色彩信息的图像,将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。图像的二值化处理就是将图像上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。阀值分割选取算法有:典型的全局阀值算法的Otsu 算法、局部阀值方法中的Bersen算法、灰度拉伸法、直方图方法等等。 1.Otsu算法的设计思想:设阀值将图像分割成两组,一组灰度对应目标, 另一组灰度对应背景,则这两组灰度值的类内方差最小,两组的类间方差最大。对图像设阈值将图像分割成两组,一组灰度对应目标,另一组灰度对应背景,则这两组灰度值的类内方差最小,两组的类间方差最大。 2.Bersen算法的设计思想:把灰度阈值选取为随像素位置变化而变化的 函数,它是一种动态选择阈值的自适应方法。 3.灰度拉伸算法设计思想:灰度拉伸又叫对比度拉伸,它是最基本的一 种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围。 4.直方图算法的设计思想:把原始图像的灰度直方图从比较集中的某个 灰度区间变成在全部灰度范围内的均匀分布。 五、源程序(附上注释) 1. OTSU算法代码: I=imread('2.jpg'); th=graythresh(I); J=im2bw(I,th); subplot(121) imshow(I); subplot(122) imshow(J);

数字图像灰度阈值的图像分割技术matlab.(优选)

1.课程设计的目的 (1)使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各 种因素对分割效果的影响 (2)使用Matlab软件进行图像的分割 (3)能够进行自行评价各主要算子在无噪声条件下和噪声条件下的分割 性能 (4)能够掌握分割条件(阈值等)的选择 (5)完成规定图像的处理并要求正确评价处理结果,能够从理论上做出合 理的解释 2.课程设计的要求 (1)能对图像文件(bmp,jpg,tiff,gif)进行打开,保存,退出等功能操作 (2)包含功能模块:图像的边缘检测(使用不同梯度算子和拉普拉斯算子)(3)封闭轮廓边界 (4)区域分割算法:阈值分割,区域生长等

3.前言 3.1图像阈值分割技术基本原理 所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准]5[。 在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区域。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。 若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T进行分割。这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。 在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的

灰度图像

灰度图像 一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。 通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。 灰度图像是一种具有从黑到白256级灰度色域或等级的单色图像。该图像中的每个像素用8位数据表示,因此像素点值介于黑白间的256种灰度中的一种。该图像只有灰度等级,而没有颜色的变化。在Photoshop中,将灰度图像作为一种颜色通道的数字图像。 在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。 灰度与灰度图像 灰度也可以认为是亮度,简单说就是色彩的深浅程度。 实际上在我们的日常生活中,通过三原色色彩深浅的组合,可以组成各种不同的颜色。产品能够展现的灰度数量越多,也就意味着这款产品的色彩表现力更加丰富,能够实现更强的色彩层次。例如三原色16级灰度,能显示的颜色就是16×16×16=4096色。不过目前的产品256级灰度已经非常地普遍了。 所谓颜色或灰度级指黑白显示器中显示像素点的亮暗差别,在彩色显示器中表现为颜色的不同,灰度级越多,图像层次越清楚逼真。灰度级取决于每个像素对应的刷新存储单元的位数和显示器本身的性能。如每个象素的颜色用16位二进制数表示,我们就叫它16位图,它可以表达2的16次方即65536种颜色。如每一个象素采用24位二进制数表示,我们就叫它24位图,它可以表达2的24次方即16777216种颜色。 灰度就是没有色彩,RGB色彩分量全部相等。 如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧:一个256级灰度的图象,RGB(100,100,100)就代表灰度为100,RGB(50,50,50)代表灰度为50。 灰度是指黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0,故黑白图片也称灰度图像,在医学、图像识别领域有很广泛的用途

灰度图像二值化方法matlab代码

OTSU算法代码: I=imread('****'); th=graythresh(I); J=im2bw(I,th); subplot(121) imshow(I); subplot(122) imshow(J); Bernsen算法代码: clc; clear all close all I=imread('****'); [m,n] = size(I); I_gray=double(I); T=zeros(m,n); M=3; N=3; for i=M+1:m-M for j=N+1:n-N max=1;min=255; for k=i-M:i+M for l=j-N:j+N if I_gray(k,l)>max max=I_gray(k,l); end if I_gray(k,l)

for i=1:m for j=1:n if I_gray(i,j)>T(i,j) I_bw(i,j)=255; else I_bw(i,j)=0; end end end subplot(121),imshow(I); subplot(122),imshow(I_bw); 改进的Bernsen算法代码:clc; clear all close all I=imread('****'); I_gray=double(I); [m,n] = size(I); a=0.3; A=0;T1=0;S=0; for i=1:m for j=1:n A=A+I_gray(i,j) ; end end A=A*0.9; while(S

灰度值的开和闭运算

gray_opening和opening_circle: 详解什么是灰度值开运算闭运算 我们在进行开运算和闭运算的时候会遇到两种类型的算子,一种是opening_circle这样的,一种是gray_opening这样的,可能你看了Halcon的帮助文档也没弄清楚怎么回事,那我就按自己的理解多讲几句这两种算子到底是什么区别吧。 首先要明白一件事: 开运算=腐蚀+膨胀;(断开细小的地方,所以叫开) 闭运算=膨胀+腐蚀。(连接细小的地方,所以叫闭) 然后,一定要仔细琢磨透在图像处理中所谓region和image到底有什么区别。这两者的区别很大,而且很重要。我相信你肯定遇到过自己找到一个算子,想对image进行处理,结果发现这个算子的参数只能是region这样的情况。 好,不废话了,打字比较快,说的比较乱,如果有语句不通顺或者难以理解的地方,请见谅,恳请指出我们一起交流。 dilation1是对一个region进行膨胀,注意这里变量是一个region,region从某种意义上来说已经失去了灰度值这一性质,因为region基本上都是在灰度值的性质下提取出来的image的一个子集。而gray_dilation是对图像Image进行膨胀,也就是变量是Image,而不是region。你可以这么理解region和image的区别,region基本上一个region就是一个灰度值,不存在什么所谓的灰度值差异,而image是由

各种各样的灰度值组成的,有灰度值的差异。 我们经常用到的opening_circle和closing_circle等开运算闭运算的算子是“二值图像形态学运算”,再回忆一下二值图像是什么,region是什么以及用threshold对图像进行阈值分割之后是不是得到一个region,这个时候图像就是一个二值图像,这个时候的膨胀和腐蚀就是你所理解的将一个region变粗或者变细了。 而灰度值开运算和闭运算,也就是gray_opening和gray_closing 其实是“灰度图像的形态学运算”。想想二值图像和灰度图像有什么区别?那么要理解灰度值开运算和闭运算,由于开运算是只先腐蚀再膨胀,而闭运算是先膨胀再腐蚀,所以必须先知道灰度值膨胀和灰度值腐蚀是什么意思。 灰度值膨胀: 我先说结果:原图像中被膨胀的区域的灰度值会相应地增大,所以也就对应着膨胀之后的图像更亮一些,原图像中那些暗一些的细节都会变小或消失,这主要取决于你所用的结构元素的大小。那么为什么会增大呢?这是因为膨胀的原理是取原图像和结构元素之和所包围的那一部分小邻域内的灰度值的最大值。还有这里的结构元素和二值图像中的元素也有本质的区别,这里的结构元素是带有灰度值信息的,也就是说即使你给定的是同样大小的圆,如果灰度值大小不一样,得到的结果也不一样。 其实二值图像中的膨胀和这个道理也是一样的,原区域和结构元素相加,取相加之和所包围小邻域内的最大值,由于在二值的情况下,只

图像灰度变换实验报告

图像灰度变换报告 一.实验目的 1.学会使用Matlab ; 2.学会用Matlab 软件对图像进行灰度变换,观察采用各种不同灰度变换发法对最终图像效果的影响; 二.实验内容 1.熟悉Matlab 中的一些常用处理函数 读取图像:img=imread('filename'); //支持TIF,JPEG,GIF,BMP,PNG 等文件格式。 显示图像:imshow(img,G); //G 表示显示该图像的灰度级数,如省略则默认为256。 保存图片:imwrite(img,'filename'); //不支持GIF 格式,其他与imread 相同。 亮度变换:imadjust(img,[low_in,high_in],[low_out,high_out]); //将low_in 至high_in 之间的值映射到low_out 至high_out 之 间,low_in 以下及high_in 以上归零。 绘制直方图:imhist(img); 直方图均衡化:histeq(img,newlevel); //newlevel 表示输出图像指定的灰度级数。 2.获取实验用图像:rice.jpg. 使用imread 函数将图像读入Matlab 。 3 .产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤ r ≤ 0.65 1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg 进行处理,使用imwrite 函数保存处理后的新图像。 4.产生灰度变换函数T2,使得: s = 5.用T2 保存处理后的新图像。 6.分别用 s = r 0.6; s = r 0.4; s = r 0.3 对kids.tiff 图像进行处理。为简便起见,使用Matlab 中的imadjust 函数,最后用imwrite 保存处理后的新图像。 7.对circuit.jpg 图像实施反变换(Negative Transformation )。s =1-r; 使用imwrite 保存处理后的新图像。 8.对rice.jpg 图像实施灰度切片

图像灰度亮度对比度

C++ Builder 图像灰度、对比度和亮度 学号:070081102007 学生所在学院:研究生学院 学生姓名:王阳 任课教师:熊邦书 教师所在学院:电子信息工程学院 2008年1月

07级 实现图像的灰度变换和对比度、亮度调节 王阳 研究生学院 摘要: C++ Builder是一种快速高效的可视化开发语言,与一般语言相比,其在图形绘制和图像处理上功能较强。本文是对图像的灰度、亮度、对比度进行调整。这些处理主要是对现存图像进行处理,通过设置不同的像素颜色值来达到各种效果。 关键词:C++ Builder 灰度亮度对比度 一.图像的灰化处理 1.理论基础 图像的灰度变换处理是图像增强处理技术中一种非常基础,直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分。灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。目的是为了改善画质,使图像的显示效果更加清晰。灰度变换有时又被成为图像的灰度增强或对比度拉伸。 颜色可以为黑白色,灰度色和彩色。工程应用中经常要遇到需要把彩色图像到灰度图像的变换的问题,采集卡过来的图像为彩色图像,为加快处理速度,要把彩色图像转换为黑白图像。由彩色转化为灰度的过程叫做灰度化处理,它是使RGB模型中的R=G=B。灰度化处理是把含有亮度和色彩图像变化成灰度图像的过程。 一般情况下彩色图像每个像素用3个字节表示,每个字节对应着R,G,B分量的亮度(红,绿,蓝),转换后的黑白图像的一个像素用一个字节表示该点的灰度值,它的值在0-255之间,数值越大,该点越白,即越亮,越小则越黑。转换关系为: ()()()() Gray i j R i j i j B i j =++ ,0.11,0.59,0.3, Gray i j为转换后的黑白图像在(),i j点处的灰度值,我们可以观察其中(), 公式,其中绿色所占的比重最大,所以转换时可以直接使用G值作为转换后的灰度。

图像灰度值的概念是什么

图像灰度值的概念是什么?灰度也可以认为是亮度,简单说就是色彩的深浅程度。 实际上在我们的日常生活中,通过三原色色彩深浅的组合,可以组成各种不同的颜色。产品能够展现的灰度数量越多,也就意味着这款产品的色彩表现力更加丰富,能够实现更强的色彩层次。例如三原色16级灰度,能显示的颜色就是16×16×16=4096色。不过目前的产品256级灰度已经非常地普遍了。 所谓颜色或灰度级指黑白显示器中显示像素点的亮暗差别,在彩色显示器中表现为颜色的不同,灰度级越多,图像层次越清楚逼真。灰度级取决于每个像素对应的刷新存储单元的位数和显示器本身的性能。如每个象素的颜色用16位二进制数表示,我们就叫它16位图,它可以表达2的16次方即65536种颜色。如每一个象素采用24位二进制数表示,我们就叫它24位图,它可以表达2的24次方即16777216种颜色。 灰度就是没有色彩,RGB色彩分量全部相等。如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧:一个256级灰度的图象,RGB(100,100,100)就代表灰度为100,RGB(50,50,50)代表灰度为50。 灰度是指黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0,故黑白图片也称灰度图像,在医学、图像识别领域有很广泛的用途 若是彩色图象的灰度其实在转化为黑白图像后的像素值(是一种广义的提法),转化的方法看应用的领域而定,一般按加权的方法转换,R ,G ,B 的比一般为3:6:1。 任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray =(R*28+G*151+B*77)>>8; 4.平均值法:Gray=(R+G+B)/3; 5.仅取绿色:Gray=G; 通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。

图像的灰度处理

图像的灰度处理 一、关键技术 灰度处理。要将一个图片灰度处理,必须取出图片中每一个像素的灰度值,再将此点的颜色的红、绿、蓝成分都设置为灰度值。(灰度值=红色×0.30+绿色×0.59+蓝色×0.11)取得某像素颜色可以通过API函数GetPixel完成;设置某点的颜色可以通过SetPixel完成,CDC类对它们进行了重新封装,原型如下: (1)GetPixel 该函数用于取得某像素的颜色。 语法: COLORREF GetPixel ( intXPos, //X坐标 intnYPos //Y坐标 ); (2)SetPixel 该函数用于设置某像素的颜色。 语法: COLORREF SetPixel ( int x, //X坐标 int y, //Y坐标 COLORREF crColor //要设置的颜色 ); 怎样将一个颜色值中的红、绿、蓝成分取出呢?将COLORREF转换成16进制看一下:charcColor[6]; COLORREF color=RGB(128,96,64) itoa(color,cColor,16); 此时,cColor地址中存储内容为0F406080,40就是10进制的64;60就是10进制的96;80就是10进制的128。从上面的内容可以看出,颜色的存储格式实际是将红、绿、蓝成份按照B、R、G的格式存储的,根据这个规则,就可以取出某颜色的红、绿、蓝成份。 注:这里使用的是BMP图像(因为它在MFC中显示简单些0_0)。

二关键代码 #if !defined(AFX_GRAYPIC_H__219DC38F_FF6A_4047_88CC_CD183559D512__INCLUDE D_) #define AFX_GRAYPIC_H__219DC38F_FF6A_4047_88CC_CD183559D512__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols ///////////////////////////////////////////////////////////////////////////// // CGrayPicApp: // See GrayPic.cpp for the implementation of this class // classCGrayPicApp : public CWinApp { public: CGrayPicApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CGrayPicApp) public: virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CGrayPic App) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() };

相关主题