数字图像处理 色差计算

方法一:

计算两个像素点的rgb的两个三维向量的夹角:

l1 = Math.sqrt(r1 * r1 + g1 * g1 + b1 * b1);   
l2 = Math.sqrt(r2 * r2 + g2 * g2 + b2 * b2);
cos(a) = (r1 * r2 + g1 * g2 + b1 * b2) / (l1 * l2); 

方法二:

转HSI,计算两个三维向量距离:

Math.sqrt((r1 - r2) * (r1 - r2) + (g1 - g2) * (g1 - g2) + (b1 - b2) * (b1 - b2))

即颜色空间的距离。距离越大,差距就越大

方法三:

LAB颜色空间,两个颜色之见的色差:ΔE=( ΔL^2 + ΔA^2 + ΔB^2 ) ^ (1/2)

ΔE 表示色差,ΔL/ΔA/Δb分别表示两个颜色之间在不同分量的差值。为了简化计算在RGB空间上通过公式计算出加权的欧式距离。

def ColourDistance(rgb_1, rgb_2):
     R_1,G_1,B_1 = rgb_1
     R_2,G_2,B_2 = rgb_2
     rmean = (R_1 +R_2 ) / 2
     R = R_1 - R_2
     G = G_1 -G_2
     B = B_1 - B_2
     return math.sqrt((2+rmean/256)*(R**2)+4*(G**2)+(2+(255-rmean)/256)*(B**2))
上一篇:PAT basic 1034 有理数四则运算 (20 分) C++


下一篇:Pytorch机器学习(八)—— YOLOV5中NMS非极大值抑制与DIOU-NMS等改进