色盲图像矫正算法

色盲图像矫正算法

本文章介绍三种,自适应映射算法、几何变化的矫正算法、H分量选择法。
从二色盲简化模型基础上,我们可以知道RGB颜色空间通过某个角度投射到色盲平面上,这样会使原来的颜色被映射成另外一种颜色,最终导致与原来的颜色和其他映射到该位置的颜色分不清。
为了提高颜色的分辨率,那么只要把以上这些会被混淆的颜色投射到不同的颜色就可以了,说到底就是把这些颜色投射到颜色平面上的不同区域。
自适应映射算法
既然要映射到不同区域,考虑到颜色面同侧的颜色距离比较近,差异比较小,而颜色面两边的颜色差异较大,还有图像包含多种颜色,可是这些颜色分布的概率不一样。虽说将同一边的颜色映射到一个区域,也会将同侧的颜色变得非常相似,分辨率会造成降低,但同侧颜色差异本身比较小,加上患者也可以通过原图片来对照识别,所以可以忽略这种降低。
自适应算法是对颜色平面两边的颜色数经行统计,然后根据颜色的分不对映射面进行不同的分割,具体步骤如下。
基本原理:
以红二色盲为例,首先计算出R=G颜色面两侧的颜色数,R>G的颜色数设为f1,而R<=G的颜色数设为f2,然后将R=G的那个颜色面分为S1和S2两块,并且使得f1/f2=S1/S2,然后将R>G的颜色映射到S1区域里,其余的映射到S2区域里,最后保持图像的R和G分量不变,只调整了B分量,这样就能实现R>G和R<=G颜色空间的颜色投射到相应的颜色面区域里。如下图:色盲图像矫正算法
色盲图像矫正算法
其中B’是调整后的B,而R跟G分量都没有变,同理我们对于绿二色盲也有类似的步骤,可以直接套用上面是式子。
对于蓝色色盲,映射的面是G=B面,所以我们可以保持G、B两种分量不变,只改变R分量。
对于G>B的有R’=R*f1/(f1+f2);
对于G<=B的有R’=255*f1/(f1+f2)+R*f2/(f1+f2);其中,R’就是调整后的R。
下面是调整后的图片以及模拟色盲后的图片,以红色色盲为例。
这是原图片
色盲图像矫正算法
原图的红色色盲模拟图
色盲图像矫正算法
自适应算法矫正后的图
色盲图像矫正算法
矫正后的模拟色盲图
色盲图像矫正算法
原图模拟红色盲后可以发现看不见图片钟的牛,只能看见一只鹿,而通过矫正算法后可以较好的区分出牛了。
几何变换映射法
几何变换映射法跟自适应映射法有类似的处理步骤,区别在于几何变换映射法在完成颜色分布统计后进行的划分不一样。
基本原理:
1.类似于自适应映射法,将颜色面一侧的颜色数目与总颜色数目的比设为ratio

色盲图像矫正算法
2.按照比例ratio划分为Rp=Gp颜色线,并在所取的平面上沿着Op-Gp平面方向划线,并定义与颜色线的交点为C,围出M1和M2两个三角区域(实际上是M1M2分别都是三棱柱)
色盲图像矫正算法
3.具体的映射到M1和M2如下,
当R>G时
R’=R*ratio;G’=G*ratio
当R<=G时
R’=R*(1-ratio),G’=G*(1-ratio)
R’和G’是变化后的R分量和G分量。但是这样的压缩办法由于压缩的比例过大,会使很多高频部分的信息丢失,而我们在之前的色盲模型中红色盲投射到R=G面的映射角是arctan(-0.14/0.86),大概是171度,我们可以沿着这一方向划一直线分成两个区域,这样能保留更多的信息。下面是改进后的几何变换映射法
色盲图像矫正算法
具体算法
1.跟原来的一样,计算得到ratio
2.作出上图的辅助线,得到划分的区域M1和M2,其中M1对应R>G的颜色区域,M2是R<=G的颜色区域;
3.分别将颜色面两侧的区域映射到M1和M2,公式如下
当R>G时,映射到M1的有
G’=G*(ratio+tan171*(1-ratio));
当R<=G时,映射到M2
G’=255*(ratio-tan171*ratio)+G*(1-ratio+tan171*ratio);
绿色盲也可以按照同样的算法来进行矫正只是他的偏斜角度变为arctan(-0.33/0.67),而蓝色色盲只需要保持R分量不变,B分量按照角度arctan(-0.14/0.85)变化即可。
下面是矫正的图片
色盲图像矫正算法

矫正后的模拟图片
色盲图像矫正算法

H分量旋转法