图像去雾暗原色先验matlab代码
时间: 2023-05-14 19:02:35 浏览: 106
暗原色先验图象去雾改进算法matlab代码_rezip1.zip
图像去雾暗原色先验matlab代码可以通过以下步骤完成:
1. 将输入图像转换为正常化的RGB图像格式。
2. 计算每个像素的大气光传播率和透射率。
3. 通过估计每个像素的本地暗原色值来计算去除雾气后的图像。
4. 将结果保存为输出图像。
具体的代码如下:
% Step 1: 读入输入图像
I = imread('input.jpg');
% 将I转换为正常化的RGB图像格式
I = im2double(I);
% Step 2: 计算大气光传播率和透射率
r = 0.001; % 用于控制雾的浓度和深度
A = max(I, [], 3);
% 估计大气光传播率
atmosphere = zeros(1,1,3);
for i = 1:3
channel = I(:,:,i);
channel_max = max(channel(:))
[x,y] = find(channel == channel_max);
atmosphere(1,1,i) = I(x(1), y(1), i);
end
atmosphere = im2double(atmosphere);
% 估计透射率
transmission = 1 - r*max(I - atmosphere,[],3);
% Step 3: 计算去除雾气后的图像
eps = 0.001;
dark_prior = min(I,[],3);
Jdark = dark_prior >= eps;
t = 1 - Jdark.*(1 - transmission);
J = zeros(size(I));
for i = 1:3
J(:,:,i) = (I(:,:,i) - atmosphere(1,1,i))./t + atmosphere(1,1,i);
end
% Step 4: 保存输出图像
imwrite(J, 'output.jpg');
阅读全文