实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP

Real-time Contrast Preserving Decolorization实时对比度保留去色算法(matlab)——RTCP

1、简单介绍
将彩色图像转换为灰度图像是数字打印以及单通道图像和视频处理的关键步骤。论文的思想是尽量保持原始图像的对比度同时达到去色的效果。
在matlab中是通过rgb2gray函数将图像转换为灰度图像。gray=R0.299+G0.587+B*0.114是一种比较经典的灰度转换公式,结果如下。
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第1张图片
原图
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第2张图片
matlab中自带函数rgb2gray的结果
可以发现经过rgb2gray函数转换过的图像对比度丢失,无法区分颜色。
香港大学研究人员Cewu Lu Li Xu Jiaya Jia提出了一种对比度保留的灰度转换算法,达到不错的效果。
2、Real-time Contrast Preserving Decolorization论文思想
论文是在前人的方法上进行的改进,目的都是为了优化下面的能量函数来估计像素的灰度值。

在这里插入图片描述
其中gx,gy为优化后的图像灰度值,δx,y 为x,y两点的对比度,由Lab空间的欧式距离来确定。
在这里插入图片描述
从上面优化的能量函数来看目的就是为了优化转换后的每一个像素点灰度值差值Δgx,y和对比度的差值之和。根据这个思想作者进一步改写目标函数。
在这里插入图片描述
其中g是通过rgb三通道线性组合而来的。
在这里插入图片描述
其中wr,wg,wb系数满足下面约束条件,使得目标函数E(g)达到最小值:

在这里插入图片描述
3、论文的实现结果
原图
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第3张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第4张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第5张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第6张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第7张图片
MATLAB中的rgb2gray(gray=R0.299+G0.587+B*0.114)函数灰度转换
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第8张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第9张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第10张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第11张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第12张图片
论文结果实现的去色效果
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第13张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第14张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第15张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第16张图片
实时对比度保留去色算法Real-time Contrast Preserving Decolorization(matlab)——RTCP_第17张图片
4、相关matlab代码
其中优化满足约束条件的有无限种;论文使用的参数只是[0,1]之间每隔0.1的值,总共有66种。

function W= w()
W = [   0, 0, 1.0000
        0, 0.1000, 0.9000
        0, 0.2000, 0.8000
        0, 0.3000, 0.7000
        0, 0.4000, 0.6000
        0, 0.5000, 0.5000
        0, 0.6000, 0.4000
        0, 0.7000, 0.3000
        0, 0.8000, 0.2000
        0, 0.9000, 0.1000
        0, 1.0000, 0
        0.1000, 0, 0.9000
        0.1000, 0.1000, 0.8000
        0.1000, 0.2000, 0.7000
        0.1000, 0.3000, 0.6000
        0.1000, 0.4000, 0.5000
        0.1000, 0.5000, 0.4000
        0.1000, 0.6000, 0.3000
        0.1000, 0.7000, 0.2000
        0.1000, 0.8000, 0.1000
        0.1000, 0.9000, 0
        0.2000, 0, 0.8000
        0.2000, 0.1000, 0.7000
        0.2000, 0.2000, 0.6000
        0.2000, 0.3000, 0.5000
        0.2000, 0.4000, 0.4000
        0.2000, 0.5000, 0.3000
        0.2000, 0.6000, 0.2000
        0.2000, 0.7000, 0.1000
        0.2000, 0.8000, 0
        0.3000, 0, 0.7000
        0.3000, 0.1000, 0.6000
        0.3000, 0.2000, 0.5000
        0.3000, 0.3000, 0.4000
        0.3000, 0.4000, 0.3000
        0.3000, 0.5000, 0.2000
        0.3000, 0.6000, 0.1000
        0.3000, 0.7000, 0.0000
        0.4000, 0, 0.6000
        0.4000, 0.1000, 0.5000
        0.4000, 0.2000, 0.4000
        0.4000, 0.3000, 0.3000
        0.4000, 0.4000, 0.2000
        0.4000, 0.5000, 0.1000
        0.4000, 0.6000, 0.0000
        0.5000, 0, 0.5000
        0.5000, 0.1000, 0.4000
        0.5000, 0.2000, 0.3000
        0.5000, 0.3000, 0.2000
        0.5000, 0.4000, 0.1000
        0.5000, 0.5000, 0
        0.6000, 0, 0.4000
        0.6000, 0.1000, 0.3000
        0.6000, 0.2000, 0.2000
        0.6000, 0.3000, 0.1000
        0.6000, 0.4000, 0.0000
        0.7000, 0, 0.3000
        0.7000, 0.1000, 0.2000
        0.7000, 0.2000, 0.1000
        0.7000, 0.3000, 0.0000
        0.8000, 0, 0.2000
        0.8000, 0.1000, 0.1000
        0.8000, 0.2000, 0.0000
        0.9000, 0, 0.1000
        0.9000, 0.1000, 0.0000
        1.0000, 0, 0];
end
function  img  = rtcprgb2gray(im)
%%  Proprocessing 
[n,m,ch] = size(im); 
sigma = 0.05;
W = w();
%%  Global and Local Contrast Computing
ims = imresize(im, round(64/sqrt(n*m)*[n,m]),'nearest');
R = ims(:,:,1);G = ims(:,:,2);B = ims(:,:,3);
imV = [R(:),G(:),B(:)];
t1 = randperm(size(imV,1));
Pg = [imV - imV(t1,:)];
ims = imresize(ims, 0.5 ,'nearest');
Rx = ims(:,1:end-1,1) - ims(:,2:end,1);
Gx = ims(:,1:end-1,2) - ims(:,2:end,2);
Bx = ims(:,1:end-1,3) - ims(:,2:end,3);
Ry = ims(1:end-1,:,1) - ims(2:end,:,1);
Gy = ims(1:end-1,:,2) - ims(2:end,:,2);
By = ims(1:end-1,:,3) - ims(2:end,:,3);
Pl = [[Rx(:),Gx(:),Bx(:)];[Ry(:),Gy(:),By(:)]];
P = [Pg;Pl ]; 
det = sqrt(sum(P.^2,2))/1.41  ;
P( (det < 0.05),:) = []; det( (det < 0.05)) = [];
detM =  repmat(det,[1,size(W,1)]); L = P*W'; 
%% Energy optimization
U = log(exp(- (L + detM ).^2/sigma.^2) + exp(- (L- detM).^2/sigma.^2));
Es = mean(U); 
%% Output
[NULLval,bw] = max(Es); 
img = imlincomb(W(bw,1),im(:,:,1) , W(bw,2),im(:,:,2) ,  W(bw,3),im(:,:,3));
end
clc
clear
I=im2double(imread('3.png'));
figure;imshow(I);
R=I(:,:,1);G=I(:,:,2);B=I(:,:,3);
gray=R*0.299+G*0.587+B*0.114;
figure;imshow(gray);
imwrite(gray,'7.png');
I2=rtcprgb2gray(I);
figure;imshow(I2);
imwrite(I2,'8.png');

参考

添对比度保留之彩色图像去色算法 — 基础算法也可以上档次。
Real-time Contrast Preserving Decolorization

你可能感兴趣的:(图像处理,计算机视觉,算法,matlab)