图像增强序列——基于Lab色彩空间和色调映射的彩色图像增强算法

news/2024/7/5 5:24:27

1. 参考文献


2. 模型实现

% 论文: 基于Lab色彩空间和色调映射的彩色图像增强算法
% 作者:
% 链接: http://www.jsjkx.com/jsjkxen/ch/reader/create_pdf.aspx?file_no=20180251&year_id=2018&quarter_id=2&falg=1
% Author: HSW
% Date: 2018-04-26

clc;
close all;
clear all;

img = imread('timg.jpg');

figure(1);
imshow(img, []);
title('原图像');

if size(img, 3) == 3
    img_in = img;
    img_lab = rgb2lab(img_in);  % 颜色转换: RGB => Lab
    L  = img_lab(:, :, 1);       % 亮度分量
    La = img_lab(:, :, 2);
    Lb = img_lab(:, :, 3);
    [m, n] = size(L);
    % 进行双边滤波
    ksize = 5;
    hsize = floor(ksize/2);
    sigma1 = 3;  % 空间
    sigma2 = 5;  % 亮度
    mean1 = 0;
    mean2 = 0;
    bilKernel = bilateralKernel(sigma1, mean1, sigma2, mean2, ksize);
    sumKernel = sum(sum(bilKernel));
    T = 10;
    mu = 35.3;
    L_img = L;              % 光照分量
    R_img = ones(size(L));  % 反射分量
    for i = hsize + 1: m - hsize
        for j = hsize + 1: n - hsize
            d = zeros(ksize, ksize);
            L_patch = L(i + [-hsize:hsize], j + [-hsize:hsize]);
            La_patch = La(i + [-hsize:hsize], j + [-hsize:hsize]);
            La_center = ones(ksize, ksize) .* La(i, j);
            Lb_patch = Lb(i + [-hsize:hsize], j + [-hsize:hsize]);
            Lb_center = ones(ksize, ksize) .* Lb(i, j);
            d = sqrt((La_patch - La_center).^2 + (Lb_patch - Lb_center).^2) < T;
            L_img(i, j) = sum(sum(d .* bilKernel .* L_patch)) / sumKernel;
        end
    end
    R_img = L ./ L_img;
    % 计算抛物线偏离值: lambda
    L_hist = zeros(101, 1);        % 取值范围为[0. 100]
    U_hist = zeros(101, 1);
    for i = 1: 101
        U_hist = i * 1.0 / 101;
    end
    
    % 输入图像的L分量的累积概率分布函数: 采用直方图均衡化
    for i = 1:m
        for j = 1:n
            L_hist(uint8(L_img(i, j)) + 1) = L_hist(uint8(L_img(i, j)) + 1) + 1;
        end
    end
    
    for i = 1:101
        if i == 1
            L_hist(i) = L_hist(i);
        else
            L_hist(i) = L_hist(i) + L_hist(i - 1);
        end
    end
    
    L_hist = L_hist ./ (m * n * 1.0);
    
    % 进行直方图均衡化
    Cumu_img = 100 .* L_hist;
    L_img_eq = L_img;
    for i = 1:m
        for j = 1:n
            L_img_eq(i,j) = Cumu_img(uint8(L_img(i,j)) + 1);
        end
    end
    
    img_lab_eq = img_lab;
    img_lab_eq(:, :, 1) = L_img_eq .* R_img;
    img_rgb = lab2rgb(img_lab_eq);
    
    lambda = sum(L_hist - U_hist);
    
    if abs(lambda) > mu
        lambda = sign(lambda) * mu;
    end
    
    figure(2);
    imshow(img_rgb, []);
    title('直方图均衡化:增强结果');
