基于 MATLAB-GUI 图形界面的数字图像处理软件的代码:实现以下功能: 1)图像的读取、显示和保存; 2)图像基本类型转换; 3)灰度图像直方图统计及分析; 4)图像对比度调整; 5)图像添加高斯噪声/椒盐噪声,其中噪声强度可调; 6)对含噪图像进行滤噪处理; 7)可以对鼠标选中的图像区域进行滤镜处理;
时间: 2024-03-03 09:47:52 浏览: 65
好的,这是一个比较复杂的问题,需要比较详细的回答。以下是基于 MATLAB-GUI 图形界面的数字图像处理软件的代码:
1)图像的读取、显示和保存:
```matlab
% 读取图像
[filename, pathname] = uigetfile({'*.jpg;*.png;*.bmp;*.gif','All Image Files';...
'*.*','All Files' },'选择一张图片');
if filename~=0
img = imread(fullfile(pathname, filename));
% 显示图像
axes(handles.axes1);
imshow(img);
% 保存图像
[savefile, savepath] = uiputfile({'*.jpg;*.png;*.bmp;*.gif','All Image Files';...
'*.*','All Files' },'保存图像',filename);
if savefile~=0
imwrite(img, fullfile(savepath, savefile));
end
end
```
2)图像基本类型转换:
```matlab
% 灰度化
gray_img = rgb2gray(img);
% 二值化
bw_img = im2bw(img);
```
3)灰度图像直方图统计及分析:
```matlab
% 灰度直方图计算
gray_hist = imhist(gray_img);
% 显示灰度直方图
axes(handles.axes2);
bar(gray_hist);
% 计算图像平均灰度值和灰度方差
mean_gray = mean2(gray_img);
var_gray = std2(gray_img)^2;
```
4)图像对比度调整:
```matlab
% 对比度增强
enhanced_img = imadjust(img,stretchlim(img));
```
5)图像添加高斯噪声/椒盐噪声,其中噪声强度可调:
```matlab
% 添加高斯噪声
noise_img = imnoise(img,'gaussian',0,0.01);
% 添加椒盐噪声,噪声强度可调
noise_density = str2double(get(handles.edit1,'String'));
noise_img = imnoise(img,'salt & pepper',noise_density);
```
6)对含噪图像进行滤噪处理:
```matlab
% 中值滤波
filter_size = str2double(get(handles.edit2,'String'));
denoise_img = medfilt2(noise_img,[filter_size filter_size]);
```
7)可以对鼠标选中的图像区域进行滤镜处理:
```matlab
% 获取鼠标选中的图像区域
rect = getrect(handles.axes1);
% 对选中区域进行滤波处理
filter_type = get(handles.popupmenu1,'Value');
switch filter_type
case 1
% 均值滤波
filter_size = str2double(get(handles.edit3,'String'));
h = fspecial('average',[filter_size filter_size]);
roi_img = imcrop(img,rect);
roi_img = imfilter(roi_img,h);
img(rect(2):rect(2)+rect(4),rect(1):rect(1)+rect(3),:) = roi_img;
case 2
% 高斯滤波
filter_size = str2double(get(handles.edit3,'String'));
sigma = str2double(get(handles.edit4,'String'));
h = fspecial('gaussian',[filter_size filter_size],sigma);
roi_img = imcrop(img,rect);
roi_img = imfilter(roi_img,h);
img(rect(2):rect(2)+rect(4),rect(1):rect(1)+rect(3),:) = roi_img;
case 3
% 中值滤波
filter_size = str2double(get(handles.edit3,'String'));
roi_img = imcrop(img,rect);
roi_img = medfilt2(roi_img,[filter_size filter_size]);
img(rect(2):rect(2)+rect(4),rect(1):rect(1)+rect(3),:) = roi_img;
end
```
阅读全文