非常有意义的探索啊,很难得~~~~只是楼主里面的公式过多,我也没有耐心一一认真看,昨晚只是匆匆浏览了一下.只可惜我现在太忙了,项目正是一个迫切要release的阶段.....没时间研究ps了.
下面是很久以前的一个帖子了,里面给出了一些混合模式算法,但是还有几种他们没得出结论.要仅仅通过实验几组数据去推断算法恐怕是很困难的,只有研究方法不断改进,才能促进对算法推导的进展.
这个帖子的结论一定要给出标准算法.就像这个帖子这样.这样结果才一幕了然.尤其是图层的填充不透明度(fill),还有柔光混合模式算法好像是以前从未被明确提出过的.如果楼主的结论是正确的,那将意义重大,算的上很重要的进展.我们必须踩在别人的肩膀上继续前进,不能满足于自己的目前之所见,才能不断进步.
这里:,算法就是图像处理中的核心和根本,ps是建立在图像处理上的,只不过他不可能让用户接触算法这一层,而是用ui界面封装起来的.对于普通的99%以上的ps用户群体来说,他们不会对算法感兴趣,对于他们来讲意义不算大.但是对于图像处理编程的人来说,意义重大.因为对一个软件来说,最重要的包含思想不是编码技术,而是算法.
编码实现仅仅是技术实现上的艺术和难题,而算法往往是某个领域内具有相当造诣的专家才能研究出来的,程序员的责任仅仅是实现.
这是那个帖子链接,里面还有一些用matlab做的图层混合模式的z=f(x,y)曲面.
http://forum.xitek.com/printthread.php?threadid=188713
4. 以下一些模式现已得出公式:
(“可交换”意味着交换层A和层B,结果一样;否则可能不同)
- Darken(变暗):min(a, b) (可交换)
- Lighten(变亮):max(a, b) (可交换)
- Multiply(正片叠底):a * b / 255 (可交换)
- Screen(屏幕): 255 - (255 - a) * (255 - b) / 255 (可交换)
- Overlay(叠加):a <= 128 ? a * b / 128 : 255 - (255 - a) * (255 - b) / 128(不可交换)
- Hard Light(强光):HardLight(a, b) = Overlay(b, a)(不可交换)
- Hard Mix(???):a + b <= 255 ? 0 : 255(可交换)
- Difference(差值):|a - b|(可交换)
- Exclusion(排除):a + b - a * b / 128(可交换)
- Pin Light(点光,针状变亮):b >= 128 ? max(a, (b - 128) * 2 ) : min(a, b * 2 )(不可交换)
- Linear Burn(线性加深):a + b > 255 ? (a + b) % 256 : 0(可交换)
- Linear Dodge(线性减淡):a + b > 255 ? 255 : a + b(可交换)
? Linear Light(线性光):???(不可交换)
? Color Burn(颜色加深):???(?可交换)
? Color Dodge(颜色减淡):???(?可交换)
? Soft Light(柔光):???(?可交换)
? Vivid Light(???):???(?可交换)
(这些公式是Bepro,风中的鹰等同学共同努力的结果)