工作中很少使用Photoshop,哪怕生活中用来修图都很少。现在写这个也是想后边好好学一下Photoshop,把以前是懂非懂的地方彻底弄明白,正好会一点点Matlab和Excel,准备用两个软件实现Ps中混合效果。使用Matlab需要注意的是图像在软件中的存储(Unit8)与计算格式(Double)的区别,不然计算很容易溢出,使用Excel的时候只是当单元格样式太多的时候进行不下去(网上说上限64000)。下边的所有讨论都已RGB为例(软件适合矩阵运算),就不讨论WB和灰度图了。
下边的例子采用的两张图像:A 金门大桥 300像素×453像素(图 1);B 湿地公园 300像素×453像素(图 2);与PS混合模式A B位置相同,A为基色(Base color)位于底层,B为混合色(Mixed color)位于面层,假设C为A、B图层指定混合模式的结果色,混合模式公式见图 3。
![de9ec1ceeb06f9ec19ccf589f5af4bf2.png](https://img-blog.csdnimg.cn/img_convert/de9ec1ceeb06f9ec19ccf589f5af4bf2.png)
![4bb1fbda0d60e9cfba03488fa716b38c.png](https://img-blog.csdnimg.cn/img_convert/4bb1fbda0d60e9cfba03488fa716b38c.png)
![53b942a7a622d33708126d2b22fbec3e.png](https://img-blog.csdnimg.cn/img_convert/53b942a7a622d33708126d2b22fbec3e.png)
![53ca7be57388b629b6f0b7d38d208cab.png](https://img-blog.csdnimg.cn/img_convert/53ca7be57388b629b6f0b7d38d208cab.png)
将A、B两图层离散为2个M×N×3的三位维数组A[M×N×3]与B[M×N×3],其中M、N分别为高度与宽度方向上的像素点个数。三页数组分别记录RGB三个通道值。混合方法是取A层任意一个像素点A(m,n)与B层同一位置的像素B(m,n)进行数学运算(m、n为像素点在矩阵中行列位置),其对应RGB值分别为A[(m,n,1), (m,n,2), (m,n,3)]和B[(m,n,1), (m,n,2), (m,n,3)],同一位置两个点的三个通道按照混合公式单独对应计算得到对应点结果色Cm,n的值C[(m,n,1), (m,n,2), (m,n,3)]。这里直接给出根据混合模式计算结果,并与Ps结果对比,完全一致,这里特别提一下,Matlab与Ps图层顺序严格一致,此外这里不讨论每种混合模式特性与具体用途,全部文件可在我的百度文库下载。变暗组结果:
![93b522d7329abf3918c5d4ff71c7dfc4.png](https://img-blog.csdnimg.cn/img_convert/93b522d7329abf3918c5d4ff71c7dfc4.png)
![f120f4d61cde2f8777f0bbefc56a5970.png](https://img-blog.csdnimg.cn/img_convert/f120f4d61cde2f8777f0bbefc56a5970.png)
变亮组结果:
![7e1ce743533ae5054cb349cb946063d4.png](https://img-blog.csdnimg.cn/img_convert/7e1ce743533ae5054cb349cb946063d4.png)
![50d322138d642bab40982c6d25c01c17.png](https://img-blog.csdnimg.cn/img_convert/50d322138d642bab40982c6d25c01c17.png)
对比组结果:
![5f0bfb2b0498cd2bb506cf206e0e4604.png](https://img-blog.csdnimg.cn/img_convert/5f0bfb2b0498cd2bb506cf206e0e4604.png)
![2303950ac2d1d04cdb9d05a2375fc49c.png](https://img-blog.csdnimg.cn/img_convert/2303950ac2d1d04cdb9d05a2375fc49c.png)
给出的matlab代码也随便计算了一下AB交换位置后的结果,主要是网上有教程将AB做反了,还获得了意想不到效果或者说工具。
此外,Matlab也不是常用的工具, Excel也可以做矩阵运算啊(还用不上Excel矩阵运算),也可以实现Ps混合效果。再吐槽一个,很多年前看到一个日本老人用Excel作画,一画还十几年,一个一个像素点(单元格)去做,和冷军一个是数字信号一个是模拟信号啊。言归正传,Excel其实更好理解,A、B每个图层分别采用3个工作表记录三个通道颜色,6个工作表即可完成记录,生成图层3个对应通道,再用VBA在对应位置对单元格进行填充,就完成了日本老人的爱好了。简单做了反相和变亮两组打成JPG格式的如下,有点不好的是对于图像大了,Excel格式样式总数收到限制,某些混合模式不能全部填充出来。
![cd8aedeb858235518d2bd74e94e425d6.png](https://img-blog.csdnimg.cn/img_convert/cd8aedeb858235518d2bd74e94e425d6.png)
![5a41780438e20a5bb10e6266117e4171.png](https://img-blog.csdnimg.cn/img_convert/5a41780438e20a5bb10e6266117e4171.png)
百度网盘
提取码:s7af
图 11 反相 | 图 12 变亮 |