【图像去雾】基于matlab直方图图像去雾技术【源码1期】

 一、简介

图像去雾是图像处理中的一项重要任务,尤其在处理由雾、霾等大气条件影响的图像时。去雾可以提高图像质量,使其更接近人眼观察到的真实场景。在本文中,我们将介绍如何使用MATLAB实现基于直方图的图像去雾方法。

直方图均衡化是一种常用的图像处理技术,用于提高图像的对比度。通过拉伸像素值的范围,直方图均衡化可以增强图像的对比度,并有助于在图像去雾中突出物体。

二、部分源码

function varargout = MainForm(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @MainForm_OpeningFcn, ...
    'gui_OutputFcn',  @MainForm_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
function FileOpen_Callback(hObject, eventdata, handles)
warning off all;
% 载入图像
[FileName,PathName,FilterIndex] = uigetfile({'*.jpg;*.tif;*.png;*.gif', ...
    '所有图像文件';...
    '*.*','所有文件' },'载入图像',...
    '.\images\\sweden_input.jpg');
if isequal(FileName, 0) || isequal(PathName, 0)
    return;
end

%读取图像,显示图像
Img1 = imread(fullfile(PathName, FileName));
axes(handles.axes1);
imshow(Img1, []);
handles.Img1 = Img1;
handles.Img2 = 0;
guidata(hObject, handles);
title('原始图像')
function HistImg_Callback(hObject, eventdata, handles)
% hObject    handle to HistImg (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% 直方图对比
if isequal(handles.Img1, 0)
    msgbox('请载入图像!', '提示信息');
    return;
end
if isequal(handles.Img2, 0)
    msgbox('请进行去雾处理!', '提示信息');
    return;
end
figure('Name', '直方图对比', 'NumberTitle', 'Off', ...
    'Units', 'Normalized', 'Position', [0.1 0.1 0.5 0.5]);
subplot(2, 2, 1); imshow(handles.Img1); title('原图像', 'FontWeight', 'Bold');
subplot(2, 2, 2); imshow(handles.Img2); title('处理后的图像', 'FontWeight', 'Bold');
Q = rgb2gray(handles.Img1);
W = rgb2gray(handles.Img2);
subplot(2, 2, 3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold');
subplot(2, 2, 4); imhist(W, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold');
function GlobalHisteq_Callback(hObject, eventdata, handles)
% hObject    handle to GlobalHisteq (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if isequal(handles.Img1, 0)
    msgbox('请载入图像!', '提示信息');
    return;
end
Img2 = RemoveFogByGlobalHisteq(handles.Img1, 0);
axes(handles.axes2); imshow(Img2, []);
handles.Img2 = Img2;
guidata(hObject, handles);
title('全局直方图算法图像')

三、运行结果

四、matlab版本

R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968

文中部分源码仅供参考,若需要全部代码可以私信(有偿)

  • 34
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值