最小二乘法求色彩还原矩阵

来源:互联网 发布:ubuntu 安装mysql5.7 编辑:程序博客网 时间:2024/04/26 13:43


int calc_ccm(double *r, double *g, double *b, double *R, double *G, double *B, int num, double *ccm){    double sum_rr=0, sum_gg=0, sum_bb=0, sum_rg=0, sum_gb=0, sum_rb=0;    double sum_rR=0, sum_gR=0, sum_bR=0, sum_rG=0, sum_gG=0, sum_bG=0, sum_rB=0, sum_gB=0, sum_bB=0;    int i, j;        for (i=0; i<num; i++)    {        sum_rr += r[i]*r[i];        sum_gg += g[i]*g[i];        sum_bb += b[i]*b[i];        sum_rg += r[i]*g[i];        sum_gb += g[i]*b[i];        sum_rb += r[i]*b[i];        sum_rR += r[i]*R[i];        sum_gR += g[i]*R[i];        sum_bR += b[i]*R[i];        sum_rG += r[i]*G[i];        sum_gG += g[i]*G[i];        sum_bG += b[i]*G[i];        sum_rB += r[i]*B[i];        sum_gB += g[i]*B[i];        sum_bB += b[i]*B[i];    }    double sum_r2b2_rb2 = sum_rr*sum_bb - sum_rb*sum_rb;    double sum_r2g2_rg2 = sum_rr*sum_gg - sum_rg*sum_rg;    double sum_g2b2_gb2 = sum_gg*sum_bb - sum_gb*sum_gb;    double sum_rgrb_r2gb = sum_rg*sum_rb - sum_rr*sum_gb;    double sum_rggb_g2rb = sum_rg*sum_gb - sum_gg*sum_rb;    double sum_gbrb_b2rg = sum_gb*sum_rb - sum_bb*sum_rg;    double q = sum_rr*sum_gg*sum_bb - sum_rr*sum_gb*sum_gb - sum_gg*sum_rb*sum_rb        - sum_bb*sum_rg*sum_rg + 2*sum_rg*sum_rb*sum_gb;    ccm[0] = (sum_g2b2_gb2*sum_rR + sum_gbrb_b2rg*sum_gR + sum_rggb_g2rb*sum_bR)/q;    ccm[1] = (sum_gbrb_b2rg*sum_rR + sum_r2b2_rb2*sum_gR + sum_rgrb_r2gb*sum_bR)/q;    ccm[2] = (sum_rggb_g2rb*sum_rR + sum_rgrb_r2gb*sum_gR + sum_r2g2_rg2*sum_bR)/q;    ccm[3] = (sum_g2b2_gb2*sum_rG + sum_gbrb_b2rg*sum_gG + sum_rggb_g2rb*sum_bG)/q;    ccm[4] = (sum_gbrb_b2rg*sum_rG + sum_r2b2_rb2*sum_gG + sum_rgrb_r2gb*sum_bG)/q;    ccm[5] = (sum_rggb_g2rb*sum_rG + sum_rgrb_r2gb*sum_gG + sum_r2g2_rg2*sum_bG)/q;    ccm[6] = (sum_g2b2_gb2*sum_rB + sum_gbrb_b2rg*sum_gB + sum_rggb_g2rb*sum_bB)/q;    ccm[7] = (sum_gbrb_b2rg*sum_rB + sum_r2b2_rb2*sum_gB + sum_rgrb_r2gb*sum_bB)/q;    ccm[8] = (sum_rggb_g2rb*sum_rB + sum_rgrb_r2gb*sum_gB + sum_r2g2_rg2*sum_bB)/q;    //normalize    for (i=0; i<3; i++)    {        double scale = 0;        for (j=0; j<3; j++)        {            scale += ccm[i*3+j];        }        for (j=0; j<3; j++)        {            ccm[i*3+j] /= scale;        }    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗喉咙卡东西怎么办 幼犬吃自己的屎怎么办 老鼠躲在冰箱底怎么办 法斗的耳朵不立怎么办 法牛耳朵不起来怎么办 马犬耳朵不立怎么办 狼青幼犬不吃食怎么办 狼青拉稀不吃食怎么办 币交所的币怎么办 比特币不能提现怎么办 皮肤暗沉毛孔粗大怎么办 脸过敏干痒怎么办偏方 鼻子不通气怎么办特效方法 鼻子两边沟很深怎么办 竖叉跨跟不挨地怎么办 我爱的人不爱我怎么办 cf战队申诉没用怎么办 5岁儿童入睡困难怎么办 4月婴儿入睡困难怎么办 3岁宝宝入睡困难怎么办 4岁儿童入睡困难怎么办 失眠了怎么办怎么尽快入睡 产后7天小便困难怎么办 手术后尿不出来怎么办 cf排位永久禁赛怎么办 cf加载到85闪退怎么办 穿越火线太卡了怎么办 玩穿越火线卡顿怎么办 cf狙击镜全屏了怎么办 usb驱动被卸载了怎么办 穿越火线号封了怎么办 对方手机拉黑我怎么办 wifi被别人拉黑怎么办 微信彼此拉黑了怎么办 不让人随便拉群怎么办 qq加好友被限制怎么办 微信不同意进群怎么办 cf战队解散不了怎么办 忘记cf战队密码怎么办 cf战队密码忘记怎么办 cf武器仓库满了怎么办