Gointerface接口声明实现及作用详解
524
2022-09-08
【图像去雾】基于直方图算法+Retinex实现低对比度图像去雾含Matlab源码
1 简介
1 图像增强图像增强是对图像的某些特征,如边缘、轮廓、对比度等进行强调或锐化,以便于显示、观察或进一步分析与处理。通过对图像的特定加工,将被处理的图像转化为对具体应用来说视觉质量和效果更“好”或更“有用”的图像。图像增强是最基本最常用的图像处理技术,常用于其他图像处理的预处理阶段。
(1)高通平滑、低通锐化;平滑模糊、锐化突出图像细节(2)滤波器还有带通、带阻等形式(3)根据噪声(椒盐噪声、高斯噪声....)的不同,选用不同的滤波(4)邻域有4-邻域、对角邻域、8-邻域,相对应的有邻接,即空间上相邻、像素灰度相似(5)图像边缘处理:忽略不处理、补充、循环使用(6)目前尚未图像处理大多基于灰度图像
2.1 全局直方图处理全局直方图处理通过对RGB图像的R、G、B三层通道分别进行直方图均衡化, 再整合到新的图像的方式来进行。一般来说,全局直方图去雾算法可以实现含雾图像的增强效果,处理前后的直方图在分布上具有明显变化,但在图像整体上容易出现某些色彩失真的现象。
2.2 局部直方图处理全局直方图均衡化增强只是将原图像的直方图进行了均衡化,未能有效保持原始图像的局部特征,容易出现色彩失真问题。通过选择固定尺寸的滑动窗口作用于原始图像来进行局部直方图处理,可以在一定程度上保持原始图像的局部特征,提高图像增强的效果。因此, 局部直方图处理通过对RGB图像的R、G、B三层通道分别进行局部直方图均衡化,再整合到新的图像的方式来进行。
2.3 Retinex增强处理基于全局直方图、局部直方图的图像去雾算法在理论及实现上比较简单,能起到一定的去雾处理效果。为了进行对比, 实验中采取了Retin ex图像增强算法来进行对比, 该算法可以平衡图像灰度动态范围压缩、图像增强和图像颜色恒常三个指标,能够实现对含雾图像的自适应性增强。因此, Retin ex增强处理通过对RGB图像的R、G、B三层通道分别应用Retin ex算法进行处理, 再整合到新的图像的方式来进行。
2 部分代码
function In = RemoveFogByRetinex(f, flag)% 用Retinex的MSR实现图像去雾% 输入参数:% f——图像矩阵% flag——显示标记% 输出参数:% In——结果图像if nargin < 2 flag = 1;end%提取图像的R、G、B分量fr = f(:, :, 1);fg = f(:, :, 2);fb = f(:, :, 3);%数据类型归一化mr = mat2gray(im2double(fr));mg = mat2gray(im2double(fg));mb = mat2gray(im2double(fb));%定义alpha参数alpha = 1200;%定义模板大小n = 128;%计算中心n1 = floor((n+1)/2);for i = 1:n for j = 1:n %高斯函数 b(i,j) = exp(-((i-n1)^2+(j-n1)^2)/(4*alpha))/(pi*alpha); endend%卷积滤波nr1 = imfilter(mr,b,'conv', 'replicate');%ng1 = imfilter(mg,b,'conv', 'replicate');nb1 = imfilter(mb,b,'conv', 'replicate');ur1 = log(nr1);ug1 = log(ng1);ub1 = log(nb1);tr1 = log(mr);tg1 = log(mg);tb1 = log(mb);yr1 = (tr1-ur1)/3;yg1 = (tg1-ug1)/3;yb1 = (tb1-ub1)/3;%定义beta参数beta = 55;%定义模板大小x = 32;%计算中心x1 = floor((n+1)/2);for i = 1:n for j = 1:n %高斯函数 a(i,j) = exp(-((i-n1)^2+(j-n1)^2)/(4*beta))/(6*pi*beta); endend%卷积滤波nr2 = imfilter(mr,a,'conv', 'replicate');ng2 = imfilter(mg,a,'conv', 'replicate');nb2 = imfilter(mb,a,'conv', 'replicate');ur2 = log(nr2);ug2 = log(ng2);ub2 = log(nb2);tr2 = log(mr);tg2 = log(mg);tb2 = log(mb);yr2 = (tr2-ur2)/3;yg2 = (tg2-ug2)/3;yb2 = (tb2-ub2)/3;%定义eta参数eta = 13944.5;%定义模板大小l = 500;%计算中心l1 = floor((n+1)/2);for i = 1:n for j = 1:n %高斯函数 e(i,j) = exp(-((i-n1)^2+(j-n1)^2)/(4*eta))/(4*pi*eta); endend%卷积滤波nr3 = imfilter(mr,e,'conv', 'replicate');ng3 = imfilter(mg,e,'conv', 'replicate');nb3 = imfilter(mb,e,'conv', 'replicate');ur3 = log(nr3);ug3 = log(ng3);ub3 = log(nb3);tr3 = log(mr);tg3 = log(mg);tb3 = log(mb);yr3 = (tr3-ur3)/3;yg3 = (tg3-ug3)/3;yb3 = (tb3-ub3)/3;dr = yr1+yr2+yr3;dg = yg1+yg2+yg3;db = yb1+yb2+yb3;cr = im2uint8(dr);cg = im2uint8(dg);cb = im2uint8(db);% 集成处理后的分量得到结果图像In = cat(3, cr, cg, cb);%结果显示if flag figure; subplot(2, 2, 1); imshow(f); title('原图像', 'FontWeight', 'Bold'); subplot(2, 2, 2); imshow(In); title('处理后的图像', 'FontWeight', 'Bold'); % 灰度化,用于计算直方图 Q = rgb2gray(f); M = rgb2gray(In); subplot(2, 2, 3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold'); subplot(2, 2, 4); imhist(M, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold');end
3 仿真结果
4 参考文献
[1]崔莹. 基于直方图的图像去雾方法. 吉林大学, 2018.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~