Atitit blend mode COLOR_DODGE 混合模式  “颜色减淡”模式

1.1. 混合模式是图像处理技术中的一个技术名词1

1.2. 目录1

1.3. 颜色减淡COLOR_DODGE的公式如下2

1.4. 详细解释及原理3

1.5. 使用javafx 类库实现图像叠加混合3

1.6. 代码实现 /AtiPlatf_cms/src/com/attilax/img/ImageBlendFilter.java4

1.1. 混合模式是图像处理技术中的一个技术名词

,不仅用于广泛使用的Photoshop中,也应用于AfterEffect、llustrator 、 Dreamweaver、 Fireworks等软件。主要功效是可以用不同的方法将对象颜色与底层对象的颜色混合。当您将一种混合模式应用于某一对象时,在此对象的图层或组下方的任何对象上都可看到混合模式的效果。

1.2. 目录

00001. 1 详细解释及原理

00002. 2 通常

00003. ▪ 正常模式(Normal)

00004. ▪ 溶解模式(Dissolve)

00005. ▪ 背后模式(Behind)

00006. ▪ 清除模式(Clear)

00007. 3 变暗系

00008. ▪ 变暗模式(Darken)

00009. ▪ 正片叠底(Multiply)

00010. ▪ 颜色加深模式(Color Burn)

00011. ▪ 线性加深模式(Linear Burn)

00001. ▪ 深色模式(Darker Color)

00002. 4 变亮系

00003. ▪ 增加模式(Add)

00004. ▪ 变亮模式(Lighten)

00005. ▪ 滤色模式(Screen)

00006. ▪ 颜色减淡模式(Color Dodge)

00007. ▪ 线性减淡模式(Linear Dodge)

00008. ▪ 浅色模式(Lighter Color)

00009. 5 饱和度系

00010. ▪ 叠加模式(Overlay)

00001. ▪ 柔光模式(Soft Light)

00002. ▪ 强光模式(Hard Light)

00003. ▪ 亮光模式(Vivid Light)

00004. ▪ 线性光模式(Linear Light)

00005. ▪ 点光模式(Pin Light)

00006. ▪ 实色混合模式(Hard Mix)

00007. 6 差集系

00008. ▪ 差值模式(Difference)

00001. ▪ 排除模式(Exclusion)

00002. ▪ 减去模式(Subtract)

00003. ▪ 划分模式(Divide)

00004. 7 颜色系

00005. ▪ 色相模式(Hue)

00006. ▪ 饱和度模式(Saturation)

00007. ▪ 颜色模式(Color)

00008. ▪ 亮度模式(Luminosity)

1.3. 颜色减淡COLOR_DODGE的公式如下

P(x,y) = Pb(x,y) + (Pb(x,y)* Pc(x,y)) / (256 - Pc(x,y));

C =MIN( A +(A×B)/(255-B),255)

(255-B)就是得到b的反相

既然知道了算法,现在开始代码:

A为原图gray图, b为上层图片,即是灰度图反相底片高斯模糊后的图片

C的最大值为255,如果超出要截取到255,否则会脸部变黑色。。如果b是255,则除磷错误,需要直接返回255即可

1.4. 详细解释及原理

编辑

以画笔工具为例说明其原理。

任意打开一幅图,选择画笔工具,选择合适的笔刷。设定不同的模式在图像上绘画,即可得到不同的效果。

为了叙述方便,暂且将原图像中的颜色称之为“底色A”画笔的颜色为“绘图色B”,将通过混合模式得到的最后颜色称为“最终色

“颜色减淡”模式的公式是:基色+(基色*混合色)/(255-混合色)= 结果色,其中(255-混合色)当于混合色的反相。

1、若混合色为0(黑色),则由于(基色*混合色)这项为0,则结果色等于基色,图像不发生变化;基混合色为128(50%的黑),情况分为两种:

(1)当基色小于128时,结果色等于2基色,由于这个数值小于255所以呈某种阶调的灰。

(2)而当基色大于128(50%的黑)时,结果色等于2基色,这个值是大于255值,255(白色);

2、若混合色为255(白色),则混合色的反相为0,无论基色为何值,结果色都大于255,归为255(白色)。

1.5. 使用javafx 类库实现图像叠加混合

public static BufferedImage blend_COLOR_DODGE(String topImg,

String lowImg) {

javafx.scene.image.Image topimg_jfxfmt = toImg(topImg);

javafx.scene.image.Image lowImg_jfxFmt = toImg(lowImg);

Blend blend = new Blend(BlendMode.COLOR_DODGE);

blend.setTopInput(new ImageInput(topimg_jfxfmt));

blend.setBottomInput(new ImageInput(lowImg_jfxFmt));

Group grp = new Group();

grp.setEffect(blend);

//WritableImage img = new WritableImage((int) topimg_jfxfmt.getWidth(),

//(int) topimg_jfxfmt.getHeight());

// scene.snapshot(img);

WritableImage img2 = grp.snapshot(new SnapshotParameters(), null);

//StackPane root = javafxUtil.getStackPaneFrmImg(img2);

BufferedImage copy2 =  SwingFXUtils.fromFXImage(img2, null);

copy2 = imgx.Remove_alpha_channel(copy2);

return copy2;

}

1.6. 代码实现 /AtiPlatf_cms/src/com/attilax/img/ImageBlendFilter.java

