Abstract
Matlab做IP是很强,对图像在算法层面有绝对给力的功能,但是对于图像的交互操作不够好。
最好是能够在PhotoShop里面画测试图像,然后在Matlab里设计算法来测试。
本文就是简单介绍一下这两个东西结合起来怎么个用。
这 次 测试的目的是想实现:在ps中画两幅图像,用shape context来对这两幅图像做匹配。
PhotoShop其实也就是提供一个GUI的作用。当然了,PS功能很强大,结合PS的脚本也可以实现很强大的处理功能。
Shape Context代码见[1] 。
1/配置
我的测试环境是:PhotoShop CS3 Extended + MATLAB R2009a。
安装完PS CS3后,安装目录下有一个Matlab目录:
这就是Photoshop Toolbox for MATLAB的目录。
配置方法:在Matlab里把这个目录添加到Path序列中,然后刷新工具箱即可。
配置完成之后,就可以在Matlab的帮助里看到PhotoShop toolbox的帮助项。
Matlab目录里面有一些基本的跟ps交互的函数。这些函数本质上是对PS的脚本做了一个封装。
举个例子psblur.m:
先用pstext构建脚本调用命令,再用psjavascriptu将此命令作为参数调用javascript脚本。所以,鉴于PS脚本的强大,等于是可以实现matlab中对ps的完全操控。
2/用到的几个命令
pslaunch - 打开ps(也可以鼠标打开)
psconfig - 配置图像操作属性
psnewdoc - 在ps中新建图像
psdocnames - 获得ps中所有打开的文件名
pssetactivedoc - 设置活动文件
psgetpixels - 从ps中获取图像的像素
基本就用到了这些命令,很简单,这里,只是把ps作为一个输入的GUI而已。
3/测试流程
这次测试的目的是想实现:在ps中画两幅图像,用shape context来对这两幅图像做匹配。
先把处理的基本单元设置为像素。然后,在Matlab中打开ps,并且新建两幅64x64的图像。
在ps里画图,这里我画了两个简单的轮廓:
然后,在matlab中获取这两幅图像的数据:
我写了一个m文件来对图像进行轮廓检测,并且在轮廓上进行采样。
之后,就可以直接用Shape Context[1] 进行匹配了。
4/结果
PS:
更多相关信息请参考:[1 ,2 ,3 ,4 ,5 ,6 ]。
Referrences
[1]Matching with Shape Contexts,http://www.eecs.berkeley.edu/Research/Projects/CS/vision/shape/sc_digits.html
[2]Photoshop CS3 * Set up MATLAB and Photoshop (Photoshop Extended),http://livedocs.adobe.com/en_US/Photoshop/10.0/WS62AB0C24-121F-401c-9097-ABCE350A075B.html
[3]Photoshop + MATLAB,http://www.mit.edu/~kimo/blog/psmatlab.html
[4]John Nack on Adobe : Photoshop+Matlab=Art,http://blogs.adobe.com/jnack/2007/06/photoshopmatlabart.html
[5] MATLAB Photoshop 自述文件.pdf(PS安装目录/Matlab/中)
[6]Adobe Photoshop CS3 Extended + MATLAB 7.0+,http://www.inthemod.com/bps/?p=136