illumination invariant image之恢复到彩色图像

来源:互联网 发布:软件开发报价方案 编辑:程序博客网 时间:2024/05/21 22:37

原文:【Finlayson G D, Drew M S, Lu C. Entropy Minimization for Shadow Removal[J]. International Journal of Computer Vision, 2009, 85(1):35-57.】
【Finlayson G D, Drew M S, Lu C. Intrinsic Images by Entropy Minimization[C]// European Conference on Computer Vision. Springer Berlin Heidelberg, 2004:582-595.】

前面的如何产生一维的invariant image就不再赘述。这篇博客记录一下该论文中对于重建彩色图像的方法的学习。

生成一维invariant image是通过将2-d空间中的点投影至矫正角θ对应的直线上去。直线的方向为e,即e=[cosθ sinxθ]T,则,I=
I = χ1 cos θ + χ2 sinθ。
那么,如下图所示
图像求inv的过程
这个I值实际上等于点(x0,y0)到原点的距离(因为蓝色线为垂直于所有平行线的直线,所以只要平移其至原点即可)。
这边为什么说得到的颜色分布直线与光照无关,是因为对于同一个颜色,由于光照不同得到的点分布的直线,可以将其投影到垂线上,能得到唯一点,这样的话,说明这条直线为光照方向。
得到了1D的invariant image之后,即对于一幅图像,得到了每个颜色在蓝色线上的点到原点的距离。这是一个一维的变量。但是在前面已经求出了角度θ。这样的话就能够通过一个反变换得到蓝色线上每个点的坐标,即得到了2D的invariant image。
这里写图片描述这里写图片描述

3D的invariant image表示:
这里首先要知道,由于在该算法中,首先将三维空间[R,G,B]中的点,通过比值(和log),取到了2D空间,
这里写图片描述如果按照直接log(R/B),log(G/B)的话,变换为U=[1 0;0,1;-1,-1];如果按照几何均值来取的话,u=[2/3 -1/3;-1/3 2/3;-1/3 -1/3]。因此,可以再通过这个U矩阵将上面得到的2D值反变换到3D空间。
这边我之前看的时候,说存在问题是有比值的存在,导致回到3D空间之后也是比值,没有唯一解。这个理解是错误的。在2D空间内得到的值在log下确实是有个通道间的比值,但是,这个比值在通过log的时候可以转化为减,然后再逆变换,是可以解决的,所以再反变换回3D的时候,就不存在比值了,得到的是[logR’,logG’,logB’],这个带’上标的值即是去万阴影的值。当然,图像会因此损失巨大。
不对。重新理一遍。
对于某一个点(R0,G0,B0),首先通过U矩阵,三维空间上的点均投影到平面(log(R/(RGB)1/3),log(G/(RGB)1/3))上,即此时(已把三维空间RGB转为logRGB)变换矩阵U=[2/3 -1/3 -1/3; -1/3 2/3 -1/3]T
这里写图片描述
崩溃。这边的该组内好几篇文章都写得比较乱。我自己做实验,直接有一维的inv恢复到三维的,效果也不好,产生的是视觉效果不好的伪彩色图像。

关于重建彩色图像,该组的主要思想是,通过比较原图(这边有做过mean-shift的预处理,用于去除噪声,得到更好更真实的图像边缘,通过压缩噪声和高频率出现的纹理)和得到的invariant image(一维的或者三维的,都是无阴影的)的边缘信息,获取由阴影造成的边缘,然后对这些边缘进行处理,使用双边滤波。

大概步骤如下(on the removal of shadows from images文中):

  1. 首先对于原图取log,在log空间观察数据。对于每一个通道,都可以求出关于坐标x和y的导数,即梯度,也就对应于图像的边缘信息;
  2. 有上面得到的一维或三维invariant image,可以得到边缘的mask,这里的边缘已经不包括由于阴影的原因造成的了;
  3. 比较1和2,log导数图(1)中存在的,而(2)中不存在的边缘点的梯度置为0,表示该点的灰度值没有发生跳变,即不存在边缘信息,剩下的边缘均是由于材料物质的变化造成的;
  4. 整合边缘信息,重构彩色图像。这里利用了log图像的拉普拉斯算子(暂时不懂)。
    对于(3)中得到的结果,即上面去除边缘的log梯度图像再求梯度,得到log图像的拉普拉斯算子[1]。这些操作貌似就等价于对无阴影影响的log图像进行拉普拉斯操作[2],然后再对其进行逆变换,就可以得到无阴影的图像了(这边用傅里叶变换啥的解决的)。两个拉普拉斯操作貌似不一样,第一个是跟前面得到的阴影边缘map有关系。

上述为主要步骤,但是由于图像边缘拉普拉斯算子以及阴影边缘实际上是有宽度的,因此采用了一些方法对上述步骤进行优化。

阅读全文
0 0