实验-灰度图像的线性变换
普通化学实验b 灰度变换

普通化学实验B:灰度变换一、实验目的本实验旨在通过灰度变换的方法,将一张灰度图像进行处理,使其达到更好的显示效果。
二、实验原理灰度变换是一种常用的图像处理方法,其主要作用是对图像的灰度值进行调整,使其达到更好的视觉效果。
灰度变换的原理是通过对图像像素值进行线性或非线性的映射,将原图像的灰度值映射到一个新的灰度值域中,从而改变图像的亮度、对比度等特征,使图像更加清晰、明亮。
常见的灰度变换方法包括线性灰度变换、对数灰度变换、伽马灰度变换等。
其中,线性灰度变换是最为简单和常用的一种方法,其公式为:g(x,y) = a*f(x,y) + b其中,g(x,y)为变换后的像素值,f(x,y)为原始像素值,a和b为常数,可以通过调整它们的取值来改变图像的亮度和对比度。
三、实验步骤1. 打开Matlab软件,导入一张灰度图像。
2. 对图像进行线性灰度变换,调整a和b的取值,观察变换后的图像效果。
3. 尝试使用对数灰度变换和伽马灰度变换对图像进行处理,比较不同方法的效果差异。
4. 将处理后的图像保存到本地。
四、实验结果通过对一张灰度图像进行线性灰度变换、对数灰度变换和伽马灰度变换,得到了如下结果:(1)原始图像(2)线性灰度变换(3)对数灰度变换(4)伽马灰度变换可以看出,经过灰度变换后,图像的亮度、对比度等特征得到了明显的改善,使图像更加清晰、明亮。
五、实验总结本实验通过灰度变换的方法,对一张灰度图像进行了处理,得到了更好的显示效果。
不同的灰度变换方法可以对图像的亮度、对比度等特征进行调整,使图像更加清晰、明亮。
在实际应用中,可以根据需要选择不同的灰度变换方法,以达到最佳的视觉效果。
图像的灰度变换

昆明理工大学(数字图像处理)实验报告实验名称:图像的灰度变换专业:电子信息科学与技术姓名:学号:成绩:[实验目的]1、理解并掌握灰度变换的基本原理和方法。
2、编程实现图像灰度变换。
3、分析不同的灰度变换方法对最终图像效果的影响。
[实验内容]1、灰度的线性变换;2、灰度的非线性变换;3、图像的二值化;4、图像的反色处理;[实验原理]图像的灰度变换 ( gray scale transformation, GST ) 处理是图像增强处理技术中一种非常基础、直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分。
灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。
目的是为了改善画质,使图像的显示效果更加清晰。
灰度变换有时又被称为图像的对比度增强或对比度拉伸。
从图像输入装置得到的图像数据, 以浓淡表示, 各个像素与某一灰度值相对应。
设原图像像素的灰度值 D=f(x,y),处理后图像像素的灰度值D′= g (x,y),则灰度增强可表示为:g(x,y)=T[f(x,y)]或 D ′= T (D)要求 D 和 D′都在图像的灰度范围之内。
函数 T(D) 称为灰度变换函数,它描述了输入灰度值和输出灰度值之间的转换关系。
灰度变换主要针对独立的像素点进行处理,通过改变原始图像数据所占据的灰度范围而使图像在视觉上得到良好的改观,没有利用像素点之间的相互空间关系。
因此,灰度变换处理方法也叫做点运算法。
点运算可以按照预定的方式改变一幅图像的灰度直方图。
除了灰度级的改变是根据某种特定的灰度变换函数进行之外,点运算可以看做是“从像素到像素”的复制操作。
根据g(x,y)=T[f(x,y)] , 可以将灰度变换分为线性变换和非线性变换。
1、灰度的线性变换若g(x,y)=T[f(x,y)]是一个线性或分段线性的单值函数,例如g(x,y)=T[f(x,y)]=af(x,y)+b则由它确定的灰度变换称为灰度线性变换,简称线性变换。
实验-灰度图像的线性变换

实验三灰度图像的线性变换一、实验目的1.了解灰度变换的基本原理;2.掌握线性变换处理的方法;3.利用VC编写图像线性变换处理的程序;4.在微机上调试程序。
二、实验原理灰度级修正是对图像在空间域进行增强的简单而效果明显的方法,根据图像降质不同的原因以及对图像特征的不同要求而采用不同的修正方法。
主要有灰度变换法和修正法。
它们是把原图像的灰度函数f(x,y)经过一个变换函数T(.)变换成一个新的图像函数g(x,y),即g(x,y)=T[f(x,y)]通过变换,达到对比度增强的效果,要注意在变换的过程中,对每一个象素(x,y)都经过了同样的处理,因此该方法又叫做点处理。
本实验完成灰度图像的线性变换处理。
1.灰度变换法一般成像系统只具有一定的亮度范围,亮度的最大值与最小值之比称为对比度。
由于形成图像的系统亮度有限,常出现对比度不足的弊病,使人眼观看图像时视觉效果很差,通过灰度变换法可以大大改善人的视觉效果。
灰度变换法又可分为三种:线性、分段线性及非线性变换。
(1)线性变换假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],线性变换表示式为:g(x,y)=[(d-c)/(b-a)] f(x,y)+c此关系式可用图3-1表示。
若图像中大部分象素的灰度级分布在区间[a,b],很小部分的灰度级超出了此区间,为改善增强的效果,可令:c 0< f(x,y)<ag(x,y)= [(d-c)/(b-a)] f(x,y)+c a≤ f(x,y)≤bd b< f(x,y)< F max其中F max为输入图像的最大灰度值。
图3-1 灰度范围线性变换(2)分段线性变换为了突出感兴趣的目标或灰度区间,相对抑制那些不感兴趣的目标或灰度区间,常采用分段线性变换法。
常用的是三段线性变换法,如图3-2所示,其数学表达式为:(c/a)f(x,y) 0<f(x,y)<ag(x,y)= [(d-c)/(b-a)]f(x,y)+c a≤f(x,y)≤b[(G max-d)/(F max-b)][f(x,y)-b+d] b<f(x,y)≤F max图中对灰度区间[a,b]进行了线性变换,而灰度区间[0,a] [b,F max]受到了压缩。
图像的灰度变换增强实验报告