%     % 抛物线映射没有理解
%     % 进行抛物线拟合: (0, 0) (100, 100) (50 - sqrt(2) * lambda), 50 + sqrt(2) *
%     % lambda)
%     
%     x = [0, 100, (50 - sqrt(2) * abs(lambda)];
%     y = [0, 100, (50 + sqrt(2) * abs(lambda)];
%     p = polyfit(x,y,2);
%     
%     L_img_new = L_img;
%     for i = 1:m
%         for j = 1:n
%             L_img_new(i, j, 1) = polyval(p, L_img_new(i, j, 1));
%         end
%     end
%     
%     img_lab_new = img_lab;
%     img_lab_new(:, :, 1) = L_img_new(:, :, 1) .* R_img;
%     img_rgb_new = lab2rgb(img_lab_new);
%     figure(3);
%     imshow(img_rgb_new, []);
%     title('抛物线均衡化: 增强结果');
    
else
    disp('必须输出彩色图像')
end

3. 模型效果



http://www.niftyadmin.cn/n/2607909.html

相关文章

移除input在type=number时的上下箭头

网页在有些情况下&#xff0c;会需要input的输入的为单纯数字的文本框&#xff0c;此时typenumber&#xff0c;但使用typenumber时&#xff0c;输入框后面会有一个上下箭头&#xff0c;那么如何去掉上下箭头呢&#xff1f; 1、chrome浏览器移除 input::-webkit-outer-spin-butt…

van-list immediate-check设置为false无效的问题

最近在使用van-list组件开发带有tab切换的项目&#xff0c;需求是tab是后端返回的数据&#xff0c;所以获取列表数据要在tab返回之后调用&#xff0c;所以进入页面时默认不触发van-list的load事件&#xff0c;官方文档说明&#xff1a;如下图所示&#xff1a; 组件配置如图所示…

图像增强序列——Adaptive Local Power-Law Transformation for Color Image Enhancement(自适应伽马变换)

1. 参考文献2. 模型实现 % 论文&#xff1a; Adaptive Local Power-Law Transformation for Color Image Enhancement % 作者&#xff1a; Chun-Ming Tsai % % Author: HSW % Date: 2018-04-27clc; close all; clear;img imread(timg2.jpg);figure(1); imshow(img, []); title…

element 验证出现英文以及自动验证问题

最近在项目开发中用到了element-ui框架&#xff0c;写了一套很长的表单提交&#xff0c;用到了el-form整这个组件&#xff0c;用这个组件的好处就是我们不用单独去做表单的校验&#xff0c;也省了一堆if条件判断&#xff0c;下面请看官方示例&#xff1a; <el-form :model&…

CentOS的常用快捷键

Centos常用快捷键: CentOS 6.4 中可以通过系统->首选项->键盘快捷键来设置快捷键&#xff0c;如图所示。例如可将运行终端的快捷键设为CtrlAltT。 Ctrl u 删除光标之前到行首的字符 Ctrl k 删除光标之前到行尾的字符 Ctrl c 取消当前行输入的命令&#xff0c;相当于Ct…

第四章-java多线程核心技术-Lock锁-第三篇

2019独角兽企业重金招聘Python工程师标准>>> Condition实现顺序运行 使用condition对象可以对线程业务进行规划和排序。请看如下代码 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock;public class Run {volatile p…

图像增强序列——LIME: A Method for Low-light IMage Enhancement(LIME模型,2017CVPR)

1. 参考文献2. 模型实现 % 论文&#xff1a; LIME: A Method for Low-light Image Enhancement % 作者&#xff1a;Xiaojie Guo % 链接&#xff1a; % Author: HSW % Date: 2018-04-27clc; close all; clear;addpath(genpath(removeHaze\)); addpath(genpath(BM3D\)); % img …

前端上传文件或图片比较大,采用oss直传的方式解决

最近再vue开发的h5项目遇到一个上传图片缓慢的问题&#xff0c;于是采用oss直传的方式解决上传大文件或图片慢的问题&#xff0c;废话不多说&#xff0c;请看代码&#xff1a; 首选我们要安装一个阿里oss组件&#xff1a;阿里云oss配置完毕 vue安装oss组件 npm install ali-…