《Gamma correct》

int ImageAdjust(IplImage* src, IplImage* dst,
double low, double high, // X方向:low and high are the intensities of src
double bottom, double top, // Y方向:mapped to bottom and top of dst
double gamma )
{
double low2 = low*255;
double high2 = high*255;
double bottom2 = bottom*255;
double top2 = top*255;
double err_in = high2 - low2;
double err_out = top2 - bottom2;
int x,y;
double val;
if(low<0 && low>1 && high <0 && high>1&&
bottom<0 && bottom>1 && top<0 && top>1 && low>high)
return -1;
// intensity transform
for( y = 0; y < src->height; y++)
{
for (x = 0; x < src->width; x++)
{
val = ((uchar*)(src->imageData + src->widthStep*y))[x];
val=pow((val - low2)/err_in, gamma)*err_out+bottom2;
if(val>255)
val=255;
if(val<0)
val=0; // Make sure src is in the range [low,high]
((uchar*)(dst->imageData + dst->widthStep*y))[x] = (uchar) val;
}
}
return 0;
}

时间: 2024-07-31 14:32:59

《Gamma correct》的相关文章

《Machine Learning》系列学习笔记之第一周

<Machine Learning>系列学习笔记 第一周 第一部分 Introduction The definition of machine learning (1)older, informal definition--Arthur Samuel--"the field of study that gives computers the ability to learn without being explicitly programmed." (2)modern d

《C++程序设计》朝花夕拾

(以后再也不用破Markdown写东西了,直到它有一个统一的标准,不然太乱了--) 函数签名int f (int a, int b) ↑ ↑ ↑ ↑ 返回类型 函数名 形 式 参 数 其中,函数名+形式参数=函数签名(function signature). 引用变量 int a = 1; int &b = a; a++; cout << a << ' ' << b << endl; //2 2 注意引用变量的声明方式,&写在等号左边是引用变

《学习opencv》笔记——矩阵和图像操作——cvAdd、cvAddS and cvAddWeighted

矩阵和图像的操作 (1)cvAdd函数 其结构 void cvAdd(//图像加和 const CvArr* src1,//第一个原矩阵 const CvArr* src2,//第二个原矩阵 CvArr* dst, //存放矩阵 const CvArr* mask = NULL: //控制点 ); 就是单纯的将两个图像加和,mask变量控制加和的元素点,相当于"开关的作用"; 程序实例 #include <cv.h> #include <highgui.h> #

《Maven实战》整理二:Maven的使用

1 Maven使用 1.1 编写POM 就像Make的Makefile,Ant的build.xml一样,Maven项目的核心是pom.xml. 首先创建一个名为hello-world的文件夹(本书中各章的代码都会对应一个以ch开头的项目),打开该文件夹,新建一个名为pom.xml的文件,输入其内容如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.

(4)风色从零单排《C++ Primer》 变量,引用,指针

从零单排<C++ Primer> --(4)变量,引用,指针   变量的初始化 所谓变量的初始化,指在创建变量的同时给予值. 初始化方法: int units_sold = 0; int units_sold = {0}; int units_sold{0}; int units_sold{0}; long double ld = 3.1415926536: int a{ld}, b = {ld}; //error:narrowing conversion required int c(ld)

20172330 2017-2018-1 《Java程序设计》第四周学习总结

20172330 2017-2018-1 <Java程序设计>第四周学习总结 教材学习内容总结 这一周的内容还是比较多的,而且很复杂,包含第四和第七章. 第四章向我们介绍了类结构的定义与概念,同时举出了好多个例题向我们展示自定义类的方法与应用,对于方法定义的结构与用途进行了讨论:包括return语句,参数,局部数据等方面. 第七章的主要内容则是面向对象设计.通过书本的介绍了,我们探讨了面向对象软件设计的主要问题,了解了确定程序所需要的类和对象的技术,对类之间的关系进行了探讨,详细的学习了sta

20172325 2016-2017-2 《Java程序设计》第四周学习总结

20172325 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 1.对类.对象.声明变量的定义和属性有了进一步的了解 2.学会如何编写一个类并运用到需要的程序中 3.学习了形参和实参的概念和区别 4.修饰符的作用和运用,例如public和private 5.学习了静态类,例如静态方法和静态变量 6.关于封装的作用和运用 7.在面向对象的程序设计时需要做的必要步骤,包括需求.设计.实现和测试 8.对枚举类的进一步了解 9.学习了调用方法中的方法重载 10.UML类

《金字塔原理》听书笔记

<金字塔原理>已经畅销 40 多年,不仅是麦肯锡经典培训教材,甚至成为了整个咨询业的标准,并被众多国际知名企业和世界知名院校用来进行员工培训内容.本书提供了关于思考和表达技巧的重要观念,帮助你强化思考架构能力和逻辑沟通能力,让你更高效地思考.表达和解决问题. 芭芭拉 · 明托,毕业于哈佛大学,是麦肯锡咨询公司第一位女咨询顾问.她在写作方面的优势得到了麦肯锡高层的赏识,由此负责提高麦肯锡公司员工的写作能力,并致力于探索条理清晰的文章所必需的思维结构.明托传授金字塔原理 40 年,帮助政府.企业.

《spring boot》8.2章学习时无法正常启动,报“ORA-00942: 表或视图不存在 ”

在学习<spring boot>一书的过程中,由于原书作者难免有一些遗漏的的地方,或者系统.软件版本不一致.框架更新等各种因素,完全安装书中源码页不能实现项目的正常启动 在8.2章节,演示JPA对oracle的支持时,配置文件中设置了如下代码,正常情况下应该支持数据库自动创建序列和表,但实际启动时却报错"ORA-00942: 表或视图不存在 " spring.datasource.driverClassName=oracle.jdbc.OracleDriver spring