分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

简单的实现方案
数据格式:YUV
参考链接1:Processing in the 8-bit YUV Color Space
参考链接2:关于YUV图像的亮度和对比度的调整算法
参考链接2中采用CxImage(关于CxImage,参考:转贴 CxImage类库使用说明 - 走在路上 - 博客频道 - CSDN.NET)库提供的处理方法,采用查表法处理效率很高。粘贴部分处理代码
CxImage\ximadsp.cpp
/** * Changes the brightness and the contrast of the image. * \param brightness: can be from -255 to 255, if brightness is negative, the image becomes dark. * \param contrast: can be from -100 to 100, the neutral value is 0. * \return true if everything is ok */bool CxImage ::Light (long brightness , long contrast ){       if (! pDib) return false;       float c=(100 + contrast)/100.0f;       brightness+=128;       BYTE cTable[256]; //<nipper>       for ( int i=0; i<256; i++) {             cTable[ i] = ( BYTE) max(0, min(255,( int)(( i-128)* c + brightness + 0.5f)));      }       return Lut( cTable);}/** * Changes the saturation of the image. * \param saturation: can be from -100 to 100, positive values increase the saturation. * \param colorspace: can be 1 (HSL) or 2 (YUV). * \return true if everything is ok */bool CxImage ::Saturate (const long saturation , const long colorspace ){...for (int i =0;i <256;i ++) {    cTable[ i] = (BYTE)max(0,min (255,(int )((i -128)*(100 + saturation)/100.0f + 128.5f)));}...}

通过如下处理,就可以得到处理后图像了
// Y分量,在对图像亮度和对比度进行调节后,通过查表 m_YTable获得新的Y 值// pdst为转换后的图像,pbufy为原图像的Y分量for ( int height=0; height< m_frameHeight; height ++){     for ( int width=0; width< m_frameWidth; width ++)     {         *pdst++ = cTable[*pbufy++];     }}


其他方案:

方案1. 基于Dirextx利用像素着色器实现图像的亮度,饱和度操作


参考链接:基于dirextx 利用像素着色器实现图像的亮度,饱和度,色相,对比度,变灰,反相操作
该文提供一个源代码,编译时需要D3D相关的lib库。该程序将对图像处理的细节交个了D3D,通过设置一个D3DXMATRIX结构体完成亮度饱和度等的操作。
优点:通过D3D实现,图片处理速度快效率高。
缺点:需要了解D3D相关的知识,学习成本较大。

方案2. 使用DirectDraw色彩控制IDirectDrawColorControl
参考链接:http://www.codingnow.com/directx6/dx6_dd11.htm#gamma
参考链接:http://www.dpfiles.com/dpfileswiki/index.php?title=Tricks_of_the_Windows_Game_Programming_Gurus%2C_Chapter_7:_Advanced_DirectDraw_and_Bitmapped_Graphics
原理与DirectX类似,因为我做的项目其2D图像渲染是使用DirectDraw实现的,很自然的想到了使用这个方法,但要非常注意的是,你的显卡要能够支持IDirectDrawColorControl,也就是说DirectDraw能够提供相应capacity,很遗憾的是我的显卡并不支持该特性,你可以用如下代码测试是否该功能:
// initializes a direct draw struct#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }// create IDirectDraw interface 7.0 object and test for errorif (FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL)))     return(0);DDCAPS hel_caps, hal_caps;// initialize the structuresDDRAW_INIT_STRUCT(hel_caps);DDRAW_INIT_STRUCT(hal_caps);if (FAILED(lpdd->GetCaps(&hal_caps, &hel_caps)))      return(0);if (hal_caps.dwCaps2 & DDCAPS2_COLORCONTROLPRIMARY)      OutputDebugString(_T("Supports primary surface contains color controls\n"));if (hal_caps.dwCaps2 & DDCAPS2_COLORCONTROLOVERLAY)      OutputDebugString(_T("Supports overlay surface contains color controls\n"));if (hal_caps.dwCaps2 & DDCAPS2_PRIMARYGAMMA)      OutputDebugString(_T("Supports loadable gamma ramps for the primary surface\n"));

同样的,你需要对DirectDraw有必要的了解,如果是使用GDI来负责图像的绘制,那么DirectX和DirectDraw的方案并不适合。


方案3 使用GDI+中的ColorMatrix

参考链接:灰度、对比度、亮度、饱和度基本图像处理源码
参考链接:GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

调整图像亮度brightness 对比度contrast 饱和度saturation方法整理相关推荐

  1. 调整图像亮度brightness,对比度contrast,饱和度saturation方法整理

    简单的实现方案 数据格式:YUV 参考链接1:Processing in the 8-bit YUV Color Space 参考链接2:关于YUV图像的亮度和对比度的调整算法 参考链接2中采用CxI ...

  2. java 对比度_调整图像亮度、对比度、饱和度

    完整代码如下: 1.主要方法编写类 package chapter4; import java.awt.image.BufferedImage; public class BSCAdjustFilte ...

  3. opencv中如何调整图像亮度和对比度,以及亮度和对比度调整的原理

    文章目录 1. 调整图像亮度和对比度的原理 2. python实现的一个代码如下,可以直接运行 3. 在opencv种调节图像和对比度的方法 a. opencv中的实现方法: b. 根据咱们的公式,我 ...

  4. OpenCV(C++)---调整图像亮度和对比度

    1.理论 图像变换可以看作如下: 像素变换 – 点操作 邻域操作 – 区域 调整图像亮度和对比度属于像素变换-点操作: 2.重要的API Mat new_image = Mat::zeros( ima ...

  5. halcon中怎么降低图像亮度_第6课-调整图像亮度和对比度

    (非原创,看课程自己做的笔记,防丢失放到个人空间的) 第6课-调整图像亮度和对比度理论 代码演示 1-理论 图像变换可以看做如下: -像素变换-点操作: -邻域操作-区域: 调整图像亮度和对比度属于像 ...

  6. 调整图像亮度和对比度

    图像变换可以看做两部分: 像素操作: 1.点操作,一般用于提升图像整体的对比度等. 2.邻域操作,一般用于空间域滤波,提取特征. 调整图像亮度和对比度属于像素变换 g(i,j)=αf(i,j)+βg\ ...

  7. 【opencv4】opencv视频教程 C++ 7、手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)

    上一讲:[opencv4]opencv视频教程 C++ 6.图像混合.线性混合.混合权重相加addWeighted().混合加add().混合乘multiply() [opencv_C++] 入门强推 ...

  8. 调整图像亮度与对比度

    文章目录 理论 代码演示 理论 图像变换可以看作如下: 像素变换 – 点操作,用在调整图像亮度和对比度等操作上. 邻域操作 – 区域,用在图像卷积.特征提取.梯度计算.模式匹配识别.角点检测.模糊.平 ...

  9. 0.4-OpenCvSharp4调整图像亮度和对比度

    0.4-OpenCvSharp4调整图像亮度和对比度 图像变换: 1)像素变换 – 点操作,用在调整图像亮度和对比度等操作上. 2)邻域操作 – 区域,用在图像卷积.特征提取.梯度计算.模式匹配识别. ...

