暗图片亮度增强

根据photoshop的滤色混合方法,完成一种暗图片的亮度增强手段。
滤色混合和正片叠底的公式
形象理解正片叠底和滤色
代码参考-c
先贴一张效果图

简单来说,正片叠底会使暗图片更暗,滤色混合会使亮图片更亮。
滤色混合步骤很简单:

  1. 将绿色通道反色后作为系数值,分别与各个通道相乘,得到新图层;
  2. 将新图层与原图做一次滤色混合,f(a, b) = 1 - (1 - a)*(1 - b);
    其中a是底色,就是原图片,b是混合色,参考代码中用绿色通道的值作为混合色。我尝试了,无论是rgb里面的哪一个通道,或者hsv中的v通道,效果都可以。有人说是因为人眼对绿色敏感且绿色对亮度影响打,这里我也不知道对不对。

代码如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/5/20 9:19
# @Author : Hran
# @Site :
# @File : photoshop.py
# @Software: PyCharm
"""
将新图层与原图做一次滤色混合,f(a, b) = 1 - (1 - a)*(1 - b);
"""
import cv2
import numpy as npdef lvse_screen_xy(x, y):"""滤色模式下的公式:param x: 基色:param y: 混合色:return: 混合后的颜色"""return (255 - ((255-(x)) * (255-(y)) >> 8))def diejia_screen_xy(x,y):"""叠加模式,结合了正片叠底和滤色模式两种模式的优缺点:param x: 基色:param y: 混合色:return:"""if (x / 255) > 0.5:# 正片叠底公式(注意这里单纯的正片叠底公式是没有乘2的)return (2 * (x * y) >> 8)else:# 滤色混合公式(注意这里单纯的滤色混合公式是没有乘2的)return (255 - 2 * ((255-(x)) * (255-(y)) >> 8))def work(img):height = img.shape[0]width = img.shape[1]img_size = height * widthimg_flatten = np.reshape(img, (-1, 3))for i in range(img_size):g_alpha = 255 - img_flatten[i][2]b_temp = img_flatten[i][0] * g_alpha >> 8g_temp = img_flatten[i][1] * g_alpha >> 8r_temp = img_flatten[i][2] * g_alpha >> 8img_flatten[i][0] = lvse_screen_xy(img_flatten[i][0], b_temp)img_flatten[i][1] = lvse_screen_xy(img_flatten[i][1], g_temp)img_flatten[i][2] = lvse_screen_xy(img_flatten[i][2], r_temp)# img_flatten[i][0] = diejia_screen_xy(img_flatten[i][0], b_temp)# img_flatten[i][1] = diejia_screen_xy(img_flatten[i][1], g_temp)# img_flatten[i][2] = diejia_screen_xy(img_flatten[i][2], r_temp)result = np.reshape(img, (height, width, 3))return resultif __name__ == '__main__':img = cv2.imread('1.png')result = work(img)# for i in range(3):#     result = work(result)cv2.imshow('img', result)cv2.waitKey()

代码中的diejia_screen_xy(x,y)对应着叠加模式,是正片叠底和滤色的结合。会使暗图片更暗,亮图片更亮。公式中给的是通过判断该点的像素值是不是255的一半来决定对该点使用正片叠底还是滤色混合。叠加模式的结果如下,右边是原图像。

然后我就想到如果对图像暗的部分用滤色混合,亮的地方用正片叠底,不久可以很棒的把亮度平均处理了吗。但是我失败了,结果会变成这样。

我不知道为什么会这样,我怀疑是混合色的问题,我再想一想把。最后如果图片仍然不理想可以通过多次重复上面的过程来继续增强。

