• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: Matlab
  • 标签: 颜色迁移  

资源简介

主要实现了彩色图像的颜色迁移技术,这里边主要是基于我网上看到的一部分内容写的。

资源截图

代码片段和文件信息

%%%颜色迁移--color transfer
function swgc=swatchcolortransfer(swgswchwinsizejit)
    %swg--灰度图像矩阵
    %swc--彩色图像矩阵(三页面24位真彩色图像)
    %hwin--滤波窗口的大小
    %sizejit--随机采样点数,一般根据彩色图像的大小取50、100、200等等
    swg=double(swg);
    swc=double(swc);
    sizewin=2*hwin+1;
    
    %彩色图像的颜色空间转换(from RGB space to lab)
    labsw=rgblab(swc0);
    %求均值、方差
    ms=zeros(32);
    ms(11)=mean2(labsw(::1));
    ms(12)=std2(labsw(::1));
    ms(21)=mean2(labsw(::2));
    ms(22)=std2(labsw(::2));
    ms(31)=mean2(labsw(::3));
    ms(32)=std2(labsw(::3));
    
    %数据校正
    uc=mean2(labsw(::1));
    dc=std2(labsw(::1));
    ug=mean2(swg(::1));
    dg=std2(swg(::1));
    if dg~=0
       labsw(::1)=(labsw(::1)-uc).*(dg/dc)+ug; 
    end
    
    %求颜色转移时的匹配矢量
    ucv0=colfilt(labsw(::1)[sizewinsizewin]‘sliding‘@mean);
    dcv0=colfilt(labsw(::1)[sizewinsizewin]‘sliding‘@std);
    ugv0=colfilt(swg(::1)[sizewinsizewin]‘sliding‘@mean);
    dgv0=colfilt(swg(::1)[sizewinsizewin]‘sliding‘@std);
    
    [mc nc]=size(labsw(::1));
    [mg ng]=size(swg(::1));
    ucv=ucv0(1+hwin:mc-hwin1+

评论

共有 条评论

相关资源