基于photoshop滤色混合模式的图片亮度改变
暗图片亮度增强
根据photoshop的滤色混合方法,完成一种暗图片的亮度增强手段。
滤色混合和正片叠底的公式
形象理解正片叠底和滤色
代码参考-c
先贴一张效果图
简单来说,正片叠底会使暗图片更暗,滤色混合会使亮图片更亮。
滤色混合步骤很简单:
- 将绿色通道反色后作为系数值,分别与各个通道相乘,得到新图层;
- 将新图层与原图做一次滤色混合,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滤色混合模式的图片亮度改变相关推荐
- 一款基于jquery的下拉点击改变背景图片
今天给大家介绍一款基于jquery的下拉点击改变背景图片.单击右上角的图片,下拉显示可选择的背景图片,单击图片变为背景图.效果图下: 在线预览 源码下载 实现的代码. html代码: <a ...
- python cv2改变图片亮度
使用Gamma校正来改变图片亮度 import cv2 import numpy as np def gamma_trans(img,gamma):#gamma大于1时图片变暗,小于1图片变亮#具体做 ...
- matlab改变图片亮度(HSV模型)
目录 1 解决思路 1.1 问题背景 1.2 解决思路 2 采用"渐变"的方式改变调整的"力度" 2.1 线性调整 2.2 非线性调整 3 实验与分析 3.1 ...
- 图片批处理——关于批量重命名文件夹内图片不改变原来在文件夹内的顺序(适用于基于ref数据集处理的过程)
在网上找了好久,但是保证顺序的方法都是使用**sort()**函数实现的,并不能保证原来图片在文件夹内的顺序不变(特殊需要,需要某种对应), 这种方法见 按顺序对图片批量重命名,sort() 之后被逼 ...
- 多媒体系统导论 实验一 基于Photoshop的图像处理
基于Photoshop的图像处理 一.实验目的与要求 二.实验内容与方法 三.实验步骤与过程 1.Photoshop界面及工具箱 ①打开Photoshop: ②Photoshop界面及工作箱: 2.图 ...
- photoshop色彩混合模式理论基础教程
在多年的ps使用过程中,对颜色理论的不断加深,深深熟识到颜色理论给ps设计带来的丰富多彩的变化. 但是往往我们一边欣喜的使用着基于颜色理论的图像处理软件,一边在强调色感的重要而去弱化对色彩理论的研究. ...
- 【Opencv】基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别【代码实现】
基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别[代码实现] 实验目的 代码实现 预处理(注意Resize图像) 轮廓检测(找到矩形) 透视变换(摆正图像) OCR识别文字 ...
- 【001】基于JavaFX实现的电子图片管理系统
华南农业大学面向对象程序设计综合性实验(98分) 1 问题描述. 题目目的是编写一个能够对数字像片进行管理的应用程序. 程序能够显示的图片格式包括,.JPG..JPEG..GIF..PNG.和.BMP ...
- 基于vue+springboot,实现图片base64转码保存到数据库
基于vue+springboot,实现图片base64转码保存到数据库 背景:在项目中遇到一个新增.编辑的场景.新增一个车辆信息,并且附有车辆照片和关联的设备照片,照片转码成base64保存到mysq ...
最新文章
- 基本数据结构—Hash哈希
- 一天搞定CSS(扩展):CSS Hack
- 笔记-信息化与系统集成技术-商业智能-数据仓库系统
- MySQL索引类型 btree索引和hash索引的区别
- 论文浅尝 | 基于知识图谱 Embedding 的问答
- python如何调用阿里云接口_阿里云 API调用实践(python语言)
- 计算机图形学(一)——数据压缩:道格拉斯普克法
- 【工作手札】日常工作笔记
- 财联社24小时电报关键词监控提醒
- Aqua Data Studio 19中文版
- 【实习】C++开发 - 美国顶尖金融交易公司-Akuna Capital - 金融科技
- BZOJ3277 串 【后缀数组】【二分答案】【主席树】
- Android Camera 测光梳理
- 《新参者-加贺恭一郎》、《麦田里的守望者》杂记
- 《谋圣鬼谷子》曝片花 徐麒雯饰演“姮娥”
- gnuplot用C语言程序画图,gnuplot使用
- linux中一次显示一页内容的命令
- Swiper + 图片懒加载
- 土壤微生物组——从宏基因组学到宏表型组学
- 任务提交SparkSubmit源码解析
热门文章
- 12种 vo2dto 方法,就 BeanUtils.copyProperties 压测最拉胯!【快双11了,别用错喽】
- html在线打印插件,jQuery简单易用的网页内容打印插件
- 文件上传插件 bootstrap-fileinput ,后台使用的C#语言
- 软件测试之柠檬班python全栈自动化50期测试笔记
- 第一次使用scrapy爬豆瓣top250 报错 AttributeError Requset has no attribute dont_filter 和 meta
- 【译】如何学习机器学习
- PE文件格式”1.9版 完整译文
- 阿里IOT 应用托管部署 (2020/12/02)
- crontab一些常用的语法 每天凌晨1点重启一遍
- 纸鸢|物联网云平台倒闭的原因和案例