matlab期末数字图像处理小工具

本文介绍了一个使用MATLAB编写的数字图像处理工具,涵盖了亮度调节、旋转、翻转、灰度化、二值化、指数/对数变换、反色、图像叠加、轨迹检测、噪声滤波、边缘提取、形态学运算、目标检测等多种功能。通过实验结果展示了各种算法的实际效果,是学习和应用图像处理的好助手。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

功能模块

1.图像选择

1.1 算法实现

1.2实验结果

2.图像清除与退出

2.1算法设计

3 亮度调节、旋转、翻转

3.1 算法原理

3.2 算法设计

3.3 实验结果

4图像灰度化

4.1 算法原理

4.2 算法设计

4.3 实验结果

​编辑

5灰度图像二值化

5.1 算法原理

5.2 算法设计

5.3 实验结果

​编辑

6指数变换 对数变换

6.1 算法原理

6.2 算法设计

4.3 实验结果

​编辑

7反色

7.1 算法原理

7.2 算法设计

7.3 实验结果

8图像叠加、轨迹检测(相减)

8.1 算法原理

8.2 算法设计

8.3 实验结果

9添加噪声和滤波器

9.1 算法原理

9.2 算法设计

9.3 实验结果

10频域处理 边缘提取

10.1 算法原理

10.2 算法设计

10.3 实验结果

11膨胀运算 腐蚀运算 开运算 闭运算

11.1 算法原理

11.2 算法设计

11.3 实验结果

12边缘提取

12.1 算法原理

12.2 算法设计

12.3 实验结果

13图像模糊与复原

13.1 算法原理

13.2 算法设计

13.3 实验结果

14硬币检测计数

14.1 算法原理

14.2 算法设计

14.3 实验结果

15提取目标图像

15.1 算法原理

15.2 算法设计

15.3 实验结果

16形状检测

16.1 算法原理

16.2 算法设计

16.3 实验结果

总结


前言

    本次制作了一个图像处理小工具,可以对图像进行如亮度调节、旋转、左右上下翻转等基础变换。进行灰度变换并显示其直方图、反色、二值化、图像合成、运动轨迹检测。可对图像添加噪声、滤波器、边缘提取并进行对比。选择不同的结构元素进行开运算、闭运算、膨胀运算、腐蚀运算。实现了对图中硬币的检测计数、提取红色目标图像和形状检测。


功能模块

1.图像选择

1.1 算法实现

[filename,pathname]=uigetfile({'*.jpg;*.png;*.jpeg;*.tif'},'选择一张图片'
);
image=[pathname filename];%获取文件路径文件名
if (filename==0)
    warndlg('请选择一张图片!','Warning');%提示选择图片
    return;
else
    im = imread(image);  %读取图片数据到矩阵im
    axes(handles.axes1);
    imshow(im);%显示
    
   handles.filename=filename;
   handles.image=image;%文件名字和图片信息保存到结构体
end
 guidata(hObject,handles);%更新结构体

1.2实验结果

 

2.图像清除与退出

2.1算法设计

cla(handles.axes2,'reset');
cla(handles.axes5,'reset');
cla(handles.axes6,'reset');
cla(handles.axes7,'reset');
cla(handles.axes9,'reset');

close all;

3 亮度调节、旋转、翻转

3.1 算法原理

定义全局变量x获取滑动条数值,用imadd(img,x)调节图像亮度;imrotate(img,x)实现旋转;flipud(image)fliplr(img)实现图像上下左右翻转。

3.2 算法设计

global x;
x=get(hObject,'value');%获取滑动条值
% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
img=imread(handles.image);
imageout=imadd(img,x);
axes(handles.axes2);
imshow(imageout);
img=imread(handles.image);
img=imrotate(img,x);%img逆时针方向旋转x度
axes(handles.axes2); 
imshow(img);
img=imread(handles.image);
img=fliplr(img);
axes(handles.axes2); 
imshow(img);

image=imread(handles.image);
image=flipud(image);
axes(handles.axes2); 
imshow(image);

3.3 实验结果

4图像灰度化

4.1 算法原理

通过rgb2gray 函数消除图像色调和饱和度信息同时保留亮度实现将将RGB图像或彩色图转换为灰度图像

4.2 算法设计

image=imread(handles.image);
image=rgb2gray(image);%转化为灰度图
axes(handles.axes2);cla;
imshow(image);
colormap(handles.axes2,gray(256));%修改画布映射 

4.3 实验结果

5灰度图像二值化

5.1 算法原理

设定一个阈值,当原始图像像素的数值大于这个阈值的时候,就把这个像素颜色分量为255,如果数值小于这个阈值,就把这个像素颜色分量为0

5.2 算法设计

handles.image=imread(handles.image);
handles.image=rgb2gray(handles.image);%转化为灰度图
handles.image=imbinarize(handles.image,0.5);%转化为二值图 
axes(handles.axes2);
imshow(handles.image);

5.3 实验结果

6指数变换 对数变换

6.1 算法原理

指数变换:指数大于1变暗,小于1变亮。增大高低灰度区对比度。

对数变换:因为对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小所以图像经过对数变换后高灰度值部分对比提升,有增强图像效果。

6.2 算法设计

img=imread(handles.image);
im=rgb2gray(img);%转化为灰度图
im1=histeq(img);%对原图进行直方图均衡化处理
axes(handles.axes5);
imhist(im1);
imgoutput=1.5.^(im*0.1)-1;%指数变换 高灰度区拉伸
axes(handles.axes2);
imshow(imgoutput,[]);
axes(handles.axes6);%预览图直方图
imhist(imgoutput);
img=imread(handles.image);
imgoutput=rgb2gray(img);%转化为灰度图
im1=histeq(img);%对原图进行直方图均衡化处理
axes(handles.axes5);
imhist(im1);
 
v=5;%v越大灰度提高越明显
m=mat2gray(double(imgoutput)); 
%灰度归一化 mat2gray把任意任意类型图像矩阵转换为取值范围为[0,1]的归一化double类数组。
imgoutput=log(1+v*m)/(log(v+1));%对数变换
axes(handles.axes2);
imshow(imgoutput,[]);
axes(handles.axes6);%预览图直方图
imhist(imgoutput);

4.3 实验结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值