本文用 Python 实现 PS 图像调整中的亮度调整,具体的算法原理和效果可以参考之前的博客:

http://blog.csdn.net/matrix_space/article/details/22991683

  1. import matplotlib.pyplot as plt
  2. from skimage import io
  3. file_name='D:/Image Processing/PS Algorithm/4.jpg';
  4. img=io.imread(file_name)
  5. Increment = -10.0
  6. img = img * 1.0
  7. I = (img[:, :, 0] + img[:, :, 1] + img[:, :, 2])/3.0 + 0.001
  8. mask_1 = I > 128.0
  9. r = img [:, :, 0]
  10. g = img [:, :, 1]
  11. b = img [:, :, 2]
  12. rhs = (r*128.0 - (I - 128.0) * 256.0) / (256.0 - I)
  13. ghs = (g*128.0 - (I - 128.0) * 256.0) / (256.0 - I)
  14. bhs = (b*128.0 - (I - 128.0) * 256.0) / (256.0 - I)
  15. rhs = rhs * mask_1 + (r * 128.0 / I) * (1 - mask_1)
  16. ghs = ghs * mask_1 + (g * 128.0 / I) * (1 - mask_1)
  17. bhs = bhs * mask_1 + (b * 128.0 / I) * (1 - mask_1)
  18. I_new = I + Increment - 128.0
  19. mask_2 = I_new > 0.0
  20. R_new = rhs + (256.0-rhs) * I_new / 128.0
  21. G_new = ghs + (256.0-ghs) * I_new / 128.0
  22. B_new = bhs + (256.0-bhs) * I_new / 128.0
  23. R_new = R_new * mask_2 + (rhs + rhs * I_new/128.0) * (1-mask_2)
  24. G_new = G_new * mask_2 + (ghs + ghs * I_new/128.0) * (1-mask_2)
  25. B_new = B_new * mask_2 + (bhs + bhs * I_new/128.0) * (1-mask_2)
  26. Img_out = img * 1.0
  27. Img_out[:, :, 0] = R_new
  28. Img_out[:, :, 1] = G_new
  29. Img_out[:, :, 2] = B_new
  30. Img_out = Img_out/255.0
  31. # 饱和处理
  32. mask_1 = Img_out < 0
  33. mask_2 = Img_out > 1
  34. Img_out = Img_out * (1-mask_1)
  35. Img_out = Img_out * (1-mask_2) + mask_2
  36. plt.figure()
  37. plt.imshow(img/255.0)
  38. plt.axis('off')
  39. plt.figure(2)
  40. plt.imshow(Img_out)
  41. plt.axis('off')
  42. plt.figure(3)
  43. plt.imshow(I/255.0, plt.cm.gray)
  44. plt.axis('off')
  45. plt.show()

Python: PS 图像调整--亮度调整的更多相关文章

  1. Python: PS 图像调整--明度调整

    本文用 Python 实现 PS 图像调整中的明度调整: 我们知道,一般的非线性RGB亮度调整只是在原有R.G.B值基础上增加和减少一定量来实现的,而PS的明度调整原理还得从前面那个公式上去找.我们将 ...

  2. Python: PS 图像调整--饱和度调整

    本文用 Python 实现 PS 图像调整中的饱和度调整算法,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/detail ...

  3. Python: PS 图像调整--黑白

    本文用Python 实现 PS 里的图像调整–黑白,PS 里的黑白并不是简单粗暴的将图像转为灰度图,而是做了非常精细的处理,具体的算法原理和效果图可以参考以前的博客: http://blog.csdn ...

  4. Python: PS 图像调整--对比度调整

    本文用 Python 实现 PS 里的图像调整–对比度调整.具体的算法原理如下: (1).nRGB = RGB + (RGB - Threshold) * Contrast / 255 公式中,nRG ...

  5. Python: PS 图像调整--颜色梯度

    本文用 Python 实现 PS 中的色彩图,可以看到颜色的各种渐变,具体的效果可以参考以前的博客: http://blog.csdn.net/matrix_space/article/details ...

  6. PS 图像调整算法——亮度调整

    这个算法是参考自 阿发伯 的博客,在此对 阿发伯 表示感谢, http://blog.csdn.net/maozefa 亮度调整 非线性亮度调整: 对于R,G,B三个通道,每个通道增加相同的增量. 线 ...

  7. PS 图像调整算法——自动对比度 (Auto Contrast)

    PS 给出的定义: Enhance Monochromatic Contrast: Clips all channels identically. This preserves the overall ...

  8. PS 图像调整算法——自动色阶 (Auto Levels)

    PS 给出的定义: Enhance Per Channel Contrast:Maximizes the tonal range in each channel to produce a more d ...

  9. PS 图像调整算法——黑白

    这个算法是参考自 阿发伯 的博客: http://blog.csdn.net/maozefa 黑白调整 Photoshop CS的图像黑白调整功能,是通过对红.黄.绿.青.蓝和洋红等6种颜色的比例调节 ...

随机推荐

  1. Kubernetes网络设计原则

    在配置集群网络插件或者实践K8S 应用/服务部署请时刻想到这些原则: 1.每个Pod都拥有一个独立IP地址,Pod内所有容器共享一个网络命名空间 2.集群内所有Pod都在一个直接连通的扁平网络中,可通 ...

  2. 洛谷 P2008 大朋友的数字

    DP,动态规划   树状数组   最长不下降子序列 by  GeneralLiu 题目 就是说给一串由 0~9 组成的序列 求 以 i (1~n) 结尾 的 最长不下降子序列 的 和 (最长不下降子序 ...

  3. 【树状数组+dp】HDU 5542 The Battle of Chibi

    http://acm.hdu.edu.cn/showproblem.php?pid=5542 [题意] 给定长为n的序列,问有多少个长为m的严格上升子序列? [思路] dp[i][j]表示以a[i]结 ...

  4. 如何在Eclipse中生成Native类对应的JNI的.h文件

    1 致谢 感谢super_level网友 他的博客写的很清楚 给了我很多帮助 链接如下:http://blog.csdn.net/super_level/article/details/2124353 ...

  5. Atlantis(hdu1542)

    题意:求n个矩阵的面积并. /* 线段树维护扫描线 把每个矩形看成两条线段,从左到右添加线段,如果是矩形左边的线段,那就给线段所在的区间(y值)cover+1,反之则cover-1. 并且如果这条线段 ...

  6. poj2773求第K个与m互质的数

    //半年前做的,如今回顾一下,还是有所收货的,数的唯一分解,.简单题. #include<iostream> #include<cstring> using namespace ...

  7. P1359 租用游艇 洛谷

    https://www.luogu.org/problem/show?pid=1359 题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n.游客可在这些游艇出租站租用游艇,并在下游的 ...

  8. java内存区域和对象的产生

    一直被java中内存组成弄的头晕眼花,这里总结下都有哪些,先上图片 程序计数器 小块内存,线程执行字节码的信号指示器,以此获取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复都要依赖他 ...

  9. kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  10. 一个基于JBoss5.1+EJB3.0 登陆应用

    花了几天的时间研究了一下EJB的使用,一直以来都主要是在写终端中的程序,对Java框架的相关的开发非常不熟悉,中间遇到了不少麻烦,还好总算都攻克了.写篇日志记录一下. 经验总结 为什么选择JBoss5 ...