一种增加图像自然饱和度的方法

博客介绍了图像通道值调整的基本思路,包括求取图像三通道均值、三个通道最大值,对每个通道单独处理,若通道值和最大值相等不处理,不相等则调节,并展示了原图和调整后的图像,还给出了详细参考链接。

基本思路是
1. 求取图像三通道均值
2. 求取三个通道最大值
3. 单独处理每个通道,如果通道值和最大值相等不处理,如果不相等则调节

clear
clc
close all

% 如果为正数,正向调整饱和度(色彩更加鲜艳), 如果为负数,反向调整(色彩更加暗淡)
Adjustment = 100;

I = double(imread('leaf.jpg'));

VibranceAdjustment = -0.01 * Adjustment;

% 这里可以采用三通道均值,也可以采用灰度值,如果是要处理Bayer格式,可以简单统计一个bin的值。
grayVal = mean(I,3);
% grayVal = double(rgb2gray(uint8(I)));

% rgb 的最大值
maxVal = max(I,[],3);

% 调整量
AmtVal = (abs(maxVal - grayVal)./127) * VibranceAdjustment;

% 寻找要调整的像素
maskBlue = (I(:,:,3) ~= maxVal);
maskGreen = (I(:,:,2) ~= maxVal);
maskRed = (I(:,:,1) ~= maxVal);

% 调整
b =I(:,:,3).*(1-maskBlue) + (I(:,:,3) + (maxVal - I(:,:,3)).*AmtVal).*maskBlue;
g =I(:,:,2).*(1-maskBlue) + (I(:,:,2) + (maxVal - I(:,:,2)).*AmtVal).*maskBlue;
r = I(:,:,1).*(1-maskBlue) + (I(:,:,1) + (maxVal - I(:,:,1)).*AmtVal).*maskBlue;

% 组合成输出图像
OI = cat(3,r,g,b);

figure('Name', 'original Image')
imshow(uint8(I))
title('original Image')
figure('Name', 'Natural saturation Image')
imshow(uint8(OI))
title('Natural saturation Image')

结果如下:

左边是原图,右边是调整后的图像

 

 

更多详细可以参考

https://www.cnblogs.com/Imageshop/p/7234463.html

 

转载于:https://www.cnblogs.com/Keven-Lee/p/9546257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值