颜色迁移之三——Welsh经典算法

Welsh算法基于Reinhard的色彩迁移原理,提出了一种灰度图像彩色化的方法。通过亮度匹配和重映射,结合像素亮度和邻域标准差计算权重,找到最佳匹配点进行色彩迁移。尽管有效,但算法效率较低,对亮度一致性要求高。
摘要由CSDN通过智能技术生成

Welsh等人在Reinhard等人的彩色图像间色彩迁移算法的基础上,提出了灰度图像彩色化的思想,并提出了相应的算法。该算法主要利用查找匹配像素来实现灰度图像的色彩迁移,因为灰度图像只有亮度信息,所以该算法主要通过像素的亮度值匹配,来实现灰度图像的自动彩色化。

具体步骤如下:

(1)将参考图像和灰度图像分别由RGB空间转换到lαβ色彩空间。

(2)根据灰度图像的亮度及标准差,对参考图像进行亮度重映射。

由于参考图像和灰度图像的直方图取值不一定在同一范围,那么如果将一幅亮度值很低的参考图像与一幅亮度值很高的目标图像的直方图进行对比将会出现较大的误差。因此,需要对参考图像进行亮度重映射:

L = (nl’ / nl)* (l – ml) + ml’

其中,l是源图像l通道的数据,L是变换后得到新的源图像l通道的值,ml和ml’ 分别是源图像和着色图像的l通道的均值,nl和nl’表示它们的l通道标准方差。

(3)从参考图像中随机选取一批样本点,将像素点的亮度和邻域范围内亮度的标准差的线性组合值作为权值,计算公式如下:

W = l/2 + σ/2

其中,w为权值,l为像素点的亮度值,σ为该像素点周围某个邻域内亮度值的标准差。关于邻域的大小,Welsh指出一般取5X5,对个别图像取更大的邻域效果会更好。

(4)按行扫描灰度图像,对于每个像素点,由公式计算其权值,并在参考图像的样本点中找到一个最接近的样本点,即最佳匹配点,将匹配点的仅和口通道的值赋给灰度图像的对应像素点,从而实现色彩的传递。

(5)将参考图像和灰度图像从lαβ空间转换到RGB空间。

                                     

图 welsh效果图

Welsh等人的算法能有效地实现灰度图像的着色,但仍存在一些不足之处。首先,最佳匹配样本点的查找过程所花费时间较长,从而降低了算法的效率;其次,算法仅利用亮度和标准差来进行最佳匹配,对亮度与颜色对应的一致性要求很高。

代码在下面,执行起来花费时间较长,测试时请做好心理准备~~~

void C***View::OnMenuWelsh() //Welsh灰度图像迁移算法
{
	int x,y,r,t;
	for(x=0;x<m_bmp.lWidth;x++)
	   for(y=0;y<m_bmp.lHeight;y++)
	   {
		    //Luminance Remapping:使得颜色图像的l分量(等同于灰度分量)与形状图像保持一致
			Carray_L[y][x]=(SsigmaL/CsigmaL)*(Carray_L[y][x]-CavgL)+SavgL;			
	   }

    for(t=0;t<m_bmp.lWidth;t++)
		for(r=0;r<m_bmp.lHeight;r++)
	   {
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值