BufferedImage copy2=new ImageBlendFilter().setBlendMode(ImageBlendFilter.COLOR_DODGE)

.setSecondImage(Gaussiancopy ).filter( gray_copy     , null);

Guass avbove on gray pic..gray pic is blow lev..

// 暂且将原图像中的颜色称之为“底色A”画笔的颜色为“绘图色B”,将

//base ori is a, push pen is b

//yaosi fangfe ,zo div zeor ex..

//  ,公式为:

//C =MIN( A +(A×B)/(255-B),255)

/**

* b = guassBlur[index];

a = gray[index];

。颜色减淡的算法是这样的:C =MIN( A +(A×B)/(255-B),255),其中C为混合结果,A为源像素点,B为目标像素点。

* @param b

* @param a

* @return  其中(255-混合色)当于混合色的反相。

*/

private int modeCOLOR_DODGE(int a, int b) {

if (b >= 255)

return 255;

//if (b < 128)

//System.out.println("Dbg");

if(a<128)

System.out.println("dg");

//try {

float rzt = (float)a + (float)(a * b) /(float) (255 - b);

int clr = (int) rzt;

if (clr > 255)

return 255;

return clr;

// MIN(clr,255);

}

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

Atitit blend mode COLOR_DODGE 混合模式  “颜色减淡”模式的更多相关文章

  1. Atitit 颜色平均值cloor grb hsv模式的区别对比

    Atitit 颜色平均值cloor grb hsv模式的区别对比 使用hsv模式平均后会变得更加的靓丽一些..2 public class imgT { public static void main ...

  2. Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx

    Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx 1. 安装的原理,主要是解压,复制,设置三大步1 2. 目前我们常见的三大种安装模式,二进制模式与源码安装模 ...

  3. Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend

    Atitit 混合叠加俩张图片的处理 图像处理解决方案 javafx blend 1.1. Jhlabs 好像有了可以叠加算法,但是没有找到doc1 1.2. 自己算法叠加1 1.3. 使用javaf ...

  4. JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)

    什么是面向对象?面向对象是一种思想. 面向对象可以把程序中的关键模块都视为对象, 而模块拥有属性及方法. 这样如果我们把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.   工厂 ...

  5. Atitti 图像处理 图像混合 图像叠加 blend 原理与实现

    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不 ...

  6. 经典CSS颜色混合模式

    转自:http://www.webhek.com/css-blend-mode/ 注意:只有使用最新版的谷歌浏览器.火狐浏览器,才能正确的显示本文中的演示. Photoshop里最没有用处的一种功能— ...

  7. Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx

    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...

  8. PS图层混合模式实例详解

          PS中的很多概念都和Core Graphics中的概念相通,比如蒙版.路径.裁剪.混合模式等等.如果你对Core Graphics中的混合模式不太理解,阅读本篇文章能让你对Core Gra ...

  9. PS图层混合算法之一(不透明度,正片叠底,颜色加深,颜色减淡)

    下列公式中,A代表了上面图层像素的色彩值(A=像素值/255),B代表下面图层像素的色彩值(B=像素值/255),C代表了混合像素的色彩值(真实的结果像素值应该为255*C).该公式也应用于层蒙板. ...

随机推荐

  1. Linux 忘记root登录密码解决方法

    很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 3  ...

  2. 除法取模练习(51nod 1119 & 1013 )

    题目:1119 机器人走方格 V2 思路:求C(m+n-2,n-1) % 10^9 +7       (2<=m,n<= 1000000) 在求组合数时,一般都通过双重for循环c[i][ ...

  3. 通过json数据进行传递调用

    最近在弄andriod的程序,需要调用web服务器上的数据,服务采用C#写的,并部署在iis服务器上.我们可以像.NET那样调用服务那,利用andriod库自带的HttpPost和HttpGet类来调 ...

  4. <转>boost 1.53 and STLPort build binary for windows

      1.编译STLPort:    1.1 .开始菜单运行vs2008的命令行工具    1.2.进入E:\00.CODE.SDK\STLport-5.2.1\    1.2.运行configure ...

  5. vs.net2008工具栏上找不到debug/release选项

    使用vs.net多年,以前不时会用到release发布,近几年几乎不用的.近来生成时感觉有些项目使用了release选项,因为生成的dll的位置变了.于是想调整回bebug,发现vs.net2008的 ...

  6. android 中IntentService的作用及使用

    IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同 ...

  7. vb---输入模式之文本输入与二进制输入区别

    使用 VB6 MSCOMM 控件 进行二进制收发 发布时间:2012-01-10 12:12:01 技术类别:嵌入式     MSCOMM 控件是用于串口通信的,使用方便.在VB中,这个串口控件缺省是 ...

  8. 初探Lambda表达式

    简单例子 Expression<Func<; 了解Net方法,没有比IL来得更加容易.反编译IL代码如下(截取部分显示) [] <<int32, bool>> ex ...

  9. [Java基础]java中this和super

    一.this关键字 1.this概念 (参考:http://www.cnblogs.com/xdp-gacl/p/3636071.html)   this是一个引用,它指向自身的这个对象,它的内存分析 ...

  10. oracle数据库导入导出

    简单记录下数据泵导出导入expdp .impdp 和 普通导出导入 exp.imp 一.数据泵导出数据库(按用户)步骤: 1.以oracle用户登录oracle所在服务器,创建数据库备份文件目录 &g ...