图像的灰度变换增强实验报告一、实验目的1、 理解数字图像处理中点运算的基本作用;2、 掌握对比度调整与灰度直方图均衡化的方法。
二、实验原理1、对比度调整如果原图像f (x , y )的灰度范围是[m , M ],我们希望对图像的灰度范围进行线性调整,调整后的图像g (x , y )的灰度范围是[n , N ],那么下述变换:[]n m y x f mM n N y x g +---=),(),( 就可以实现这一要求。
MATLAB 图像处理工具箱中提供的imadjust 函数,可以实现上述的线性变换对比度调整。
imadjust 函数的语法格式为:J = imadjust(I,[low_in high_in], [low_out high_out])J = imadjust(I, [low_in high_in], [low_out high_out])返回原图像I 经过直方图调整后的新图像J ,[low_in high_in]为原图像中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围,灰度范围可以用 [ ] 空矩阵表示默认范围,默认值为[0, 1]。
不使用imadjust 函数,利用matlab 语言直接编程也很容易实现灰度图像的对比度调整。
但运算的过程中应当注意以下问题,由于我们读出的图像数据一般是uint8型,而在MATLAB 的矩阵运算中要求所有的运算变量为double 型(双精度型)。
因此读出的图像数据不能直接进行运算,必须将图像数据转换成双精度型数据。
MATLAB 中提供了这样的数据类型转换函数:im2double 函数,其语法格式为:I2 = im2double(I1)运算之后的图像数据再显示时可以再转化成uint8型,格式为:I3 = uint8 (I2)2、直方图均衡化直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换变成一幅具有均匀灰度概率密度分布的新图像,从而改善图像的灰度层次。
图像灰度变换实验报告

实验2a 图像的灰度变换一、实验目的:学会用Matlab软件对图像进行运算和灰度变换。
二、实验内容:用+、-、*、/、imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply、imsubtract和imadjust等函数生成各类灰度变换图像。
三、实验相关知识1、代数运算两幅图像之间进行点对点的加、减、乘、除运算后得到输出图像。
我们可以分别使用MA TLAB的基本算术符+、-、*、/来执行图像的算术操作,但是在此之前必须将图像转换为适合进行基本操作的双精度类型(命令函数为double())。
为了更方便对图像进行操作,图像处理工具箱中也包含了一个能够实现所有非稀疏数值数据的算术操作的函数集合。
如下所示:imabsdiff:计算两幅图像的绝对差值imadd:两个图像的加法imcomplment:一个图像的补imdivide:两个图像的除法imlincomb:计算两幅图像的线性组合immultiply:两个图像的乘法imsubtract:两个图像的减法使用图像处理工具箱中的图像代数运算函数无需再进行数据类型间的转换,这些函数能够接受uint8和uint16数据,并返回相同格式的图像结果。
代数运算的结果很容易超出数据类型允许的范围。
图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整型数据将被截取为数据范围的极值,分数结果将被四舍五入。
2、灰度变换点运算也称为灰度变换,是一种通过对图像中的每个像素值进行运算,从而改善图像显示效果的操作。
对于特定变换函数f的灰度变换,用户可以利用MATLAB强大的矩阵运算能力,对图像数据矩阵调用各种MATLAB计算函数进行处理。
需要注意的是由于MATLAB不支持uint8类型数据的矩阵运算,所以首先要将图像数据转换为双精度类型,计算完成后再将其转换为uint8类型(命令为uint8( ))。
数字图像处理 实验 灰度变换

XXXXXXX
实验名称图像灰度变换
实验时间年月日
专业姓名学号
预习操作座位号
教师签名总评
一、实验目的:
1.深入理解图像灰度变换的基本原理。
2.学习编程实现图像灰度变换,并分析各种算法的效果。
二、实验原理:
现行拉伸:
void CHangView::OnXxls()
{
// TODO: Add your command handler code here
long w,h;
unsigned char *lpsrc;
lpsrc=m_Image;
w=m_DibHead->biWidth;
h=m_DibHead->biHeight;
对数变换:对数变换的一般表达式为:s = c log(1 + r),其中C是一个常数。低灰度区扩展,高灰度区压缩。图像加亮、减暗。非线性拉伸不是对图像的整个灰度范围进行扩展,而是有选择地对某一灰度值范围进行扩展,其他范围的灰度值则有可能被压缩。
三、实验内容:
与实验二建立菜单方式相同。
建立相应的类向导使之建立函数(步骤与实验二相同),函数代码如下:
}
分段变换:
void CHangView::OnFenduan()
{
// TODO: Add your command handler code here
long w,h;
unsigned char *lpsrc;
lpsrc=m_Image;
w=m_DibHead->biWidth;
h=m_DibHead->biHeight;
数字图像处理实验二图像灰度变换

实验二图像灰度变换实验一、实验目的熟悉亮度变换函数的使用熟悉灰度图像的直方图的表示;掌握图像增强的基本方法:灰度变换、直方图均衡;二、实验内容灰度线性变换、灰度直方图、直方图均衡处理;灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特征更加明显。
灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像增强。
三、实验原理1.函数imad just函数imad just是对灰度图像进行亮度变换的基本命令,语法为:g = imadju st(f, [low_in high_in], [low_ou t high_out], gamma)将图像f中的亮度值(灰度值)映射到新图像g中,即将low_in至hi gh_in 之间的值映射到low_out至high_out之间的值。
low_in以下的灰度值映射为l ow_o u t,high_in以上的灰度值映射为h igh_out,函数imad just的矩阵[ ]内参数均指定在0和1之间,[low_in high_i n]和[low_ou t high_ou t]使用空矩阵[ ]会得到默认值[0 1]。
若high_out小于l ow_ou t,则输出图像会反转。
参数gamm a指定了曲线(变换函数)的形状,若gamma小于1,则映射被加权至更高(更亮)的输出值;若gamma大于1,则映射被加权至更低(更暗)的输出值。
若省略了函数的参量gamma,则gamma默认为1——即线性映射。
>>f = imread(‘filename’)>>imshow(f)>>g1 = imadju st(f, [0 1], [1 0]); %图像反转>>figure, imshow(g1) %figure命令表示同时显示多个窗口>>g2 = imadju st(f, [0.5 0.75], [0 1]);%将0.5至0.75之间的灰度级扩展到范围0和1之间>>figure, imshow(g2)>>g3 = imadju st(f, [ ], [ ], 2) %使用gamm a值>>figure, imshow(g3)2.直方图处理与函数绘图图像的直方图定义为离散函数:h(r k) = n k绘制图像的直方图,函数imhi st,语法为:h = imhist(f, b)f为输入图像,h为直方图h(r k),b是用于形成直方图的灰度级个数,若b省略,则默认值为256。
数字图像处理实验一 图像的灰度变换

数字图像处理实验报告(一)班级:测控1002姓名:刘宇学号:06102043实验一图像的灰度变换1. 实验任务熟悉MATLAB软件开发环境,掌握读、写图像的基本方法。
理解图像灰度变换在图像增强的作用,掌握图像的灰度线性变换和非线性变换方法。
掌握绘制灰度直方图的方法,掌握灰度直方图的灰度变换及均衡化的方法。
2. 实验环境及开发工具Windws2000/XPMATLAB 7.x3. 实验原理灰度变换灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:图1.1 不同的分段线性变换其对应的数学表达式为:直方图均衡化灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下,用rk 代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:n n r P kk r =)( 1,,2,1,010-=≤≤l k r k式中:nk 为图像中出现rk 级灰度的像素数,n 是图像像素总数,而nk/n 即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为ωωd p r T s r r)()(0⎰==(a) Lena 图像 (b) Lena 图像的直方图 图1.2 Lena 图像及直方图当灰度级是离散值时,可用频数近似代替概率值,即1,,1,010)(-=≤≤=l k r nn r p k kk r式中:l 是灰度级的总数目,pr(rk)是取第k 级灰度值的概率,nk 是图像中出现第k 级灰度的次数,n 是图像中像素总数。
所以积分可以表示为下列累计分布函数(cumulative distribution function, CDF)1,,1,010)()(00-=≤≤===∑∑==l k r r p nn r T s j kj j r kj j k k4. 实验内容1、熟悉使用MATLAB 语言中对图像数据读取、显示等基本函数:imread()函数、imwrite()函数、imshow()函数、Figure ()函数。
[Python图像处理]十.图像的灰度线性变换
![[Python图像处理]十.图像的灰度线性变换](https://img.taocdn.com/s3/m/7b8398d77e192279168884868762caaedd33baf6.png)
[Python图像处理]⼗.图像的灰度线性变换图像灰度上移变换该算法将实现图像灰度值的上移,从⽽提升图像的亮度,由于图像的灰度值位于0到255之间,需要对灰度值进⾏溢出判断。
代码如下:import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread("src.png")grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)height, width = grayImage.shape[:2]result = np.zeros((height, width), np.uint8)# 图像灰度上移变换for i in range(height):for j in range(width):if int(grayImage[i, j] + 50) > 255:gray = 255else:gray = grayImage[i, j] + 50result[i, j] = np.uint8(gray)cv2.imshow("src", grayImage)cv2.imshow("result", result)if cv2.waitKey() == 27:cv2.destroyAllWindows()效果如下:图像对⽐度增强变换import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread("src.png")grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)height, width = grayImage.shape[:2]result = np.zeros((height, width), np.uint8)# 图像灰度上移变换for i in range(height):for j in range(width):if int(grayImage[i, j]*1.5 + 50) > 255:gray = 255else:gray = grayImage[i, j]*1.5 + 50result[i, j] = np.uint8(gray)cv2.imshow("src", grayImage)cv2.imshow("result", result)if cv2.waitKey() == 27:cv2.destroyAllWindows()效果如下:图像对⽐度增强减弱import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread("src.png")grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)height, width = grayImage.shape[:2]result = np.zeros((height, width), np.uint8)# 图像灰度上移变换for i in range(height):for j in range(width):if int(grayImage[i, j]*0.8 + 50) > 255:gray = 255else:gray = grayImage[i, j]*0.8 + 50result[i, j] = np.uint8(gray)cv2.imshow("src", grayImage)cv2.imshow("result", result)if cv2.waitKey() == 27:cv2.destroyAllWindows()效果如下:图像灰度反⾊变换反⾊变换⼜称为线性灰度补变换,它是对原图像的像素值进⾏反转,即⿊⾊变为⽩⾊,⽩⾊变为⿊⾊import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread("src.png")grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)height, width = grayImage.shape[:2]result = np.zeros((height, width), np.uint8)# 图像灰度上移变换for i in range(height):for j in range(width):gray = 255 - int(grayImage[i,j])result[i, j] = np.uint8(gray)cv2.imshow("src", grayImage)cv2.imshow("result", result)if cv2.waitKey() == 27:cv2.destroyAllWindows()效果如下:图像灰度⾮线性变换: DB=DAxDA/255图像的灰度⾮线性变换主要包括对数变换、幂次变换、指数变换、分段函数变换,通过⾮线性关系对图像进⾏灰度处理,下⾯主要讲解三种常见类型的灰度⾮线性变换。
灰度线性变换

灰度线性变换
灰度线性变换(Gray-Level Linear Transformation, GLT)是一种常用的图像处理技术,可以通过线性变换来改变图像的亮度和对比度。
一般来说,每个像素的灰度都是由一个介于0到255之间的整数确定的,分别对应黑色和白色。
灰度线性变换就是通过改变灰度值的映射关系,来调整图像的亮度和对比度。
灰度线性变换的原理可以用以下直观的公式来描述:
g(x,y)=T(f(x,y)) 其中,T(x1)是为每个亮度值x1所设置的新的亮度值;
f(x,y)表示原图像的每个像素点;
一般来说,变换函数T(x1)可以用一次函数来描述,即 T(x1)=ax1+b (其中,a,b 为实数常量),由此可知,a的取值范围在0-1之间,表示图像亮度的比例; b的取值范围为0-255,表示图像的偏移量。
正如我们所知,灰度线性变换的优点是可以简单、快速地调整图像的亮度和对比度。
缺点是它不能改变图像的分布特征,只能做一些简单的变换,而不能实现图像的特定效果处理,比如拉伸度和畸变处理等。
因此,灰度线性变换通常只用于处理图像的简单变换,比如调整图像的亮度和对比度的需求,或者在彩色图像转换为灰度图像的过程中。
一般来说,使用灰度线性变换容易实现,而且对于一些常用的算法有很好的效果,所以经常被用来处理图像。
实验报告---实验三图像灰度变换处理模板

计算机科学与工程学院天津理工大学计算机科学与工程学院实验报告2016 至2017 学年第二学期实验三图像灰度变换处理课程名称数字图像处理学号学生姓名卢洪利年级2014专业计算机科学与技术教学班号2实验地点主7-215实验时间2016年4月4日第1节至第2 节主讲教师杨淑莹实验成绩软件运行特色算法分析流程设计报告成绩总成绩实验(三)实验名称图像灰度变换处理软件环境OpenSUSE Leap 42.2Qt 5.6.1硬件环境PC实验目的掌握图像的灰度变换原理,编程实现图像的灰度变换功能。
实验内容(应包括实验题目、实验要求、实验任务等)1.实现灰度直方图。
要求:了解灰度直方图基本原理,实现灰度直方图。
说明:灰度直方图基本原理1 灰度直方图简介2 基本原理任务:(1)在左视图中打开一幅位图。
(2)制作一个【灰度直方图】菜单,将消息映射到右视图中,在右视图中实现灰度直方图。
2.实现灰度线性变换。
要求:了解灰度线性变换基本原理,实现灰度线性变换。
说明:灰度线性变换基本原理任务:(1)在左视图中打开一幅位图。
(2)制作一个【灰度线性变换】菜单,将消息映射到右视图中,在右视图中实现灰度线性变换。
3.实现灰度非线性变换。
要求:了解灰度非线性变换基本原理,实现灰度非线性变换。
说明:灰度非线性变换基本原理1灰度对数变换2灰度幂次变换3灰度指数变换任务:(1)在左视图中打开一幅位图。
(2)制作一个【灰度对数变换】菜单,将消息映射到右视图中,在右视图中实现灰度对数变换。
(3)制作一个【灰度幂次变换】菜单,将消息映射到右视图中,在右视图中实现灰度对数变换。
(4)制作一个【灰度指数变换】菜单,将消息映射到右视图中,在右视图中实现灰度指数变换。
4.实现阈值变换。
要求:了解阈值变换图基本原理,实现灰度阈值变换说明:灰度阈值变换基本原理任务:(1)在左视图中打开一幅位图。
(2)制作一个【阈值变换】菜单,将消息映射到右视图中,在右视图中实现阈值变换。
数字图像处理实验报告-线性灰度变换-图像几何变换-频域图像增强技术-图像分割

线性灰度变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的线性变换和直方图均衡化的原理和应用;3了解平滑处理的算法和用途,学习使用均值滤波、中值滤波和拉普拉斯锐化进行图像增强处理的程序设计方法;4 了解噪声模型及对图像添加噪声的基本方法。
二、实验原理1 灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。
)],([),(y x f T y x g =⎪⎩⎪⎨⎧<≤+-<≤+-≤≤=255),(]),([),( ]),([),(0 ),(),(y x f b g b y x f b y x f a g a y x f a y x f y x f y x g b a γβαn y m x ,2,1 ,,,2,1==2 直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。
按照图像概率密度函数PDF 的定义:1,...,2,1,0 )(-==L k nn r p k k r 通过转换公式获得:1,...,2,1,0 )()(00-====∑∑==L k n n r p r T s k j k j j j r k k3 均值(中值)滤波是指在图像上,对待处理的像素给定一个模板,该模板包括了其周围的临近像素。
将模板中的全体像素的均值(中值)来代替原来像素值的方法。
4 拉普拉斯算子如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--------111181111 拉普拉斯算子首先将自身与周围的8个像素相减,表示自身与周围像素的差异,再将这个差异加上自身作为新像素的灰度。
三、实验步骤1 启动MATLAB 程序,对图像文件分别进行灰度线性变换(参考教材57页,例4.1)、直方图均衡化(参考教材64页,例4.6)、均值滤波(参考教材69页,例4.9)、中值滤波(参考教材73页,例4.11)和梯度锐化操作(参考教材76页,例4.12)。
添加噪声,重复上述过程观察处理结果。
图像的线性变换

实验二 图像的线性变换实验学时:2学时实验类型:综合实验要求:必修一、实验目的通过掌握图像直方图的绘制方法,深入理解图像直方图对于观察图像的意义。
通过掌握灰度变换的方法,并深入了解图形经过灰色变换后,动态范围扩大,图像层次显得清晰,图像特征明显,更有利于对图像的目视观察。
二、实验内容(1)编程实现图像的直方图。
(2)编程并实现窗口灰度变换,分段线性变换,显示图像的直方图和灰度图,观察图像灰度的结果。
(3)在实验过程中,改变线性分段范围,观察图像灰度变换后的目视效果变化情况。
三、实验原理、方法和手段(1)灰度的线性变换若()[(,)]g x T f x y =是一个线性或分段线性的单值函数,灰度变换方程为: ()[(,)](,)g x T f x y af x y b ==+ 则由它确定的 灰度变换为灰度变换,简称线性变换。
(2)窗口灰度变换在曝光不足或曝光过度的情况下,或景物本身灰度级很少,图像的灰度可能会局限在一定的很小的范围内。
当图像中大部分的灰度级在[,]L U 范围内,少部分像素分布在小于L 和大于U 的区间内时,限定一个窗口范围,该窗口中的灰度值保持不变,对小于该窗口下限的灰度值直接设置为0;大于该窗口上限的灰度值直接设置为255,将有效地改善图像视觉效果。
灰度窗口变换函数表达式如下:0()255f x x ⎧⎪=⎨⎪⎩x L L x U x U <≤≤>图1其中L和U分别是图中窗口的下限和上限。
(3)分段线性变换分段线性变换和灰度的线性变换有点类似,都用到了灰度的线性变换。
但不同之处在于分段线性变换不是完全的线性变换,而是分段进行线性变换,将图像灰度区间分成两段甚至多段,分别作线性变换称之为分段线性变换。
分段线性变换的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。
图2灰度变换函数如下:112112112222/()()()/()(255)()/(255)y x x f x y y x x x x y y x x x y ⋅⎧⎪=---+⎨⎪---+⎩1122x x x x x x x <≤≤> 其中,11(,)x y 和 22(,)x y 是图中两个转折点坐标。
数字图像处理实验

数字图像处理实验实验总学时:10学时实验目的:本实验的目的是通过实验进一步理解和掌握数字图像处理原理和方法。
通过分析、实现现有的图像处理算法,学习和掌握常用的图像处理技术。
实验内容:数字图像处理的实验内容主要有三个方面:(1) 对图像灰度作某种变换,增强其中的有用信息,抑制无用信息,使图像的视在质量提高,以便于人眼观察、理解或用计算机对其作进一步的处理。
(2) 用某种特殊手段提取、描述和分析图像中所包含的某些特征和特殊的信息,主要的目的是便于计算机对图像作进一步的分析和理解,经常作为模式识别和计算机视觉的预处理。
这些特征包括很多方面,例如,图像的频域特性、灰度特征、边界特征等。
(3) 图像的变换,以便于图像的频域处理。
实验一图像的点处理实验内容及实验原理:1、灰度的线性变换灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换。
该线性灰度变换函数是一个一维线性函数:灰度变换方程为:其中参数为线性函数的斜率,函数的在y轴的截距,表示输入图像的灰度,表示输出图像的灰度。
要求:输入一幅图像,根据输入的斜率和截距进行线性变换,并显示。
2、灰度拉伸灰度拉伸和灰度线性变换相似。
不同之处在于它是分段线性变换。
表达如下:其中,(x1,y1)和(x2,y2)是分段函数的转折点。
要求:输入一幅图像,根据选择的转折点,进行灰度拉伸,显示变换后的图像。
3、灰度直方图灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标表示该灰度出现的频率(象素的个数)。
要求:输入一幅图像,显示它的灰度直方图,可以根据输入的参数(上限、下限)显示特定范围的灰度直方图。
4、直方图均衡:要求1 显示一幅图像pout.bmp的直方图;2 用直方图均衡对图像pout.bmp进行增强;3 显示增强后的图像。
实验二:数字图像的平滑实验内容及实验原理:1.用均值滤波器(即邻域平均法)去除图像中的噪声;2.用中值滤波器去除图像中的噪声3. 比较两种方法的处理结果 实验步骤:用原始图象lena.bmp 或cameraman.bmp 加产生的3%椒盐噪声图象合成一幅有噪声的图象并显示;1. 用均值滤波器去除图像中的噪声(选3x3窗口);2. f (x 0,y 0)=Med {f (x,y )∨x ∈[x 0−N,x 0+N ],y ∈[y 0−N,y 0+N ]}用中值滤波器去除图像中的噪声(选3x3窗口做中值滤波);3. 将两种处理方法的结果与原图比较,注意两种处理方法对边缘的影响。
实验六 图像增强-灰度变换

实验六 图像增强-灰度变换一、灰度校正 (20S)1、概念 (5S) 图像在成像过程中,往往由于光照、摄像靶面灵敏度以及光学系统等不均匀性而引起图像某些部分较暗或较亮。
对这类图像使用灰度校正,可得到很好的效果。
方法如下:设原始图像为),(y x f ,经系统成像后的不均匀图像为),(y x g ,则:),(),(),(y x f y x e y x g =若C y x e =),(为常数,则表示成像系统是均匀成像,否则,成像系统不均匀。
为求),(y x e ,用一原始均匀图像C y x f =),(常数来成像,得到输出为),(y x g c ,显然有:),(),(y x g y x e C c =所以C y x g y x g y x f c ),(),(),(=用数字图像表示为:C n m g n m g n m f c ),(),(),(=即不均匀图像),(n m g 经校正后有均匀图像),(n m f 。
● 经以上逐点校正后,校正后的图像灰度范围有可能超出记录器件的动态范围,必须用下面所述的灰度变换进行修正;● 降质图像经修正后的量化值已经改变,在图像重建时要同时修正量化值。
2、举例 (15S)一般得到一幅图像后很难再用同一个环境来进行成像。
所以,上述方法仅仅在理论上可行,实践上难以操作。
一般采用下面简单的方法来处理。
● 一幅图像,图像的下部灰度比上部和中部灰度要低。
clf;rice=imread('rice.tif');rice=im2double(rice);imshow(rice);●取32×32大小的图像块中的最小值作为图像背景的照度clf;rice=imread('rice.tif');rice=im2double(rice);rice=imread('rice.tif');rice=im2double(rice);bg32=blkproc(rice,[32 32],'min(x(:))');bg256=imresize(bg32,[256 256],'bicubic');imshow(bg256);●将估算出的背景照度从原始图像中减去,即可修正照度不均匀的影响,这样作的结果是使图像变暗。
灰度线性变换

灰度线性变换
灰度线性变换是一种用于MCU图像增强处理的常用方法。
它是把图像
的每个像素点的灰度值从原始灰度级映射到新的灰度级,实现对图像亮度、对比度等特性进行调节,以达到增强图像质量的目的。
灰度线性变换的基
本形式是:s=a*r+b,其中,s、r分别表示图像灰度变化后和变化前的灰
度值,a、b分别为变化系数。
灰度线性变换的过程依赖于变换参数a、b的选取,a的取值范围是0
至1,表示变换的量度程度,也就是变化的幅度;而b的取值范围是0至255,表示变换的量度偏移,也就是亮度上的平衡值。
如果a取值大于1,就会使图像变得更亮,a取值小于1时,图像就会变暗;如果b取值大于1,则图像会变亮;反之,图像就变暗。
通过选择合适的变换参数,就可以实现灰度线性变换,使图像质量得
到提升。
此外,灰度线性变换还可以被用来增强图像的对比度,提高图像
的色彩饱和度,从而达到更好的视觉效果。
图像处理灰度变换实验

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

3
计算原始直方图:
P(i) =
j
ni n
4
计算累积直方图: Pj = P(k)
k =0
0.19
0.44
0.65
0.81
0.89
0.95
0.98
1.00
5
计算变换后的灰度值:j = INT (L - 1)Pj + 0.5
1
3
5
6
6
7
7
7
6
确定灰度变换关系: i j
01
13
25
4.2
图像的直方图修正
◘ 直方图规定化(匹配)
直方图均衡化能自动增强整个图像对比度,结果得到全局均匀化 的直方图,但实际应用中有时要求突出感兴趣灰度范围,即修正直方 图使其具有要求的形式。
。
(a) k
d c 0 ba
(b)k
d c 0 ba
Digital Image Processing
4.1
图像的对比度增强
根据[a,b]和[c,d]的取值大小可有如下几种情况:
(1)扩展动态范围:若 [a, b] [c, d ] ,即 k 1 ,则结果会使图像灰度取值 的动态范围展宽,这样就可改善曝光不足的缺陷,或充分利用图像显示 设备的动态范围。 (2)改变取值区间:若 k 1 ,即 d c b a ,则变换后灰度动态范围 不变,但灰度取值区间会随a和c的大小而平移。
Digital Image Processing
4.1
g (m, n)
d
图像的对比度增强
g (m, n)
N
d
c
c
a b
f (m, n)
灰度的线性变换

灰度的线性变换功能:通过将图像中的所有的点的灰度按照线性灰度变换函数进⾏变换,最常见的线性变换就是反转。
算法:灰度的线性变换⽤到的线性灰度变换函数f(x)是⼀个⼀维线性函数:f(x) = kx + d,应⽤到图像上就带⼈各像素点的灰度值:Gd=f(Gs) = k*Gs + d;其中k为线性函数的斜率,d为线性函数在y轴的截距。
Gs表⽰输⼊图像的灰度,Gd表⽰输出图像的灰度。
当k>1时,输出图像的对⽐度将增⼤;当k<1时,输出图像的对⽐度将减⼩;当k=1且d≠0时,操作使所有的灰度值上移或下移,其效果是使整个图像变暗或变亮。
当k<0,暗区域将变亮,亮区域将变暗,点运算完成了图形求补运算。
特殊情况:1、当k=1,d=0时,输出图像与原图像相同。
2、当k=-1,d=255时,输出图像的灰度正好相反。
实现代码:for( int i=0; i<iPixelHeight; i++ ){for( int j=0; j<iPixelWidth; j++ ){//指向像素数据的第i⾏,第j列/个像素的指针lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight-1-i) + j; //lLineBytes * (lHeight-1-i) + j不懂fTemp = k*(*lpSrc) + d; //线性变换if( fTemp > 255 ){*lpSrc = 255;}else if ( fTemp<0 ){*lpSrc = 0}else{*lpSrc = (unsigned char)(fTemp+0.5); //四舍五⼊}}}所谓的饱和度,指的其实是⾊彩的纯度,纯度越⾼,表现越鲜明,纯度较低,表现则较黯淡,⾊饱和度表⽰光线的彩⾊深浅度或鲜艳度,取决于彩⾊中的⽩⾊光含量,⽩光含量越⾼,即彩⾊光含量就越低,⾊彩饱和度即越低,反之亦然。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三灰度图像的线性变换一、实验目的1.了解灰度变换的基本原理;2.掌握线性变换处理的方法;3.利用VC编写图像线性变换处理的程序;4.在微机上调试程序。
二、实验原理灰度级修正是对图像在空间域进行增强的简单而效果明显的方法,根据图像降质不同的原因以及对图像特征的不同要求而采用不同的修正方法。
主要有灰度变换法和修正法。
它们是把原图像的灰度函数f(x,y)经过一个变换函数T(.)变换成一个新的图像函数g(x,y),即g(x,y)=T[f(x,y)]通过变换,达到对比度增强的效果,要注意在变换的过程中,对每一个象素(x,y)都经过了同样的处理,因此该方法又叫做点处理。
本实验完成灰度图像的线性变换处理。
1.灰度变换法一般成像系统只具有一定的亮度围,亮度的最大值与最小值之比称为对比度。
由于形成图像的系统亮度有限,常出现对比度不足的弊病,使人眼观看图像时视觉效果很差,通过灰度变换法可以大大改善人的视觉效果。
灰度变换法又可分为三种:线性、分段线性及非线性变换。
(1)线性变换假定原图像f(x,y)的灰度围为[a,b],希望变换后图像g(x,y) 的灰度围扩展至[c,d],线性变换表示式为:g(x,y)=[(d-c)/(b-a)] f(x,y)+c此关系式可用图3-1表示。
若图像部分象素的灰度级分布在区间[a,b],很小部分的灰度级超出了此区间,为改善增强的效果,可令:c 0< f(x,y)<ag(x,y)= [(d-c)/(b-a)] f(x,y)+c a≤ f(x,y) ≤bd b< f(x,y)< F max其中F max为输入图像的最大灰度值。
图3-1 灰度围线性变换(2)分段线性变换为了突出感兴趣的目标或灰度区间,相对抑制那些不感兴趣的目标或灰度区间,常采用分段线性变换法。
常用的是三段线性变换法,如图3-2所示,其数学表达式为:(c/a)f(x,y) 0<f(x,y)<ag(x,y)= [(d-c)/(b-a)]f(x,y)+c a≤f(x,y)≤b[(G max-d)/(F max-b)][f(x,y)-b+d] b<f(x,y)≤F max图中对灰度区间[a,b]进行了线性变换,而灰度区间[0,a] [b,F max]受到了压缩。
通过细心调整折线拐点的位置及控制分段直线的斜率,可对任一灰度区间进行扩展或压缩。
这种变换适用于在黑色或白色附近有噪声干扰的情况。
例如照片中的划痕,由于变换后0~a以及b~F max之间的灰度受到压缩,因而使噪声干扰得到减弱。
图3-2 分段线性变换(3)非线性灰度变换当用某些非线性函数,例如用对数函数作为映射函数时,可实现图像灰度的非线性变换,对数变换的一般式为:g(x,y)=a+ln[f(x,y)+1]/(b*ln[c])这里a、b、c是便于调整曲线的位置和形状而引入的参数,它使低灰度围的图像得以扩展而高灰度图像得到压缩,从而使图像的分布均匀与人的视觉特性相匹配。
指数变换的一般式为:g(x,y)=b c[f(x,y)-a]-1其中a、b、c三个参数用来调整曲线的位置和形状,它的效果与对数相反,它将对图像的高灰度区给予较大的扩展。
2.灰度图像的线性变换算法流程将灰度图像f(x,y)在区间[a,b]上的象素值,变换到区间[c,d](c<d)上。
a,b并不一定要f(x,y)的最小和最大灰度值,可以随意设定。
因此算法的功能是把输入图像的灰度区间[a,b] 变换到输出图像的灰度区间[c,d],也可把特定灰度值区间扩展到整个区间,即进行对比度伸展处理。
输入数组ii[Row][Col]=输入图像(灰度图像)输出数组oi[Row][Col]=输出图像(灰度图像)输入参数=变换前区间两端点输入参数=变换后区间两端点算法流程图如下:图3-3 图像的线性变换图像3.灰度图像的对数变换算法流程当灰度图像f的各象素点f(x,y)的值域在区间[a,b](a<b)上时,可将它按自然对数变换到区间[c,d](c<d)上,从而求得输出图像g。
因此算法的功能是把输入图像区间[a,b]对数变换到输出图像的灰度区间[c,d],灰度值为0时,用一个很小的数eps置换后再计算对数值。
输入数组ii[Row][Col]=输入图像输出数组oi[Row][Col]=输出图像输入参数=变换前区间两端点输入参数=变换后区间两端点算法流程图如下:图3-4 图像对数变换三、实验前准备1.预习本实验中关于图像灰度变换的基本原理;2.了解本实验的目的和实验容。
四、实验容1.根据图像线性变换处理的方法和流程,利用VC编写图像线性变换处理的程序;2.给定一幅BMP图像,用所编程序对给定图像进行操作,对图像处理后另存为(*.bmp)文件,并用Photoshop验证所编程序的正确性;3.本实验完成灰度的线性变换处理,如有时间再做灰度图像的对数变换。
五、实验报告要求1.总结图像变换处理的原理和方法;2.总结对图像线性变换处理编程的过程;3.总结用Photoshop验证所编写程序的过程。
4.对实验结果进行分析。
六、参考程序用VC打开试验一的程序,添加一对话框,ID为IDD_DLG_LINERTRANS,标题为线性变换。
在对话框中拖入四个编辑框IDC_EDIT_X1、IDC_EDIT_Y1、IDC_EDIT_X2、IDC_EDIT_Y12,在四个对话框前加入四个静态文本框,分别为第一点X坐标、第一点Y坐标、第二点X坐标、第二点Y坐标,便于用户在该界面中输入线性变换曲线的两点坐标值。
插入新建对话框类,类名为CLinerTrans。
快捷键“Ctrl+W”打开MFC ClassWizard 对话框,给CLinerTrans加入MemberVarible,对应IDC_EDIT_X1、IDC_EDIT_Y1、IDC_EDIT_X2、IDC_EDIT_Y12分别加入int类型的变量m_X1、m_X2、m_Y1、m_Y2。
在DIBAPI.h中声明函数BOOL WINAPI LinerTrans(LPSTR lpDIBBits,LONG lWidth,LONG lHeight,int iX1,int iX2,int iY1,int iY2);在DIBAPI.cpp中定义该函数为:BOOL WINAPI LinerTrans(LPSTR lpDIBBits,LONG lWidth,LONG lHeight,int iX1,int iX2,int iY1,int iY2){unsigned char* lpSrc;LONG i;LONG j;LONG lLineBytes;LONG fTemp;LONG fBiex;lLineBytes=WIDTHBYTES(lWidth*8);for(i=0;i<lHeight;i++){for(j=0;j<lWidth;j++){lpSrc=(unsigned char*)lpDIBBits+lLineBytes*(lHeight-1-i)+j;fBiex=*lpSrc;if(iX1==0){fTemp=iY1;}else if(iX2==255){fTemp=iY2;}else if(fBiex>0&&fBiex<iX1){fTemp=fBiex*iY1/iX1;}else if(fBiex>=iX1&&fBiex<=iX2){fTemp=fBiex*(iY2-iY1)/(iX2-iX1)+iY1;}else if(fBiex>iX2&&fBiex<=255){fTemp=(fBiex+iY2-iX2)*(255-iY2)/(225-iX2);}if(fTemp>255){*lpSrc=255;}else if(fTemp<0){*lpSrc=0;}else{*lpSrc=(unsigned char)(fTemp+0.5);}}}return TRUE;}在Resource View中打开Menu中的SHIYANTYPE,在Menu中加入“图像增强”工具按钮,在其下拉按钮中输入“线性变换”,并将其ID设为ID_LINERTRANS,在MFC ClassWizard对话框中加入OnLinertrans()消息函数。
编辑该函数加入如下代码:CShiyanDoc* pDoc=GetDocument();if(pDoc->m_hDIB==NULL){MessageBox("请先打开一幅256色的BMP图像!","系统提示",MB_ICONINFORMATION|MB_OK);return;}LPSTR lpDIB;LPSTR lpDIBBits;int X1,X2,Y1,Y2;lpDIB=(LPSTR)::GlobalLock((HGLOBAL)pDoc->GetHDIB());lpDIBBits=::FindDIBBits(lpDIB);if(::DIBNumColors(lpDIB)!=256){MessageBox("目前只支持256色位图!","系统提示",MB_ICONINFORMATION|MB_OK);::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());return;}CLinerTrans dlgParam;if(dlgParam.DoModal()!=IDOK){return;}X1=dlgParam.m_X1;X2=dlgParam.m_X2;Y1=dlgParam.m_Y1;Y2=dlgParam.m_Y2;delete dlgParam;BeginWaitCursor();::LinerTrans(lpDIBBits,::DIBWidth(lpDIB),::DIBHeight(lpDIB),X1,X2,Y1,Y2 );pDoc->SetModifiedFlag(TRUE);pDoc->UpdateAllViews(NULL);::GlobalUnlock((HGLOBAL)pDoc->GetHDIB());EndWaitCursor();注意:要在CShiyanDoc中头部加入#include "LinerTrans.h"语句。