做暧小视频免费网站,农产品网站建设主要工作,随县住房和城乡建设局网站,wordpress兼容手机吗文章目录 一#xff0c;简介#xff1a;二、图像的线性变换三、分段线性变换四#xff0c;非线性变换4.1 对数变换4.2 Gamma变换 五#xff0c;效果: 一#xff0c;简介#xff1a;
图像灰度变换涉及对图像中每个像素的灰度值执行数学运算#xff0c;进而调整图像的视觉… 文章目录 一简介二、图像的线性变换三、分段线性变换四非线性变换4.1 对数变换4.2 Gamma变换 五效果: 一简介
图像灰度变换涉及对图像中每个像素的灰度值执行数学运算进而调整图像的视觉效果或突出其特定特征。作为一种基础的图像处理方法灰度变换常用于图像的预处理和增强阶段。由于其独特的特性灰度变换在工业领域中被广泛应用于缺陷检测、异常检测以及在恶劣环境下的图像重建等场景。 灰度变换的本质是根据特定的规则即灰度映射函数调整图像中每个像素的灰度值以此来改变图像灰度的动态范围。根据灰度映射函数的不同性质灰度变换可分为线性变换、分段线性变换和非线性变换。在非线性变换中常见的类型包括对数变换、指数变换以及幂律变换如n次幂、n次方根。这些变换方法能够有效地改善图像质量满足不同应用场景的需求。
二、图像的线性变换
线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。线性灰度变化对图像的每一个像素作线性拉伸可以凸显图像的细节提高图像的对比度。 线性灰度变换可以由以下公式描述 式中D 为原始图像的灰度值Dt 为线性灰度变换后的图像灰度值。 当 α 1 β 0 时保持原始图像不变 当 α 1 β 0 图像的灰度值上移灰度图像颜色发白彩色图像颜色发亮 当 α 1 β 0时图像的灰度值下移灰度图像颜色发黑彩色图像颜色发暗 当 α 1 图像的对比度增强 当 0 α 1 时图像的对比度减小 当 α 0 β 255时图像暗区域变亮亮区域变暗图像求补 当 α − 1 β 255时图像的灰度值反转 可以这样理解参数的作用参数 a 在灰度变换中起到了缩放像素值的作用可以视为图像整体对比度的调整因子。当 a 大于1时图像中所有像素的灰度值都会按照 a 的比例进行放大。这意味着原本灰度值较高的像素在放大后将变得更加明亮而原本灰度值较低的像素虽然也有所增加但增加的幅度相对较小。这样的操作会增强图像的对比度使得明暗差异更加明显从而拉伸图像的对比度范围。 参数 β 则是图像灰度值的偏移量它通过在每个像素的灰度值上加上 β 值实现了图像的整体亮度的提升或降低。当 β 为正值时图像的整体亮度会增加使得图像看起来更亮即发白相反当 β 为负值时图像的整体亮度会降低使得图像看起来更暗即发黑。因此β 参数可以用来调整图像的亮度使图像更适合特定的显示需求或视觉效果。
三、分段线性变换
分段线性变换是一种常见的图像处理技术它通过将图像的灰度范围分割成几个不同的区间并对每个区间分别应用不同的线性变换来调整图像的亮度和对比度。这种变换的灵活性使得它能够针对图像的不同部分进行精确的调整。 分段线性变换函数可以增强图像各部分的反差增强感兴趣的灰度区间、抑制不感兴趣的灰度级。 分段线性函数的优点是可以根据需要拉伸特征物的灰度细节一些重要的变换只能用分段函数来描述和实现缺点则是参数较多不容易确定。 公式为 变换步骤
确定区间根据图像的特点和需求确定需要划分的灰度区间。例如可以将图像的灰度范围分为三个部分低灰度区间、中灰度区间和高灰度区间。设置变换函数为每个区间设置一个线性变换函数。这些函数的参数斜率和截距需要根据具体的需求来确定以实现不同的图像增强效果。应用变换对图像中的每个像素根据其灰度值所属的区间应用相应的线性变换函数。
简单概述为分段线性变换与线性变换相似唯一的区别就是加了像素值范围判定即在不同的像素值区间执行不同的线性变换.
四非线性变换
4.1 对数变换
对数曲线在像素值较低的区域斜率大在像素值较高的区域斜率小。对数变换将输入中范围较窄的低灰度值映射为范围较宽的灰度级输入中的高灰度值则被映射为范围较窄的灰度级。对数变换后较暗区域的对比度提升可以增强图像的暗部细节简而言之是对图像中低灰度细节进行增强 公式 曲线为
4.2 Gamma变换
Gamma校正多用在图像整体偏暗扩展灰度级。另外一种情况是图像有“冲淡”的外观很亮白需要压缩中高以下的大部分的灰度级。伽马变换本质上是对图像矩阵中的每个值进行幂运算。0 γ 1时拉伸图像中灰度级较低的区域压缩灰度级较高的部分增加图像的对比度γ1 时拉伸图像中灰度级较高的区域压缩灰度级较低的部分降低图像的对比度。 伽马变换通过非线性变换对人类视觉特性进行补偿最大化地利用有效的灰度级带宽。很多拍摄、显示、打印设备的亮度曲线都符合幂律曲线因此伽马变换广泛应用于各种设备显示效果的调校称为伽马校正。
公式为 曲线为 伽马变换的曲线形状由伽马值 γ 决定当 γ 1 时虽然也是增强暗部但其效果和对数变换不同对数变换的增长速度随输入值的增加而减慢而伽马变换的增长速度是一致的。 与对数变换不同的是伽马变换是对整体灰度值进行改变所以说如果想要对光照条件较好的阴影部分进行校正使用对数变换较好如果是对光照情况较差整体像素全部偏暗或偏亮则用伽马变换效果较好。 实现代码
import cv2
import numpy as np# 图像灰度变换def nonlinear_logarithm_transform(img_gray, c): # 对数变换result c * np.log(1.0 img_gray)# uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255# 这里要转换成unit8否则会报错result np.uint8(result)return resultdef gamma_bianhuan(image,gamma): # gamma 变换imageimage/255.0Newnp.power(image,gamma)return Newimg cv2.imread(rE:\PS\2.png) # 读取彩色图像(BGR)
imgGray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 颜色转换BGR(OpenCV) - Gray
h, w img.shape[:2] # 图片的高度和宽度
img1 img.copy()
img2 img.copy()
# Dt[i,j] alfa*D[i,j] beta
alfa1, beta1 3, 50alfa2, beta2 3, 50for i in range(h):for j in range(w):img1[i][j] min(255, max((alfa1*imgGray[i][j] beta1), 0)) # 线性变换if imgGray[i][j] 100:img2[i][j] min(255, max((alfa2 * imgGray[i][j] beta2), 0)) # 分段线性变换img3 nonlinear_logarithm_transform(imgGray,40)
img4 gamma_bianhuan(imgGray,0.4)
cv2.imshow(liner,img1)
cv2.imshow(liner2,img2)
cv2.imshow(log,img3)
cv2.imshow(gam,img4)
cv2.waitKey(0)五效果:
线性变换 分段线性变换 对数变换‘
伽马变换