最新文章

  1. 来客推商城V3多用户uni-app商城源码如何搭建?盈利模式怎么样的?
  2. iOS----------苹果警告
  3. mysql之DDL操作--数据库
  4. Error:Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apk
  5. Sublime Text 3插件收集
  6. mysql中blog数据_zp blog
  7. mysql 定义XML字段_MyBatis之基于XML的属性与列名映射
  8. EMC测试中骚扰源头的寻找
  9. ElasticSearch + Logstash进行数据库同步
  10. CentOS7中rpm,yum软件安装命令
  11. Mysql优化(出自官方文档) - 第九篇(优化数据库结构篇)
  12. 用计算机弹出记事本,电脑新装的系统开机后总是自动弹出记事本如何解决
  13. Maven开发笔记(三)—— Maven中dependencies和dependencyManagement
  14. dss中文含义_DSS(中文译名:决策支持系统),这是什么系统?有多少个种类?...
  15. NB-IoT开发都涉及什么
  16. (笔记)一些有意思的电路
  17. C语言——打鱼晒网问题
  18. Promise学习-手写一个promise
  19. c#通用后台管理系统
  20. 资金流学习-成本分析

热门文章

  1. n1 docker安装openwrt(旁路由)
  2. 解决小新pro13打开软件后软件字体太小问题
  3. geohsh长度对应的边长
  4. WMI Win32_OperatingSystem类
  5. ElasticJob源码分析--定时任务执行JobScheduler类分析
  6. PS竖排文字的编排方法及PS如何竖排文字相关视频教程
  7. TRIZ理论的进化法则分析(TRIZ学习笔记)
  8. 懒人的播放器--全自动百度榜单歌曲播放器,下载歌词全傻瓜化,全C#编写
  9. js 获取用户当前使用的 浏览器 判断是否谷歌浏览器
  10. [数据收集]获取国家名称以及其经纬度