有事没事领个红包

图像的线性空间滤波matlab实现

1、线性空间滤波函数Z = imfilter(X,H,option1,option2,...)

X为输入图像矩阵,H为m*n维的掩膜矩阵,H中的数据类型必须是double类型。掩膜矩阵可以是用户定义,也可以是系统定义好的。返回矩阵Z和X有相同的数据结构和数据类型。

整个函数处理的中间过程都会使用double类型,所以不必担心中间结果的精度。

2、获取系统掩膜函数H=fspecial(type,parameters)

type为字符串,制定了掩膜类型。如'average'表示均值掩膜。H为返回的掩膜矩阵,数据类型为double.

  • 正方形均值掩膜,h=fspecial('average',n),n为掩膜大小,n*n,默认值是3.
  • 高斯低通掩膜,h=fspecial('gaussian',n,sigma),n为掩膜大小n*n,默认为3.sigma为高斯分布方差。
  • 二维拉普拉斯掩膜'laplacian',h=fspecial('laplacian',alpha),alpha控制掩膜形状,范围是[0 1],默认值0.2,
  • 反锐化掩膜'unsharp',h=fspecial('unsharp',alpha)alpha控制掩膜形状,范围是[0 1],默认值0.2
  • 水平锐化掩膜'prewit',h=fspecial('prewit'),如果想用垂直锐化,则用h'
  • sobel水平锐化,h=fspecial('sobel'),如果想用垂直锐化,则用h'
复制代码
 1 clear all;
 2 i=imread('./pic/lena256.bmp');
 3 
 4 h=fspecial('sobel');
 5 h=h';

6 z=imfilter(i,h); 7 8 figure; 9 subplot(1,2,1) 10 imshow(i); 11 title('原始图像') 12 subplot(1,2,2) 13 imshow(z) 14 title('垂直锐化滤波')
复制代码

 

3、添加噪声,是用函数Z=imnoise(A,type,parameters);其中A是要添加噪声的图像,type为添加噪声类型,.

  •   高斯噪声Z=imnoise(A,'gausiaan',m,d);其中m是均值,d是方差
  • 注意高斯噪声中,m,d指定时要注意转换,例如,对于uint8类型的图像,添加均值为100,方差为200的高斯噪声,
  • m=100/255,d=200/(255^2);
  • 椒盐噪声Z=imnoise(A,'salt & pepper',d),d范围是[0 ,1],表示噪声密度,即含噪声值的图像区域的百分比。默认值是0.05。噪声是最小值和最大值两种。
  • 泊松分布噪声,Z=imnoise(A,'poisson')
1 clear all;
2 img = imread('./pic/lena256.bmp');
3 nimg=imnoise(img,'salt & pepper',0.05);
4 figure;
5 subplot(1,2,1);
6 imshow(img);
7 subplot(1,2,2);
8 imshow(nimg);

4、多图像平均法,在相同条件下,进行M次重复拍摄的图像相加,取平均作为输出值。z=imlincomb(k1,A1,k2,A2,k3,A,3...);

z=k1*A1+k2*A2+k3*A3...

例子:

复制代码
 1 clear all;
 2 img=imread('./pic/lena256.bmp');
 3 n1=imnoise(img,'gaussian',0,0.02);
 4 n2=imnoise(img,'gaussian',0,0.02);
 5 n3=imnoise(img,'gaussian',0,0.02);
 6 n4=imnoise(img,'gaussian',0,0.02);
 7 n5=imnoise(img,'gaussian',0,0.02);
 8 
 9 final = imlincomb(0.2,n1,0.2,n2,0.2,n3,0.2,n4,0.2,n5);
10 figure;
11 subplot(2,2,[1 2]);
12 imshow(img);
13 title('原始图像');
14 subplot(2,2,3);
15 imshow(n1);
16 title('添加高斯噪声后的图像');
17 subplot(2,2,4);
18 imshow(final);
19 title('平均后的图像');
复制代码

 

posted @   crazyCodeLove  阅读(9009)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示