图像亮度调节--幂次变换

幂次变换的基本表达式为:y=cxr+b

其中cr均为正数。与对数变换相同,幂次变换将部分灰度区域映射到更宽的区域中。当r=1时,幂次变换转变为线性变换。

(1)  当0<r<1时,变换函数曲线在正比函数上方。此时扩展低灰度级,压缩高灰度级,使图像变亮。这一点与对数变换十分相似。

(2)  当r>1时,变换函数曲线在正比函数下方。此时扩展高灰度级,压缩低灰度级,使图像变暗。

代码如下:

int PowerTrans(Mat & pSrc,double r,double b=0, double c=1)
{
    //y=cxr+b
    // 映射表,用于256种灰度变换后的值
    BYTE map[256]; 

    // 保存运算后的临时值
    double dTemp;
    for (int i = 0; i < 256; i++)
    {
        // 计算当前像素变换后的值
        dTemp = c * pow(i / 255.0, r) * 255 + b; 

        // 如果超界则修改其值
        if (dTemp < 0)
            dTemp = 0.0;
        else if (dTemp > 255)
            dTemp = 255; 

        // 四舍五入
        map[i] = int(dTemp + 0.5);
    } 

    int columns=pSrc.cols;
    int channels = pSrc.channels();
    int count = 0;
    for(int i=0;i<pSrc.rows;i++)
    {
        uchar* p=pSrc.ptr(i);//获取Mat某一行的首地址
        for(int j=0;j<columns*channels;j++)
        {
            *(p+j) = map[*(p+j)];
        }
    }
    return 0;
} 
时间: 2024-10-05 05:04:44

图像亮度调节--幂次变换的相关文章

图像处理(图像反转,对数变换,幂次变换、分段线性变换)

1.对数变换实现了图像灰度扩展和压缩的功能.它扩展低灰度值而压缩高灰度值,让图像的灰度分布更加符合人的视觉特征. /****************************************************************************** * 作用: 对数变换函数 * 参数: pDst 输出图像的像素数组 * 参数: pSrc 原始图像的像素数组 * 参数: nWidth 原始图像宽度 * 参数: nHeight 原始图像高度 * 参数: a 控制参数,表示曲线

WPF 3D 小小小小引擎 - &#183;WPF 3D变换应用

原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用 WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开发效率高,而且也容易上手. 下面给大家演示的是使用在WPF 3D上实现视角变换,通过鼠标拖动来变换观察视角,通过滚轮来放缩视距. 有关3D的基础知识可以参考MSDN文档:三维图形概述 首先创建一个3D立方体,立方体是由六个面构成(F1, F2 ....F6)其XAML代码如下: <Viewport3

各种变换滤波和噪声的类型和用途总结

摘自http://imgtec.eetrend.com/blog/4564 一.基本的灰度变换函数 1.1图像反转 适用场景:增强嵌入在一幅图像的暗区域中的白色或灰色细节,特别是当黑色的面积在尺寸上占主导地位的时候. 1.2对数变换(反对数变换与其相反) 过程:将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值. 用处:用来扩展图像中暗像素的值,同时压缩更高灰度级的值. 特征:压缩像素值变化较大的图像的动态范围. 举例:处理傅里叶频谱,频谱中的低值往往观察不到,对数变换之后细节更加丰富. 1

WPF 3D变换应用

WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开发效率高,而且也容易上手. 下面给大家演示的是使用在WPF 3D上实现视角变换,通过鼠标拖动来变换观察视角,通过滚轮来放缩视距. 首先创建一个3D立方体,立方体是由六个面构成(F1, F2 ....F6)其XAML代码如下: <Viewport3D> <Viewport3D.Camera> <PerspectiveCamera Positi

C++数字图像处理(1)-伽马变换

https://blog.csdn.net/huqiang_823/article/details/80767019 1.算法原理    伽马变换(幂律变换)是常用的灰度变换,是一种简单的图像增强算法.数学公式如下:(1)    式(1)中,r为输入的灰度值,取值范围为[0, 1].C称为灰度缩放系数,用于整体拉伸图像灰度,通常取值为1.gamma取值灰度输入输出曲线图如下:图(1) gamma曲线图    从图(1)可知:当gamma>1.0时,伽马变换将拉低图像灰度值,图像视觉上变暗:当ga

matlab 灰度变换

(1)线性变换: 通过建立灰度映射来调整源图像的灰度. k>1增强图像的对比度:k=1调节图像亮度,通过改变d值达到调节亮度目的:0<k<1减弱对比度:k<0图像较亮区域会变暗,较暗区域会变亮. i = imread('theatre.jpg'); i = im2double(rgb2gray(i)); [m,n]=size(i); %增加对比度 Fa = 1.25; Fb = 0; O = Fa.*i + Fb/255; figure(1), subplot(221), imsh

数字图像处理:图像的灰度变换(Matlab实现)

(1)线性变换:通过建立灰度映射来调整源图像的灰度. k>1增强图像的对比度:k=1调节图像亮度,通过改变d值达到调节亮度目的:0 i = imread('theatre.jpg');i = im2double(rgb2gray(i));[m,n]=size(i);%增加对比度Fa = 1.25; Fb = 0;O = Fa.*i + Fb/255;figure(1), subplot(221), imshow(O);title('Fa = 1.25, Fb = 0, contrast incr

结合实例与代码谈数字图像处理都研究什么?

图像处理(以及机器视觉)在学校里是一个很大的研究方向,很多研究生.博士生都在导师的带领下从事着这方面的研究.另外,就工作而言,也确实有很多这方面的岗位和机会虚位以待.而且这种情势也越来越凸显.那么图像处理到底都研究哪些问题,今天我们就来谈一谈.图像处理的话题其实非常非常广,外延很深远,新的话题还在不断涌现.下面给出的12个大的方向,系我认为可以看成是基础性领域的部分,而且它们之间还互有交叉 1.图像的灰度调节 图像的灰度直方图.线性变换.非线性变换(包括对数变换.幂次变换.指数变换等).灰度拉伸

数字图像处理(二) 灰度变换与空域滤波

一.引入 空间域方法:对像素操作的过程->对图像像素直接处理. 空间域处理可由该式定义: \(g(x,y)=T[f(x,y)]\) 其中,f(x,y)为原图像,g(x,y)为处理后的图像,T为定义在x,y的邻域(不一定是4/8/m邻域,可能是更大的范围,如3x3,5x5的mask,et al)内的一个操作(也叫做算子). 最小邻域的大小为1x1,在这种情况下,g(x,y)仅取决于对应的f(x,y)值,上式可变换为一个形如下式的灰度(级)变换函数/灰度映射函数: \(s=T(r)\) 其中,r和s