C++ 图像处理 之 亮度、色彩平衡调整(逼近PS法)

本文介绍了一种基于C++实现的图像处理方法,着重于亮度和色彩平衡的调整,通过分析Photoshop的调整原理,给出了具体的数学模型及其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



C++ 图像处理 亮度、色彩平衡调整(逼近PS)

关键词:图像处理亮度调整 色彩平衡Photoshop

 

参考博客

http://blog.youkuaiyun.com/maozefa/article/details/4493395

http://www.cnblogs.com/Imageshop/archive/2011/11/10/2244664.html

 

本人参照Photoshop的亮度、色彩平衡调整原理,得到公式表示为:

dstRGB = srcRGB+ f(srcRGB) *g(dv)

其中dstRGB 为目标色彩,srcRGB 为原始色彩,dv为变化程度范围为 [-1,+1]f(x)g(x)是对原始色彩srcRGB和变化程度dv的函数。一般情况下y=g(x)为线性函数,一般情况下,y=f(x)为非线性函数,重点是获得该函数。(备注,大多数开源软件设定y=f(x)为线性函数,或简单的二次多项式)

 

在代码处理上,大多数软件采用了灰度表查找法,先按制造了一个256个元素大小的线性亮度查找表,然后对图像数据逐像素按RGB分量值在查找表中取得调整后的数据。反之,我们可以通过先建立灰度表,再反推该函数。

    各软件使用不同的映射函数,为实现Photoshop中的等价效果,最简单的方式是,通过软件操作测试,对不同灰度值srcGray[i],在亮度调整操作后+d,得到映射的desGray[i]。以下是使用灰度色阶图(左图1),在Photoshop中分别对亮度增强100(中图2)和对色彩平衡R增加100(右图3)的情况下

 

以下是对上面三图不同原始灰度上获得变化后的灰度值,建立下表。

原始灰度

亮度增强

色彩平衡

亮度增强后差值

色彩平衡差值

0

0

0

0

0

6

11

23

5

17

12

23

43

11

31

20

38

66

18

46

28

53

84

25

56

37

69

97

32

60

46

86

108

40

62

57

107

121

50

64

67

128

132

61

65

79

146

143

67

64

90

164

152

74

62

102

181

162

79

60

114

195

172

81

58

127

208

180

81

53

138

218

189

80

51

151

227

197

76

46

162

233

204

71

42

175

239

212

64

37

186

243

218

57

32

197

246

225

49

28

207

249

230

42

23

217

250

236

33

19

225

252

241

27

16

234

253

245

19

11

241

254

249

13

8

255

255

255

0

0

其中第一列为原始灰度值,第二列为增加亮度100后的灰度值,第三列为色彩平衡R增加100后的值,第四列为第二列减去第一列,第五列为第三列减去第一列。对上表进行归一化处理后,建立第四列与第一列的关系图(下图蓝色)和第五列与第一列关系图(下图红色),并建立多项式逼近。(此处可使用其他函数逼近,如指数函数、对数函数、分段函数)

 

以上重点讲究的是一种方法,而不是得出的数据结果。采样实验存在一定误差,结果数据请慎重使用。

 

此处推荐一下开源c++图像处理软件cximageImageStone。以下使用ImageStone测试。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值