function open_btn_Callback(hObject, eventdata, handles),写出打开文件夹一张图片在axes1中的回调函数,和CLAHE算法的直方图均衡化回调函数和MSRCR算法的retinex图像增强回调函数。matlab代码能通过运行并且编译成功
时间: 2024-02-13 08:00:33 浏览: 99
图像增强-retinex算法matlab代码
以下是三个回调函数的代码:
打开文件夹一张图片在axes1中的回调函数:
```matlab
function open_btn_Callback(hObject, eventdata, handles)
% 获取待打开的图片路径
[filename, pathname] = uigetfile({'*.jpg;*.jpeg;*.png;*.bmp;*.tif;*.tiff', 'Image Files (*.jpg, *.jpeg, *.png, *.bmp, *.tif, *.tiff)'}, 'Select an image');
if isequal(filename, 0) || isequal(pathname, 0)
% 用户取消了选择
return;
end
% 读取图片
img = imread(fullfile(pathname, filename));
% 显示图片
imshow(img, 'Parent', handles.axes1);
% 将图片保存到 handles 结构体中
handles.img = img;
guidata(hObject, handles);
```
CLAHE算法的直方图均衡化回调函数:
```matlab
function clahe_btn_Callback(hObject, eventdata, handles)
% 获取待处理的图像
img = handles.img;
if isempty(img)
% 图像为空,不能进行处理
warndlg('Please open an image first.', 'Warning');
return;
end
% 转换为灰度图像
if size(img, 3) == 3
img = rgb2gray(img);
end
% 进行CLAHE直方图均衡化
img_clahe = adapthisteq(img, 'ClipLimit', 0.02);
% 显示处理结果
imshow(img_clahe, 'Parent', handles.axes2);
```
MSRCR算法的retinex图像增强回调函数:
```matlab
function msrcr_btn_Callback(hObject, eventdata, handles)
% 获取待处理的图像
img = handles.img;
if isempty(img)
% 图像为空,不能进行处理
warndlg('Please open an image first.', 'Warning');
return;
end
% 转换为YCbCr颜色空间
img_ycbcr = rgb2ycbcr(img);
% 提取亮度分量
img_y = img_ycbcr(:, :, 1);
% 进行MSRCR图像增强
img_msrcr = msrcr(img_y);
% 将增强后的亮度分量与色度分量合并
img_ycbcr_enhanced = img_ycbcr;
img_ycbcr_enhanced(:, :, 1) = img_msrcr;
% 转换回RGB颜色空间
img_enhanced = ycbcr2rgb(img_ycbcr_enhanced);
% 显示处理结果
imshow(img_enhanced, 'Parent', handles.axes2);
```
阅读全文