基于photoshop滤色混合模式的图片亮度改变相关推荐

  1. 一款基于jquery的下拉点击改变背景图片

    今天给大家介绍一款基于jquery的下拉点击改变背景图片.单击右上角的图片,下拉显示可选择的背景图片,单击图片变为背景图.效果图下: 在线预览   源码下载 实现的代码. html代码: <a ...

  2. python cv2改变图片亮度

    使用Gamma校正来改变图片亮度 import cv2 import numpy as np def gamma_trans(img,gamma):#gamma大于1时图片变暗,小于1图片变亮#具体做 ...

  3. matlab改变图片亮度(HSV模型)

    目录 1 解决思路 1.1 问题背景 1.2 解决思路 2 采用"渐变"的方式改变调整的"力度" 2.1 线性调整 2.2 非线性调整 3 实验与分析 3.1 ...

  4. 图片批处理——关于批量重命名文件夹内图片不改变原来在文件夹内的顺序(适用于基于ref数据集处理的过程)

    在网上找了好久,但是保证顺序的方法都是使用**sort()**函数实现的,并不能保证原来图片在文件夹内的顺序不变(特殊需要,需要某种对应), 这种方法见 按顺序对图片批量重命名,sort() 之后被逼 ...

  5. 多媒体系统导论 实验一 基于Photoshop的图像处理

    基于Photoshop的图像处理 一.实验目的与要求 二.实验内容与方法 三.实验步骤与过程 1.Photoshop界面及工具箱 ①打开Photoshop: ②Photoshop界面及工作箱: 2.图 ...

  6. photoshop色彩混合模式理论基础教程

    在多年的ps使用过程中,对颜色理论的不断加深,深深熟识到颜色理论给ps设计带来的丰富多彩的变化. 但是往往我们一边欣喜的使用着基于颜色理论的图像处理软件,一边在强调色感的重要而去弱化对色彩理论的研究. ...

  7. 【Opencv】基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别【代码实现】

    基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别[代码实现] 实验目的 代码实现 预处理(注意Resize图像) 轮廓检测(找到矩形) 透视变换(摆正图像) OCR识别文字 ...

  8. 【001】基于JavaFX实现的电子图片管理系统

    华南农业大学面向对象程序设计综合性实验(98分) 1 问题描述. 题目目的是编写一个能够对数字像片进行管理的应用程序. 程序能够显示的图片格式包括,.JPG..JPEG..GIF..PNG.和.BMP ...

  9. 基于vue+springboot,实现图片base64转码保存到数据库

    基于vue+springboot,实现图片base64转码保存到数据库 背景:在项目中遇到一个新增.编辑的场景.新增一个车辆信息,并且附有车辆照片和关联的设备照片,照片转码成base64保存到mysq ...

最新文章

  1. 基本数据结构—Hash哈希
  2. 一天搞定CSS(扩展):CSS Hack
  3. 笔记-信息化与系统集成技术-商业智能-数据仓库系统
  4. MySQL索引类型 btree索引和hash索引的区别
  5. 论文浅尝 | 基于知识图谱 Embedding 的问答
  6. python如何调用阿里云接口_阿里云 API调用实践(python语言)
  7. 计算机图形学(一)——数据压缩:道格拉斯普克法
  8. 【工作手札】日常工作笔记
  9. 财联社24小时电报关键词监控提醒
  10. Aqua Data Studio 19中文版
  11. 【实习】C++开发 - 美国顶尖金融交易公司-Akuna Capital - 金融科技
  12. BZOJ3277 串 【后缀数组】【二分答案】【主席树】
  13. Android Camera 测光梳理
  14. 《新参者-加贺恭一郎》、《麦田里的守望者》杂记
  15. 《谋圣鬼谷子》曝片花 徐麒雯饰演“姮娥”
  16. gnuplot用C语言程序画图,gnuplot使用
  17. linux中一次显示一页内容的命令
  18. Swiper + 图片懒加载
  19. 土壤微生物组——从宏基因组学到宏表型组学
  20. 任务提交SparkSubmit源码解析

热门文章

  1. 12种 vo2dto 方法,就 BeanUtils.copyProperties 压测最拉胯!【快双11了,别用错喽】
  2. html在线打印插件,jQuery简单易用的网页内容打印插件
  3. 文件上传插件 bootstrap-fileinput ,后台使用的C#语言
  4. 软件测试之柠檬班python全栈自动化50期测试笔记
  5. 第一次使用scrapy爬豆瓣top250 报错 AttributeError Requset has no attribute dont_filter 和 meta
  6. 【译】如何学习机器学习
  7. PE文件格式”1.9版 完整译文
  8. 阿里IOT 应用托管部署 (2020/12/02)
  9. crontab一些常用的语法 每天凌晨1点重启一遍
  10. 纸鸢|物联网云平台倒闭的原因和案例