一种新的颜色相似度算法的具体实现(作者:郑斯彬,C#2005)

本文介绍了一种用于比对像素色彩相似度的算法,通过计算亮度、色调和色彩浓度的差异,确定两种颜色的相似程度。算法实测效果理想,适用于图片处理等领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久之前一直被两个像素点如何正确比对色彩相似度困扰,百度的方案都不太理想,直到自己动手把算法专研出来,实测效果还是非常理想的。

 int 最终差异值 = Math.Max(亮度差异, Math.Max(色调差异值, 色彩浓度差异));   //这句就是核心的思想,取三者最大值就OK了

根据算法,测试得到最终差异值【0-21】一般可以视为两个颜色相似,【21-42】有丁点相似,【42-64】基本不相似色。接近或大于85则是绝对的不相似色彩。例如(255,128.0)和(255,0.0)最终差异=42.5,纯黄色和纯红色最终差异=85,红色和青色最终差异=255(反色都是255)

 

相似的比较的方案一:测试黑色和纯红色返回255,纯红色和纯青色返回512,值越小越相似,经跟测试看起来也不错。

  private int 两点相似度(rgbClassRef a, rgbClassRef b) //传入两个像素点对象
        {//取值范围【0-512】
            int 亮度差异 = Math.Abs(a.X - b.X);//取得亮度差异
            int 色彩差异 = 0;
            if (a.SPname == b.SPname) 色彩差异 += Math.Abs(a.SP - b.SP) ; else 色彩差异 += (int)(a.SP + b.SP); //红绿蓝之间,同色分量相减,异色分量相加
            if (a.ZHname == b.ZHname) 色彩差异 += Math.Abs(a.ZH - b.ZH) ; else 色彩差异 +

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值