• //draft     2013.9
    
    //F=X2/u;
    ////远处细节被淹没。 亮的地方增亮明显,暗的地方更暗。 不可取。
    // CvScalar rgb;
    // rgb=cvAvg(src);
    //for(y=0;y<src->height;y++)
    // {
    // unsigned char *srcrow= (unsignedchar*)(src->imageData+y*src->widthStep);
    // for(x=0;x<src->width;x++)
    // {
    //srcrow[3*x]=srcrow[3*x]*srcrow[3*x]/rgb.val[0]>255 ?255:srcrow[3*x]*srcrow[3*x]/rgb.val[0];
    //srcrow[3*x+1]=srcrow[3*x+1]*srcrow[3*x+1]/rgb.val[1]>255? 255:srcrow[3*x+1]*srcrow[3*x+1]/rgb.val[1] ;
    //srcrow[3*x+2]=srcrow[3*x+2]*srcrow[3*x+2]/rgb.val[2]>255? 255:srcrow[3*x+2]*srcrow[3*x+2]/rgb.val[2];
    // }
    // } #ifdef Enhencement_Linear // 255| ________
    // | /
    // | /
    // | /
    // | /
    // | /
    // |/_____.______.
    // 0 A 255
    int b=20;//上移b
    for(y=0;y<src->height;y++)
    {
    unsigned char *srcrow= (unsignedchar*)(src->imageData+y*src->widthStep);
    for (x=0;x<src->width;x++)
    { if (srcrow[3*x]>a)srcrow[3*x]=255;
    else
    srcrow[3*x]=(255-b)*srcrow[3*x]/(a)+b>255 ?255:(255-b)*srcrow[3*x]/(a)+b; if (srcrow[3*x+1]>a) srcrow[3*x+1]=255;
    else
    srcrow[3*x+1]=(255-b)*srcrow[3*x+1]/(a)+b>255 ?255:(255-b)*srcrow[3*x+1]/(a)+b; if (srcrow[3*x+2]>a)srcrow[3*x+2]=255;
    else
    srcrow[3*x+2]=(255-b)*srcrow[3*x+2]/(a)+b>255 ?255:(255-b)*srcrow[3*x+2]/(a)+b;
    }
    }
    #endif ////改进log函数
    //#ifdef Enhencement_LOG
    // //CvScalar rgb;
    // //rgb=cvAvg(src);
    // double aa,bb,cc,aaaaa;aaaaa=255.0;
    // k=(a-50)/255.0;
    //for(y=0;y<src->height;y++)
    // {
    // unsigned char *srcrow= (unsignedchar*)(src->imageData+y*src->widthStep);
    // for(x=0;x<src->width;x++)
    // {
    //aa=srcrow[3*x]+0.0;bb=(double)srcrow[3*x+1]+0.0;cc=(double)srcrow[3*x+2]+0.0;
    // aa=log(aaaaa)-log(aa);
    // bb=log(aaaaa)-log(bb);
    // cc=log(aaaaa)-log(cc);
    // //if (srcrow[3*x]>a);
    // //else
    //srcrow[3*x]=srcrow[3*x]+k*srcrow[3*x]*aa<srcrow[3*x]? srcrow[3*x]:srcrow[3*x]+k*srcrow[3*x]*aa;
    // //srcrow[3*x]=srcrow[3*x]+k*srcrow[3*x]*aa;
    // //if (srcrow[3*x+1]>a);
    // //else
    //srcrow[3*x+1]=srcrow[3*x+1]+k*srcrow[3*x+1]*bb<srcrow[3*x+1]? srcrow[3*x+1]:srcrow[3*x+1]+k*srcrow[3*x+1]*bb;
    // //srcrow[3*x+1]=srcrow[3*x+1]+k*srcrow[3*x+1]*bb;
    // //if (srcrow[3*x+2]>a);
    // //else
    // srcrow[3*x+2]=srcrow[3*x+2]+k*srcrow[3*x+2]*cc<srcrow[3*x+2] ?srcrow[3*x+2]:srcrow[3*x+2]+k*srcrow[3*x+2]*cc;
    // //srcrow[3*x+2]=srcrow[3*x +2]+k*srcrow[3*x+2]*cc;
    // }
    // }
    //#endif //
    // //cvCvtColor(src,src,CV_BGR2YCrCb);
    ////转换颜色空间
    #ifdef SHARPEN_Y //锐化
    unsigned char x1,x2,x3,x4,x5,x6,x7,x8,x9;
    int n1,n2,n3,n4,n5,n6,n7,n8;
    IplImage* srctem=cvCreateImage(cvGetSize(src),8,3);
    cvCopy(src,srctem);
    //cvSmooth(srctem,srctem);
    for(int y=1;yheight-1;y++)
    {
    unsigned char *row1= (unsignedchar*)(srctem->imageData+(y-1)*srctem->widthStep);
    unsigned char *row2= (unsignedchar*)(srctem->imageData+y*srctem->widthStep);
    unsigned char *row3= (unsignedchar*)(srctem->imageData+(y+1)*srctem->widthStep); unsigned char *row= (unsignedchar*)(src->imageData+y*src->widthStep); for (int x=1;xwidth-1;x++) {
    x1=row1[3*(x-1)]; x2=row1[3*x]; x3=row1[3*(x+1)];
    x4=row2[3*(x-1)]; x5=row2[3*x]; x6=row2[3*(x+1)];
    x7=row3[3*(x-1)]; x8=row3[3*x]; x9=row3[3*(x+1)];
    //Laplace
    //n1=x5<<3;n2=x1+x2+x3+x4+x6+x7+x8+x9;//n1+=x5; //[8 -1..........-1]
    n1=x5<<2;//n1+=x5; //[4 -1 -1-1 -1]
    n2=x2+x4+x6+x8;
    n1=(n1-n2)/3+x5; //锐¨?化¡¥
    if(n1<0) n1=0; else if(n1>255)n1=255;//else n1=255;
    row[3*x]=n1;
    //row[3*x+1]=128;
    //row[3*x+2]=128; }
    }
    #endif
    // //cvCvtColor(src,src,CV_YCrCb2BGR);

[code]图像亮度调整enhancement的更多相关文章

  1. Win8Metro(C#)数字图像处理--2.5图像亮度调整

    原文:Win8Metro(C#)数字图像处理--2.5图像亮度调整  2.5图像亮度调整函数 [函数名称] 图像亮度调整函数BrightnessAdjustProcess(WriteableBit ...

  2. GPUImage中亮度调整的实现——GPUImageBrightnessFilter

    亮度brightness其实是对RGB的调整,RGB值越大,效果越亮:反之则越暗. GPUImage中提供了对图像亮度调整的Filter,其核心代码如下(fragment): varying high ...

  3. OpenCV中图像算术操作与逻辑操作

    OpenCV中图像算术操作与逻辑操作 在图像处理中有两类最重要的基础操作各自是图像点操作与块操作.简单点说图像点操作就是图像每一个像素点的相关逻辑与几何运算.块操作最常见就是基于卷积算子的各种操作.实 ...

  4. TensorFlow学习笔记(五)图像数据处理

    目录: 一.TFRecord输入数据格式 1.1 TFrecord格式介绍 1.2 TFRecord样例程序 二.图像数据处理 2.1TensorFlow图像处理函数 2.2图像预处理完整样例 三.多 ...

  5. 图像切割—基于图的图像切割(Graph-Based Image Segmentation)

     图像切割-基于图的图像切割(Graph-Based Image Segmentation) Reference: Efficient Graph-Based Image Segmentation ...

  6. AngularJS in Action读书笔记1——扫平一揽子专业术语

    前(fei)言(hua): 数月前,以一个盲人摸象的姿态看了一些关于AngularJS的视频书籍,留下了我个人的一点或许是指点迷津或许是误人子弟的读后感.自以为已经达到熟悉ng的程度,但是因为刚入公司 ...

  7. RFID 仿真/模拟/监控/拦截/检测/嗅探器

    Sound card based RFID sniffer/emulator (Too tired after recon.cx to do draw the schematics better th ...

  8. 用C#编写游戏脚本

    大学宿舍玩游戏的时候,为了简化重复的键鼠动作,有学习过按键精灵和TC脚本开发工具,并做了一些小脚本,基本达到了当时的需求.不知不觉,已经毕业了3年了,无聊之余又玩起了游戏,对于一些无趣的重复行为,于是 ...

  9. PA教材提纲 TAW12-2

    Unit1 Adjustment of SAP Standard Software(SAP标准软件修改) 1.1 Adjusting SAP Standard Software(如何修改SAP标准软件 ...

随机推荐

  1. webjars和springboot热启动

    webjars WebJars将Web前端Javascript和CSS等资源打包成Java的Jar包, 以便能使Maven的依赖管理支持静态JavaScript库/CSS库,比如jQuery.layu ...

  2. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  3. LaTeX的安装

    1 下载与安装 下载地址. 选择清华TUNA开源镜像, 选择Full版本, 点击下载,按照提示安装,没有坑,就没有截图. 2 简单使用流程 1) 首先下载对应的LaTeX模板(从会议或者期刊网站上下载 ...

  4. java_缓冲流(字符输出输入流)

    /** java.io.BufferedReader extends Reader * * 构造方法: * BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符 ...

  5. java笔试之放苹果

    题目描述:M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入:每个用例包含二个整数M和N.0<=m< ...

  6. html--图片背景兼容,兼容IE6

    在IE6中对图片格式png24支持度不高, 如果使用的图片格式是png24,则会导致透明效果无法正常显示 解决方法: 1.可以使用png8来代替png24,即可解决问题, 但是使用png8代替png2 ...

  7. ansible 安装及基本使用

    1.yum 安装 yum -y install epel-releaseyum -y install ansible ansible 配置秘钥 ssh-keygen -t rsa #直接回车不用设置密 ...

  8. 四种JavaEE架构简介

    1. 传统三层架构 配图是一个基于MVC的三层架构, 大致可以分成表现层, 业务层和持久层 表现层负责接收请求和转发请求 业务层主要负责处理请求, 值得注意的是事务管理, 日志记录等操作通常也是封装在 ...

  9. leetcode-92-反转链表②

    题目描述: 方法一: class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: ...

  10. HTML - 图片标签相关

    <html> <head></head> <body> <!-- src : 图片的路径 (本地资源路径, 网络资源路径) title : 图片的 ...