clear;clc;close all
%读取图像
I=imread('1.jpg');
try
I=rgb2gray(I); %如果是RGB图像,转成灰度图
end
%添加噪声
I=imnoise(I,'salt & pepper',0.04); % 叠加密度为0.04的椒盐噪声
figure
imshow(I)
title('原图')
%图像去噪
I=medfilt2(I,[2 4]); %采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波
figure
imshow(I)
title('去噪之后的图像')
%图像锐化
[M,N]=size(I); % 计算图像的尺寸
f=double(I); % 数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fft2(f); % 二维傅立叶变换,得到频域信息
g=fftshift(g); % 0频率移到(M/2,N/2)处
n=2; % 二阶巴特沃斯(Butterworth)滤波器
D0=3; % 巴特沃斯滤波器的D0,D0越大,保留的高频信号就越少(对于不同的图片,可以自行调节,以便得到好的效果)
for i=1:M
for j=1:N
D=sqrt((i-M/2)^2+(j-N/2)^2); %计算离0频率(M/2,N/2)的距离
h=1/(1+(D0/D)^(2*n)); %计算传递函数的值
output(i,j)=h*g(i,j); %高通滤波之后(i,j)处的值
end
end
result=ifftshift(output); %与g=fftshift(g)对应,还原回去
I=ifft2(result); %傅里叶反变换
I=uint8(real(I)); %得到滤波之后的图像(锐化之后的图像)
figure
imshow(I) %滤波后图像显示
title('锐化之后的图像')
%直方图均衡化处理
I=histeq(I); %得到直方图均衡化之后的图像
figure
imshow(I)
title('直方图均衡之后的图像')
%边缘检测
I1=edge(I,'prewitt');
I2=edge(I,'roberts');
I3=edge(I,'sobel');
figure
imshow(I1)
title('prewitt边缘检测之后的图像')
figure
imshow(I2)
title('roberts边缘检测之后的图像')
figure
imshow(I3)
title('sobel边缘检测之后的图像')
MATLAB实现图像去噪 滤波 锐化 边缘检测 源程序代码.rar
需积分: 0 90 浏览量
2023-02-09
10:14:32
上传
评论 2
收藏 260KB RAR 举报
逃逸的卡路里
- 粉丝: 5688
- 资源: 3251
最新资源
- 基于感知器算法的线性分类程序,matlab实现 .rar
- 基于matlab实现的振动计算程序主程序 非线性振动混沌 简单易懂.rar
- 基于matlab实现的振动原理与分析计算机大作业 求解非线性振动分析,公式根据书中的 用计算方法的4阶 r-k数值方法.rar
- 基于matlab实现的整车七自由度的非线性振动
- a2.mat
- 基于人工蜂群算法,的鲁棒通信定位算法与实现MATLAB源代码.rar
- Compass-CI 基于开源软件 PR 进行自动化测试(包括构建测试,软件包自带用例测试等),构建一个开放、完整的测试系统
- typora-setup-x64(轻量级 Markdown 编辑器)
- amd 处理器 超薄本 显存大小修改软件
- 基于随机森林对酒店预订分析预测源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