图像去雾处理matlab代码
时间: 2023-08-23 11:33:31 浏览: 95
以下是一个简单的图像去雾处理的MATLAB代码,使用了Dark Channel Prior方法:
```matlab
function J = defog(I, w)
% I: 输入图像
% w: 滤波窗口大小
I = im2double(I);
[m,n,~] = size(I);
% 计算暗通道
dark = min(I, [], 3);
dark = ordfilt2(dark, 1, ones(w, w));
% 估计大气光
atmosphere = zeros(1,1,3);
for i = 1:3
channel = I(:,:,i);
vals = channel(dark >= 0.95*max(dark(:)));
atmosphere(i) = mean(vals);
end
% 估计透射率
trans = 1 - 0.95*ordfilt2(dark, w^2, ones(w, w));
% 修复图像
J = zeros(m,n,3);
for i = 1:3
channel = (I(:,:,i) - atmosphere(i)) ./ trans + atmosphere(i);
J(:,:,i) = channel;
end
end
```
使用方法:
```matlab
I = imread('input.jpg');
J = defog(I, 15); % 输入图像和滤波窗口大小
imwrite(J, 'output.jpg');
```
请注意,这只是一个简单的实现,可能需要根据实际情况进行调整和优化。
阅读全文