天天看点

MATLAB实现非线性动态范围调整算法

实验内容

MATLAB实现非线性动态范围调整算法

实验原理

提出非线性动态范围调整,是因为线性动态范围调整的分段线性影射不够光滑。非线性动态范围调整,要求可以用光滑的曲线来实现。考虑到人眼对视觉信号的处理过程中,有一个近似对数算子的环节,因此,可采用对数运算来实现非线性动态范围调整

实现方法

MATLAB实现非线性动态范围调整算法

实现源码

function [J]=dynamic_range(I)
I = double(I);           %将I数据转换为double类型
C = 105.8865;            % C*lg(1+255)=255
[m,n,l] = size(I);       %读取图像行数、列数
J = zeros(m,n,l);

% 方法1:每一行每一列分开计算
for i=1:m
    for j=1:n
        J(i,j,:) = C*(log10(1+I(i,j,:)));
    end
end

% 方法2:对整个公式计算
J = C*(log10(1+I)); 

J = uint8(J);

           

测试代码

F  = imread('');
[G]=dynamic_range(F);
figure,imshow(G)
           

效果演示

MATLAB实现非线性动态范围调整算法

继续阅读