图像灰度变换
从图像输入装置得到的图像数据,以浓淡表示, 各个像素与某一灰度值相对应。设原图像像 素的灰度值D=f(x,y),处理后图像像素的 灰度值D′=g(x,y),则灰度增强可表示为:
g ( x, y) T [ f ( x, y)]
D' T ( D) 或 要求D和D′都在图像的灰度范围之内。函数 称为灰度变换函数,它描述了输入灰度值和 输出灰度值之间的转换关系。
3.程序代码
Void HuiDuBianHuanDib::ShuangYu(int YuZhi1,int YuZhi2,int mode) { LPBYTE p_data; //原图数据区指针 int wide,height; //原图长、宽 p_data=this->GetData (); wide=this->GetWidth (); height=this->GetHeight (); if(mode==0) //0-255-0型 {
阈值化的变换函数表达式如下: 0 x<T f(x)= 255 x>T 其中T为指定的阈值。阈值T就像个门槛,比它 大就是白,比它小就是黑。该变换函数是阶 跃函数,只需给出阈值点T即可,经过阈值 处理后的图像变成了一幅黑白二值图,阈值 处理是灰度图转二值图的一种常用方法。
2. 非零元素取一法
1. 理论基础 非零元素取一法是最基础的二值化算法。顾 名思义非0取1就是对于灰度图像f,若某像 素灰度值为0,则其灰度值不变,仍为零; 对于灰度值不为零的像素,将其像素值全部 变为255。非零元素取一法的阈值T=1。
图像灰度变换
本章要点: 灰度变换的基本方法 二值化和阈值处理 非零元素取一法 固定阈值法 双固定阀值法
灰度变换的基本方法
图像的灰度变换(Gray-Scale Transformation,GST) 处理是图像增强处理技术中一种非常基础、直接的 空间域图像处理方法,也是图像数字化软件和图像 显示软件的一个重要组成部分。灰度变换是指根据 某种目标条件按一定变换关系逐点改变原图像中每 一个像素灰度值的方法。目的是为了改善画质,使 图像的显示效果更加伸。例如为了显示出 图像的细节部分或提高图像的清晰度,需要将图像 整个范围的灰度级或其中某一段(a,b)灰度级扩 展或压缩到(a′,b′),这些都要求采用灰度变 换方法。
p_data=this->GetData (); wide=this->GetWidth (); height=this->GetHeight ();
for(int j=0;j<height;j++)
for(int i=0;i<wide;i++) { if(*p_data!=0) *p_data=255; p_data++; } } //若像素值不为0 //将其置为255 //所有像素依次循环
非零元素取一法的变换函数表达式如下: 0 x<1 f(x)= 255 x>1
g 255 01 255 f
图4-1
非零元素取一法灰度变换函数
2. 实现步骤 (1)取得原图的数据区指针。 (2)每个像素依次循环,若该像素灰度值为0, 则不变;若该像素灰度值不为0,则置为255。
3. 程序代码
void HuiDuBianHuanDib::Fei0()//对图像进行非零取一运算 { LPBYTE p_data; int wide,height; //原图数据区指针 //原图长、宽 //取得原图的数据区指针
for(int j=0;j<height;j++) for(int i=0;i<wide;i++) { //若该像素的灰度值介于两个阈值之间,这将其置为255 if(*p_data>=YuZhi1&&*p_data<=YuZhi2) *p_data=255; else *p_data=0; //否则置0 p_data++; } } if(mode==1) //255-0-255型 { for(int j=0;j<height;j++) for(int i=0;i<wide;i++) { //若该像素的灰度值介于两个阈值之间,这将其置为0 if(*p_data>=YuZhi1&&*p_data<=YuZhi2) *p_data=0; else *p_data=255; //否则置255 p_data++; } } }
0
T
f 255
图4-2 固定阀值法灰度变换函数
2. 实现步骤 1)取得原图的数据区指针。 2)通过对话框输入阈值T。 3)所有像素依次循环,若像素灰度值小于T, 则将该像素置为0;否则置为255。
3.编程代码
void HuiDuBianHuanDib::GuDing(int YuZhi)//固定阀值运算 { LPBYTE p_data; //原图数据区指针 int wide,height; //原图长、宽 p_data=this->GetData (); //取得原图的数据区指针 wide=this->GetWidth (); height=this->GetHeight (); for(int j=0;j<height;j++) for(int i=0;i<wide;i++) { if(*p_data>YuZhi) //灰度值大于给定阈值,置为255 *p_data=255; else *p_data=0; //不大于置为0 p_data++; } }
0-255-0型固定阀值法的变换函数表达式如下:
0 x<T1
其中T1、T2为指定的阈值。
x >T2 g
f(x)=
255 T1<X<T2
0 g
f 0 T1 T2 255 (a)0-255-0型灰度变换函数
f 0 T1 T2 255 (b)255-0-255型灰度变换函数
图4-4双固定阀值法
2. 实现步骤 1)取得原图数据区指针 2)通过对话框输入阈值1(T1)和阈值2(T2),并选 择方式(0-255-0)型或(255-0-255)型。 3)若选择方式0(0-255-0型),每个像素依次循环, 若该像素灰度值大于T1并且小于T2,则将其灰度值 置为255,其余像素的灰度值置为0。 若选择方式1(255-0-255型),每个像素依次循环, 若该像素灰度值大于T1并且小于T2,则将其灰度值 置为0,其余像素的灰度值置为255。
根据 g ( x, y) T [ f ( x, y)] ,可以将灰度变换分为 线性变换和非线性变换。 本章中所介绍的非0元素取1法、固定阀值法、 双固定阀值法都属于非线性灰度变换。
1.二值化和阈值处理
设定某一阈值T,用T将图像的数据分成两大 部分:大于T的像素群和小于T 的像素群。这 是研究灰度变换最特殊的方法,称为图像的 二值化(binarization)。 阈值处理的操作过程是先由用户指定或通过 算法生成一个阈值,如果图像中某像素的灰 度值小于该阈值,则将该像素的灰度值设置 为0或255,否则灰度值设置为255或0。
效果对比图
(a) 原图
(b)以100作为阈值二值化的图
图4-3
固定阀值法
4. 双固定阀值法
1. 理论基础 相对于前面的非零取一法和固定阀值法,双 固定阀值法预先设置了两个阀值T1和T2, T1<T2,当对图像进行处理时,如果某个像 素的灰度值小于T1则置0(或者255);如果 大于T1并且小于T2时,则置255(或者置0); 如果大于T2时,则置0(或者255)。可根据 具体情况选择双固定阀值法是用0-255-0型 或是255-0-255型。
3.固定阈值法
1.理论基础 在某种意义上非零取一法也可以理解成为一 种特殊的固定阀值法,因为它的阀值默认为 1。固定阀值法就是为灰度图像f设定一个阀 值T,把灰度值小于给定阈值T的像素置为0, 大于阈值T的像素置为255,从而对灰度图像 实现二值化变换。
固定阀值法的变换函数表达式如下: 0 x<T f(x)= 255 x>T 其中T为指定的阈值。 g 255
图像灰度变换原理
图像灰度变换原理
图像灰度变换原理是指通过对图像的像素点进行灰度值的变换,从而改变图像的亮度和对比度。
灰度变换可以通过增加或减少像素值来改变图像的灰度级,并根据需求来调整图像的亮度和对比度。
灰度变换可以用以下数学公式表示:
g(x, y) = T(f(x, y))
其中,f(x, y)表示输入图像的灰度级,g(x, y)表示输出图像的
灰度级,T表示灰度变换函数。
常见的灰度变换函数有线性变换、非线性变换和直方图均衡化等。
线性灰度变换函数是最简单的一种灰度变换方式,通过对输入图像的每一个像素点应用一个线性方程来实现灰度的线性变换。
线性变换可以改变图像的对比度和亮度。
常见的线性灰度变换函数有平方根变换、指数变换和对数变换等。
非线性灰度变换函数则是通过对输入图像的每一个像素点应用一个非线性方程来实现灰度的非线性变换。
非线性变换可以实现更加复杂的灰度调整,例如增强图像的细节或者减少图像的噪声。
常见的非线性灰度变换函数有伽马变换和分段线性变换等。
直方图均衡化是一种特殊的灰度变换方法,通过对输入图像的
灰度级进行重新分配,使得输出图像的灰度级分布更加均匀。
直方图均衡化可以提高图像的对比度,使得图像的细节更加清晰。
总的来说,图像灰度变换原理是通过对图像的像素点进行灰度值的变换,来改变图像的亮度和对比度。
不同的灰度变换函数可以实现不同的灰度调整效果,根据需求选择合适的灰度变换方法可以获得满足要求的图像效果。
4-1、图像增强之灰度变换和彩色增强
g=9*log(f+1)
作用:将暗的部分扩展,而将亮的部分抑制。(示例)
4、直方图均衡化
直方图均衡方法的基本思想是对 在图像中像素个数多的灰度级进行展 宽,而对像素个数少的灰度级进行缩 减。从而达到清晰图像的目的。 用以改变图像整体偏暗或整体偏亮, 灰度层次不丰富的情况,将直方图的 分布变成均匀分布
2、 对比度展宽(灰度线性变换)
一、对比度展宽的目的:
是一点对一点的灰度级的影射。设新、旧图的 灰度级分别为g和f,g和f 均在[0,255]间变化。 实质是旧图到新图的灰度级的逐点映射。 g=G(f) 目的:将人所关心的部分强调出来。 特点:变换前后像素个数不变,但不同像素之间的 灰度差变大,对比度加大,视觉效果增强gγຫໍສະໝຸດ 255gbβ
ga
β
α
a b 255
f
a
b 255
f
2、对比度展宽 三、灰级窗切片:
只保留感兴趣的部分,其余部分置为 0。如: 0
g
255
a
b
255
f
2、对比度展宽
四、二值化图像: 可将多灰度的图像转换成黑白二值 图像;方法是对图像取一阈值,大 于该阈值的像素赋予灰度1,小于该 阈值的像素赋予灰度0
I ( x, y) e( x, y) g ( x, y)
g ( x, y) e ( x, y) I ( x, y)
1
1、灰度级的修正
灰度级修正的方法: (1)先用该系统对一已知亮度均匀的图像进行 记录,得到一个实际的“非均匀曝光”的图像, 求得是图像发生畸变的比例因子 (2)当用同一系统对其他图像进行记录时,便 可通过该比例因子求出理想图像
51
Python图像运算之图像灰度线性变换详解
Python图像运算之图像灰度线性变换详解⽬录⼀.灰度线性变换⼆.图像灰度上移变换三.图像对⽐度增强变换四.图像对⽐度减弱变换五.图像灰度反⾊变换六.总结⼀.灰度线性变换图像的灰度线性变换是通过建⽴灰度映射来调整原始图像的灰度,从⽽改善图像的质量,凸显图像的细节,提⾼图像的对⽐度。
灰度线性变换的计算公式如(12-1)所⽰:该公式中DB表⽰灰度线性变换后的灰度值,DA表⽰变换前输⼊图像的灰度值,α和b为线性变换⽅程f(D)的参数,分别表⽰斜率和截距[1-4]。
当α=1,b=0时,保持原始图像当α=1,b!=0时,图像所有的灰度值上移或下移当α=-1,b=255时,原始图像的灰度值反转当α>1时,输出图像的对⽐度增强当0<α<1时,输出图像的对⽐度减⼩当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补如图12-1所⽰,显⽰了图像的灰度线性变换对应的效果图。
⼆.图像灰度上移变换该算法将实现图像灰度值的上移,从⽽提升图像的亮度。
DB=DA+50具体实现代码如下所⽰。
由于图像的灰度值位于0⾄255区间之内,所以需要对灰度值进⾏溢出判断。
# -*- coding: utf-8 -*-# By:Eastmountimport cv2import numpy as npimport matplotlib.pyplot as plt#读取原始图像img = cv2.imread('luo.png')#图像灰度转换grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像⾼度和宽度height = grayImage.shape[0]width = grayImage.shape[1]#创建⼀幅图像result = np.zeros((height, width), np.uint8)#图像灰度上移变换 DB=DA+50for i in range(height):for j in range(width):if (int(grayImage[i,j]+50) > 255):gray = 255else:gray = int(grayImage[i,j]+50)result[i,j] = np.uint8(gray)#显⽰图像cv2.imshow("Gray Image", grayImage)cv2.imshow("Result", result)#等待显⽰cv2.waitKey(0)cv2.destroyAllWindows()其输出结果如图12-2所⽰,图像的所有灰度值上移50,图像变得更⽩了。
灰度变换原理
灰度变换原理
灰度变换是一种图像处理技术,用于改变图像的亮度和对比度。
其原理是通过对图像中每个像素的灰度值进行线性或非线性的映射,从而调整图像的整体亮度分布。
在灰度变换中,会根据图像的特征和需求选择不同的变换函数。
常用的线性灰度变换函数包括对比度拉伸、对数变换和伽马校正等。
对比度拉伸是将输入灰度值的范围扩展至输出灰度值的全范围。
这样可以增加图像中灰度级的细节,使得图像更具有视觉效果和观赏性。
对数变换用于增强图像的暗部细节。
它可以对较低灰度级的像素进行放大,从而增加图像中低对比度的细节信息。
伽马校正是一种非线性的灰度变换方法,用于调整图像的亮度分布。
它可以改变图像中灰度级的分布和整体亮度,从而达到对图像对比度和真实感的调整效果。
需要注意的是,灰度变换只改变图像的亮度分布,而不改变其颜色信息。
灰度变换在图像增强、对比度调整和色彩校正等领域都有广泛的应用。
它可以帮助改善图像的质量,使得图像更加清晰、鲜明和易于分析。
各灰度级的变换函数值sk公式
各灰度级的变换函数值sk公式在数字图像处理中,图像的灰度级是指像素点的亮度强度的级别,通常以0-255的数字表示。
图像灰度级的变换函数值sk是指将原始图像中的一个灰度级映射到另一个灰度级时,所需要的函数值。
灰度级变换是数字图像处理中常用的操作之一,其主要作用是改变图像的亮度、对比度、色彩等特征,从而使图像更加清晰、鲜艳、易于识别和处理。
不同的图像灰度级变换函数可以产生不同的效果,因此在实际应用中需要根据具体的需求选择适当的函数。
下面我们将详细介绍各灰度级的变换函数值sk公式,以及它们的作用和应用场景:1. 线性变换函数线性变换函数是最常用的一种灰度级变换函数,其公式为:s_k = [(L-1)/(H-L)]*(r_k-L)其中,L和H分别表示原始图像灰度级的最小值和最大值,r_k表示原始图像的像素值,s_k表示变换后的像素值。
线性变换函数的作用是增加或减小图像的对比度,使图像更加清晰、鲜明。
它常用于图像增强、亮度调整和对比度调整等操作中。
2. 对数变换函数对数变换函数的公式为:s_k = c * log(1+r_k)其中,c为常数,r_k和s_k的含义同上。
对数变换函数的主要作用是扩展暗部细节,减少高光区域的亮度,从而达到良好的曝光平衡。
它常用于夜间拍摄或者对内部细节有特殊需求的图像处理中。
3. 幂律变换函数幂律变换函数的公式为:s_k = c * r_k^γ其中,c为常数,γ为幂律指数,r_k和s_k的含义同上。
幂律变换函数的主要作用是突出图像细节、增加图像对比度和色彩饱和度,使图像更加明亮鲜艳。
它适用于各种类型的图像处理,尤其是自然景观、建筑和人像等领域。
4. 反转变换函数反转变换函数的公式为:s_k = L-1-r_k其中,L为原始图像的灰度级最大值,r_k和s_k的含义同上。
反转变换函数的作用是颠倒图像亮度的分布,使原来的暗区变为明区,明区变为暗区,从而产生强烈的视觉反差。
它常用于黑白摄影、动画和游戏制作等领域。
灰度变换的基本原理
灰度变换的基本原理灰度变换是数字图像处理中一种常见的操作技术,它通过改变图像中每个像素的亮度值,从而实现图像的增强或调整。
灰度变换的基本原理是将原始图像的灰度级映射到一个新的灰度级,使得图像的视觉效果更加理想。
在进行灰度变换之前,我们需要了解一些基本概念。
首先,灰度级是指图像中每个像素的亮度值,通常用0到255的整数表示,其中0代表黑色,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,表示图像的偏移量。
正如我们所知,灰度线性变换的优点是可以简单、快速地调整图像的亮度和对比度。
缺点是它不能改变图像的分布特征,只能做一些简单的变换,而不能实现图像的特定效果处理,比如拉伸度和畸变处理等。
因此,灰度线性变换通常只用于处理图像的简单变换,比如调整图像的亮度和对比度的需求,或者在彩色图像转换为灰度图像的过程中。
一般来说,使用灰度线性变换容易实现,而且对于一些常用的算法有很好的效果,所以经常被用来处理图像。
灰度变换算法原理
灰度变换算法原理
灰度变换算法是一种像素值映射的算法,它可以通过对图像的像素值进行线性或非线性变换来改变图像的对比度、亮度、色调等特征,以达到增强图像的目的。
具体来说,灰度变换算法的原理如下:
1. 像素值的定义:对于灰度图像,每个像素的取值范围在0-255之间,其中0表示黑色,255表示白色,其他值则表示不同的灰度级别。
2. 灰度变换函数的选择:灰度变换函数(也称为灰度映射函数)可以是线性函数、非线性函数、对数函数等。
根据需要调整图像的对比度、亮度等特征,可以选择不同的灰度变换函数。
3. 灰度变换的实现:将灰度变换函数应用到图像的每个像素上,计算出新的像素值,从而得到一张新的图像。
这样的变换可以在空间域或频域中进行。
总之,灰度变换算法通过对图像的像素值进行变换,可以有效地增强图像的质量和特征,提高图像信息的可读性和可用性。
灰度变换算法原理
灰度变换算法原理
灰度变换是一种将图像的灰度级进行适当调整的方法,可以改善图像的对比度和亮度。
灰度变换的基本原理是将输入图像的每个像素点的灰度级通过某种函数进行映射转换,并得到输出图像的像素灰度级。
常用的灰度变换函数有线性变换、非线性变换和直方图均衡化等。
1. 线性变换:
线性变换是灰度变换中最简单的一种方法。
它通过一个线性函数将输入图像的灰度级映射到输出图像的灰度级。
线性变换的数学表达式为:
g(x,y) = a*f(x,y) + b
其中,g(x,y)为输出图像的像素灰度级,f(x,y)为输入图像的像素灰度级,a和b为常数。
2. 非线性变换:
非线性变换是通过非线性函数将输入图像的灰度级映射到输出图像的灰度级。
非线性变换可以对输入图像的不同灰度级进行不同的映射处理,从而调整图像的对比度和亮度。
常用的非线性变换函数有幂次变换、对数变换和指数变换等。
3. 直方图均衡化:
直方图均衡化是一种通过对输入图像的直方图进行变换,从而使得输出图像具有更均匀的灰度分布的方法。
通过直方图均衡化,可以增强图像的对比度,使得图像中细节更加清晰。
直方图均衡化的基本原理是将输入图像的累计分布函数映射到均匀
分布,使得输出图像的直方图近似均匀。
总结起来,灰度变换算法原理是通过对输入图像的灰度级进行适当调整,使用线性变换、非线性变换,或者直方图均衡化等方法,从而改变输出图像的灰度级,达到调整图像对比度和亮度的目的。
