在冈萨雷斯的那本《数字图像处理》中提到了一种神奇的变换:直方图匹配变换(Histogram Matching), 输入两幅图A和B,A和B的直方图不同,直方图匹配变换是这样的一个变换s = F(r), 使得变换之后,A的直方图和B的直方图一样。也就是它们的颜色分布变成一样。
比如下面两幅图:
一个沙漠,一个海滩,它们的RGB直方图显然是不一样的。
但是执行直方图匹配变换后,沙漠那张图就变成这样了
和海滩那张图的直方图比一下,会发现上图的直方图与之几乎是一样的。沙漠图也就带上了海滩的味道。 这个变换的神奇之处在于,假设海滩那种图中的每个像素点都是可以自由移动的,在经过某次神奇的移动之后,海滩变成了沙漠,但是他们视觉上的色彩效果是一致的,不同的是像素点在不同的位置所造成的结构上的差异。
细看之后,海滩化后的沙漠怎么还有一个地方是沙子的颜色呢?其实是海滩上的沙子移过来的。当然,这个变换其实是近似的,主要是因为其中用到了一个变换的反变换,而该变换并不是双射,所以其反变换是近似的,这个也是代码中比较复杂的地方。详细的算法细节可以参考冈萨雷斯的那本数字图像处理,