《Color Transfer Between Images》论文实现

本文介绍了一种基于颜色转移的图像处理算法,详细阐述了从RGB空间到LAB空间的转换过程,包括初始化数据、颜色空间转换、均值和标准差计算等步骤,并最终实现了输入图片颜色与参考图片颜色之间的有效转移。

论文《Color Transfer Between Images》的算法流程是:

 

1.首先InitData();由输入图片和参考图片得到输入图片的rgb向量数组image_sV,同理得到参考图片的rgb向量数组image_tV。

2.调用TransferRGB2LAB(image_sV, height_s,width_s );函数根据论文将输入图片从rgb空间转化到LAB空间,同理将参考图片也从rgb空间转化到LAB空间。

3.通过调用函数GetMeanVector(mean_s, image_sV,height_s, width_s);得到输入图片在LAB空间下的均值和标准差,同理得到参考图片的均值和标准差。

4.利用论文中的减去自身均值再乘上标准差比最后加上参考图片均值的公式得到输入图片最后的LAB值,相应函数为GetFinalLAB();

5.调用函数TransferLAB2RGB( image_sV, height_s,width_s );将输入图片从LAB空间重新转化回到rab空间。

6.调用ApplyChangeOnImage( image_r, image_sV);由最后得到的输入图片的rgb值来生成新的图片结果image_r,效果如下图所示:

输入图片是:


参考图片是:


代码下载地址:http://download.youkuaiyun.com/detail/sunbaigui/3887614

 

 

 

### 使用MATLAB进行图像间颜色转移 为了在MATLAB中实现图像间的颜色传递,可以采用直方图匹配的方法。这种方法通过调整源图像的颜色分布以匹配目标图像的颜色统计特性来完成颜色传输。 #### 方法概述 颜色传递可以通过以下步骤实现: - 将RGB图像转换到Lab色彩空间,在此空间内L表示亮度分量而a,b分别代表两个颜色通道。 - 对于每一个颜色通道独立计算其累积分布函数(CDF),并基于CDF映射原图像素值至新位置从而改变色调而不影响亮度层面上的信息。 - 应用反向变换返回RGB域得到最终处理后的图片[^1]。 #### MATLAB代码实例 下面是一个简单的MATLAB脚本用于执行上述过程中的颜色迁移操作: ```matlab function result = colorTransfer(sourceImage, targetImage) % Convert images from RGB to Lab color space. sourceLab = rgb2lab(sourceImage); targetLab = rgb2lab(targetImage); % Match histograms (transfer colors). matchedLab(:,:,1) = sourceLab(:,:,1); % Keep L channel unchanged. for i=2:3 matchedLab(:,:,i) = histMatch(sourceLab(:,:,i),targetLab(:,:,i)); end % Convert back to RGB color space. result = lab2rgb(matchedLab); end function outputChannel = histMatch(inputChannel,targetChannel) inputHist = imhist(inputChannel); targetHist = imhist(targetChannel); cdfInput = cumsum(inputHist)/max(1e-8,cumsum(inputHist)(end)); cdfTarget = cumsum(targetHist)/max(1e-8,cumsum(targetHist)(end)); mappingTable = interp1(cdfTarget,(0:length(cdfTarget)-1)',cdfInput,'nearest'); outputChannel = uint8(mappingTable(double(inputChannel)+1)); end ``` 这段程序定义了`colorTransfer` 函数接受两张输入图像作为参数——分别是源图像和目的图像,并输出经过颜色传递之后的结果图像。内部调用了辅助函数 `histMatch` 来具体实施直方图匹配算法
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI记忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值