欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

彩色图像与灰度图像融合后处理 (一):饱和度调整

程序员文章站 2022-03-22 20:49:28
...
简单的通道替换之后,图像的细节明显得到增强,但是图像的色彩却有些失真。这里通过调节图像的饱和度,使融合后的图像色彩尽量与原RGB图接近。
图像的饱和度调整有很多方法,最简单的就是判断每个象素的R、G、B值是否大于或小于128,大于加上调整值,小于则减去调整值;也可将象素RGB转换为HSV或者HSL,然后调整其S部分,从而达到线性调整图象饱和度的目的。这几种方法效果均不太好,简单的就不说了,利用HSV和HSL调整饱和度,其调节范围很窄,饱和度没达到,难看的色斑却出现了。而Photoshop的饱和度调整调节范围大多了,效果也好多了。

RGB图像:

彩色图像与灰度图像融合后处理 (一):饱和度调整

MONO图像:

彩色图像与灰度图像融合后处理 (一):饱和度调整

一、算法

这里从网上查找了一种,根据RGB图R、G、B三通道的值之间对色彩进行补偿的算法,比较接近photoshop的效果。

%%%% Increment, 饱和度调整增量(-100,100)
Increment=-20/100; 
rgbMax=max(R(i,j),max(G(i,j),B(i,j))); 
rgbMin=min(R(i,j),min(G(i,j),B(i,j))); 
Delta=(rgbMax-rgbMin)/255; 
value=(rgbMax + rgbMin)/255; 
L=value/2; 
if(L<0.5)     
  S=Delta/value; 
else     
  S =Delta/(2 - value); 
end
 
if (Increment>=0)     //如果饱和度增量大于0,    
  if((Increment+S)>=1)       
    alpha=S;    
  else        
    alpha=1-Increment;    
  end    
  alpha=1/alpha-1;    
  R_new(i,j) = R(i,j) +(R(i,j) - L * 255) * alpha;    
  G_new(i,j) = G(i,j) + (G(i,j) - L * 255) *alpha;    
  B_new(i,j) = B(i,j) + (B(i,j) - L * 255) *alpha; 
else     // 饱和度增量小于0    
  alpha=Increment;    
  R_new(i,j) = L*255 + (R(i,j) - L * 255) *(1+alpha);    
  G_new(i,j) = L*255 +(G(i,j) - L * 255) * (1+alpha);    
  B_new(i,j) = L*255 +(B(i,j) - L * 255) * (1+alpha); 
end

二、仿真结果

彩色图像与灰度图像融合后处理 (一):饱和度调整

上图中,左边是将RGB图的Y通道替换成Mono的Y通道之后的图,右边是对左图进行饱和度调整之后的图像。程序中饱和度的调整范围与photoshop一致,是-100~+100,上图的效果是饱和度设置为+45的效果。