案例演示:图像去雾
来源:互联网 发布:商务数据分析与应用 编辑:程序博客网 时间:2024/05/21 10:18
让我们从设计界面开始,演示基于图像直方图等算法的雾霾图像增强效果的编程实战。首先,上一张效果图:
下面介绍相关算法的代码:
(1)基于暗原色的单一图像去雾算法
% 输入参数:I——图像矩阵 flag——显示标记
% 输出参数:J——结果图像
if nargin < 2
flag = 1;
end
%每个block为15个像素
blockSize=15;w0=0.6;t0=0.1;
[h,w,s]=size(I);min_I=zeros(h,w);
for i=1:h
for j=1:w
dark_I(i,j)=min(I(i,j,:));
end
end
Max_dark_channel=double(max(max(dark_I)));
dark_channel=double(dark_I);
t=1-w0*(dark_channel/Max_dark_channel);
t=max(t,t0);I1=double(I);
J(:,:,1) = imadd(im2uint8(mat2gray((I1(:,:,1) - (1-t)*Max_dark_channel)./t)), 30);
J(:,:,2) = imadd(im2uint8(mat2gray((I1(:,:,2) - (1-t)*Max_dark_channel)./t)), 30);
J(:,:,3) = imadd(im2uint8(mat2gray((I1(:,:,3) - (1-t)*Max_dark_channel)./t)), 30);
if flag
figure;
subplot(2, 2, 1);imshow(I);title('原始图像', 'FontWeight', 'Bold');
subplot(2, 2, 2);imshow(J);title('去雾后的图像', 'FontWeight', 'Bold');
Q = rgb2gray(I);M = rgb2gray(J);
subplot(2, 2, 3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold');
subplot(2, 2, 4); imhist(M, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold');
end
(2)全局直方图算法
if nargin < 2
flag = 1;
end
% RGB分层
R = I(:,:,1);G = I(:,:,2);B = I(:,:,3);
% 分别对每一层进行直方图均衡化增强
M = histeq(R);N = histeq(G);L = histeq(B);
% 恢复到RGB
In = cat(3, M, N, L);
if flag
figure;
subplot(2, 2, 1); imshow(I); title('原图像', 'FontWeight', 'Bold');
subplot(2, 2, 2); imshow(In); title('处理后的图像', 'FontWeight', 'Bold');
Q = rgb2gray(I);W = rgb2gray(In);
subplot(2, 2, 3); imhist(Q); title('原灰度直方图', 'FontWeight', 'Bold');
subplot(2, 2, 4); imhist(W); title('处理后的灰度直方图', 'FontWeight', 'Bold');
end
(3)局部增强算法
% 对RGB三层分别处理
g1 = GetLocalPrcoess(I(:, :, 1));
g2 = GetLocalPrcoess(I(:, :, 2));
g3 = GetLocalPrcoess(I(:, :, 3));
% 恢复到RGB
In = cat(3, g1, g2, g3);
if flag
figure;
subplot(2, 2, 1); imshow(I); title('原图像', 'FontWeight', 'Bold');
subplot(2, 2, 2); imshow(In); title('处理后的图像', 'FontWeight', 'Bold');
Q = rgb2gray(I);
W = rgb2gray(In);
subplot(2, 2, 3); imhist(Q); title('原灰度直方图', 'FontWeight', 'Bold');
subplot(2, 2, 4); imhist(W); title('处理后的灰度直方图', 'FontWeight', 'Bold');
end
%function g = GetLocalPrcoess(I)
x=mat2gray(I);
f=im2double(x);
w=4;k=0.06;
M=mean2(f);
% 标准差
z=colfilt(f,[w w],'sliding',@std);
% 均值
m=colfilt(f,[w w],'sliding',@mean);
A=k*M./z;
g=A.*(f-m)+m;
% 数据类型标准化
g=im2uint8(mat2gray(g));
- 案例演示:图像去雾
- 一种基于凸优化的图像去噪方法演示
- 一种基于凸优化的图像去噪方法演示
- 演示FileInputStream案例演示
- 演示 FileOutputStream案例演示
- 图像去雾算法
- 图像去雾
- 图像去雾成果
- 图像视频去雾
- 图像去雾
- 图像去雾
- 演示缓冲流案例演示
- 图像去雾算法效果图
- 图像去雾(一般)
- 图像的快速去雾
- 图像处理 去雾算法
- 图像去雾原理【总结】
- 图像去雾-dehaze-defog
- LINUX学习日记(一)
- final关键字
- 原创文章测试
- 不可能不爱的 XCODE 9:最新功能详尽介绍
- Centos6.8编译安装keepalived-1.3.5步骤
- 案例演示:图像去雾
- rocketmq事务消息的理解
- 数据结构--线性结构
- loadrunner Web_类函数之web_set_sockets_option()
- 【Angular2】新建Angular2项目
- java输出菱形
- Jenkins中无法启动子进程的解决办法
- 枚举类的二三事
- 强大的Handler详细分析