Opencv C++ 六、灰度变换:线性变换、灰度反转、对数变换、伽马变换、(自适应)直方图均衡化 |
您所在的位置:网站首页 › 图像均衡化的基本流程包括 › Opencv C++ 六、灰度变换:线性变换、灰度反转、对数变换、伽马变换、(自适应)直方图均衡化 |
一、灰度变换的原理:
通过变换函数T将原图像像素灰度值r映射为灰度值s: s=T(r). 二、灰度变换的方法:线性变换(亮度和对比度调整): 原理:线性变换是一种简单的亮度和对比度调整方法,通过对每个像素的灰度级别应用线性变换公式来实现。对每个像素应用公式 output_pixel = input_pixel * alpha + beta,其中 alpha 控制对比度,beta 控制亮度。增大 alpha 值可以增加对比度,增大 beta 值可以增加亮度。对数变换: 原理:对数变换通过应用对数函数对图像的每个像素值进行修改。这种变换适用于增强图像的低灰度级别,因为它拉伸了低灰度级别之间的差异。公式为 output_pixel = c * log(1 + input_pixel),其中 c 是缩放常数。伽马校正: 原理:伽马校正通过应用幂函数对图像的每个像素值进行修改。伽马校正可以用于调整图像的对比度和亮度。公式为 output_pixel = c * (input_pixel ^ gamma),其中 c 是缩放常数,gamma 是伽马值。增大 gamma 值可以增加对比度。直方图均衡化: 原理:直方图均衡化旨在拉伸图像的灰度级别分布,使其更均匀。这通过重新分配像素值以增加亮度级别的数量来实现。这有助于增强图像的对比度,并突出图像中的细节。该方法的原理是重新映射图像的累积分布函数,使其变为均匀分布。自适应直方图均衡化: 原理:自适应直方图均衡化将图像划分为小块,然后对每个块进行直方图均衡化。这使得图像在不同区域的灰度级别分布更加均匀,尤其是当图像具有明显的亮度变化时。 三、线性变换 #include #include using namespace cv; using namespace std; int main() { // 加载图像 Mat image = imread("D://lena.png"); if (image.empty()) { cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |