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


    幂次变换的基本表达式为: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; 
    } 
  • 相关阅读:
    python字典
    python中List添加、删除元素的几种方法
    python数据处理之基本函数
    python批量处理
    python正则表达式
    python模块学习:os模块
    Hough transform(霍夫变换)
    MODBUS TCP/IP协议规范详细介绍
    Linux下run文件的直接运行
    双边滤波和引导滤波的原理
  • 原文地址:https://www.cnblogs.com/zendu/p/7211808.html
Copyright © 2020-2023  润新知