本帖最后由 乂统天下 于 2020-4-2 11:54 编辑
新手学习,多多关照,互相交流,共同进步^-^
【实现功能】数字图像处理基本操作 [matlab2016b]
实现图像去噪、滤波、直方图均衡化、锐化、边缘检测
【处理效果】
NO.1:原图
NO.2:去噪之后的图像
NO.3:锐化之后的图像
NO.4:直方图均衡之后的图像
NO.5:Prewitt边缘检测之后的图像
NO.6:Roberts边缘检测之后的图像
NO.7:Sobel边缘检测之后的图像
【改进分析】
暂无
【源码下载】
https://www.lanzous.com/iajjk5i
密码:8czs
【程序展示】
- % 功能:MATLAB实现图像处理=去噪、滤波、锐化、边缘检测
- % 说明:无
- 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边缘检测之后的图像')
复制代码
5
|
|
|
|
|
|
-
乂统天下
2020-4-7 11:42
谢谢支持,如果对 代码 有改进分析可以交流一下,新手学习,多多关照
|
|
|
|
|
-
乂统天下
2021-1-10 10:03
能帮助您是我的荣幸,欢迎探讨交流,共同学习进步。
更多精华帖子可以订阅淘专辑 [在文章末尾左下角 MATLAB交流Q群821300038]
|
|
|